[PATCH] PCI/MSI: Skip address mask check for MSI-X entries

From: Yu Yang via B4 Relay

Date: Mon Nov 09 2026 - 04:37:09 EST


From: Yu Yang <yuyang@xxxxxxxxxx>

The AHCI controller on Zhaoxin ZX-200 platforms supports only 32-bit
MSI addresses, but its MSI-X capability uses 64-bit message addresses.
pci_msi_init() therefore sets dev->msi_addr_mask to DMA_BIT_MASK(32)
based on the MSI capability.

msi_verify_entries() is shared between the MSI and MSI-X setup paths.
When the irq domain assigns an MSI-X message address above 4GB, the
32-bit mask inherited from the MSI capability causes MSI-X setup to
fail with -EIO:

ahci 0000:09:0f.0: arch assigned 64-bit MSI address 0x8002a030040
above device MSI address mask 0xffffffff.
...
ahci: probe of 0000:09:0f.0 failed with error -22.

MSI-X table entries have a 64-bit message address field, so the 32-bit
limit derived from the MSI capability does not apply to them.
Platforms that use msi_addr_mask to constrain MSI-X allocation, e.g.
powerpc pseries/powernv and ionic on PPC64, already allocate addresses
that satisfy the mask, so the verification is redundant for MSI-X.

Skip the address mask check for MSI-X descriptors.

Fixes: f144d1496b47 ("PCI/MSI: Add device flag indicating that 64-bit MSIs don't work")

Signed-off-by: Yu Yang <yuyang@xxxxxxxxxx>
---
drivers/pci/msi/msi.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c
index 8a0133a6a286..7f34bccc8248 100644
--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -338,6 +338,13 @@ static int msi_verify_entries(struct pci_dev *dev)
return 0;

msi_for_each_desc(entry, &dev->dev, MSI_DESC_ALL) {
+ /*
+ * MSI-X entries always use a 64-bit address, so the address
+ * limit for MSI capability does not apply for MSI-X.
+ */
+ if (entry->pci.msi_attrib.is_msix)
+ continue;
+
address = (u64)entry->msg.address_hi << 32 | entry->msg.address_lo;
if (address & ~dev->msi_addr_mask) {
pci_err(dev, "arch assigned 64-bit MSI address %#llx above device MSI address mask %#llx\n",

---
base-commit: 996a59519af2ef3d8f47479685616bb2278c6cfa
change-id: 20261109-pci-fix-msix-alloc-failure-cdffedf97e82

Best regards,
--
Yu Yang <yuyang@xxxxxxxxxx>