Messages in this thread | | | Subject | Re: [PATCH] x86: add PCI IDs to k8topology_64.c | From | Andi Kleen <> | Date | Tue, 29 Jan 2008 04:48:06 +0100 |
| |
"Joachim Deguara" <joachim.deguara@amd.com> writes:
> Quick history, this is a harmless patch that got dropped by Andi as a mixup to
It's not harmless.
> dropping another patch of mine that was made obsolete by Yinghai. > http://thread.gmane.org/gmane.linux.kernel/559581
No that's not the correct history. The correct history is that I intentionally rejected this patch because the old k8topology hack should really not be used anymore on modern machines (especially not on Quad Cores). SRAT is the far better way to handle this problem because it has a proper abstraction.
The problem with k8topology.c is that it needs to know very low level information (like HT node numbers etc.) the kernel should not really need to know and which are difficult to handle generally without motherboard specific knowledge.
k8topology.c mostly guesses, which was never a good way to handle this. Also in in the various "node has no memory" cases it needs quite hackish fallback heuristics which will be always fragile. Then there are some ugly interactions with quad cores. And some other issues
I still think the patch a bad idea because adapting this file all the time is a long term maintenance issue. I can say that as the original author :-) It was just a quick hack long ago to get NUMA going early. But now it far outlived its usefulness and adapting it to modern machines is the wrong direction.
Best is to phase k8topology out.
-Andi
> > -Joachim > > -- > > x86: add PCI IDs to k8topology_64.c > > This just adds the PCI IDs of AMD's family 10h and 11h CPU's northbridges > to > k8topology discovery. > > Signed-off-by: Joachim Deguara <joachim.deguara@amd.com> > Signed-off-by: Andi Kleen <ak@suse.de> > Acked-by: Yinghai Lu <yinghai.lu@sun.com> > > diff --git a/arch/x86/mm/k8topology_64.c b/arch/x86/mm/k8topology_64.c > index a96006f..b123ea3 100644 > --- a/arch/x86/mm/k8topology_64.c > +++ b/arch/x86/mm/k8topology_64.c > @@ -28,11 +28,15 @@ static __init int find_northbridge(void) > u32 header; > > header = read_pci_config(0, num, 0, 0x00); > - if (header != (PCI_VENDOR_ID_AMD | (0x1100<<16))) > + if (header != (PCI_VENDOR_ID_AMD | (0x1100<<16)) && > + header != (PCI_VENDOR_ID_AMD | (0x1200<<16)) && > + header != (PCI_VENDOR_ID_AMD | (0x1300<<16))) > continue; > > header = read_pci_config(0, num, 1, 0x00); > - if (header != (PCI_VENDOR_ID_AMD | (0x1101<<16))) > + if (header != (PCI_VENDOR_ID_AMD | (0x1101<<16)) && > + header != (PCI_VENDOR_ID_AMD | (0x1201<<16)) && > + header != (PCI_VENDOR_ID_AMD | (0x1301<<16))) > continue; > return num; > }
| |