Message ID | 20211126232735.130164978@linutronix.de |
---|---|
State | New |
Headers | show |
Series | genirq/msi, PCI/MSI: Spring cleaning - Part 2 | expand |
On Sat, 2021-11-27 at 02:23 +0100, Thomas Gleixner wrote: > Replace the about to vanish iterators and make use of the filtering. > > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > Cc: linux-s390@vger.kernel.org > Cc: Heiko Carstens <hca@linux.ibm.com> > Cc: Christian Borntraeger <borntraeger@de.ibm.com> > --- > arch/s390/pci/pci_irq.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > --- a/arch/s390/pci/pci_irq.c > +++ b/arch/s390/pci/pci_irq.c > @@ -303,7 +303,7 @@ int arch_setup_msi_irqs(struct pci_dev * > > /* Request MSI interrupts */ > hwirq = bit; > - for_each_pci_msi_entry(msi, pdev) { > + msi_for_each_desc(msi, &pdev->dev, MSI_DESC_NOTASSOCIATED) { > rc = -EIO; > if (hwirq - bit >= msi_vecs) > break; > @@ -362,9 +362,7 @@ void arch_teardown_msi_irqs(struct pci_d > return; > > /* Release MSI interrupts */ > - for_each_pci_msi_entry(msi, pdev) { > - if (!msi->irq) > - continue; > + msi_for_each_desc(msi, &pdev->dev, MSI_DESC_ASSOCIATED) { > irq_set_msi_desc(msi->irq, NULL); > irq_free_desc(msi->irq); > msi->msg.address_lo = 0; > Hi Thomas, while the change looks good to me I ran into some trouble trying to test it. I tried with the git repository you linked in the cover letter: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-3 But with that I get the following linker error on s390: s390x-11.2.0-ld: drivers/pci/msi/legacy.o: in function `pci_msi_legacy_setup_msi_irqs': /home/nschnelle/mainline/drivers/pci/msi/legacy.c:72: undefined reference to `msi_device_populate_sysfs' s390x-11.2.0-ld: drivers/pci/msi/legacy.o: in function `pci_msi_legacy_teardown_msi_irqs': /home/nschnelle/mainline/drivers/pci/msi/legacy.c:78: undefined reference to `msi_device_destroy_sysfs' make: *** [Makefile:1161: vmlinux] Error 1 This is caused by a misspelling of CONFIG_PCI_MSI_ARCH_FALLBACKS (missing the final S) in kernel/irq/msi.c. With that fixed everything builds and MSI IRQs work fine. So with that fixed you have my Acked-by: Niklas Schnelle <schnelle@linux.ibm.com> Tested-by: Niklas Schnelle <schnelle@linux.ibm.com> Best regards, Niklas
Niklas, On Mon, Nov 29 2021 at 11:31, Niklas Schnelle wrote: > On Sat, 2021-11-27 at 02:23 +0100, Thomas Gleixner wrote: > > while the change looks good to me I ran into some trouble trying to > test it. I tried with the git repository you linked in the cover > letter: > git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-3 > > But with that I get the following linker error on s390: > > s390x-11.2.0-ld: drivers/pci/msi/legacy.o: in function `pci_msi_legacy_setup_msi_irqs': > /home/nschnelle/mainline/drivers/pci/msi/legacy.c:72: undefined reference to `msi_device_populate_sysfs' > s390x-11.2.0-ld: drivers/pci/msi/legacy.o: in function `pci_msi_legacy_teardown_msi_irqs': > /home/nschnelle/mainline/drivers/pci/msi/legacy.c:78: undefined reference to `msi_device_destroy_sysfs' > make: *** [Makefile:1161: vmlinux] Error 1 Yes, that got reported before and I fixed it locally already. > This is caused by a misspelling of CONFIG_PCI_MSI_ARCH_FALLBACKS > (missing the final S) in kernel/irq/msi.c. With that fixed everything > builds and MSI IRQs work fine. So with that fixed you have my > > Acked-by: Niklas Schnelle <schnelle@linux.ibm.com> > Tested-by: Niklas Schnelle <schnelle@linux.ibm.com> Thanks for testing and dealing with my ineptness. tglx
--- a/arch/s390/pci/pci_irq.c +++ b/arch/s390/pci/pci_irq.c @@ -303,7 +303,7 @@ int arch_setup_msi_irqs(struct pci_dev * /* Request MSI interrupts */ hwirq = bit; - for_each_pci_msi_entry(msi, pdev) { + msi_for_each_desc(msi, &pdev->dev, MSI_DESC_NOTASSOCIATED) { rc = -EIO; if (hwirq - bit >= msi_vecs) break; @@ -362,9 +362,7 @@ void arch_teardown_msi_irqs(struct pci_d return; /* Release MSI interrupts */ - for_each_pci_msi_entry(msi, pdev) { - if (!msi->irq) - continue; + msi_for_each_desc(msi, &pdev->dev, MSI_DESC_ASSOCIATED) { irq_set_msi_desc(msi->irq, NULL); irq_free_desc(msi->irq); msi->msg.address_lo = 0;
Replace the about to vanish iterators and make use of the filtering. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: linux-s390@vger.kernel.org Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Christian Borntraeger <borntraeger@de.ibm.com> --- arch/s390/pci/pci_irq.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)