From owner-svn-src-head@freebsd.org Thu Jul 5 15:38:35 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A4DF01034360; Thu, 5 Jul 2018 15:38:35 +0000 (UTC) (envelope-from hps@selasky.org) Received: from mail.turbocat.net (turbocat.net [88.99.82.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 31CBC830F7; Thu, 5 Jul 2018 15:38:35 +0000 (UTC) (envelope-from hps@selasky.org) Received: from hps2016.home.selasky.org (unknown [62.141.128.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id D7A5D26032A; Thu, 5 Jul 2018 17:38:33 +0200 (CEST) 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 From: Hans Petter Selasky To: Matt Macy , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <201807021948.w62JmcV6019378@repo.freebsd.org> <646866ab-1fe1-1866-8777-c4ad852fef7d@selasky.org> Message-ID: <709dc4f7-a207-2123-e3a0-d258c8a60db4@selasky.org> Date: Thu, 5 Jul 2018 17:38:14 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <646866ab-1fe1-1866-8777-c4ad852fef7d@selasky.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jul 2018 15:38:35 -0000 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