LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Yinghai Lu <Yinghai.Lu@Sun.COM> To: Andi Kleen <andi@firstfloor.org>, Ingo Molnar <mingo@elte.hu> Cc: Andrew Morton <akpm@linux-foundation.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, kiran@scalemp.com, shai@scalemp.com Subject: Re: [PATCH] x86_64: make amd quad core 8 socket system not be clustered_box v2 Date: Sun, 24 Feb 2008 17:52:34 -0800 [thread overview] Message-ID: <200802241752.34918.yinghai.lu@sun.com> (raw) In-Reply-To: <200802241500.52860.yinghai.lu@sun.com> On Sunday 24 February 2008 03:00:52 pm Yinghai Lu wrote: > On Sunday 24 February 2008 04:29:03 am Andi Kleen wrote: > > On Sat, Feb 23, 2008 at 09:48:42PM -0800, Yinghai Lu wrote: > > > > > > quad core 8 socket system will have apic id lifting.the apic id range could > > > be [4, 0x23]. and apic_is_clustered_box will think that need to three clusters > > > and that is large than 2. So it is treated as clustered_box. > > > > Ok I see you chose the quick hack over doing it properly ... > > > > > > > > and will get > > > > > > Marking TSC unstable due to TSCs unsynchronized > > > > > > even the CPUs have X86_FEATURE_CONSTANT_TSC set. > > > > I doubt that will do the right thing on AMD based vSMP, > > which also required the cluster check on AMD iirc. > > > > Cc'ed Kiran/Shai. damage has already hit x86 tree I believe. > > do you have bootlog for these box? > > IBM summit2, Unisys es70000, and system from scalemp.. > > DMI could tell the difference? i produced one patch against linus tree. but it can not be applied to x86/testing x86/testing has obj-$(CONFIG_PARAVIRT) += vsmp_64.o so my question: is the vsmp the real HW or just in paravirt? YH ---- [PATCH] x86_64: make amd quad core 8 socket system not be clustered_box v3 quad core 8 socket system will have apic id lifting.the apic id range could be [4, 0x23]. and apic_is_clustered_box will think that need to three clusters and that is large than 2. So it is treated as clustered_box. and will get Marking TSC unstable due to TSCs unsynchronized even the CPUs have X86_FEATURE_CONSTANT_TSC set. this patch will check if the cpu is from AMD. also vsmp still need that checking... Signed-off-by: Yinghai Lu <yinghai.lu@sun.com> diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 4eb5ce8..2bec799 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -60,7 +60,7 @@ obj-$(CONFIG_KEXEC) += relocate_kernel_$(BITS).o crash.o obj-$(CONFIG_CRASH_DUMP) += crash_dump_$(BITS).o obj-$(CONFIG_X86_NUMAQ) += numaq_32.o obj-$(CONFIG_X86_SUMMIT_NUMA) += summit_32.o -obj-$(CONFIG_X86_VSMP) += vsmp_64.o +obj-y += vsmp_64.o obj-$(CONFIG_KPROBES) += kprobes.o obj-$(CONFIG_MODULES) += module_$(BITS).o obj-$(CONFIG_ACPI_SRAT) += srat_32.o diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c index d8d03e0..1427ec3 100644 --- a/arch/x86/kernel/apic_64.c +++ b/arch/x86/kernel/apic_64.c @@ -1180,9 +1180,20 @@ __cpuinit int apic_is_clustered_box(void) { int i, clusters, zeros; unsigned id; - u16 *bios_cpu_apicid = x86_bios_cpu_apicid_early_ptr; + u16 *bios_cpu_apicid; DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS); + /* + * there is not this kind of box with AMD CPU yet. + * Some AMD box with quadcore cpu and 8 sockets apicid + * will be [4, 0x23] or [8, 0x27] could be thought to + * have three apic_clusters. So go out early. + * vsmp box still need checking... + */ + if (!is_vsmp_box() && (boot_cpu_data.x86_vendor == X86_VENDOR_AMD)) + return 0; + + bios_cpu_apicid = x86_bios_cpu_apicid_early_ptr; bitmap_zero(clustermap, NUM_APIC_CLUSTERS); for (i = 0; i < NR_CPUS; i++) { diff --git a/arch/x86/kernel/vsmp_64.c b/arch/x86/kernel/vsmp_64.c index d971210..2780df1 100644 --- a/arch/x86/kernel/vsmp_64.c +++ b/arch/x86/kernel/vsmp_64.c @@ -16,19 +16,35 @@ #include <asm/pci-direct.h> #include <asm/io.h> +static int vsmp = -1; + +__cpuinit int is_vsmp_box(void) +{ + if (vsmp != -1) + return vsmp; + + vsmp = 0; + if (!early_pci_allowed()) + return vsmp; + + /* Check if we are running on a ScaleMP vSMP box */ + if (read_pci_config(0, 0x1f, 0, PCI_VENDOR_ID) == + (PCI_VENDOR_ID_SCALEMP || (PCI_DEVICE_ID_SCALEMP_VSMP_CTL << 16))) + vsmp = 1; + + return vsmp; +} + +#ifdef CONFIG_X86_VSMP static int __init vsmp_init(void) { void *address; unsigned int cap, ctl; - if (!early_pci_allowed()) + if (!vsmp) return 0; - /* Check if we are running on a ScaleMP vSMP box */ - if ((read_pci_config_16(0, 0x1f, 0, PCI_VENDOR_ID) != - PCI_VENDOR_ID_SCALEMP) || - (read_pci_config_16(0, 0x1f, 0, PCI_DEVICE_ID) != - PCI_DEVICE_ID_SCALEMP_VSMP_CTL)) + if (!early_pci_allowed()) return 0; /* set vSMP magic bits to indicate vSMP capable kernel */ @@ -50,3 +66,4 @@ static int __init vsmp_init(void) } core_initcall(vsmp_init); +#endif diff --git a/include/asm-x86/apic.h b/include/asm-x86/apic.h index bcfc07f..d69f596 100644 --- a/include/asm-x86/apic.h +++ b/include/asm-x86/apic.h @@ -130,6 +130,7 @@ extern u8 setup_APIC_eilvt_mce(u8 vector, u8 msg_type, u8 mask); extern u8 setup_APIC_eilvt_ibs(u8 vector, u8 msg_type, u8 mask); extern int apic_is_clustered_box(void); +extern int is_vsmp_box(void); #else /* !CONFIG_X86_LOCAL_APIC */ static inline void lapic_shutdown(void) { }
next prev parent reply other threads:[~2008-02-25 1:44 UTC|newest] Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top 2008-02-21 10:58 [PATCH] x86_64: make amd quad core 8 socket system not be clustered_box Yinghai Lu 2008-02-22 12:25 ` Andi Kleen 2008-02-22 19:02 ` Yinghai Lu 2008-02-22 19:00 ` Andi Kleen 2008-02-22 19:04 ` Yinghai Lu 2008-02-22 19:07 ` Andi Kleen 2008-02-22 19:07 ` Yinghai Lu 2008-02-22 19:10 ` Andi Kleen 2008-02-23 8:55 ` Yinghai Lu 2008-02-24 5:48 ` [PATCH] x86_64: make amd quad core 8 socket system not be clustered_box v2 Yinghai Lu 2008-02-24 7:50 ` Ingo Molnar 2008-02-24 12:29 ` Andi Kleen 2008-02-24 23:00 ` Yinghai Lu 2008-02-25 1:52 ` Yinghai Lu [this message] 2008-02-25 2:32 ` Yinghai Lu 2008-02-25 5:36 ` [PATCH] x86_64: for apic_is_clustered_box for vsmp v2 Yinghai Lu 2008-02-25 6:43 ` [PATCH] x86: vSMP selection in config Yinghai Lu 2008-02-26 19:40 ` Kconfig configuration restore bug [Was: x86: vSMP selection in config] Sam Ravnborg 2008-02-27 2:59 ` Roman Zippel 2008-02-29 4:09 ` [PATCH 1/3] fix recursive dependencies Roman Zippel 2008-02-29 5:05 ` Yinghai Lu 2008-02-29 13:22 ` Roman Zippel 2008-02-29 17:40 ` Sam Ravnborg 2008-02-29 20:05 ` Ingo Molnar 2008-02-29 20:04 ` Ingo Molnar 2008-02-29 4:10 ` [PATCH 2/3] fix choice dependency check Roman Zippel 2008-04-28 21:08 ` Sam Ravnborg 2008-02-29 4:11 ` [PATCH 3/3] add named choice group Roman Zippel 2008-02-26 20:05 ` [PATCH] x86: vSMP selection in config Sam Ravnborg 2008-02-26 21:03 ` Yinghai Lu 2008-02-25 5:39 ` [PATCH] x86_64: make amd quad core 8 socket system not be clustered_box v2 Yinghai Lu 2008-02-25 19:08 ` Ravikiran Thirumalai 2008-02-25 22:05 ` Yinghai Lu 2008-02-26 3:39 ` Ravikiran Thirumalai 2008-02-26 3:46 ` Andi Kleen 2008-02-26 4:05 ` Ravikiran Thirumalai 2008-02-26 5:27 ` Yinghai Lu 2008-02-26 18:42 ` Ravikiran Thirumalai 2008-02-26 19:00 ` Yinghai Lu 2008-02-26 20:32 ` Ravikiran Thirumalai 2008-02-26 21:09 ` Yinghai Lu 2008-02-26 21:10 ` Yinghai Lu 2008-02-26 21:24 ` Ravikiran Thirumalai 2008-02-26 23:16 ` Yinghai Lu 2008-02-26 23:31 ` Ravikiran Thirumalai 2008-02-26 23:41 ` Yinghai Lu 2008-02-22 19:08 ` [PATCH] x86_64: make amd quad core 8 socket system not be clustered_box Yinghai Lu 2008-02-22 18:59 ` Andi Kleen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=200802241752.34918.yinghai.lu@sun.com \ --to=yinghai.lu@sun.com \ --cc=akpm@linux-foundation.org \ --cc=andi@firstfloor.org \ --cc=kiran@scalemp.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@elte.hu \ --cc=shai@scalemp.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).