Re: [PATCH] x86: add PCI IDs to k8topology_64.c
From: Andi Kleen
Date: Mon Jan 28 2008 - 22:48:21 EST
"Joachim Deguara" <joachim.deguara@xxxxxxx> 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@xxxxxxx>
> Signed-off-by: Andi Kleen <ak@xxxxxxx>
> Acked-by: Yinghai Lu <yinghai.lu@xxxxxxx>
>
> 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;
> }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/