On Fri, Apr 17, 2009 at 9:27 AM, tip-bot for Andreas Herrmann <andreas.herrmann3@xxxxxxx> wrote: > Commit-ID: 9b94b3a19b13e094c10f65f24bc358f6ffe4eacd > Gitweb: http://git.kernel.org/tip/9b94b3a19b13e094c10f65f24bc358f6ffe4eacd > Author: Andreas Herrmann <andreas.herrmann3@xxxxxxx> > AuthorDate: Fri, 17 Apr 2009 12:07:46 +0200 > Committer: Ingo Molnar <mingo@xxxxxxx> > CommitDate: Fri, 17 Apr 2009 18:12:36 +0200 > > x86: fixup numa_node information for AMD CPU northbridge functions > > Currently the numa_node attribute for these PCI devices is 0 (it > corresponds to the numa_node for PCI bus 0). This is not a big issue > but incorrect. > > This inconsistency can be fixed by reading the node number from CPU > NB function 0. > > [ Impact: fill in dev->numa_node information, to optimize DMA allocations ] > > Signed-off-by: Andreas Herrmann <andreas.herrmann3@xxxxxxx> > Cc: jbarnes@xxxxxxxxxxxxxxxx > LKML-Reference: <20090417100746.GG16198@xxxxxxxxxxxxxxxx> > Signed-off-by: Ingo Molnar <mingo@xxxxxxx> > > > --- > arch/x86/kernel/quirks.c | 37 +++++++++++++++++++++++++++++++++++++ > 1 files changed, 37 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c > index e95022e..94ad0c0 100644 > --- a/arch/x86/kernel/quirks.c > +++ b/arch/x86/kernel/quirks.c > @@ -493,5 +493,42 @@ void force_hpet_resume(void) > break; > } > } > +#endif > + > +#if defined(CONFIG_PCI) && defined(CONFIG_NUMA) > +/* Set correct numa_node information for AMD NB functions */ > +static void __init quirk_amd_nb_node(struct pci_dev *dev) > +{ > + struct pci_dev *nb_ht; > + unsigned int devfn; > + u32 val; > + > + devfn = PCI_DEVFN(PCI_SLOT(dev->devfn), 0); > + nb_ht = pci_get_slot(dev->bus, devfn); > + if (!nb_ht) > + return; > + > + pci_read_config_dword(nb_ht, 0x60, &val); > + set_dev_node(&dev->dev, val & 7); > + pci_dev_put(dev); > +} > > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB, > + quirk_amd_nb_node); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_ADDRMAP, > + quirk_amd_nb_node); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MEMCTL, > + quirk_amd_nb_node); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC, > + quirk_amd_nb_node); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_HT, > + quirk_amd_nb_node); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_MAP, > + quirk_amd_nb_node); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_DRAM, > + quirk_amd_nb_node); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC, > + quirk_amd_nb_node); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_LINK, > + quirk_amd_nb_node); > #endif > -- wonder if need to check if the node is online aka there is memory on that node... looks like if that node is not online, should use -1 instead for 64bit. YH -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html