RE: [PATCH v4 00/27] Thunderbolt security levels and NVM firmware upgrade

From: Mario.Limonciello
Date: Thu Jul 20 2017 - 12:16:08 EST


> -----Original Message-----
> From: Christian Kellner [mailto:ckellner@xxxxxxxxxx]
> Sent: Thursday, July 20, 2017 11:12 AM
> To: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
> Cc: Andreas Noever <andreas.noever@xxxxxxxxx>; Greg Kroah-Hartman
> <gregkh@xxxxxxxxxxxxxxxxxxx>; Michael Jamet <michael.jamet@xxxxxxxxx>;
> Yehezkel Bernat <yehezkel.bernat@xxxxxxxxx>; Lukas Wunner
> <lukas@xxxxxxxxx>; Amir Levy <amir.jer.levy@xxxxxxxxx>; Andy Lutomirski
> <luto@xxxxxxxxxx>; Limonciello, Mario <Mario_Limonciello@xxxxxxxx>;
> Dominguez, Jared <Jared_Dominguez@xxxxxxxx>; Andy Shevchenko
> <andriy.shevchenko@xxxxxxxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx; Peter FP1
> Zhang <zhangfp1@xxxxxxxxxx>
> Subject: Re: [PATCH v4 00/27] Thunderbolt security levels and NVM firmware
> upgrade
>
> Hi!
>
> > This is fourth version of the patch series adding support for Thunderbolt
> > security levels and NVM firmware upgrade.
>
> While prototyping the user-space bits for GNOME, I stumbled upon an
> oops on the Lenovo T470s (see below) when attaching a Dell TB16
> thunderbolt 3 dock. As a result /sys/bus/thunderbolt/devices has only
> domain0 in it but not the dock itself. Everything works fine on a Dell
> XPS 13 9630. The oops happens with linux-next and when I backport the
> patches to 4.11.11.
> Happy to provide any more information and test future patches.
>
Christian,

Did you by chance boot with the dock "plugged in"? Or was this the result of
plugging in after boot?

There is a known issue that Mika is tracking regarding some problems with
Thunderbolt devices plugged in at boot. It causes a few things to explode
down the line too (which I suspect is what happened).

Thanks,

