-
Notifications
You must be signed in to change notification settings - Fork 917
Description
[Bug/Feature Request] ZynqMP PCIe Root Complex does not support MSI-X, need mechanism to force EP (NVMe SSD) to disable MSI-X and enable MSI
Description
On the ZynqMP platform (Linux 6.1, PCIe as Root Complex), we connect an NVMe SSD as the Endpoint device.
The hardware limitation is that ZynqMP PCIe Root Port does not support MSI-X, only MSI.
However, the NVMe SSD as the EP enables MSI-X by default and does not fall back to MSI automatically.
As a result, PCIe enumeration fails to configure interrupts correctly, causing the NVMe driver to fail or the SSD to be non-functional.
Expected Behavior
Users expect a way to force the EP to disable MSI-X and enable MSI:
- Preferably via Device Tree
- Or via a Linux Kconfig option
- Without modifying Linux driver code
- Ideally configured at U-Boot PCIe initialization stage
Currently, there is no mechanism in U-Boot or Linux Device Tree to force EP to disable MSI-X.
Hardware & Software Environment
- Platform: AMD/Xilinx ZynqMP
- PCIe Mode: Root Complex
- Endpoint: NVMe SSD (supports MSI-X by default)
- Bootloader: U-Boot (Xilinx version)
- OS: Linux kernel 6.1 (analogdevicesinc/linux)
- Device Tree: standard ZynqMP PCIe DT
Current Attempts
-
Checked Linux NVMe driver:
No module parameter or DT property to force disable MSI-X. -
Checked PCI core:
No standard DT property found to disable MSI-X (e.g.,"pci-no-msix"). -
Checked U-Boot PCIe initialization:
U-Boot has no exposed interface to configure MSI capabilities of the EP.
Request for Official Support / Patch
We request analogdevicesinc or Xilinx/AMD to provide:
1. An official mechanism or patch to disable MSI-X via Device Tree, e.g.:
&pcie {
force-msi = <1>;
disable-msix = <1>;
};
2. Or a U-Boot PCIe initialization feature to mask EP MSI-X capability or force fallback to MSI
3. Or a Linux PCI core patch to allow controlling EP MSI-X capability via Device Tree
Goal: Achieve this without modifying drivers or hardcoding EP device IDs, using DT/Kconfig configuration instead.
Expected Output
We hope analogdevicesinc can provide:
✔ A patch
✔ A sample Device Tree property
✔ Or a documented workaround
✔ Or confirmation whether ZynqMP PCIe subsystem supports controlling EP MSI-X from the Root Complex
Thanks to the analogdevicesinc/AMD team for your support!