Message ID | 1413342435-7876-10-git-send-email-wangyijing@huawei.com |
---|---|
State | New |
Headers | show |
On Wed, Oct 15, 2014 at 11:06:57AM +0800, Yijing Wang wrote: > MSI chip will be saved in pci_sys_data, now we can > clean up pcibios_add_bus() and pcibios_remove_bus() > in arm, and use pci_find_msi_chip() to get msi chip > in core MSI code. > > Signed-off-by: Yijing Wang <wangyijing@huawei.com> > --- > arch/arm/include/asm/mach/pci.h | 4 ---- > arch/arm/kernel/bios32.c | 16 ---------------- > drivers/pci/msi.c | 11 +++-------- > 3 files changed, 3 insertions(+), 28 deletions(-) > > diff --git a/arch/arm/include/asm/mach/pci.h b/arch/arm/include/asm/mach/pci.h > index 59b0d87..230b2c9 100644 > --- a/arch/arm/include/asm/mach/pci.h > +++ b/arch/arm/include/asm/mach/pci.h > @@ -39,8 +39,6 @@ struct hw_pci { > resource_size_t start, > resource_size_t size, > resource_size_t align); > - void (*add_bus)(struct pci_bus *bus); > - void (*remove_bus)(struct pci_bus *bus); > }; > > /* > @@ -71,8 +69,6 @@ struct pci_sys_data { > resource_size_t start, > resource_size_t size, > resource_size_t align); > - void (*add_bus)(struct pci_bus *bus); > - void (*remove_bus)(struct pci_bus *bus); > void *private_data; /* platform controller private data */ > }; > > diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c > index a19038d..b1b872e 100644 > --- a/arch/arm/kernel/bios32.c > +++ b/arch/arm/kernel/bios32.c > @@ -360,20 +360,6 @@ void pcibios_fixup_bus(struct pci_bus *bus) > } > EXPORT_SYMBOL(pcibios_fixup_bus); > > -void pcibios_add_bus(struct pci_bus *bus) > -{ > - struct pci_sys_data *sys = bus->sysdata; > - if (sys->add_bus) > - sys->add_bus(bus); > -} > - > -void pcibios_remove_bus(struct pci_bus *bus) > -{ > - struct pci_sys_data *sys = bus->sysdata; > - if (sys->remove_bus) > - sys->remove_bus(bus); > -} > - > /* > * Swizzle the device pin each time we cross a bridge. If a platform does > * not provide a swizzle function, we perform the standard PCI swizzling. > @@ -478,8 +464,6 @@ static void pcibios_init_hw(struct device *parent, struct hw_pci *hw, > sys->swizzle = hw->swizzle; > sys->map_irq = hw->map_irq; > sys->align_resource = hw->align_resource; > - sys->add_bus = hw->add_bus; > - sys->remove_bus = hw->remove_bus; > INIT_LIST_HEAD(&sys->resources); > > if (hw->private_data) What do the core changes below have to do with the ARM changes above? They should be a separate patch unless they can't be separated. > diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c > index f11108c..56e54ad 100644 > --- a/drivers/pci/msi.c > +++ b/drivers/pci/msi.c > @@ -32,12 +32,10 @@ int pci_msi_ignore_mask; > > int __weak arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc) > { > - struct msi_chip *chip = dev->bus->msi; > + struct msi_chip *chip; > int err; > > - if (!chip) > - chip = pci_msi_chip(dev->bus); > - > + chip = pci_msi_chip(dev->bus); > if (!chip || !chip->setup_irq) > return -EINVAL; > > @@ -51,10 +49,7 @@ int __weak arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc) > void __weak arch_teardown_msi_irq(unsigned int irq) > { > struct msi_desc *entry = irq_get_msi_desc(irq); > - struct msi_chip *chip = entry->dev->bus->msi; > - > - if (!chip) > - chip = pci_msi_chip(entry->dev->bus); > + struct msi_chip *chip = pci_msi_chip(entry->dev->bus); > > if (!chip || !chip->teardown_irq) > return; > -- > 1.7.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-pci" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
>> /* >> * Swizzle the device pin each time we cross a bridge. If a platform does >> * not provide a swizzle function, we perform the standard PCI swizzling. >> @@ -478,8 +464,6 @@ static void pcibios_init_hw(struct device *parent, struct hw_pci *hw, >> sys->swizzle = hw->swizzle; >> sys->map_irq = hw->map_irq; >> sys->align_resource = hw->align_resource; >> - sys->add_bus = hw->add_bus; >> - sys->remove_bus = hw->remove_bus; >> INIT_LIST_HEAD(&sys->resources); >> >> if (hw->private_data) > > What do the core changes below have to do with the ARM changes above? > They should be a separate patch unless they can't be separated. Hm, it's not the thing have to do, because the changes below is only used by arm arch, so I put it here together. It's ok to split the core changes out to another one. > >> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c >> index f11108c..56e54ad 100644 >> --- a/drivers/pci/msi.c >> +++ b/drivers/pci/msi.c >> @@ -32,12 +32,10 @@ int pci_msi_ignore_mask; >> >> int __weak arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc) >> { >> - struct msi_chip *chip = dev->bus->msi; >> + struct msi_chip *chip; >> int err; >> >> - if (!chip) >> - chip = pci_msi_chip(dev->bus); >> - >> + chip = pci_msi_chip(dev->bus); >> if (!chip || !chip->setup_irq) >> return -EINVAL; >> >> @@ -51,10 +49,7 @@ int __weak arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc) >> void __weak arch_teardown_msi_irq(unsigned int irq) >> { >> struct msi_desc *entry = irq_get_msi_desc(irq); >> - struct msi_chip *chip = entry->dev->bus->msi; >> - >> - if (!chip) >> - chip = pci_msi_chip(entry->dev->bus); >> + struct msi_chip *chip = pci_msi_chip(entry->dev->bus); >> >> if (!chip || !chip->teardown_irq) >> return; >> -- >> 1.7.1 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-pci" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > . >
diff --git a/arch/arm/include/asm/mach/pci.h b/arch/arm/include/asm/mach/pci.h index 59b0d87..230b2c9 100644 --- a/arch/arm/include/asm/mach/pci.h +++ b/arch/arm/include/asm/mach/pci.h @@ -39,8 +39,6 @@ struct hw_pci { resource_size_t start, resource_size_t size, resource_size_t align); - void (*add_bus)(struct pci_bus *bus); - void (*remove_bus)(struct pci_bus *bus); }; /* @@ -71,8 +69,6 @@ struct pci_sys_data { resource_size_t start, resource_size_t size, resource_size_t align); - void (*add_bus)(struct pci_bus *bus); - void (*remove_bus)(struct pci_bus *bus); void *private_data; /* platform controller private data */ }; diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c index a19038d..b1b872e 100644 --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c @@ -360,20 +360,6 @@ void pcibios_fixup_bus(struct pci_bus *bus) } EXPORT_SYMBOL(pcibios_fixup_bus); -void pcibios_add_bus(struct pci_bus *bus) -{ - struct pci_sys_data *sys = bus->sysdata; - if (sys->add_bus) - sys->add_bus(bus); -} - -void pcibios_remove_bus(struct pci_bus *bus) -{ - struct pci_sys_data *sys = bus->sysdata; - if (sys->remove_bus) - sys->remove_bus(bus); -} - /* * Swizzle the device pin each time we cross a bridge. If a platform does * not provide a swizzle function, we perform the standard PCI swizzling. @@ -478,8 +464,6 @@ static void pcibios_init_hw(struct device *parent, struct hw_pci *hw, sys->swizzle = hw->swizzle; sys->map_irq = hw->map_irq; sys->align_resource = hw->align_resource; - sys->add_bus = hw->add_bus; - sys->remove_bus = hw->remove_bus; INIT_LIST_HEAD(&sys->resources); if (hw->private_data) diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index f11108c..56e54ad 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -32,12 +32,10 @@ int pci_msi_ignore_mask; int __weak arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc) { - struct msi_chip *chip = dev->bus->msi; + struct msi_chip *chip; int err; - if (!chip) - chip = pci_msi_chip(dev->bus); - + chip = pci_msi_chip(dev->bus); if (!chip || !chip->setup_irq) return -EINVAL; @@ -51,10 +49,7 @@ int __weak arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc) void __weak arch_teardown_msi_irq(unsigned int irq) { struct msi_desc *entry = irq_get_msi_desc(irq); - struct msi_chip *chip = entry->dev->bus->msi; - - if (!chip) - chip = pci_msi_chip(entry->dev->bus); + struct msi_chip *chip = pci_msi_chip(entry->dev->bus); if (!chip || !chip->teardown_irq) return;
MSI chip will be saved in pci_sys_data, now we can clean up pcibios_add_bus() and pcibios_remove_bus() in arm, and use pci_find_msi_chip() to get msi chip in core MSI code. Signed-off-by: Yijing Wang <wangyijing@huawei.com> --- arch/arm/include/asm/mach/pci.h | 4 ---- arch/arm/kernel/bios32.c | 16 ---------------- drivers/pci/msi.c | 11 +++-------- 3 files changed, 3 insertions(+), 28 deletions(-)