2410515_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2410515_ja-JP

2410515_ja-JP

i.MX95 19x19 EVK: SMMUコヒーレントテーブルウォーク(IDR0.COHACC)およびSMMUが有効なDPDK用のvfio-pci

こんにちは、NXP チームの皆様、

私たちは、i.MX95 19x19 LPDDR5 EVKと公式のNXP Linux BSP LF 6.6.52_2.2.2を組み合わせた高スループット・低レイテンシのネットワーク製品を開発しています

ユーザー空間PMDと共に、 netc関数(例: 0002:00:00.0 やSR-IOV VF)で vfio-pci を 用いてDPDKを実行する必要があります 。しかし、 SMMUが有効になると vfio-pciへのバインド が失敗します。

  1. 64バイトフレームのベンチマークでは:

    • Linuxカーネルドライバー(fsl_enetc4 約17万ページ
    • SMMUが無効になっているVFでのネイティブPMD:約456,000pps

    パフォーマンスの違いにより、ユーザー空間のDPDKドライバが私たちのアプリケーションに必要です。

  2. 番システムではハードウェアによるDMA隔離が必要なためSMMUを無効化したりenable_unsafe_noiommu_mode=1を使うことはできません。
  3. SMMUが有効になっている場合、NETC機能をfsl_enetc4からバインド解除してvfio-pciにバインドすると、 -EINVALエラーで失敗します
root@imx95-19x19-lpddr5-evk:~# lspci -k -s 0002:00:00.0
0002:00:00.0 Ethernet controller: Philips Semiconductors Device e101 (rev 04)
        Subsystem: Philips Semiconductors Device e101
        Kernel driver in use: fsl_enetc4

root@imx95-19x19-lpddr5-evk:~# echo 0002:00:00.0 > /sys/bus/pci/drivers/fsl_enetc4/unbind
root@imx95-19x19-lpddr5-evk:~# echo "1131 e101" > /sys/bus/pci/drivers/vfio-pci/new_id
[  143.562552] vfio-pci: probe of 0002:00:00.0 failed with error -22
  1. Linux VFIOおよびArm SMMUコードの追跡から、この障害はSMMUのコヒーレンシー能力に関連しているようです。VFIOIOMMU_CAP_CACHE_COHERENCYを必要とし、Arm SMMUドライバーは IDR0 に基づいてARM_SMMU_FEAT_COHERENCYを有効にします。COHACCです。
  2. i.MX95 EVKでは、IDR0。COHACCは0を読み取り、SMMUは一貫した翻訳テーブルウォークをサポートしていないと報告されます。これにより、device_iommu_capable(..., IOMMU_CAP_CACHE_COHERENCY)falseを返し、vfio-pciが-EINVALで失敗します
  3. We understand that adding dma-coherent; to the SMMU device-tree node can force the Linux SMMUドライバー to enable ARM_SMMU_FEAT_COHERENCY. However, this also causes io-pgtable-arm to configure pgtbl_cfg.coherent_walk = true, which disables the CPU cache maintenance normally performed for page-table updates.
  4. したがって、DMAコヒーレントを有効にしたくありませんi.MX95ハードウェアがコヒーレントなSMMU変換テーブルウォークをサポートすることが確認されていない限りです。インターコネクトがSMMUテーブルウォークのためにCPUキャッシュをスヌープしない場合、動的IOMMUマッピング中にページテーブルエントリの古びやメモリ破損を引き起こす可能性があります。

NXPの皆さん、以下の点を明確にしていただけますか?

  1. i.MX95シリコン/インターコネクトは 、 CPUキャッシュの必要なキャッシュスヌーピングを含む ハードウェアコヒーレントなSMMU変換テーブルウォーク をサポートしていますか?
  2. もしコヒーレントテーブルウォークがサポートされている場合、 SMMUがコヒーレントウォークを報告する前に、インターコネクト、システムマネージャー、ATF/ファームウェア、またはその他のプラットフォーム初期化で有効化しなければならない設定はありますか?
  3. もしコヒーレントテーブルウォークがサポートされている場合、NXP推奨のデバイスツリー/ファームウェア構成は安全に有効化されるためのもので、EVK上でどのように検証できますか?
  4. も しコヒーレントテーブルウォーク が サポートされていない 場合、 SMMU/DMAのアイソレーションを有効にしたまま vfio-pciでDPDK を使用する際、NXPが推奨する本番環境で安全な方法は何ですか?

i.MX95でSMMUを有効にした状態でDPDK + vfio-pciをサポートする構成について、何かご助言いただければ大変ありがたいです。

Re: i.MX95 19x19 EVK: SMMU coherent table walks (IDR0.COHACC) and vfio-pci for DPDK with SMMU enable

顧客が他の用途でSMMUを使いたいが、DPDKのバイパスは許容される場合(bootargsでiommu.passthrough=1を使ったり、dtsでSMMUノードを無効にしたくない場合)。
その後、uio-pci-genericフレームワークをバインドし、VSI-PSIメッセージングを無効にしようと試みることができます(エクスポートENETC4_VSI_MSG_DISABLE=1)。しかしVSI-PSIメッセージを無効にすると、ユーザーはpromisc、VLAN MACフィルタリング、リンク情報などのENETC機能が使えなくなります。

Re: i.MX95 19x19 EVK: SMMU coherent table walks (IDR0.COHACC) and vfio-pci for DPDK with SMMU enable

DPDKチームからフィードバックがあり、以下の質問をされました。

これは既知の制約事項です。i.MX95-evkはIOキャッシュでないコヒーレントプラットフォームであり、SMMU対応のドライバ VFIO_PCI「IOMMU_CAP_CACHE_COHERENCY」に依存しており、これは公表できません。
詳細はすべてREADMEに記載されています: dpdk/nxp/README_imx95_enetc_vf_vfio at 25.11-qoriq · NXP/dpdk · GitHub


dpdkのデータパスでも確認できますが、ドライバは非キャッシュ可能なメモリを使用しているか、SWキャッシュの保守命令を使っています: dpdk/drivers/net/enetc/enetc_rxtx.c at 25.11-qoriq ·NXP/dpdk ·GitHub

Re: i.MX95 19x19 EVK: SMMU coherent table walks (IDR0.COHACC) and vfio-pci for DPDK with SMMU enable

DPDKチームと話し合っています。

Tags (1)
No ratings
Version history
Last update:
a week ago
Updated by: