Ubuntu Linux 15.10 中的 Thunderbolt 热插拔问题

Ubuntu Linux 15.10 中的 Thunderbolt 热插拔问题

我有一台 Dell Precision M3800 和一台 OWC Thunderbolt 2 Dock。它们配合得很好,一切似乎都正常。

我还没有尝试过 FireWire,但是以太网、USB3、DisplayPort 和声音开箱即用,运行良好。

我的系统对于拔掉 Thunderbolt 电缆并不完全满意,当我移除底座时,系统偶尔会挂起;其他时候系统都很好。我想找到一种更安全的方法,并希望有一种机制可以让我告诉系统我将要拔掉电缆,并首先优雅地取下接口。

我尝试搜索有关 Linux 中 Thunderbolt 支持的软件包和信息,但只发现 Greg KH 的博客说它可以工作,但没有提到任何工具。

我在 Ubuntu 15.10 安装的存储库中没有找到任何与 Thunderbolt 相关的软件包。

是否有我可以用于此的工具或节点/proc/sys

答案1

Thunderbolt 基本上是一种 PCIe 总线,以用户友好的可插拔接口的形式呈现。可以想象,在任何机器上热插拔 PCIe 卡都不是可以指望始终不出问题的事情 - 除非主机和可移动设备的制造商以及主板固件、设备固件、操作系统内核和设备驱动程序的开发人员非常小心。

也就是说,有一个巨大的潜在的错误和问题的表面积会阻止此热插拔按我们希望的方式工作。我的建议是使用调试内核,并在调试器冻结时尝试闯入调试器 - 如果可以,那么它可能不是硬件或固件问题。有关如何执行此操作的说明可能有点超出问题或我在此处的回复范围,但网上有资源可以使此操作更容易一些。

现在如果你想要一种方法来手动在拔出设备之前将其弹出,您可以尝试以下操作:

在命令输出中识别系统中的设备地址后lspci,其中 DDDD:BB:DD.F 是域:总线:设备.功能有问题的雷电外围设备:

05:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:03.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:04.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:05.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:06.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
07:00.0 System peripheral: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
08:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Controller [Cactus Ridge]
09:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Controller [Cactus Ridge]

您可以执行以下操作:

echo "1" | sudo tee /sys/bus/pci/devices/DDDD\:BB\:DD.F/remove > /dev/null

哪个应该触发内核和驱动程序中的卸载例程(甚至可能是设备固件中的卸载例程),之后您就可以更安全地将其弹出。(grep子 shell 中的 A 显然可以代替 DDDD:BB:DD.F,以便将来轻松使用)。

重新插入设备后,可能需要手动重新扫描:

echo "1" | sudo tee /sys/bus/pci/rescan > /dev/null

(或者可能不需要。)

我已经有一段时间没有使用 Linux 了,因为我最近几乎只使用 FreeBSD 和 OS X,所以如果我在这里说错了什么,请原谅我。

答案2

看来,如果你lspci -vt得到一个树形图,就会更容易发现 Thunderbolt 控制器。

这是我的输出:

amias@rome:~$ lspci -vt

-[0000:00]-+-00.0  Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
       +-01.0-[02-03]----00.0  NVIDIA Corporation GK107GLM [Quadro K1100M]
       +-02.0  Intel Corporation 4th Gen Core Processor Integrated Graphics Controller
       +-03.0  Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller
       +-04.0  Intel Corporation Device 0c03
       +-14.0  Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI
       +-16.0  Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1
       +-1a.0  Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2
       +-1b.0  Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller
       +-1c.0-[04]--
       +-1c.2-[06]----00.0  Intel Corporation Wireless 7260
       +-1c.3-[07]----00.0  Realtek Semiconductor Co., Ltd. RTS5249 PCI Express Card Reader
       +-1c.4-[08-40]----00.0-[09-40]--+-00.0-[0a]----00.0  Intel Corporation Device 157d
       |                               \-01.0-[0b-40]----00.0-[0c-40]--+-00.0-[0d]----00.0  Fresco Logic FL1100 USB 3.0 Host Controller
       |                                                               +-01.0-[0e]----00.0  Intel Corporation I210 Gigabit Network Connection
       |                                                               +-02.0-[0f]----00.0  Fresco Logic FL1100 USB 3.0 Host Controller
       |                                                               +-03.0-[10]----00.0  LSI Corporation FW643 [TrueFire] PCIe 1394b Controller
       |                                                               +-04.0-[11]--
       |                                                               \-05.0-[12-40]--
       +-1d.0  Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1
       +-1f.0  Intel Corporation HM87 Express LPC Controller
       +-1f.2  Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
       +-1f.3  Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller
       \-1f.6  Intel Corporation 8 Series Chipset Family Thermal Management Controller

这使我找到了看起来像是我的雷电控制器的 1c.4。

然后我用马哈茂德的建议点击移除节点,这似乎确实干净地断开了我的 Thunderbolt 底座,但是当我重新插入时,它却被牢牢地锁住了。这可能表明其他驱动程序对热插拔不太满意,或者我需要重置 Thunderbolt 设备。

不管怎样,这都比直接把它拔出来更糟糕。

我想现在我只需要确保在脱离对接之前一切都已保存。如果有任何建议,我欢迎您提出进一步的建议。

答案3

您可以尝试将系统挂起到 RAM,然后拔出电缆。这似乎是我无需重启即可拔下联想 Thunderbolt 3 底座的唯一方法。

答案4

pm-suspend一个解决方案是在拔下/重新插入 Thunderbolt 之前先在 RAM 上暂停 ( )。

相关内容