UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 71106

Zynq UltraScale+ MPSoC - PL PCIe Root Port Bridge (Vivado 2018.1) - MSI の割り込み処理によりダウンストリーム デバイスがタイムアウトする

説明

問題の発生したバージョン: v4.0

修正バージョンおよびその他の既知の問題: (Xilinx Answer 65443) (Xilinx Answer 70702)

このアンサーは、(Xilinx Answer 71105) に関連しています。

PetaLinux で MPSoC および pcie-xdma-pl ドライバーを使用し、DMA/Bridge Subsystem for PCI Express (ブリッジ モード/ルート ポート) に複数のダウンストリーム デバイスが接続されている場合、タイムアウトが発生します。 

これは、(Xilinx Answer 71105) で説明されているように MSI 割り込み FIFO がオーバーフローしていることが原因です。

例: 

ダウンストリーム デバイス - NVMe ドライブ - Linux 出力

[   63.813514] nvme nvme0: I/O 5 QID 0 timeout, completion polled
[  123.877515] nvme nvme0: I/O 5 QID 0 timeout, completion polled
[  184.037513] nvme nvme0: I/O 5 QID 0 timeout, completion polled
[  244.805512] nvme nvme0: I/O 5 QID 0 timeout, completion polled
[  304.869514] nvme nvme0: I/O 5 QID 0 timeout, completion polled

 


このアンサーは、PCI Express ソリューション センターの一部です。

(Xilinx Answer 34536) ザイリンクス PCI Express ソリューション センター

ソリューション

この問題は 2018.1 で修正されていて、次の手順に従ってください。

  1. 割り込みデコード レジスタを使用するように IP をコンフィギュレーションします。
  2. IP の新しい出力ポートを MPSoC 割り込み入力に接続します。
  3. pcie-xdma-pl ドライバーのパッチを PetaLinux ビルドに適用します。
  4. 新しい IRQ ラインを使用するよう、PetaLinux のデバイス ツリーを変更します。

 

割り込みデコード レジスタを使用するように IP をコンフィギュレーションする

IP インテグレーター ボードを使用するには (IP を AXI ブリッジ モードおよびルート ポート モードに設定した後)

set_property -dict [list CONFIG.msi_rx_pin_en {true}] [get_bd_cells <ip_name>]

次の 2 つの新しい出力ポートが IP に追加されます。

  1. interrupt_out_msi_vec0to31 (ブリッジ レジスタ オフセット 0x160 に対応)
  2. interrupt_out_msi_vec32to63 (ブリッジ レジスタ オフセット 0x164 に対応)

 

IP の新しい出力ポートを MPSoC 割り込み入力に接続する

PCIe ブロックの interrupt_out* 出力に連結ブロックを使用し、MPSoC の pl_ps_irq0 入力ポートに信号を供給します。 

(注記: pl_ps_irq0 ベクター幅は自動的に「Validate Design」ステップでアップデートされます。)

 




 

ビルドにパッチ (添付) を適用:

パッチ (このアンサーに添付) を <petalinux-project-name>/project-spec/meta-user/recipes-kernel/linux/linux-xlnx にコピーします。

 

baapend.png

 

 

<petalinux-project-name>/project-spec/meta-user/recipes-kernel/linux ディレクトリで次のように linux-xlnx_%.bbappend をアップデートします。

SRC_URI += " \
file://user_2018-05-14-09-30-00.cfg \
file://<patch_name>.patch \
"

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

 

 

prepend_example.jpg

 

 

 

新しい割り込み行を含めるため、システム DTS ファイルを変更

システム DTSI ファイルを次のように変更します。正しい IP インスタン名を確認しておく必要があります。

割り込みの付番が PL-PS 割り込みベクターと一貫していることを確認し (すべてのベクターに対し 1 つの連結ブロック入力を使用して)、基本に基づいた適切なベクターを割り当てるようにしてください。

次の例は、使用しているデザインに合わせて変更する必要がある場合があります。(その計算の上級例については、添付の PDF を参照のこと)

例:

project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
/include/ "system-conf.dtsi"
&xdma_0 {
        /delete-property/interrupt-names;
        /delete-property/interrupts;
        interrupt-names = "misc", "msi0", "msi1";
        interrupts = <0 89 4>, <0 90 4>, <0 91 4>;
};

 

注記: PetaLinux ビルドへの一部の変更は、この変更により上書きされるので、再度変更作業を行う必要がある場合があります。

注記: [問題の発生したバージョン] 列には、問題が最初に見つかったバージョンを示します。

問題はそれ以前のバージョンでも発生していた可能性がありますが、以前のバージョンではそれを検証するテストは実行されていません。  

改訂履歴

2018/06/06 - 初版

添付ファイル

関連添付ファイル

タイトル サイズ ファイルタイプ
AR71106_pci-xdma-pl_2018_1_msi-decode_rev1.patch 9 KB PATCH
Xilinx_Answer_71106_Advanced_DTS_Edit_example_v0.pdf 300 KB PDF

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
70702 Zynq UltraScale+ MPSoC - PS/PL PCIe ドライバー - リリース ノート N/A N/A

関連アンサー レコード

AR# 71106
日付 08/30/2018
ステータス アクティブ
種類 既知の問題
デバイス
  • Zynq UltraScale+ MPSoC
IP
  • DMA for PCI Express (PCIe) Subsystem
このページをブックマークに追加