From owner-freebsd-current@freebsd.org Tue Jul 3 19:02:59 2018 Return-Path: Delivered-To: freebsd-current@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 38519103E0FD for ; Tue, 3 Jul 2018 19:02:59 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from mail.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CF3A79263F for ; Tue, 3 Jul 2018 19:02:58 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro-2.local (ralph.baldwin.cx [66.234.199.215]) by mail.baldwin.cx (Postfix) with ESMTPSA id 9F9A110AFD2; Tue, 3 Jul 2018 15:02:57 -0400 (EDT) Subject: Re: atomic changes break drm-next-kmod? To: Niclas Zeising , "O. Hartmann" , FreeBSD Current References: <20180703170223.266dbf5b@thor.intern.walstatt.dynvpn.de> From: John Baldwin Message-ID: Date: Tue, 3 Jul 2018 12:02:56 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail.baldwin.cx); Tue, 03 Jul 2018 15:02:58 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.99.2 at mail.baldwin.cx X-Virus-Status: Clean X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jul 2018 19:02:59 -0000 On 7/3/18 11:28 AM, Niclas Zeising wrote: > On 07/03/18 17:02, O. Hartmann wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA512 >> >> Am Tue, 3 Jul 2018 10:19:57 -0400 >> Michael Butler schrieb: >> >>> It seems recent changes (SVN r335873?) may have broken drm-next-kmod .. >>> >>> --- i915_drv.o --- >>> In file included from i915_drv.c:30: >>> In file included from >>> /usr/ports/graphics/drm-next-kmod/work/kms-drm-a753215/linuxkpi/gplv2/include/linux/acpi.h:26: >>> In file included from >>> /usr/ports/graphics/drm-next-kmod/work/kms-drm-a753215/linuxkpi/gplv2/include/linux/device.h:4: >>> In file included from >>> /usr/src/sys/compat/linuxkpi/common/include/linux/device.h:35: >>> In file included from >>> /usr/src/sys/compat/linuxkpi/common/include/linux/types.h:37: >>> In file included from /usr/src/sys/sys/systm.h:44: >>> ./machine/atomic.h:450:29: error: invalid operand for instruction >>> ATOMIC_ASM(clear, long, "andq %1,%0", "ir", ~v); >>> ^ >>> :1:7: note: instantiated into assembly here >>> andq $9223372036854775807,40672(%r14) >>> ^~~~~~~~~~~~~~~~~~~~~ >>> 1 error generated. >>> *** [i915_drv.o] Error code 1 >>> >>> make[3]: stopped in >>> /usr/ports/graphics/drm-next-kmod/work/kms-drm-a753215/i915 >>> --- i915_gem.o --- >>> In file included from i915_gem.c:28: >>> In file included from >>> /usr/ports/graphics/drm-next-kmod/work/kms-drm-a753215/include/drm/drmP.h:38: >>> In file included from /usr/src/sys/sys/malloc.h:42: >>> In file included from /usr/src/sys/sys/systm.h:44: >>> ./machine/atomic.h:449:29: error: invalid operand for instruction >>> ATOMIC_ASM(set, long, "orq %1,%0", "ir", v); >>> ^ >>> :1:6: note: instantiated into assembly here >>> orq $-9223372036854775808,40672(%r14) >>> ^~~~~~~~~~~~~~~~~~~~~~ >>> 1 error generated. >>> *** [i915_gem.o] Error code 1 >>> >>> _______________________________________________ >>> freebsd-current@freebsd.org mailing list >>> https://lists.freebsd.org/mailman/listinfo/freebsd-current >>> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org" >> >> >> It breaks also graphics/drm-stable-kmod (see PR 229484, >> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=229484, same error as you described >> above) and also emulators/virtualbox-ose-kmod. As long as CURRENT revision is < r335873, >> those kmod compile well. > > We are looking into why both the drm ports fail. > Regards > I haven't yet tested an amd64 kernel with this, but I think this change to sys/amd64/include/atomic.h might fix it: Index: atomic.h =================================================================== --- atomic.h (revision 335896) +++ atomic.h (working copy) @@ -446,10 +446,10 @@ ATOMIC_ASM(clear, int, "andl %1,%0", "ir", ~ ATOMIC_ASM(add, int, "addl %1,%0", "ir", v); ATOMIC_ASM(subtract, int, "subl %1,%0", "ir", v); -ATOMIC_ASM(set, long, "orq %1,%0", "ir", v); -ATOMIC_ASM(clear, long, "andq %1,%0", "ir", ~v); -ATOMIC_ASM(add, long, "addq %1,%0", "ir", v); -ATOMIC_ASM(subtract, long, "subq %1,%0", "ir", v); +ATOMIC_ASM(set, long, "orq %1,%0", "er", v); +ATOMIC_ASM(clear, long, "andq %1,%0", "er", ~v); +ATOMIC_ASM(add, long, "addq %1,%0", "er", v); +ATOMIC_ASM(subtract, long, "subq %1,%0", "er", v); #define ATOMIC_LOADSTORE(TYPE) \ ATOMIC_LOAD(TYPE); \ -- John Baldwin