FreeBSDDesktop / kms-drm

the DRM part of the linuxkpi-based KMS
63 stars 26 forks source link

Kernel panic loading i915kms.ko #23

Open eatonphil opened 6 years ago

eatonphil commented 6 years ago

I'm running CURRENT with what I believe is a Kabylake Intel HD graphics card. After I upgraded from a December snapshot, I now get kernel panics when I try to load the i915kms kernel module provided by drm-next-kmod. I've attached some output I got from running kgdb on the vmcore file dumped during the crash.

log.txt

Here are the relevant pciconf lines:

vgapci0@pci0:0:2:0:     class=0x030000 card=0x07bf1028 chip=0x591b8086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'                                                    
    class      = display            
    subclass   = VGA

Let me know if there's anything else I can provide.

johalun commented 6 years ago

+1

I have 12-CURRENT snapshot from this week. pkg installed kmods yesterday. Hardware is Broadwell laptop from 2015.

#0  doadump (textdump=1) at pcpu.h:228
#1  0xffffffff80ac7012 in kern_reboot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:415
#2  0xffffffff80ac75dd in vpanic (fmt=<value optimized out>, ap=<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:811
#3  0xffffffff80ac7623 in panic (fmt=<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:738
#4  0xffffffff80f784d2 in trap_fatal (frame=0xfffffe004d8f4840, eva=4294967337) at /usr/src/sys/amd64/amd64/trap.c:813
#5  0xffffffff80f78542 in trap_pfault (frame=0xfffffe004d8f4840, usermode=0) at pcpu.h:228
#6  0xffffffff80f77d30 in trap (frame=0xfffffe004d8f4840) at /usr/src/sys/amd64/amd64/trap.c:417
#7  0xffffffff80f550fd in calltrap () at /usr/src/sys/amd64/amd64/exception.S:232
#8  0xffffffff82ee7ccc in autoremove_wake_function (wq=0xfffffe00004f6018, state=3, flags=<value optimized out>, 
    key=<value optimized out>) at /usr/src/sys/compat/linuxkpi/common/src/linux_schedule.c:80
#9  0xffffffff82ee7db6 in linux_wake_up (wqh=0xfffffe004da23a40, state=3, nr=0, locked=false)
    at /usr/src/sys/compat/linuxkpi/common/src/linux_schedule.c:168
#10 0xffffffff82d9374b in cpt_write_infoframe (encoder=<value optimized out>, frame=0xfffff8000368b018)
    at /usr/src/sys/dev/drm2/i915/intel_hdmi.c:223
#11 0xffffffff80a8a869 in intr_event_execute_handlers (p=<value optimized out>, ie=0xfffff8000368b000)
    at /usr/src/sys/kern/kern_intr.c:1338
#12 0xffffffff80a8af57 in ithread_loop (arg=0xfffff800263900e0) at /usr/src/sys/kern/kern_intr.c:1351
#13 0xffffffff80a87ca4 in fork_exit (callout=0xffffffff80a8aea0 <ithread_loop>, arg=0xfffff800263900e0, frame=0xfffffe004d8f4ac0)
    at /usr/src/sys/kern/kern_fork.c:1039
#14 0xffffffff80f55bbe in fork_trampoline () at /usr/src/sys/amd64/amd64/exception.S:687
#15 0x0000000000000000 in ?? ()
Current language:  auto; currently minimal
johalun commented 6 years ago

Building modules from this repo's head against /usr/src installed with snapshot works. Apart from console getting very sluggish after kldload i915kms, things in X seem to work fine.

Getting a bunch of warnings at kldload I haven't seen before:

WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)
WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)
WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)
WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)
WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)
WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)
WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)WARN_ON(!msg->buffer != !msg->size)
WARN_ON(!msg->buffer != !msg->size)
eatonphil commented 6 years ago

@johalun you're saying the kernel module installed by the drm-next-kmod package crashed but the kernel module installed by manually building from this repo did not? The drm-next-kmod package is up-to-date with this repo's head. What difference is there?

eatonphil commented 6 years ago

Well I can confirm that things are working when building from head on this repo instead of installing drm-next-kmod from pkg.

iotamudelta commented 6 years ago

@eatonphil so it seems the builder of your package and your FreeBSD version are not in sync. Which revision do you run?

RexBael commented 6 years ago

I experienced the same issue on a Kabylake processor. Kernel panic when using the pkg. Everything works after building from head.

johalun commented 6 years ago

Probably some changes to preprocessor macros in HEAD which are being used when building linuxkpl_gplv2.. One more reason as to why I think those two should not be separated...

trombonehero commented 6 years ago

+1 on Skylake: the package-provided module panics when enumerating displays; everything seems to load fine when built from source.

<6>[drm] Connector eDP-1: get mode from tunables:
<6>[drm]   - kern.vt.fb.modes.eDP-1
<6>[drm]   - kern.vt.fb.default_mode
kernel trap 12 with interrupts disabled
Fatal trap 12: page fault while in kernel mode
[...]
--- trap 0xc, rip = 0xffffffff82a3221c, rsp = 0xfffffe005570d800, rbp = 0xfffffe005570d820 ---
autoremove_wake_function() at autoremove_wake_function+0x1c/frame 0xfffffe005570d820
linux_wake_up() at linux_wake_up+0x76/frame 0xfffffe005570d870
gen8_irq_handler() at gen8_irq_handler+0x1ab/frame 0xfffffe005570d8e0
intr_event_execute_handlers() at intr_event_execute_handlers+0xe9/frame 0xfffffe005570d920
ithread_loop() at ithread_loop+0xe7/frame 0xfffffe005570d970
fork_exit() at fork_exit+0x83/frame 0xfffffe005570d9b0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe005570d9b0

vs

[drm] Connector eDP-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.eDP-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector HDMI-A-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.HDMI-A-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector DP-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.DP-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector HDMI-A-2: get mode from tunables:
[drm]   - kern.vt.fb.modes.HDMI-A-2
[drm]   - kern.vt.fb.default_mode
[drm] GuC firmware load skipped
[drm] Initialized i915 1.6.0 20160919 for drmn on minor 0
VT: Replacing driver "efifb" with new "fb".
hselasky commented 6 years ago

This is expected. The cluster builder for the drm-next-kmod needs to rebuild the package with the latest kernel sources.