web-dev-qa-db-ja.com

Ubuntu LinuxでのThunderboltホットプラグ

Dell Precision M3800とOWC Thunderbolt 2 Dockを持っています。彼らは両方とも美しく連携し、すべてがうまくいくようです。私はまだFireWireを試していませんが、Ethernet、USB3、DisplayPort、およびサウンドはそのまま使用できます。

私のシステムは、Thunderboltケーブルを外すだけでは完全に満足しておらず、ドックを取り外したときにハングすることがあります。それ以外の場合は大丈夫です。私はより安全な方法を見つけたいと思っていて、プラグを抜いてインターフェースを最初に正常に停止することをシステムに伝えることができるメカニズムがあることを望んでいました。

LinuxでのThunderboltのサポートに関するパッケージと情報を検索してみましたが、Greg KHのブログで、機能するだけでツールについては言及されていないことがわかりました。

15.10インストール用のUbuntuリポジトリにThunderbolt関連のパッケージが見つかりません。

これに使用できるツールまたは/ procまたは/ sysノードはありますか?

5
Amias

Thunderboltは基本的に、ユーザーフレンドリーでプラグ可能なインターフェースの形で公開されるPCIeバスです。ご想像のとおり、任意のマシンでPCIeカードをホットプラグすることは、ホストおよびリムーバブルデバイスの製造者とメインボードの開発者によって細心の注意が払われていない限り、問題なく一貫して行うことができるものではありません。ファームウェア、デバイスファームウェア、OSカーネル、デバイスドライバー。

つまり、潜在的なバグと問題のhuge表面領域があり、このホットプラグが希望どおりに機能しない可能性があります。に。私の推奨は、デバッグカーネルを使用して、フリーズしたときにデバッガーに侵入しようとすることです。可能であれば、ハードウェアやファームウェアの問題ではない可能性があります。これを行う手順は、おそらく質問または私の回答の範囲を少し超えていますが、これを少し簡単にするオンラインのリソースを利用できます。

デバイスをヤンクする前に手動でイジェクトでき​​る手段が必要な場合は、以下を試すことができます。

lspciコマンドの出力でシステムのデバイスアドレスを特定した後、DDDD:BB:DD.Fは、問題のThunderboltペリフェラルの Domain:Bus:Device.Function です。 :

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は、将来の使いやすさのためにDDDD:BB:DD.Fの代わりになることは明らかです)。

デバイスを再接続すると、手動で再スキャンが必要になる場合があります。

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

(または必要ない場合もあります。)

最近はほとんどFreeBSDとOS Xなので、しばらくLinuxを使用していません。そのため、ここで何か問題があった場合はご容赦ください。

4

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

これにより、Thunderboltコントローラーのように見える1c.4を見つけることができました。

次にmahmoudの提案を使用して削除ノードをヒットしましたが、これは私のThunderboltドックをきれいに切断するように見えましたが、再挿入するとハードロックされました。これは、他のドライバーがホットプラグにそれほど満足していないか、Thunderboltデバイスをリセットする必要があることを示唆しています。

いずれにせよ、単に引き抜くよりも悪かった。

私は今のところ、ドッキングを解除する前にすべてが保存されていることを確認する必要があると思います。もしあれば、さらなる提案を歓迎します。

2
Amias

システムをRAM=)にサスペンドしてからケーブルを引き抜くことができます。これが、再起動せずにLenovo Thunderbolt 3ドックを取り外す唯一の方法のようです。

1
tolvanea