ターゲット設定:
SoC:NXP i.MX8MP ポート構成:USBポート合計4個(USB 2.0×2、USB 3.0×2)
OS : yocto scarthgap 6.6.52
トポロジー:
私たちの設計では、i.MX8MP SoCは内部のUSB2(本設計ではUSB1回線はotgに接続)コントローラーをUSB 3.0モードで使い、アップストリーム接続を直接オンボードのFresco Logic FL5500-2F0ハブに接続しています。ハブはこの接続を下流の4つの物理ポートに分配します。2つのポートはUSB 3.0のフル機能に対応するように配線されており、残りの2つのポートはUSB 2.0のみに対応するように配線されています。
i.MX8MP(SoCコントローラー「USB2」ライン、USB 3.0モードで動作) - > USB 3.0ハブ(Fresco Logic FL5500-2F0、USB 3.0ポート2つとUSB 2.0ポートを露出)
問題の説明: i.MX8MPで致命的なxHCIコマンドリングのロックアップが発生しており、ハードウェアが再接続時にxchiドライバから発行されたデータコマンドに応答しなくなります。クラッシュ条件は非常に限定的で、単一のハードウェア3.0 USBポートでのみ発生し、他の3.0および2.0ポートではこの問題は発生しません。
ロックアップは、低速(LS)デバイスが下流の高速ハブから物理的に切断されている間に、他の3つのポートのいずれかに少なくとも1台の低速デバイスがバックグラウンドでアクティブに接続されている場合にのみ発生します(問題のあるポートに再接続する前にその低速デバイスを抜いておけば問題は発生しません)。
主な行動的孤立:
ポートアイソレーション:同じマルチデバイスのアンプラグテストをもう一方のUSB 3.0ポートやUSB 2.0ポートで行うと、きれいに切断されます。クラッシュはUSB 3.0ポート1つに限定されています。スピードアイソレーション:バックグラウンドデバイスは低速でなければなりません。バックグラウンドで高速デバイス(USBストレージドライブなど)がどれだけあっても関係ありません。他にLSデバイスがなければ、切断は問題なく処理されます。
注: この問題を解決するために、物理的に抜き差しする前に、以下のコマンドを使用して不良の USB ポートの認証を解除しました。 echo 0 > /sys/bus/usb/devices/1-1.1/authorized
USBドライバーのバインドを解除してバインドすると動作します。
| 使用港 | ハブ上のバックグラウンドデバイス | デバイスのプラグが抜かれています | 切断方法 | ホストコントローラの結果 |
| USB 3.0(良好なポート) | 低速 | 低速 | 物理的に引っ張る | クリーンな分解 |
| USB 2.0ポート | 低速 | 低速 | 物理的に引っ張る | クリーンな分解 |
| USB 3.0(ポートの不具合) | 高速回線のみ | 低速 | 物理的に引っ張る | クリーンな分解 |
| USB 3.0(ポートの不具合) | なし | 低速 | 物理的に引っ張る | クリーンな分解 |
| USB 3.0(ポートの不具合) | 低速 | 低速 | ソフトウェア(認可=0) | クリーンな分解 |
| USB 3.0(ポートの不具合) | 低速 | 低速 | 物理的に引っ張る | コマンドリングタイムアウト (-110)、ホストがクラッシュしました |
ログ、
root@lec-imx8mp:~# lsusb
バス 001 デバイス 001: ID 1d6b:0002 Linux Foundation 2.0 ルートハブ
バス001 デバイス002: ID 1d5c:5510 Fresco Logic Frescologic USB2.0 HUB
バス001 デバイス004: ID 413c:301a Dell Computer Corp. Dell MS116 光学式マウス
バス001 デバイス005: ID 413c:2113 Dell Computer Corp. KB216 有線キーボード
バス 002 デバイス 001: ID 1d6b:0003 Linux Foundation 3.0 ルートハブ
バス002 デバイス002: ID 1d5c:5500 Fresco Logic Frescologic USB3.1Gen2 HUB
root@lec-imx8mp:~# [ 39.686850] usb 1-1.2:USB接続切断、デバイス番号5
[ 41.191295] usb 1-1.1: xhci-hcd を使用する新しい低速 USB デバイス番号 6
root@lec-imx8mp:~# lsusb
バス 001 デバイス 001: ID 1d6b:0002 Linux Foundation 2.0 ルートハブ
[ 51.427313] XHCI-HCD、XHCI-HCD.1.オート:xHCIホストがエンドポイント停止コマンドに応答しません
[ 51.443403] XHCi-HCD、XHCI-HCD.1.auto:xHCIホストコントローラーが応答しない、死んだとみなす
[ 51.451350] XHCI-HCD XHCI-HCD.1.auto:HCが亡くなった。片付け中
[ 51.457035] usb 1-1-port1: usb_device を割り当てできませんでした
[ 51.462339] usb 1-1: USB切断、デバイス番号2
バス 001 デバイス 002: ID 1d5c:5510 [ 51.467338] usb 1-1.4:USB接続切断、デバイス番号4
Fresco Logic Frescologic USB2.0 H[ 51.475602] usb 2-1: USB切断、デバイス番号2
バス001 デバイス004: ID 413c:301a Dell Computer Corp. Dell MS116 光学式マウス
バス 002 デバイス 001: ID 1d6b:0003 Linux Foundation 3.0 ルートハブ
バス002 デバイス002: ID 1d5c:5500 Fresco Logic Frescologic USB3.1Gen2 HUB
root@lec-imx8mp:~# lsusb
バス 001 デバイス 001: ID 1d6b:0002 Linux Foundation 2.0 ルートハブ
バス 002 デバイス 001: ID 1d6b:0003 Linux Foundation 3.0 ルートハブ
この問題に関するご意見や解決策があれば、大変助かります。
ありがとう