diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 12:42:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 12:43:22 -0400 |
commit | 23904815461ba223a8baf7490051597fa054299b (patch) | |
tree | 2d52ce8ff18c4f731183d0b10048eb74489a3391 /arch/x86/kernel | |
parent | 754b9800779402924fffe456b49d557e15260cbf (diff) | |
parent | fa63030e9c79e37b4d4e63b39ffb09cfb7aa0fe4 (diff) |
Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 platform changes from Ingo Molnar.
Removes the Moorestown platform that nobody ever used.
* 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/platform: Move APIC ID validity check into platform APIC code
x86/olpc/xo15/sci: Enable lid close wakeup control
x86/geode/net5501: Add platform driver for Soekris Engineering net5501
x86/geode/alix2: Supplement driver to include GPIO button support
x86/mid/powerbtn: Use MSIC read/write instead of ipc_scu
x86/mid/thermal: Turn off thermistor
x86/mid/thermal: Add msic_thermal alias
x86/mid/thermal: Convert to use Intel MSIC API
x86/mid/scu_ipc: Remove Moorestown support
x86/mid: Kill off Moorestown
x86/mrst: Add msic_thermal platform support
x86/config: Select MSIC MFD driver on Intel Medfield platform
x86/mid: Remove Intel Moorestown
x86/mrst: Set ISA bus type for fake MP IRQs
x86/ioapic: Use legacy_pic to set correct gsi-irq mapping
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/apic/apic_flat_64.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/apic/apic_noop.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/apic/apic_numachip.c | 10 | ||||
-rw-r--r-- | arch/x86/kernel/apic/bigsmp_32.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/apic/es7000_32.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/apic/numaq_32.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/apic/probe_32.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/apic/summit_32.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/apic/x2apic_cluster.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/apic/x2apic_phys.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/apic/x2apic_uv_x.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot.c | 2 |
12 files changed, 22 insertions, 2 deletions
diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c index 8c3cdded6f2b..359b6899a36c 100644 --- a/arch/x86/kernel/apic/apic_flat_64.c +++ b/arch/x86/kernel/apic/apic_flat_64.c | |||
@@ -180,6 +180,7 @@ static struct apic apic_flat = { | |||
180 | .name = "flat", | 180 | .name = "flat", |
181 | .probe = flat_probe, | 181 | .probe = flat_probe, |
182 | .acpi_madt_oem_check = flat_acpi_madt_oem_check, | 182 | .acpi_madt_oem_check = flat_acpi_madt_oem_check, |
183 | .apic_id_valid = default_apic_id_valid, | ||
183 | .apic_id_registered = flat_apic_id_registered, | 184 | .apic_id_registered = flat_apic_id_registered, |
184 | 185 | ||
185 | .irq_delivery_mode = dest_LowestPrio, | 186 | .irq_delivery_mode = dest_LowestPrio, |
@@ -337,6 +338,7 @@ static struct apic apic_physflat = { | |||
337 | .name = "physical flat", | 338 | .name = "physical flat", |
338 | .probe = physflat_probe, | 339 | .probe = physflat_probe, |
339 | .acpi_madt_oem_check = physflat_acpi_madt_oem_check, | 340 | .acpi_madt_oem_check = physflat_acpi_madt_oem_check, |
341 | .apic_id_valid = default_apic_id_valid, | ||
340 | .apic_id_registered = flat_apic_id_registered, | 342 | .apic_id_registered = flat_apic_id_registered, |
341 | 343 | ||
342 | .irq_delivery_mode = dest_Fixed, | 344 | .irq_delivery_mode = dest_Fixed, |
diff --git a/arch/x86/kernel/apic/apic_noop.c b/arch/x86/kernel/apic/apic_noop.c index 775b82bc655c..634ae6cdd5c9 100644 --- a/arch/x86/kernel/apic/apic_noop.c +++ b/arch/x86/kernel/apic/apic_noop.c | |||
@@ -124,6 +124,7 @@ struct apic apic_noop = { | |||
124 | .probe = noop_probe, | 124 | .probe = noop_probe, |
125 | .acpi_madt_oem_check = NULL, | 125 | .acpi_madt_oem_check = NULL, |
126 | 126 | ||
127 | .apic_id_valid = default_apic_id_valid, | ||
127 | .apic_id_registered = noop_apic_id_registered, | 128 | .apic_id_registered = noop_apic_id_registered, |
128 | 129 | ||
129 | .irq_delivery_mode = dest_LowestPrio, | 130 | .irq_delivery_mode = dest_LowestPrio, |
diff --git a/arch/x86/kernel/apic/apic_numachip.c b/arch/x86/kernel/apic/apic_numachip.c index 09d3d8c1cd99..d9ea5f331ac5 100644 --- a/arch/x86/kernel/apic/apic_numachip.c +++ b/arch/x86/kernel/apic/apic_numachip.c | |||
@@ -56,6 +56,12 @@ static unsigned int read_xapic_id(void) | |||
56 | return get_apic_id(apic_read(APIC_ID)); | 56 | return get_apic_id(apic_read(APIC_ID)); |
57 | } | 57 | } |
58 | 58 | ||
59 | static int numachip_apic_id_valid(int apicid) | ||
60 | { | ||
61 | /* Trust what bootloader passes in MADT */ | ||
62 | return 1; | ||
63 | } | ||
64 | |||
59 | static int numachip_apic_id_registered(void) | 65 | static int numachip_apic_id_registered(void) |
60 | { | 66 | { |
61 | return physid_isset(read_xapic_id(), phys_cpu_present_map); | 67 | return physid_isset(read_xapic_id(), phys_cpu_present_map); |
@@ -223,10 +229,11 @@ static int __init numachip_system_init(void) | |||
223 | } | 229 | } |
224 | early_initcall(numachip_system_init); | 230 | early_initcall(numachip_system_init); |
225 | 231 | ||
226 | static int numachip_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | 232 | static int __cpuinit numachip_acpi_madt_oem_check(char *oem_id, char *oem_table_id) |
227 | { | 233 | { |
228 | if (!strncmp(oem_id, "NUMASC", 6)) { | 234 | if (!strncmp(oem_id, "NUMASC", 6)) { |
229 | numachip_system = 1; | 235 | numachip_system = 1; |
236 | setup_force_cpu_cap(X86_FEATURE_X2APIC); | ||
230 | return 1; | 237 | return 1; |
231 | } | 238 | } |
232 | 239 | ||
@@ -238,6 +245,7 @@ static struct apic apic_numachip __refconst = { | |||
238 | .name = "NumaConnect system", | 245 | .name = "NumaConnect system", |
239 | .probe = numachip_probe, | 246 | .probe = numachip_probe, |
240 | .acpi_madt_oem_check = numachip_acpi_madt_oem_check, | 247 | .acpi_madt_oem_check = numachip_acpi_madt_oem_check, |
248 | .apic_id_valid = numachip_apic_id_valid, | ||
241 | .apic_id_registered = numachip_apic_id_registered, | 249 | .apic_id_registered = numachip_apic_id_registered, |
242 | 250 | ||
243 | .irq_delivery_mode = dest_Fixed, | 251 | .irq_delivery_mode = dest_Fixed, |
diff --git a/arch/x86/kernel/apic/bigsmp_32.c b/arch/x86/kernel/apic/bigsmp_32.c index 521bead01137..0cdec7065aff 100644 --- a/arch/x86/kernel/apic/bigsmp_32.c +++ b/arch/x86/kernel/apic/bigsmp_32.c | |||
@@ -198,6 +198,7 @@ static struct apic apic_bigsmp = { | |||
198 | .name = "bigsmp", | 198 | .name = "bigsmp", |
199 | .probe = probe_bigsmp, | 199 | .probe = probe_bigsmp, |
200 | .acpi_madt_oem_check = NULL, | 200 | .acpi_madt_oem_check = NULL, |
201 | .apic_id_valid = default_apic_id_valid, | ||
201 | .apic_id_registered = bigsmp_apic_id_registered, | 202 | .apic_id_registered = bigsmp_apic_id_registered, |
202 | 203 | ||
203 | .irq_delivery_mode = dest_Fixed, | 204 | .irq_delivery_mode = dest_Fixed, |
diff --git a/arch/x86/kernel/apic/es7000_32.c b/arch/x86/kernel/apic/es7000_32.c index 5d513bc47b6b..e42d1d3b9134 100644 --- a/arch/x86/kernel/apic/es7000_32.c +++ b/arch/x86/kernel/apic/es7000_32.c | |||
@@ -625,6 +625,7 @@ static struct apic __refdata apic_es7000_cluster = { | |||
625 | .name = "es7000", | 625 | .name = "es7000", |
626 | .probe = probe_es7000, | 626 | .probe = probe_es7000, |
627 | .acpi_madt_oem_check = es7000_acpi_madt_oem_check_cluster, | 627 | .acpi_madt_oem_check = es7000_acpi_madt_oem_check_cluster, |
628 | .apic_id_valid = default_apic_id_valid, | ||
628 | .apic_id_registered = es7000_apic_id_registered, | 629 | .apic_id_registered = es7000_apic_id_registered, |
629 | 630 | ||
630 | .irq_delivery_mode = dest_LowestPrio, | 631 | .irq_delivery_mode = dest_LowestPrio, |
@@ -690,6 +691,7 @@ static struct apic __refdata apic_es7000 = { | |||
690 | .name = "es7000", | 691 | .name = "es7000", |
691 | .probe = probe_es7000, | 692 | .probe = probe_es7000, |
692 | .acpi_madt_oem_check = es7000_acpi_madt_oem_check, | 693 | .acpi_madt_oem_check = es7000_acpi_madt_oem_check, |
694 | .apic_id_valid = default_apic_id_valid, | ||
693 | .apic_id_registered = es7000_apic_id_registered, | 695 | .apic_id_registered = es7000_apic_id_registered, |
694 | 696 | ||
695 | .irq_delivery_mode = dest_Fixed, | 697 | .irq_delivery_mode = dest_Fixed, |
diff --git a/arch/x86/kernel/apic/numaq_32.c b/arch/x86/kernel/apic/numaq_32.c index c4a61ca1349a..00d2422ca7c9 100644 --- a/arch/x86/kernel/apic/numaq_32.c +++ b/arch/x86/kernel/apic/numaq_32.c | |||
@@ -478,6 +478,7 @@ static struct apic __refdata apic_numaq = { | |||
478 | .name = "NUMAQ", | 478 | .name = "NUMAQ", |
479 | .probe = probe_numaq, | 479 | .probe = probe_numaq, |
480 | .acpi_madt_oem_check = NULL, | 480 | .acpi_madt_oem_check = NULL, |
481 | .apic_id_valid = default_apic_id_valid, | ||
481 | .apic_id_registered = numaq_apic_id_registered, | 482 | .apic_id_registered = numaq_apic_id_registered, |
482 | 483 | ||
483 | .irq_delivery_mode = dest_LowestPrio, | 484 | .irq_delivery_mode = dest_LowestPrio, |
diff --git a/arch/x86/kernel/apic/probe_32.c b/arch/x86/kernel/apic/probe_32.c index 0787bb3412f4..ff2c1b9aac4d 100644 --- a/arch/x86/kernel/apic/probe_32.c +++ b/arch/x86/kernel/apic/probe_32.c | |||
@@ -92,6 +92,7 @@ static struct apic apic_default = { | |||
92 | .name = "default", | 92 | .name = "default", |
93 | .probe = probe_default, | 93 | .probe = probe_default, |
94 | .acpi_madt_oem_check = NULL, | 94 | .acpi_madt_oem_check = NULL, |
95 | .apic_id_valid = default_apic_id_valid, | ||
95 | .apic_id_registered = default_apic_id_registered, | 96 | .apic_id_registered = default_apic_id_registered, |
96 | 97 | ||
97 | .irq_delivery_mode = dest_LowestPrio, | 98 | .irq_delivery_mode = dest_LowestPrio, |
diff --git a/arch/x86/kernel/apic/summit_32.c b/arch/x86/kernel/apic/summit_32.c index 19114423c58c..fea000b27f07 100644 --- a/arch/x86/kernel/apic/summit_32.c +++ b/arch/x86/kernel/apic/summit_32.c | |||
@@ -496,6 +496,7 @@ static struct apic apic_summit = { | |||
496 | .name = "summit", | 496 | .name = "summit", |
497 | .probe = probe_summit, | 497 | .probe = probe_summit, |
498 | .acpi_madt_oem_check = summit_acpi_madt_oem_check, | 498 | .acpi_madt_oem_check = summit_acpi_madt_oem_check, |
499 | .apic_id_valid = default_apic_id_valid, | ||
499 | .apic_id_registered = summit_apic_id_registered, | 500 | .apic_id_registered = summit_apic_id_registered, |
500 | 501 | ||
501 | .irq_delivery_mode = dest_LowestPrio, | 502 | .irq_delivery_mode = dest_LowestPrio, |
diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c index 500795875827..9193713060a9 100644 --- a/arch/x86/kernel/apic/x2apic_cluster.c +++ b/arch/x86/kernel/apic/x2apic_cluster.c | |||
@@ -213,6 +213,7 @@ static struct apic apic_x2apic_cluster = { | |||
213 | .name = "cluster x2apic", | 213 | .name = "cluster x2apic", |
214 | .probe = x2apic_cluster_probe, | 214 | .probe = x2apic_cluster_probe, |
215 | .acpi_madt_oem_check = x2apic_acpi_madt_oem_check, | 215 | .acpi_madt_oem_check = x2apic_acpi_madt_oem_check, |
216 | .apic_id_valid = default_apic_id_valid, | ||
216 | .apic_id_registered = x2apic_apic_id_registered, | 217 | .apic_id_registered = x2apic_apic_id_registered, |
217 | 218 | ||
218 | .irq_delivery_mode = dest_LowestPrio, | 219 | .irq_delivery_mode = dest_LowestPrio, |
diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c index f5373dfde21e..bcd1db6eaca9 100644 --- a/arch/x86/kernel/apic/x2apic_phys.c +++ b/arch/x86/kernel/apic/x2apic_phys.c | |||
@@ -119,6 +119,7 @@ static struct apic apic_x2apic_phys = { | |||
119 | .name = "physical x2apic", | 119 | .name = "physical x2apic", |
120 | .probe = x2apic_phys_probe, | 120 | .probe = x2apic_phys_probe, |
121 | .acpi_madt_oem_check = x2apic_acpi_madt_oem_check, | 121 | .acpi_madt_oem_check = x2apic_acpi_madt_oem_check, |
122 | .apic_id_valid = default_apic_id_valid, | ||
122 | .apic_id_registered = x2apic_apic_id_registered, | 123 | .apic_id_registered = x2apic_apic_id_registered, |
123 | 124 | ||
124 | .irq_delivery_mode = dest_Fixed, | 125 | .irq_delivery_mode = dest_Fixed, |
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c index 79b05b88aa19..fc4771425852 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c | |||
@@ -351,6 +351,7 @@ static struct apic __refdata apic_x2apic_uv_x = { | |||
351 | .name = "UV large system", | 351 | .name = "UV large system", |
352 | .probe = uv_probe, | 352 | .probe = uv_probe, |
353 | .acpi_madt_oem_check = uv_acpi_madt_oem_check, | 353 | .acpi_madt_oem_check = uv_acpi_madt_oem_check, |
354 | .apic_id_valid = default_apic_id_valid, | ||
354 | .apic_id_registered = uv_apic_id_registered, | 355 | .apic_id_registered = uv_apic_id_registered, |
355 | 356 | ||
356 | .irq_delivery_mode = dest_Fixed, | 357 | .irq_delivery_mode = dest_Fixed, |
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index dccebbe758ca..e578a79a3093 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
@@ -833,7 +833,7 @@ int __cpuinit native_cpu_up(unsigned int cpu) | |||
833 | 833 | ||
834 | if (apicid == BAD_APICID || apicid == boot_cpu_physical_apicid || | 834 | if (apicid == BAD_APICID || apicid == boot_cpu_physical_apicid || |
835 | !physid_isset(apicid, phys_cpu_present_map) || | 835 | !physid_isset(apicid, phys_cpu_present_map) || |
836 | (!x2apic_mode && apicid >= 255)) { | 836 | !apic->apic_id_valid(apicid)) { |
837 | printk(KERN_ERR "%s: bad cpu %d\n", __func__, cpu); | 837 | printk(KERN_ERR "%s: bad cpu %d\n", __func__, cpu); |
838 | return -EINVAL; | 838 | return -EINVAL; |
839 | } | 839 | } |