> Cheers,
> Christian
>
> --- 8< ---
> lspci output:
>
> pcilib: Cannot open /sys/bus/pci/devices/0000:03:00.0/config
> lspci: Unable to read the standard configuration space header of device
> 0000:03:00.0
> 00:00.0 Host bridge: Intel Corporation Device 5904 (rev 02)
> 00:02.0 VGA compatible controller: Intel Corporation Device 5916 (rev 02)
> 00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller
> (rev 21)
> 00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal
> subsystem (rev 21)
> 00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI
> #1 (rev 21)
> 00:16.3 Serial controller: Intel Corporation Device 9d3d (rev 21)
> 00:1c.0 PCI bridge: Intel Corporation Device 9d10 (rev f1)
> 00:1c.2 PCI bridge: Intel Corporation Device 9d12 (rev f1)
> 00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev
> f1)
> 00:1f.0 ISA bridge: Intel Corporation Device 9d4e (rev 21)
> 00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
> 00:1f.3 Audio device: Intel Corporation Device 9d71 (rev 21)
> 00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
> 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (4) I219-LM (rev
> 21)
> 01:00.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power)
> [Alpine Ridge LP 2016] (rev ff)
> 02:00.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power)
> [Alpine Ridge LP 2016] (rev ff)
> 02:01.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power)
> [Alpine Ridge LP 2016] (rev ff)
> 02:02.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power)
> [Alpine Ridge LP 2016] (rev ff)
> 3a:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
> 3c:00.0 Non-Volatile memory controller: Toshiba America Info Systems Device
> 0115 (rev 01)
>
> --- >8 ---
> Ops:
>
> [ 69.886978] thunderbolt 0000:03:00.0: current switch config:
> [ 69.886983] thunderbolt 0000:03:00.0: Switch: 8086:15c0 (Revision: 1, TB
> Version: 2)
> [ 69.886986] thunderbolt 0000:03:00.0: Max Port Number: 5
> [ 69.886987] thunderbolt 0000:03:00.0: Config:
> [ 69.886991] thunderbolt 0000:03:00.0: Upstream Port Number: 3 Depth: 0
> Route String: 0x0 Enabled: 1, PlugEventsDelay: 254ms
> [ 69.886994] thunderbolt 0000:03:00.0: unknown1: 0x0 unknown4: 0x0
> [ 69.920748] BUG: unable to handle kernel NULL pointer dereference at
> 00000000000002ec
> [ 69.920834] IP: tb_drom_read+0x383/0x890 [thunderbolt]
> [ 69.920873] PGD 0
> [ 69.920874] P4D 0
>
> [ 69.920925] Oops: 0000 [#1] SMP
> [ 69.920952] Modules linked in: thunderbolt(+) fuse rfcomm ccm xt_CHECKSUM
> ipt_MASQUERADE nf_nat_masquerade_ipv4 tun nf_conntrack_netbios_ns
> nf_conntrack_broadcast xt_CT ip6t_rpfilter ip6t_REJECT nf_reject_ipv6
> xt_conntrack ip_set nfnetlink ebtable_nat ebtable_broute bridge stp llc
> ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle
> ip6table_raw ip6table_security iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4
> nf_nat_ipv4 nf_nat nf_conntrack libcrc32c iptable_mangle iptable_raw
> iptable_security ebtable_filter ebtables ip6table_filter ip6_tables cmac bnep
> sunrpc arc4 wmi_bmof iTCO_wdt iwlmvm iTCO_vendor_support snd_soc_skl
> mei_wdt snd_soc_skl_ipc snd_soc_sst_ipc snd_soc_sst_dsp snd_hda_ext_core
> tpm_crb snd_soc_sst_match intel_rapl x86_pkg_temp_thermal intel_powerclamp
> mac80211 coretemp
> [ 69.921479] kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel
> snd_hda_codec_hdmi intel_cstate intel_uncore intel_rapl_perf snd_soc_core
> iwlwifi snd_hda_codec_realtek snd_hda_codec_generic snd_compress
> snd_pcm_dmaengine ac97_bus snd_hda_intel snd_hda_codec snd_hda_core
> cfg80211 snd_hwdep snd_seq pcspkr uvcvideo hci_uart joydev snd_seq_device
> snd_pcm videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_core
> btusb videodev btrtl btbcm snd_timer i2c_i801 btqca btintel media bluetooth
> qcserial mei_me usb_wwan mei shpchp thinkpad_acpi intel_pch_thermal snd wmi
> tpm_tis soundcore tpm_tis_core pinctrl_sunrisepoint intel_lpss_acpi tpm
> ecdh_generic intel_lpss pinctrl_intel rfkill acpi_pad cdc_mbim cdc_wdm cdc_ncm
> usbnet mii uas usb_storage i915 i2c_algo_bit drm_kms_helper drm e1000e
> crc32c_intel
> [ 69.922013] ptp serio_raw nvme nvme_core pps_core video i2c_hid
> [ 69.922062] CPU: 3 PID: 12248 Comm: systemd-udevd Not tainted 4.13.0-rc1-
> next-20170719 #1
> [ 69.922116] Hardware name: LENOVO 20HF000YGE/20HF000YGE, BIOS
> N1WET32W (1.11 ) 05/23/2017
> [ 69.922170] task: ffff8a293e4bcd80 task.stack: ffffa698027a8000
> [ 69.922218] RIP: 0010:tb_drom_read+0x383/0x890 [thunderbolt]
> [ 69.922256] RSP: 0018:ffffa698027ab990 EFLAGS: 00010246
> [ 69.922292] RAX: 0000000000000000 RBX: ffff8a2940af7800 RCX:
> 0000000000000000
> [ 69.922339] RDX: ffff8a2940ebb400 RSI: 0000000000000000 RDI:
> ffffa698027ab9a0
> [ 69.922385] RBP: ffffa698027ab9d0 R08: 0000000000000001 R09:
> 0000000000000002
> [ 69.922432] R10: ffff8a2940ebb5b0 R11: 0000000000000000 R12:
> ffff8a293bfa968c
> [ 69.922478] R13: 000000000000002c R14: 0000000000000056 R15:
> 0000000000000056
> [ 69.922526] FS: 00007f0a945a38c0(0000) GS:ffff8a2961580000(0000)
> knlGS:0000000000000000
> [ 69.922579] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 69.922617] CR2: 00000000000002ec CR3: 000000043e785000 CR4:
> 00000000003606e0
> [ 69.922665] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
> 0000000000000000
> [ 69.922712] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
> 0000000000000400
> [ 69.922760] Call Trace:
> [ 69.922789] tb_switch_add+0x9d/0x730 [thunderbolt]
> [ 69.922846] ? tb_switch_alloc+0x3cd/0x4d0 [thunderbolt]
> [ 69.922893] icm_start+0x5a/0xa0 [thunderbolt]
> [ 69.922934] tb_domain_add+0xc3/0xf0 [thunderbolt]
> [ 69.922976] nhi_probe+0x19e/0x310 [thunderbolt]
> [ 69.923017] local_pci_probe+0x42/0xa0
> [ 69.923048] pci_device_probe+0x18d/0x1a0
> [ 69.923082] driver_probe_device+0x2ff/0x450
> [ 69.923116] __driver_attach+0xa4/0xe0
> [ 69.923146] ? driver_probe_device+0x450/0x450
> [ 69.923184] bus_for_each_dev+0x6e/0xb0
> [ 69.923215] driver_attach+0x1e/0x20
> [ 69.923246] bus_add_driver+0x1d0/0x270
> [ 69.923277] ? 0xffffffffc0bbb000
> [ 69.923304] driver_register+0x60/0xe0
> [ 69.923334] ? 0xffffffffc0bbb000
> [ 69.923372] __pci_register_driver+0x4c/0x50
> [ 69.923411] nhi_init+0x28/0x1000 [thunderbolt]
> [ 69.923449] do_one_initcall+0x50/0x190
> [ 69.923481] ? __vunmap+0x81/0xb0
> [ 69.923511] ? _cond_resched+0x1a/0x50
> [ 69.923544] ? kmem_cache_alloc_trace+0x15f/0x1c0
> [ 69.923581] ? do_init_module+0x27/0x1e9
> [ 69.923613] do_init_module+0x5f/0x1e9
> [ 69.923643] load_module+0x24e7/0x2a60
> [ 69.923677] ? vfs_read+0x115/0x130
> [ 69.923707] SYSC_finit_module+0xfc/0x120
> [ 69.923738] ? SYSC_finit_module+0xfc/0x120
> [ 69.923773] SyS_finit_module+0xe/0x10
> [ 69.923805] do_syscall_64+0x67/0x170
> [ 69.923850] entry_SYSCALL64_slow_path+0x25/0x25
> [ 69.923882] RIP: 0033:0x7f0a93214529
> [ 69.923908] RSP: 002b:00007fffddc70308 EFLAGS: 00000246 ORIG_RAX:
> 0000000000000139
> [ 69.923959] RAX: ffffffffffffffda RBX: 000000c52e0e6450 RCX:
> 00007f0a93214529
> [ 69.924005] RDX: 0000000000000000 RSI: 00007f0a93d509c5 RDI:
> 0000000000000007
> [ 69.924052] RBP: 00007f0a93d509c5 R08: 0000000000000000 R09:
> 00007fffddc70420
> [ 69.926454] R10: 0000000000000007 R11: 0000000000000246 R12:
> 0000000000000000
> [ 69.928766] R13: 000000c52e0e5590 R14: 0000000000020000 R15:
> 000000c52df83f4a
> [ 69.931055] Code: 8d 0c c9 83 e0 01 84 c0 4c 8d 14 ca 41 88 42 35 75 85 49 8b 42
> 20 41 0f b6 4a 34 41 b9 02 00 00 00 41 b8 01 00 00 00 4c 89 55 c0 <8b> 90 ec 02 00
> 00 8b b0 e8 02 00 00 48 8b 80 08 03 00 00 81 e2
> [ 69.933380] RIP: tb_drom_read+0x383/0x890 [thunderbolt] RSP:
> ffffa698027ab990
> [ 69.935708] CR2: 00000000000002ec
> [ 69.950221] ---[ end trace a3f247a8fe7705ab ]---
>
> --- 8< ---
>
> --
> Dr. Christian J. Kellner
> Red Hat Desktop Hardware Enablement
> ckellner@xxxxxxxxxx