Re: atomic changes break drm-next-kmod?

From: Pete Wright <pete_at_nomadlogic.org>
Date: Tue, 3 Jul 2018 14:17:20 -0700
On 07/03/2018 12: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/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);
>>>>                               ^
>>>> <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);					\
>
>

i've just built a kernel with this patch applied, rebooted into it and 
was able to build the drm-next-kmod port.  i am also running X without 
issues so far with this configuration.

cheers,
-pete


-- 
Pete Wright
pete_at_nomadlogic.org
_at_nomadlogicLA
Received on Tue Jul 03 2018 - 19:17:29 UTC

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