> -----Original Message----- > From: Andy Shevchenko [mailto:andy.shevchenko@xxxxxxxxx] > Sent: Friday, October 30, 2015 2:44 PM > To: Jake Oshins <jakeo@xxxxxxxxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>; KY Srinivasan > <kys@xxxxxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx; > devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx; Robo Bot > <apw@xxxxxxxxxxxxx>; Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>; > tglx@xxxxxxxxxx; Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>; > marc.zyngier@xxxxxxx; Bjorn Helgaas <bhelgaas@xxxxxxxxxx>; linux- > pci@xxxxxxxxxxxxxxx > Subject: Re: [PATCH v5 5/7] PCI: irqdomain: Look up IRQ domain by > fwnode_handle > > On Fri, Oct 30, 2015 at 11:11 PM, <jakeo@xxxxxxxxxxxxx> wrote: > > From: Jake Oshins <jakeo@xxxxxxxxxxxxx> > > > > This patch adds a second way of finding an IRQ domain associated with > > a root PCI bus. After looking to see if one can be found through > > the OF tree, it attempts to look up the IRQ domain through an > > fwnode_handle stored in the pci_sysdata struct. > > > > Signed-off-by: Jake Oshins <jakeo@xxxxxxxxxxxxx> > > --- > > arch/x86/include/asm/pci.h | 4 +++- > > drivers/pci/probe.c | 11 +++++++++++ > > include/asm-generic/pci.h | 4 ++++ > > 3 files changed, 18 insertions(+), 1 deletion(-) > > > > diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h > > index 10213a1..fb74453 100644 > > --- a/arch/x86/include/asm/pci.h > > +++ b/arch/x86/include/asm/pci.h > > @@ -45,11 +45,13 @@ static inline int pci_proc_domain(struct pci_bus > *bus) > > #endif > > > > #ifdef CONFIG_PCI_MSI_IRQ_DOMAIN > > -static inline void *pci_fwnode(struct pci_bus *bus) > > +static inline void *_pci_root_bus_fwnode(struct pci_bus *bus) > > I'm sorry what is the point to rename? > I renamed it only because Gerry asked me to rename it. And then I regenerated the patch series with that rename still in the queue, which was a mistake. The whole thing is introduced in the previous patch. pci_fwnode() doesn't exist without this patch series. I'll straighten that out. > > { > > struct pci_sysdata *sd = bus->sysdata; > > return sd->fwnode; > > } > > + > > +#define pci_root_bus_fwnode _pci_root_bus_fwnode > > #endif > > > > /* Can be used to override the logic in pci_scan_bus for skipping > > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > > index f441d1b..60e50a8 100644 > > --- a/drivers/pci/probe.c > > +++ b/drivers/pci/probe.c > > @@ -671,6 +671,17 @@ static struct irq_domain > *pci_host_bridge_msi_domain(struct pci_bus *bus) > > */ > > d = pci_host_bridge_of_msi_domain(bus); > > > > +#ifdef CONFIG_PCI_MSI_IRQ_DOMAIN > > + /* > > + * If no IRQ domain was found via the OF tree, try looking it up > > + * directly through the fwnode_handle. > > + */ > > + if (!d && pci_root_bus_fwnode(bus)) { > > + d = irq_find_matching_fwnode(pci_root_bus_fwnode(bus), > > + DOMAIN_BUS_PCI_MSI); > > Gave a second glance and now noticed that you call > pci_root_bus_fwnode() twice. So, it actually might be more readable > like your first but modified variant: > > if (!d) { > void *fwnode = pci_fwnode(bus); > > if (fwnode) > d = irq_find_matching_fwnode(fwnode, DOMAIN_BUS_PCI_MSI); > } > > > + } > > +#endif > > + > > return d; > > } > > > With Best Regards, > Andy Shevchenko Sure. No problem. I'll resend. -- Jake ��.n��������+%������w��{.n�����{���"�)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