[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAK8P3a3H38aeO6hUNeLAxV4ypfX+qTaCoRAJWYdP9wbvc9HuVQ@mail.gmail.com>
Date: Thu, 15 Jul 2021 21:11:42 +0200
From: Arnd Bergmann <arnd@...db.de>
To: Boqun Feng <boqun.feng@...il.com>
Cc: Bjorn Helgaas <helgaas@...nel.org>,
Bjorn Helgaas <bhelgaas@...gle.com>,
Arnd Bergmann <arnd@...db.de>, Marc Zyngier <maz@...nel.org>,
Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will@...nel.org>,
"K. Y. Srinivasan" <kys@...rosoft.com>,
Haiyang Zhang <haiyangz@...rosoft.com>,
Stephen Hemminger <sthemmin@...rosoft.com>,
Wei Liu <wei.liu@...nel.org>, Dexuan Cui <decui@...rosoft.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@....com>,
Rob Herring <robh@...nel.org>,
Krzysztof WilczyĆski <kw@...ux.com>,
Linux ARM <linux-arm-kernel@...ts.infradead.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Linux on Hyper-V List <linux-hyperv@...r.kernel.org>,
linux-pci <linux-pci@...r.kernel.org>,
Sunil Muthuswamy <sunilmut@...rosoft.com>,
Mike Rapoport <rppt@...nel.org>
Subject: Re: [RFC v4 1/7] PCI: Introduce domain_nr in pci_host_bridge
On Thu, Jul 15, 2021 at 7:30 PM Boqun Feng <boqun.feng@...il.com> wrote:
> On Wed, Jul 14, 2021 at 02:33:19PM -0500, Bjorn Helgaas wrote:
> > On Wed, Jul 14, 2021 at 06:27:31PM +0800, Boqun Feng wrote:
> > > #ifdef CONFIG_PCI_DOMAINS_GENERIC
> > > - bus->domain_nr = pci_bus_find_domain_nr(bus, parent);
> > > + if (bridge->domain_nr == PCI_DOMAIN_NR_NOT_SET)
> > > + bus->domain_nr = pci_bus_find_domain_nr(bus, parent);
> > > + else
> > > + bus->domain_nr = bridge->domain_nr;
> >
> > The domain_nr in struct pci_bus is really only used by
> > pci_domain_nr(). It seems like it really belongs in the struct
> > pci_host_bridge and probably doesn't need to be duplicated in the
> > struct pci_bus. But that's probably a project for the future.
> >
+1
> Agreed. Maybe we can define pci_bus_domain_nr() as:
>
> static inline int pci_domain_nr(struct pci_bus *bus)
> {
> struct device *bridge = bus->bridge;
> struct pci_host_bridge *b = container_of(bridge, struct pci_host_bridge, dev);
>
> return b->domain_nr;
> }
>
> but apart from corretness (e.g. should we use get_device() for
> bus->bridge?), it makes more sense if ->domain_nr of pci_host_bridge
> is used (as a way to set domain number at probing time) for most of
> drivers and archs. ;-)
It needs to be "pci_find_host_bridge(bus)" instead of bus->bridge
and container_of().
Then again, if we get pci_domain_nr() to be completely generic, I'd
prefer to change most callers to just open-code the bridge->domain_nr
access, as most of them will already have a pointer to the pci_host_bridge
when calling this.
Arnd
Powered by blists - more mailing lists