Skip to content

[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 #3023

@maswx

Description

@maswx

[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

  1. Checked Linux NVMe driver:
    No module parameter or DT property to force disable MSI-X.

  2. Checked PCI core:
    No standard DT property found to disable MSI-X (e.g., "pci-no-msix").

  3. 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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions