]> git.ipfire.org Git - thirdparty/linux.git/commit
powerpc/pci: Initialize msi_addr_mask for OF-created PCI devices
authorNilay Shroff <nilay@linux.ibm.com>
Fri, 20 Feb 2026 07:02:27 +0000 (12:32 +0530)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 3 Mar 2026 16:29:15 +0000 (10:29 -0600)
commit2185904ff8b5da76a4353e5d1236caa78e0d98e3
tree1c308cac6c94ede7fb4edc0204bc7741d1a598cd
parent6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
powerpc/pci: Initialize msi_addr_mask for OF-created PCI devices

Recent changes replaced the use of no_64bit_msi with msi_addr_mask.  As a
result, msi_addr_mask is now expected to be initialized to DMA_BIT_MASK(64)
when a pci_dev is set up. However, this initialization was missed on
powerpc due to differences in the device initialization path compared to
other (x86) architecture. Due to this, now PCI device probe method fails on
powerpc system.

On powerpc systems, struct pci_dev instances are created from device tree
nodes via of_create_pci_dev(). Because msi_addr_mask was not initialized
there, it remained zero. Later, during MSI setup, msi_verify_entries()
validates the programmed MSI address against pdev->msi_addr_mask. Since the
mask was not set correctly, the validation fails, causing PCI driver probe
failures for devices on powerpc systems.

Initialize pdev->msi_addr_mask to DMA_BIT_MASK(64) in of_create_pci_dev()
so that MSI address validation succeeds and device probe works as expected.

Fixes: 386ced19e9a3 ("PCI/MSI: Convert the boolean no_64bit_msi flag to a DMA address mask")
Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Tested-by: Nam Cao <namcao@linutronix.de>
Reviewed-by: Nam Cao <namcao@linutronix.de>
Reviewed-by: Vivian Wang <wangruikang@iscas.ac.cn>
Acked-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20260220070239.1693303-2-nilay@linux.ibm.com
arch/powerpc/kernel/pci_of_scan.c