Re: [PATCH] x86/PCI: initialize PCI bus node numbers early

From: Jesse Barnes
Date: Fri Jul 10 2009 - 17:07:25 EST


On Fri, 10 Jul 2009 13:22:49 -0700
Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> wrote:

> On Fri, 10 Jul 2009 13:18:06 -0700
> Yinghai Lu <yinghai@xxxxxxxxxx> wrote:
>
> > Jesse Barnes wrote:
> > > The current mp_bus_to_node array is initialized only by AMD
> > > specific code, since AMD platforms have registers that can be
> > > used for determining mode numbers. On new Intel platforms it's
> > > necessary to initialize this array as well though, otherwise all
> > > PCI node numbers will be 0, when in fact they should be -1
> > > (indicating that I/O isn't tied to any particular node).
> > >
> > > So move the mp_bus_to_node code into the common PCI code, and
> > > initialize it early with a default value of -1. This may be
> > > overridden later by arch code (e.g. the AMD code).
> > >
> > > With this change, PCI consistent memory and other node specific
> > > allocations (e.g. skbuff allocs) should occur on the "current"
> > > node. If, for performance reasons, applications want to be bound
> > > to specific nodes, they should open their devices only after being
> > > pinned to the CPU where they'll run, for maximum locality.
> > >
> > > Any thoughts here Yinghai or Jesse?
> > >
> > >
> > > include/asm/pci.h | 2 +
> > > kernel/setup.c | 2 +
> > > pci/amd_bus.c | 61
> > > +----------------------------------------- pci/common.c |
> > > 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files
> > > changed, 83 insertions(+), 59 deletions(-)
> > >
> > > Thanks,
> >
> > could use
> >
> > static int mp_bus_to_node[BUS_NR] = {
> > [0 ... BUS_NR - 1] = -1
> > };
> >
> > so we avoid to add pci_bus_to_node_init()
>
> Ah yeah that would clean things up a bit... Thanks.
>

So something like this...

--