Date: Thu, 5 Jul 2018 17:38:14 +0200 From: Hans Petter Selasky <hps@selasky.org> To: Matt Macy <mmacy@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r335873 - in head: . sys/amd64/amd64 sys/amd64/include sys/conf sys/i386/i386 sys/i386/include sys/sys sys/vm Message-ID: <709dc4f7-a207-2123-e3a0-d258c8a60db4@selasky.org> In-Reply-To: <646866ab-1fe1-1866-8777-c4ad852fef7d@selasky.org> References: <201807021948.w62JmcV6019378@repo.freebsd.org> <646866ab-1fe1-1866-8777-c4ad852fef7d@selasky.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?709dc4f7-a207-2123-e3a0-d258c8a60db4>
