lkml.org 
[lkml]   [2018]   [Mar]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] PCI/MSI: Don't set up INTx if MSI or MSI-X is enabled
    From
    Date
    On 3/13/2018 10:45 PM, Bjorn Helgaas wrote:
    > From: Bjorn Helgaas <bhelgaas@google.com>
    >
    > If a device already has MSI or MSI-X enabled, there's no need to set up its
    > legacy INTx interrupt.
    >
    > bba6f6fc68e7 ("[PATCH] MSI-X: fix resume crash") changed the cris, frv,
    > x86, and ia64 arches to skip INTx setup when MSI is enabled.
    >
    > 16cf0ebc35dd ("x86/PCI: Do not use interrupt links for devices using
    > MSI-X") extended that by changing x86 to also skip INTx setup when MSI-X is
    > enabled.
    >
    > Change the remaining arches (cris, frv, and ia64) to skip INTx setup when
    > either MSI or MSI-X is enabled.
    >
    > Also update mn10300 (which didn't exist at the time of bba6f6fc68e7) to
    > follow the same pattern.
    >
    > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>

    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

    > ---
    > arch/cris/arch-v32/drivers/pci/bios.c | 2 +-
    > arch/frv/mb93090-mb00/pci-vdk.c | 2 +-
    > arch/ia64/pci/pci.c | 4 ++--
    > arch/mn10300/unit-asb2305/pci.c | 8 +++++---
    > 4 files changed, 9 insertions(+), 7 deletions(-)
    >
    > diff --git a/arch/cris/arch-v32/drivers/pci/bios.c b/arch/cris/arch-v32/drivers/pci/bios.c
    > index 6b9e6cfaa29e..c2bed0cc060b 100644
    > --- a/arch/cris/arch-v32/drivers/pci/bios.c
    > +++ b/arch/cris/arch-v32/drivers/pci/bios.c
    > @@ -68,7 +68,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
    > if ((err = pcibios_enable_resources(dev, mask)) < 0)
    > return err;
    >
    > - if (!dev->msi_enabled)
    > + if (!pci_dev_msi_enabled(dev))
    > pcibios_enable_irq(dev);
    > return 0;
    > }
    > diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c
    > index f211839e2cae..4a55d1b82d21 100644
    > --- a/arch/frv/mb93090-mb00/pci-vdk.c
    > +++ b/arch/frv/mb93090-mb00/pci-vdk.c
    > @@ -413,7 +413,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
    >
    > if ((err = pci_enable_resources(dev, mask)) < 0)
    > return err;
    > - if (!dev->msi_enabled)
    > + if (!pci_dev_msi_enabled(dev))
    > pcibios_enable_irq(dev);
    > return 0;
    > }
    > diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
    > index f5ec736100ee..7ccc64d5fe3e 100644
    > --- a/arch/ia64/pci/pci.c
    > +++ b/arch/ia64/pci/pci.c
    > @@ -398,7 +398,7 @@ pcibios_enable_device (struct pci_dev *dev, int mask)
    > if (ret < 0)
    > return ret;
    >
    > - if (!dev->msi_enabled)
    > + if (!pci_dev_msi_enabled(dev))
    > return acpi_pci_irq_enable(dev);
    > return 0;
    > }
    > @@ -407,7 +407,7 @@ void
    > pcibios_disable_device (struct pci_dev *dev)
    > {
    > BUG_ON(atomic_read(&dev->enable_cnt));
    > - if (!dev->msi_enabled)
    > + if (!pci_dev_msi_enabled(dev))
    > acpi_pci_irq_disable(dev);
    > }
    >
    > diff --git a/arch/mn10300/unit-asb2305/pci.c b/arch/mn10300/unit-asb2305/pci.c
    > index 3dfe2d31c67b..4d36ea517679 100644
    > --- a/arch/mn10300/unit-asb2305/pci.c
    > +++ b/arch/mn10300/unit-asb2305/pci.c
    > @@ -399,10 +399,12 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
    > {
    > int err;
    >
    > - err = pci_enable_resources(dev, mask);
    > - if (err == 0)
    > + if ((err = pci_enable_resources(dev, mask)) < 0)
    > + return err;
    > +
    > + if (!pci_dev_msi_enabled(dev))
    > pcibios_enable_irq(dev);
    > - return err;
    > + return 0;
    > }
    >
    > /*
    >

    \
     
     \ /
      Last update: 2018-03-14 11:28    [W:2.251 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site