lkml.org 
[lkml]   [2015]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [Bugfix] PCI, x86: Correctly allocate IRQs for PCI devices managed by non-PCI drivers
    On Tue, Sep 8, 2015 at 11:49 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:
    > Hi Bjorn,
    > We have used another draft version to fix this issue by changing
    > eata driver as below. But that needs to export pcibios_alloc_irq. And
    > I'm not sure whether there are other drivers having the same behavior.
    > If we think it's a legacy behavior and only a few drivers may have
    > such a behavior, I prefer changing drivers to fix the issue too.

    Did you look at changing the driver to use pci_register_driver()? I
    bet it's pretty straightforward.

    > drivers/pci/pci-driver.c | 1 +
    > drivers/scsi/eata.c | 2 ++
    > 2 files changed, 3 insertions(+)
    >
    > diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
    > index 52a880ca1768..17d2a0b1de18 100644
    > --- a/drivers/pci/pci-driver.c
    > +++ b/drivers/pci/pci-driver.c
    > @@ -392,6 +392,7 @@ int __weak pcibios_alloc_irq(struct pci_dev *dev)
    > {
    > return 0;
    > }
    > +EXPORT_SYMBOL_GPL(pcibios_alloc_irq);
    >
    > void __weak pcibios_free_irq(struct pci_dev *dev)
    > {
    > diff --git a/drivers/scsi/eata.c b/drivers/scsi/eata.c
    > index 227dd2c2ec2f..7e6eaf867987 100644
    > --- a/drivers/scsi/eata.c
    > +++ b/drivers/scsi/eata.c
    > @@ -1061,6 +1061,7 @@ static void enable_pci_ports(void)
    > driver_name, dev->bus->number, dev->devfn);
    > #endif
    >
    > + pcibios_alloc_irq(dev);
    > if (pci_enable_device(dev))
    > printk
    > ("%s: warning, pci_enable_device failed, bus %d devfn 0x%x.\n",
    > @@ -1520,6 +1521,7 @@ static void add_pci_ports(void)
    > if (!(dev = pci_get_class(PCI_CLASS_STORAGE_SCSI << 8, dev)))
    > break;
    >
    > + pcibios_alloc_irq(dev);
    > if (pci_enable_device(dev)) {
    > #if defined(DEBUG_PCI_DETECT)
    > printk
    >
    >
    >>
    >>> return pci_enable_resources(dev, mask);
    >>> }
    >>>
    >>> --
    >>> 1.7.10.4
    >>>


    \
     
     \ /
      Last update: 2015-09-09 21:41    [W:4.616 / U:0.388 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site