No subject


Tue Dec 2 22:30:02 AEDT 2025


provides 128 MSI vectors to the device, though, the device could
support 129 MSI vectors. But then, the device eventually clamped the MSI 
requests to 65 irq vectors and those were mapped successfully. 

Debugfs IRQ domain (running the latest kernel):
===============================================

# cat   /sys/kernel/debug/irq/domains/\:pci at 800000020000524-5 
name:   :pci at 800000020000524-5
 size:   128
 mapped: 0
 flags:  0x00000103
            IRQ_DOMAIN_FLAG_HIERARCHY
            IRQ_DOMAIN_NAME_ALLOCATED
            IRQ_DOMAIN_FLAG_MSI_PARENT
 parent: :interrupt-controller at 400209f0000
    name:   :interrupt-controller at 400209f0000
     size:   0
     mapped: 135
     flags:  0x00000003
                IRQ_DOMAIN_FLAG_HIERARCHY
                IRQ_DOMAIN_NAME_ALLOCATED

I do not see a per-device domain such as pSeries-PCI-MSI-0524:28:00.0 created;
and the device probe aborts with -22 during MSI/MSI-X allocation as shown below.

# dmesg | grep "nvme 0524:28:00.0"
[   15.000370] nvme 0524:28:00.0: ibm,query-pe-dma-windows(53) 280000 8000000 20000524 returned 0, lb=1000000 ps=103 wn=1
[   15.000772] nvme 0524:28:00.0: ibm,create-pe-dma-window(54) 280000 8000000 20000524 15 25 returned 0 (liobn = 0x70000524 starting addr = 8000000 0)
[   15.010030] nvme 0524:28:00.0: lsa_required: 0, lsa_enabled: 0, direct mapping: 1
[   15.015637] nvme 0524:28:00.0: lsa_required: 0, lsa_enabled: 0, direct mapping: 1
[   15.021223] nvme 0524:28:00.0: enabling device (0140 -> 0142)
[   15.028379] nvme 0524:28:00.0: probe with driver nvme failed with error -22


Summary / hypothesis:
=====================
- The adapter advertises 129 MSI-X vectors, but the PHB/firmware reports 128 available
  MSI vectors for devices in that PCI subtree (ibm,pe-total-#msi = 0x80).

- After the daaa574aba6f change an allocation request for 129 vectors fails when the
  parent only has 128 slots. This leads to msi_create_device_irq_domain() failing and
  the NVMe driver probe aborting.

- Previously, the kernel ended up clamping the device’s request (to fewer vectors — e.g., 65)
  and probe succeeded; after the change the strict parent-domain allocation prevents this
  graceful fall-back.

Please let me know if you want an additional details to be captured.

Thanks,
--Nilay


More information about the Linuxppc-dev mailing list