On 07/05/18 15:50, Hans Petter Selasky wrote:
Hi,

This change breaks all atomic usage in drm-next-kmod even after r335913.

The problem is simply that SMP is not defined at all for KLD's so all non-kernel atomic usage is with MPLOCKED empty!

/*
  * For userland, always use lock prefixes so that the binaries will run
  * on both SMP and !SMP systems.
  */
#if defined(SMP) || !defined(_KERNEL)
#define MPLOCKED        "lock ; "
#else
#define MPLOCKED
#endif


Should the check above be:
#if defined(SMP) || !defined(_KERNEL) || defined(KLD_MODULE)

The problem seems more convoluted. There are more checks I wonder if has to be changed.

Currently testing this patch: Same applies for i386.

Index: sys/amd64/include/atomic.h
===================================================================
--- sys/amd64/include/atomic.h  (revision 335974)
+++ sys/amd64/include/atomic.h  (working copy)
@@ -132,7 +132,7 @@
  * For userland, always use lock prefixes so that the binaries will run
  * on both SMP and !SMP systems.
  */
-#if defined(SMP) || !defined(_KERNEL)
+#if defined(SMP) || !defined(_KERNEL) || defined(KLD_MODULE)
 #define        MPLOCKED        "lock ; "
 #else
 #define        MPLOCKED
@@ -343,7 +343,7 @@
  * and release.
  */
-#if defined(_KERNEL)
+#if defined(_KERNEL) || defined(KLD_MODULE)
/*
  * OFFSETOF_MONITORBUF == __pcpu_offset(pc_monitorbuf).
@@ -354,7 +354,7 @@
  */
 #define        OFFSETOF_MONITORBUF     0x100
-#if defined(SMP)
+#if defined(SMP) || defined(KLD_MODULE)
 static __inline void
 __storeload_barrier(void)
 {


--HPS
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to