Thunderbolt causes NULL pointer deref after cold boot. ThinkPad Yoga 370
by Jordan Glover
Hi!
After cold boot, thunderbolt port causes Kernel Oops with NULL pointer
dereference:
kernel: thunderbolt 0000:08:00.0: NHI initialized, starting thunderbolt
kernel: thunderbolt 0000:08:00.0: allocating TX ring 0 of size 10
kernel: thunderbolt 0000:08:00.0: allocating RX ring 0 of size 10
kernel: thunderbolt 0000:08:00.0: control channel created
kernel: thunderbolt 0000:08:00.0: control channel starting...
kernel: thunderbolt 0000:08:00.0: starting TX ring 0
kernel: thunderbolt 0000:08:00.0: enabling interrupt at register 0x38200 bit 0
(0x0 -> 0x1)
kernel: thunderbolt 0000:08:00.0: starting RX ring 0
kernel: thunderbolt 0000:08:00.0: enabling interrupt at register 0x38200 bit 12
(0x1 -> 0x1001)
kernel: thunderbolt 0000:08:00.0: starting ICM firmware
kernel: BUG: unable to handle kernel NULL pointer dereference at
0000000000000980
kernel: IP: pci_write_config_dword+0x5/0x20
kernel: PGD 0 P4D 0
kernel: Oops: 0000 [#1] PREEMPT SMP PTI
kernel: Modules linked in: psmouse(+) intel_rapl_perf snd_hwdep thunderbolt(+)
input_leds snd_pcm i2c_i801(+) mei_me rtsx_pci_ms memstick mei snd_timer
intel_ish_ipc(+) nvram rfkill ucsi_acpi typec_ucsi intel_ishtp shpchp typec
intel_pch_thermal tpm_crb wmi snd soundcore battery led_class rtc_cmos ac
tpm_tis tpm_tis_core evdev i2c_hid mac_hid tpm sch_fq coretemp msr tun ip_tables
x_tables ext4 crc16 mbcache jbd2 fscrypto algif_skcipher af_alg hid_generic
usbhid hid dm_crypt dm_mod crct10dif_pclmul crc32_pclmul crc32c_intel
rtsx_pci_sdmmc ghash_clmulni_intel pcbc mmc_core serio_raw atkbd libps2
aesni_intel aes_x86_64 crypto_simd glue_helper cryptd rtsx_pci xhci_pci i8042
serio xhci_hcd usbcore usb_common i915 intel_gtt i2c_algo_bit drm_kms_helper
syscopyarea sysfillrect sysimgblt fb_sys_fops drm
kernel: agpgart
kernel: CPU: 2 PID: 500 Comm: systemd-udevd Tainted: G U
4.15.7-1-ARCH #1
kernel: Hardware name: LENOVO 20JJS0HD00/20JJS0HD00, BIOS R0HET45W (1.25 )
02/22/2018
kernel: RIP: 0010:pci_write_config_dword+0x5/0x20
kernel: RSP: 0018:ffffb3a34129ba70 EFLAGS: 00010246
kernel: RAX: 0000000040000126 RBX: 0000000000100000 RCX: 0000000000000050
kernel: RDX: 0000000000000200 RSI: 0000000000000034 RDI: 0000000000000000
kernel: RBP: ffffa07bd62b2728 R08: 0000000000000200 R09: 0000000000000344
kernel: R10: ffffa07bd0253000 R11: 0000000000000000 R12: 0000000000000000
kernel: R13: 0000000000000050 R14: 0000000000000000 R15: 0000000000000000
kernel: FS: 00007fcec45078c0(0000) GS:ffffa07be1500000(0000)
knlGS:0000000000000000
kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
kernel: CR2: 0000000000000980 CR3: 00000002501ce006 CR4: 00000000003606e0
kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
kernel: Call Trace:
kernel: pcie2cio_write+0x3b/0x70 [thunderbolt]
kernel: icm_driver_ready+0x168/0x260 [thunderbolt]
kernel: ? tb_ctl_start+0x50/0x70 [thunderbolt]
kernel: tb_domain_add+0x73/0xf0 [thunderbolt]
kernel: nhi_probe+0x182/0x300 [thunderbolt]
kernel: local_pci_probe+0x42/0xa0
kernel: ? pci_match_device+0xd9/0x100
kernel: pci_device_probe+0x146/0x1b0
kernel: driver_probe_device+0x315/0x480
kernel: __driver_attach+0xa0/0xe0
kernel: ? driver_probe_device+0x480/0x480
kernel: bus_for_each_dev+0x6b/0xb0
kernel: bus_add_driver+0x1c2/0x260
kernel: ? 0xffffffffc09a3000
kernel: driver_register+0x57/0xc0
kernel: ? 0xffffffffc09a3000
kernel: nhi_init+0x29/0x1000 [thunderbolt]
kernel: do_one_initcall+0x4e/0x190
kernel: ? free_unref_page_commit+0x66/0xf0
kernel: ? kmem_cache_alloc_trace+0xa1/0x1c0
kernel: do_init_module+0x5b/0x205
kernel: load_module+0x26ad/0x2b30
kernel: ? kmem_cache_alloc_node_trace+0xe5/0x1d0
kernel: ? vmap_page_range_noflush+0x27b/0x380
kernel: ? SyS_init_module+0x163/0x1a0
kernel: SyS_init_module+0x163/0x1a0
kernel: do_syscall_64+0x74/0x190
kernel: entry_SYSCALL_64_after_hwframe+0x3d/0xa2
kernel: RIP: 0033:0x7fcec3e566ca
kernel: RSP: 002b:00007ffccdf24e78 EFLAGS: 00000246 ORIG_RAX: 00000000000000af
kernel: RAX: ffffffffffffffda RBX: 000055aa503c9f20 RCX: 00007fcec3e566ca
kernel: RDX: 00007fcec370dcb5 RSI: 00000000000401b0 RDI: 000055aa50c156d0
kernel: RBP: 00007fcec370dcb5 R08: 0000000000000006 R09: 00007ffccdf22ec0
kernel: R10: 0000000000000005 R11: 0000000000000246 R12: 000055aa50c156d0
kernel: R13: 000055aa503b2400 R14: 0000000000020000 R15: 00007ffccdf25970
kernel: Code: 00 00 b9 04 00 00 00 4c 8b 4a 20 89 c2 e9 f4 d4 65 00 b8 87 00 00
00 c3 0f 1f 40 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 <48> 8b 87 80 09
00 00 a8 01 75 02 eb ae b8 86 00 00 00 c3 0f 1f
kernel: RIP: pci_write_config_dword+0x5/0x20 RSP: ffffb3a34129ba70
kernel: CR2: 0000000000000980
Thunderbolt port is visible in lspci but not in boltctl or tbtadm. Plugging an
usb device through USB-C has no effect. Forcing power through
/sys/bus/wmi/devices/86CCFD48-205E-4A77-9C48-2021CBEDE341/force_power has no
effect.
After reboot there is no oops anymore but thunderbolt port isn't detected
automatically. Thunderbolt can be loaded with modprobe and forcing power can be
done through
/sys/bus/wmi/devices/86CCFD48-205E-4A77-9C48-2021CBEDE341/force_power. After
that boltctl and tbtadm can detect thundrbolt port. Plugging an usb device
through USB-C has still no effect.
Jordan
2 years, 11 months