| Message ID | 178716225364.1437.6201568081502251835.stgit@linux.ibm.com (mailing list archive) |
|---|---|
| State | Under Review |
| Headers | show |
| Series | powerpc: pci-ioda: Fix the stale irq chip reference | expand |
On Wed, Aug 19, 2026 at 05:58:22PM +0000, Shivaprasad G Bhat wrote: > The commit f0ac60e6e311 ("powerpc/powernv/pci: Switch to use > msi_create_parent_irq_domain()") removed the legacy MSI irq chip > pnv_pci_msi_irq_chip but left behind the static definition of it and > its reference in is_pnv_opal_msi(). > > The KVM IRQ bypass for vfio devices is broken because the > comparision in is_pnv_opal_msi() fails on the comparision with > stale unused variable showing the below errors in dmesg. > > kvmppc_set_passthru_irq_hv: Could not assign IRQ map for (X,Y) > kvmppc_set_passthru_irq (irq X, gsi Y) fails: -2 > vfio-pci A:B:C.D irq bypass producer (eventfd Z) registration fails: -2 > > The patch removes the stale variable definition and fixes the > is_pnv_opal_msi() by comparing against the chip name prefix. > > Fixes: f0ac60e6e311 ("powerpc/powernv/pci: Switch to use msi_create_parent_irq_domain()") > Cc: stable@kernel.org > Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com> > --- > arch/powerpc/platforms/powernv/pci-ioda.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c > index 32ecbc46e74b..728a5610d167 100644 > --- a/arch/powerpc/platforms/powernv/pci-ioda.c > +++ b/arch/powerpc/platforms/powernv/pci-ioda.c > @@ -1623,15 +1623,13 @@ int64_t pnv_opal_pci_msi_eoi(struct irq_data *d) > return opal_pci_msi_eoi(phb->opal_id, d->parent_data->hwirq); > } > > -static struct irq_chip pnv_pci_msi_irq_chip; > - > /* > * Returns true iff chip is something that we could call > * pnv_opal_pci_msi_eoi for. > */ > bool is_pnv_opal_msi(struct irq_chip *chip) > { > - return chip == &pnv_pci_msi_irq_chip; > + return chip && chip->name && str_has_prefix(chip->name, "PNV-"); > } > EXPORT_SYMBOL_GPL(is_pnv_opal_msi); > > @@ -1728,7 +1726,7 @@ static const struct msi_parent_ops pnv_msi_parent_ops = { > .chip_flags = MSI_CHIP_FLAG_SET_EOI, > .bus_select_token = DOMAIN_BUS_NEXUS, > .bus_select_mask = MATCH_PCI_MSI, > - .prefix = "PNV-", > + .prefix = "PNV-", /* Note: is_pnv_opal_msi() uses this */ > .init_dev_msi_info = pnv_init_dev_msi_info, > }; > I boot tested this patch on KVM on PowerNV (P9) and KVM on LPAR (P10), with the USB controller passed through to the guest. The warnings are not observed. Tested-by: Gautam Menghani <gautam@linux.ibm.com>
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c index 32ecbc46e74b..728a5610d167 100644 --- a/arch/powerpc/platforms/powernv/pci-ioda.c +++ b/arch/powerpc/platforms/powernv/pci-ioda.c @@ -1623,15 +1623,13 @@ int64_t pnv_opal_pci_msi_eoi(struct irq_data *d) return opal_pci_msi_eoi(phb->opal_id, d->parent_data->hwirq); } -static struct irq_chip pnv_pci_msi_irq_chip; - /* * Returns true iff chip is something that we could call * pnv_opal_pci_msi_eoi for. */ bool is_pnv_opal_msi(struct irq_chip *chip) { - return chip == &pnv_pci_msi_irq_chip; + return chip && chip->name && str_has_prefix(chip->name, "PNV-"); } EXPORT_SYMBOL_GPL(is_pnv_opal_msi); @@ -1728,7 +1726,7 @@ static const struct msi_parent_ops pnv_msi_parent_ops = { .chip_flags = MSI_CHIP_FLAG_SET_EOI, .bus_select_token = DOMAIN_BUS_NEXUS, .bus_select_mask = MATCH_PCI_MSI, - .prefix = "PNV-", + .prefix = "PNV-", /* Note: is_pnv_opal_msi() uses this */ .init_dev_msi_info = pnv_init_dev_msi_info, };
The commit f0ac60e6e311 ("powerpc/powernv/pci: Switch to use msi_create_parent_irq_domain()") removed the legacy MSI irq chip pnv_pci_msi_irq_chip but left behind the static definition of it and its reference in is_pnv_opal_msi(). The KVM IRQ bypass for vfio devices is broken because the comparision in is_pnv_opal_msi() fails on the comparision with stale unused variable showing the below errors in dmesg. kvmppc_set_passthru_irq_hv: Could not assign IRQ map for (X,Y) kvmppc_set_passthru_irq (irq X, gsi Y) fails: -2 vfio-pci A:B:C.D irq bypass producer (eventfd Z) registration fails: -2 The patch removes the stale variable definition and fixes the is_pnv_opal_msi() by comparing against the chip name prefix. Fixes: f0ac60e6e311 ("powerpc/powernv/pci: Switch to use msi_create_parent_irq_domain()") Cc: stable@kernel.org Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com> --- arch/powerpc/platforms/powernv/pci-ioda.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)