From owner-freebsd-current@freebsd.org Tue Jul 3 22:20:29 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 7A7B2102E0B5 for ; Tue, 3 Jul 2018 22:20:29 +0000 (UTC) (envelope-from pete@nomadlogic.org) Received: from vps-mail.nomadlogic.org (mail.nomadlogic.org [IPv6:2607:f2f8:a098::2]) (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 E87E873E36; Tue, 3 Jul 2018 22:20:28 +0000 (UTC) (envelope-from pete@nomadlogic.org) Received: from [192.168.1.106] (cpe-75-82-194-8.socal.res.rr.com [75.82.194.8]) by vps-mail.nomadlogic.org (OpenSMTPD) with ESMTPSA id 2a4b6ee0 TLS version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO; Tue, 3 Jul 2018 15:20:26 -0700 (PDT) Subject: Re: atomic changes break drm-next-kmod? From: Pete Wright To: John Baldwin , Niclas Zeising , "O. Hartmann" , FreeBSD Current References: <20180703170223.266dbf5b@thor.intern.walstatt.dynvpn.de> Message-ID: <845aca10-8c01-fa3b-087f-f957df4e7531@nomadlogic.org> Date: Tue, 3 Jul 2018 15:20:22 -0700 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US 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 22:20:29 -0000 On 07/03/2018 15:12, Pete Wright wrote: > > > On 07/03/2018 14:17, Pete Wright wrote: >> >> >> 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 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);                    \ >>> >>> >> >> 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. >> > > > oh neat - looks like this may have triggered a kernel panic. > fortunately i was able to savecore.  here's the output of my info file: > > info: >   Version String: FreeBSD 12.0-CURRENT #7 d7ac1268f3a(master)-dirty: > Tue Jul  3 13:53:50 PDT 2018 > pete@duke:/usr/obj/usr/home/pete/git/freebsd/amd64.amd64/sys/GENERIC-EVDEV > >   Panic String: Duplicate free of 0xfffff8010ac59000 from zone > 0xfffff800340935a0(i915_gem_request) slab 0xfffff8010ac43af0(0) > > i didn't build a kernel.debug file unfortunately, but here's the > output of my core.txt file, not sure how helpful it is: darn, hit send too soon - i was looking in wrong place for debug kernel - here is some hopefully more helpful info: $ sudo kgdb /usr/lib/debug/boot/kernel/kernel.debug /var/crash/vmcore.1 Unread portion of the kernel message buffer: WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !mutex_is_locked(&mode_config->mutex) && !drm_modeset_is_locked(&mode_config->connection_mutex) failed at /usr/home/pete/git/freebsd-ports/graphics/drm-next-kmod/work/kms-drm-a753215/include/drm/drm_crtc.h:1403 WARNING !state->acquire_ctx failed at drm_atomic.c:909 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:909 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !mutex_is_locked(&mode_config->mutex) && !drm_modeset_is_locked(&mode_config->connection_mutex) failed at /usr/home/pete/git/freebsd-ports/graphics/drm-next-kmod/work/kms-drm-a753215/include/drm/drm_crtc.h:1403 WARNING !state->acquire_ctx failed at drm_atomic.c:909 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:909 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:634 WARNING !mutex_is_locked(&mode_config->mutex) && !drm_modeset_is_locked(&mode_config->connection_mutex) failed at /usr/home/pete/git/freebsd-ports/graphics/drm-next-kmod/work/kms-drm-a753215/include/drm/drm_crtc.h:1403 WARNING !mutex_is_locked(&mode_config->mutex) && !drm_modeset_is_locked(&mode_config->connection_mutex) failed at /usr/home/pete/git/freebsd-ports/graphics/drm-next-kmod/work/kms-drm-a753215/include/drm/drm_crtc.h:1403 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:270 WARNING !state->acquire_ctx failed at drm_atomic.c:270 panic: running but not TDS_RUNNING cpuid = 7 time = 1530655265 KDB: stack backtrace: db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe00756b9ef0 vpanic() at vpanic+0x1a3/frame 0xfffffe00756b9f50 doadump() at doadump/frame 0xfffffe00756b9fd0 sleepq_timedwait() at sleepq_timedwait+0x50/frame 0xfffffe00756ba010 linux_add_to_sleepqueue() at linux_add_to_sleepqueue+0xfd/frame 0xfffffe00756ba060 linux_wait_event_common() at linux_wait_event_common+0x149/frame 0xfffffe00756ba0b0 intel_atomic_wait_for_vblanks() at intel_atomic_wait_for_vblanks+0x38c/frame 0xfffffe00756ba200 intel_atomic_commit_tail() at intel_atomic_commit_tail+0x808/frame 0xfffffe00756ba3e0 intel_atomic_commit() at intel_atomic_commit+0x24c/frame 0xfffffe00756ba460 drm_atomic_commit() at drm_atomic_commit+0x95/frame 0xfffffe00756ba490 restore_fbdev_mode_atomic() at restore_fbdev_mode_atomic+0x1da/frame 0xfffffe00756ba510 restore_fbdev_mode() at restore_fbdev_mode+0x43/frame 0xfffffe00756ba5b0 drm_fb_helper_restore_fbdev_mode_unlocked() at drm_fb_helper_restore_fbdev_mode_unlocked+0x45/frame 0xfffffe00756ba5f0 vt_kms_postswitch() at vt_kms_postswitch+0x1e2/frame 0xfffffe00756ba660 vt_window_switch() at vt_window_switch+0x128/frame 0xfffffe00756ba6a0 vtterm_cngrab() at vtterm_cngrab+0x20/frame 0xfffffe00756ba6c0 cngrab() at cngrab+0x42/frame 0xfffffe00756ba6e0 vpanic() at vpanic+0xfb/frame 0xfffffe00756ba740 panic() at panic+0x43/frame 0xfffffe00756ba7a0 uma_dbg_free() at uma_dbg_free+0x174/frame 0xfffffe00756ba7d0 uma_zfree_arg() at uma_zfree_arg+0xf6/frame 0xfffffe00756ba830 linux_rcu_cleaner_func() at linux_rcu_cleaner_func+0xa2/frame 0xfffffe00756ba860 taskqueue_run_locked() at taskqueue_run_locked+0x14c/frame 0xfffffe00756ba8c0 taskqueue_run() at taskqueue_run+0x4a/frame 0xfffffe00756ba8e0 intr_event_execute_handlers() at intr_event_execute_handlers+0x99/frame 0xfffffe00756ba920 ithread_loop() at ithread_loop+0xb7/frame 0xfffffe00756ba970 fork_exit() at fork_exit+0x84/frame 0xfffffe00756ba9b0 fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe00756ba9b0 --- trap 0, rip = 0, rsp = 0, rbp = 0 --- KDB: enter: panic #0  cpustop_handler () at /usr/home/pete/git/freebsd/sys/x86/x86/mp_x86.c:1379 1379        CPU_SET_ATOMIC(cpu, &stopped_cpus); (kgdb) bt #0  cpustop_handler () at /usr/home/pete/git/freebsd/sys/x86/x86/mp_x86.c:1379 #1  0xffffffff811e9ae4 in ipi_nmi_handler () at /usr/home/pete/git/freebsd/sys/x86/x86/mp_x86.c:1337 #2  0xffffffff81070d29 in trap (frame=0xffffffff81fb42f0) at /usr/home/pete/git/freebsd/sys/amd64/amd64/trap.c:192 #3  0xffffffff8104d0d4 in nmi_calltrap () at /usr/home/pete/git/freebsd/sys/amd64/amd64/exception.S:768 #4  0xffffffff811d9a2c in acpi_cpu_idle_mwait (mwait_hint=0) at cpufunc.h:620 Previous frame inner to this frame (corrupt stack?) Current language:  auto; currently minimal (kgdb) -pete -- Pete Wright pete@nomadlogic.org @nomadlogicLA