Re: [patch 14/32] s390/pci: Rework MSI descriptor walk

From: Niklas Schnelle
Date: Mon Nov 29 2021 - 05:33:37 EST


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@xxxxxxxxxxxxx>
> Cc: linux-s390@xxxxxxxxxxxxxxx
> Cc: Heiko Carstens <hca@xxxxxxxxxxxxx>
> Cc: Christian Borntraeger <borntraeger@xxxxxxxxxx>
> ---
> 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@xxxxxxxxxxxxx>
Tested-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx>

Best regards,
Niklas