Re: atomic changes break drm-next-kmod?

From: Jung-uk Kim <jkim_at_FreeBSD.org>
Date: Tue, 3 Jul 2018 15:32:03 -0400
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 07/03/2018 15:23, Jung-uk Kim wrote:
> On 07/03/2018 15:02, John Baldwin wrote:
>> 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 
>>>> <imb_at_protected-networks.net> 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/gp
lv2/include/linux/acpi.h:26:
>>>>>
>>>>>
>>>>> 
In file included from
>>>>> /usr/ports/graphics/drm-next-kmod/work/kms-drm-a753215/linuxkpi/gp
lv2/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); ^ <inline asm>: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); ^ <inline asm>:1:6: note: instantiated into assembly
>>>>> here orq $-9223372036854775808,40672(%r14) 
>>>>> ^~~~~~~~~~~~~~~~~~~~~~ 1 error generated. *** [i915_gem.o] 
>>>>> Error code 1
>>>>> 
>>>>> _______________________________________________ 
>>>>> freebsd-current_at_freebsd.org mailing list 
>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-current
>>>>>  To unsubscribe, send any mail to 
>>>>> "freebsd-current-unsubscribe_at_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) _at__at_ -446,10 +446,10 _at__at_ 
>> 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);					\
> 
> Isn't "Z" better than "e" in this case?

Never mind, brain fart.  These instructions are sign-extended.

Sorry for the noise.

Jung-uk Kim
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEl1bqgKaRyqfWXu/CfJ+WJvzb8UYFAls7zy8ACgkQfJ+WJvzb
8UYiOgf+PSb+Mv7UGCTUlftCiRmYYOW6ElMZSdr4tPinMocn4b/V9KJDqKOgO1SX
B2KCQHgSYt4Y+STiSrcCdhIkqCeIxdqJGHdTNpnpiUm7C+B50MrKgZo6n1xnlcCM
d4thqf0T/ZMaVaVEkZ42FTnmdXFo0L3jHNCHHYrpnXXXfRLJF6j5Q5Uetr1GEUJX
rpV2NIXMdk308qy4EvagLd0DEtT85QAjuG124nKh5FoSFD+5wBGFVrQWk4v4LVyd
rzBNM55JbTlEIFASlFjpiWJVhGvDzNVwN9XRxacYVgfEv23AMEibqhK12V48Lto/
X1/qHA0T9HC+gu/Eol+53AtU/P8ZyQ==
=cHxX
-----END PGP SIGNATURE-----
Received on Tue Jul 03 2018 - 17:32:04 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:16 UTC