[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5448A0F8.1040004@huawei.com>
Date: Thu, 23 Oct 2014 14:32:24 +0800
From: Yijing Wang <wangyijing@...wei.com>
To: Bjorn Helgaas <bhelgaas@...gle.com>
CC: <linux-pci@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
Xinwei Hu <huxinwei@...wei.com>, Wuyun <wuyun.wu@...wei.com>,
<linux-arm-kernel@...ts.infradead.org>,
Russell King <linux@....linux.org.uk>,
<linux-arch@...r.kernel.org>, <arnab.basu@...escale.com>,
<Bharat.Bhushan@...escale.com>, <x86@...nel.org>,
Arnd Bergmann <arnd@...db.de>,
Thomas Gleixner <tglx@...utronix.de>,
"Konrad Rzeszutek Wilk" <konrad.wilk@...cle.com>,
<xen-devel@...ts.xenproject.org>, Joerg Roedel <joro@...tes.org>,
<iommu@...ts.linux-foundation.org>, <linux-mips@...ux-mips.org>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
<linuxppc-dev@...ts.ozlabs.org>, <linux-s390@...r.kernel.org>,
Sebastian Ott <sebott@...ux.vnet.ibm.com>,
"Tony Luck" <tony.luck@...el.com>, <linux-ia64@...r.kernel.org>,
"David S. Miller" <davem@...emloft.net>,
<sparclinux@...r.kernel.org>, Chris Metcalf <cmetcalf@...era.com>,
Ralf Baechle <ralf@...ux-mips.org>,
Lucas Stach <l.stach@...gutronix.de>,
David Vrabel <david.vrabel@...rix.com>,
"Sergei Shtylyov" <sergei.shtylyov@...entembedded.com>,
Michael Ellerman <mpe@...erman.id.au>,
Thierry Reding <thierry.reding@...il.com>,
"Thomas Petazzoni" <thomas.petazzoni@...e-electrons.com>,
Liviu Dudau <liviu@...au.co.uk>
Subject: Re: [PATCH v3 04/27] arm/MSI: Save MSI chip in pci_sys_data
>> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
>> index 22e413c..f11108c 100644
>> --- a/drivers/pci/msi.c
>> +++ b/drivers/pci/msi.c
>> @@ -35,6 +35,9 @@ int __weak arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc)
>> struct msi_chip *chip = dev->bus->msi;
>> int err;
>>
>> + if (!chip)
>> + chip = pci_msi_chip(dev->bus);
>> +
>> if (!chip || !chip->setup_irq)
>> return -EINVAL;
>>
>> @@ -50,6 +53,9 @@ 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);
>> +
>> if (!chip || !chip->teardown_irq)
>> return;
>>
>> diff --git a/include/linux/pci.h b/include/linux/pci.h
>> index 9cd2721..7a48b40 100644
>> --- a/include/linux/pci.h
>> +++ b/include/linux/pci.h
>> @@ -1433,6 +1433,15 @@ static inline int pci_get_new_domain_nr(void) { return -ENOSYS; }
>>
>> #include <asm/pci.h>
>>
>> +/* Just avoid compile error, will be clean up later */
>> +#ifdef CONFIG_PCI_MSI
>> +
>> +#ifndef pci_msi_chip
>> +#define pci_msi_chip(bus) NULL
>> +#endif
>> +#endif
>
> I don't like the mixture of ARM changes and PCI core changes in the same
> patch. Can you split this into a core patch that does something like this:
>
> struct msi_chip * __weak pcibios_msi_controller(struct pci_bus *bus)
> {
> return NULL;
> }
>
> struct msi_chip *pci_msi_controller(struct pci_bus *bus)
> {
> msi_chip *controller = bus->msi;
>
> if (controller)
> return controller;
> return pcibios_msi_controller(bus);
> }
>
> followed by an ARM patch that puts the msi_chip pointer in struct hw_pci
> and implements pcibios_msi_controller()?
OK, I will split it in half.
>
> I know you're trying to *remove* weak functions, and this adds one, but
> this section of the series is more about getting rid of the ARM
> pcibios_add_bus() because all it was used for was setting the bus->msi
> pointer.
Yes, agree.
>
> Eventually we might have a way to stash an MSI controller pointer in the
> generic pci_host_bridge struct, and then the pcibios_msi_controller()
> interface could go away.
Yep, I am doing the work to make a generic pci_host_bridge, and try to rip it out from
pci_create_root_bus, that's also a large changes across many archs.
>
>> +
>> /* these helpers provide future and backwards compatibility
>> * for accessing popular PCI BAR info */
>> #define pci_resource_start(dev, bar) ((dev)->resource[(bar)].start)
>> --
>> 1.7.1
>>
>
> .
>
--
Thanks!
Yijing
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists