aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic
diff options
context:
space:
mode:
authorRuss Anderson <rja@sgi.com>2010-10-28 18:41:32 -0400
committerH. Peter Anvin <hpa@zytor.com>2010-10-29 01:38:07 -0400
commit0520bd8438f18f2b1b2af5fd1c4ecc070a1bf837 (patch)
tree8d760bff18655720f1380e02907155039a3dfa67 /arch/x86/kernel/apic
parentc8f730b1ab825f06733e1c074264f0078721f365 (diff)
x86, uv: More Westmere support on SGI UV
Enable Westmere support for all APIC modes on SGI UV. Signed-off-by: Russ Anderson <rja@sgi.com> LKML-Reference: <20101028224132.GB15804@sgi.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/kernel/apic')
-rw-r--r--arch/x86/kernel/apic/x2apic_uv_x.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
index 0a2918eaab34..ed4118de249e 100644
--- a/arch/x86/kernel/apic/x2apic_uv_x.c
+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -71,7 +71,7 @@ static int early_get_nodeid(void)
71 return node_id.s.node_id; 71 return node_id.s.node_id;
72} 72}
73 73
74static int __init early_get_apic_pnode_shift(void) 74static void __init early_get_apic_pnode_shift(void)
75{ 75{
76 unsigned long *mmr; 76 unsigned long *mmr;
77 77
@@ -83,8 +83,6 @@ static int __init early_get_apic_pnode_shift(void)
83 * Old bios, use default value 83 * Old bios, use default value
84 */ 84 */
85 uvh_apicid.s.pnode_shift = UV_APIC_PNODE_SHIFT; 85 uvh_apicid.s.pnode_shift = UV_APIC_PNODE_SHIFT;
86
87 return uvh_apicid.s.pnode_shift;
88} 86}
89 87
90static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id) 88static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
@@ -93,6 +91,7 @@ static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
93 91
94 if (!strcmp(oem_id, "SGI")) { 92 if (!strcmp(oem_id, "SGI")) {
95 nodeid = early_get_nodeid(); 93 nodeid = early_get_nodeid();
94 early_get_apic_pnode_shift();
96 x86_platform.is_untracked_pat_range = uv_is_untracked_pat_range; 95 x86_platform.is_untracked_pat_range = uv_is_untracked_pat_range;
97 x86_platform.nmi_init = uv_nmi_init; 96 x86_platform.nmi_init = uv_nmi_init;
98 if (!strcmp(oem_table_id, "UVL")) 97 if (!strcmp(oem_table_id, "UVL"))
@@ -101,7 +100,7 @@ static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
101 uv_system_type = UV_X2APIC; 100 uv_system_type = UV_X2APIC;
102 else if (!strcmp(oem_table_id, "UVH")) { 101 else if (!strcmp(oem_table_id, "UVH")) {
103 __get_cpu_var(x2apic_extra_bits) = 102 __get_cpu_var(x2apic_extra_bits) =
104 nodeid << (early_get_apic_pnode_shift() - 1); 103 nodeid << (uvh_apicid.s.pnode_shift - 1);
105 uv_system_type = UV_NON_UNIQUE_APIC; 104 uv_system_type = UV_NON_UNIQUE_APIC;
106 return 1; 105 return 1;
107 } 106 }