lkml.org 
[lkml]   [2008]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] x86: add PCI IDs to k8topology_64.c
From
Date
"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;
> }


\
 
 \ /
  Last update: 2008-01-29 04:51    [W:0.183 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site