diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-23 15:38:39 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-23 15:38:39 -0400 |
| commit | c3c9897c63ebb0b93b7f78724e38d6ee1da04041 (patch) | |
| tree | f1ed40f2ac6108b23251dd4e41adeac403396fea /arch/x86/kernel | |
| parent | d2441183dc222d12961ff2201f5086c846505d93 (diff) | |
| parent | 3cfba0892585d4c8e7b4122b5dc0d206a76936de (diff) | |
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86: fix section mismatch warning - apic_x2apic_phys
x86: fix section mismatch warning - apic_x2apic_cluster
x86: fix section mismatch warning - apic_x2apic_uv_x
x86: fix section mismatch warning - apic_physflat
x86: fix section mismatch warning - apic_flat
x86: memtest fix use of reserve_early()
x86 syscall.h: fix argument order
x86/tlb_uv: remove strange mc146818rtc include
x86: remove redundant KERN_DEBUG on pr_debug
x86: do_boot_cpu - check if we have ESR register
x86: MAINTAINERS change for AMD microcode patch loader
x86/proc: fix /proc/cpuinfo cpu offline bug
x86: call dmi-quirks for HP Laptops after early-quirks are executed
x86, kexec: fix hang on i386 when panic occurs while console_sem is held
MCE: Don't run 32bit machine checks with interrupts on
x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC
x86: make variables static
Diffstat (limited to 'arch/x86/kernel')
| -rw-r--r-- | arch/x86/kernel/acpi/boot.c | 10 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/proc.c | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/dumpstack_32.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/entry_32.S | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/genapic_flat_64.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/genx2apic_cluster.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/genx2apic_phys.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/genx2apic_uv_x.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/setup_percpu.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/smpboot.c | 8 | ||||
| -rw-r--r-- | arch/x86/kernel/tlb_uv.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/traps.c | 8 | ||||
| -rw-r--r-- | arch/x86/kernel/xsave.c | 2 |
13 files changed, 28 insertions, 24 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 53b01a1ae10..8c1f76abae9 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
| @@ -1137,7 +1137,7 @@ int mp_register_gsi(u32 gsi, int triggering, int polarity) | |||
| 1137 | return gsi; | 1137 | return gsi; |
| 1138 | } | 1138 | } |
| 1139 | if (test_bit(ioapic_pin, mp_ioapic_routing[ioapic].pin_programmed)) { | 1139 | if (test_bit(ioapic_pin, mp_ioapic_routing[ioapic].pin_programmed)) { |
| 1140 | pr_debug(KERN_DEBUG "Pin %d-%d already programmed\n", | 1140 | pr_debug("Pin %d-%d already programmed\n", |
| 1141 | mp_ioapic_routing[ioapic].apic_id, ioapic_pin); | 1141 | mp_ioapic_routing[ioapic].apic_id, ioapic_pin); |
| 1142 | #ifdef CONFIG_X86_32 | 1142 | #ifdef CONFIG_X86_32 |
| 1143 | return (gsi < IRQ_COMPRESSION_START ? gsi : gsi_to_irq[gsi]); | 1143 | return (gsi < IRQ_COMPRESSION_START ? gsi : gsi_to_irq[gsi]); |
| @@ -1599,6 +1599,11 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { | |||
| 1599 | DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), | 1599 | DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), |
| 1600 | }, | 1600 | }, |
| 1601 | }, | 1601 | }, |
| 1602 | {} | ||
| 1603 | }; | ||
| 1604 | |||
| 1605 | /* second table for DMI checks that should run after early-quirks */ | ||
| 1606 | static struct dmi_system_id __initdata acpi_dmi_table_late[] = { | ||
| 1602 | /* | 1607 | /* |
| 1603 | * HP laptops which use a DSDT reporting as HP/SB400/10000, | 1608 | * HP laptops which use a DSDT reporting as HP/SB400/10000, |
| 1604 | * which includes some code which overrides all temperature | 1609 | * which includes some code which overrides all temperature |
| @@ -1727,6 +1732,9 @@ int __init early_acpi_boot_init(void) | |||
| 1727 | 1732 | ||
| 1728 | int __init acpi_boot_init(void) | 1733 | int __init acpi_boot_init(void) |
| 1729 | { | 1734 | { |
| 1735 | /* those are executed after early-quirks are executed */ | ||
| 1736 | dmi_check_system(acpi_dmi_table_late); | ||
| 1737 | |||
| 1730 | /* | 1738 | /* |
| 1731 | * If acpi_disabled, bail out | 1739 | * If acpi_disabled, bail out |
| 1732 | * One exception: acpi=ht continues far enough to enumerate LAPICs | 1740 | * One exception: acpi=ht continues far enough to enumerate LAPICs |
diff --git a/arch/x86/kernel/cpu/proc.c b/arch/x86/kernel/cpu/proc.c index a26c480b949..01b1244ef1c 100644 --- a/arch/x86/kernel/cpu/proc.c +++ b/arch/x86/kernel/cpu/proc.c | |||
| @@ -160,14 +160,16 @@ static void *c_start(struct seq_file *m, loff_t *pos) | |||
| 160 | { | 160 | { |
| 161 | if (*pos == 0) /* just in case, cpu 0 is not the first */ | 161 | if (*pos == 0) /* just in case, cpu 0 is not the first */ |
| 162 | *pos = first_cpu(cpu_online_map); | 162 | *pos = first_cpu(cpu_online_map); |
| 163 | if ((*pos) < nr_cpu_ids && cpu_online(*pos)) | 163 | else |
| 164 | *pos = next_cpu_nr(*pos - 1, cpu_online_map); | ||
| 165 | if ((*pos) < nr_cpu_ids) | ||
| 164 | return &cpu_data(*pos); | 166 | return &cpu_data(*pos); |
| 165 | return NULL; | 167 | return NULL; |
| 166 | } | 168 | } |
| 167 | 169 | ||
| 168 | static void *c_next(struct seq_file *m, void *v, loff_t *pos) | 170 | static void *c_next(struct seq_file *m, void *v, loff_t *pos) |
| 169 | { | 171 | { |
| 170 | *pos = next_cpu(*pos, cpu_online_map); | 172 | (*pos)++; |
| 171 | return c_start(m, pos); | 173 | return c_start(m, pos); |
| 172 | } | 174 | } |
| 173 | 175 | ||
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c index 1a78180f08d..b3614752197 100644 --- a/arch/x86/kernel/dumpstack_32.c +++ b/arch/x86/kernel/dumpstack_32.c | |||
| @@ -405,7 +405,6 @@ die_nmi(char *str, struct pt_regs *regs, int do_panic) | |||
| 405 | panic("Non maskable interrupt"); | 405 | panic("Non maskable interrupt"); |
| 406 | console_silent(); | 406 | console_silent(); |
| 407 | spin_unlock(&nmi_print_lock); | 407 | spin_unlock(&nmi_print_lock); |
| 408 | bust_spinlocks(0); | ||
| 409 | 408 | ||
| 410 | /* | 409 | /* |
| 411 | * If we are in kernel we are probably nested up pretty bad | 410 | * If we are in kernel we are probably nested up pretty bad |
| @@ -416,6 +415,7 @@ die_nmi(char *str, struct pt_regs *regs, int do_panic) | |||
| 416 | crash_kexec(regs); | 415 | crash_kexec(regs); |
| 417 | } | 416 | } |
| 418 | 417 | ||
| 418 | bust_spinlocks(0); | ||
| 419 | do_exit(SIGSEGV); | 419 | do_exit(SIGSEGV); |
| 420 | } | 420 | } |
| 421 | 421 | ||
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index c356423a602..dd65143941a 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
| @@ -1024,7 +1024,7 @@ ENTRY(machine_check) | |||
| 1024 | RING0_INT_FRAME | 1024 | RING0_INT_FRAME |
| 1025 | pushl $0 | 1025 | pushl $0 |
| 1026 | CFI_ADJUST_CFA_OFFSET 4 | 1026 | CFI_ADJUST_CFA_OFFSET 4 |
| 1027 | pushl $do_machine_check | 1027 | pushl machine_check_vector |
| 1028 | CFI_ADJUST_CFA_OFFSET 4 | 1028 | CFI_ADJUST_CFA_OFFSET 4 |
| 1029 | jmp error_code | 1029 | jmp error_code |
| 1030 | CFI_ENDPROC | 1030 | CFI_ENDPROC |
diff --git a/arch/x86/kernel/genapic_flat_64.c b/arch/x86/kernel/genapic_flat_64.c index 2ec2de8d8c4..c0262791bda 100644 --- a/arch/x86/kernel/genapic_flat_64.c +++ b/arch/x86/kernel/genapic_flat_64.c | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | #include <acpi/acpi_bus.h> | 25 | #include <acpi/acpi_bus.h> |
| 26 | #endif | 26 | #endif |
| 27 | 27 | ||
| 28 | static int __init flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | 28 | static int flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id) |
| 29 | { | 29 | { |
| 30 | return 1; | 30 | return 1; |
| 31 | } | 31 | } |
| @@ -170,7 +170,7 @@ struct genapic apic_flat = { | |||
| 170 | * We cannot use logical delivery in this case because the mask | 170 | * We cannot use logical delivery in this case because the mask |
| 171 | * overflows, so use physical mode. | 171 | * overflows, so use physical mode. |
| 172 | */ | 172 | */ |
| 173 | static int __init physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | 173 | static int physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id) |
| 174 | { | 174 | { |
| 175 | #ifdef CONFIG_ACPI | 175 | #ifdef CONFIG_ACPI |
| 176 | /* | 176 | /* |
diff --git a/arch/x86/kernel/genx2apic_cluster.c b/arch/x86/kernel/genx2apic_cluster.c index e4bf2cc0d74..f6a2c8eb48a 100644 --- a/arch/x86/kernel/genx2apic_cluster.c +++ b/arch/x86/kernel/genx2apic_cluster.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | DEFINE_PER_CPU(u32, x86_cpu_to_logical_apicid); | 13 | DEFINE_PER_CPU(u32, x86_cpu_to_logical_apicid); |
| 14 | 14 | ||
| 15 | static int __init x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | 15 | static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) |
| 16 | { | 16 | { |
| 17 | if (cpu_has_x2apic) | 17 | if (cpu_has_x2apic) |
| 18 | return 1; | 18 | return 1; |
diff --git a/arch/x86/kernel/genx2apic_phys.c b/arch/x86/kernel/genx2apic_phys.c index 8f1343df262..d042211768b 100644 --- a/arch/x86/kernel/genx2apic_phys.c +++ b/arch/x86/kernel/genx2apic_phys.c | |||
| @@ -19,7 +19,7 @@ static int set_x2apic_phys_mode(char *arg) | |||
| 19 | } | 19 | } |
| 20 | early_param("x2apic_phys", set_x2apic_phys_mode); | 20 | early_param("x2apic_phys", set_x2apic_phys_mode); |
| 21 | 21 | ||
| 22 | static int __init x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | 22 | static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) |
| 23 | { | 23 | { |
| 24 | if (cpu_has_x2apic && x2apic_phys) | 24 | if (cpu_has_x2apic && x2apic_phys) |
| 25 | return 1; | 25 | return 1; |
diff --git a/arch/x86/kernel/genx2apic_uv_x.c b/arch/x86/kernel/genx2apic_uv_x.c index bfd532843df..680a06557c5 100644 --- a/arch/x86/kernel/genx2apic_uv_x.c +++ b/arch/x86/kernel/genx2apic_uv_x.c | |||
| @@ -30,7 +30,7 @@ DEFINE_PER_CPU(int, x2apic_extra_bits); | |||
| 30 | 30 | ||
| 31 | static enum uv_system_type uv_system_type; | 31 | static enum uv_system_type uv_system_type; |
| 32 | 32 | ||
| 33 | static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | 33 | static int uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id) |
| 34 | { | 34 | { |
| 35 | if (!strcmp(oem_id, "SGI")) { | 35 | if (!strcmp(oem_id, "SGI")) { |
| 36 | if (!strcmp(oem_table_id, "UVL")) | 36 | if (!strcmp(oem_table_id, "UVL")) |
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c index 410c88f0bfe..ae0c0d3bb77 100644 --- a/arch/x86/kernel/setup_percpu.c +++ b/arch/x86/kernel/setup_percpu.c | |||
| @@ -218,7 +218,7 @@ static void __init setup_node_to_cpumask_map(void) | |||
| 218 | /* allocate the map */ | 218 | /* allocate the map */ |
| 219 | map = alloc_bootmem_low(nr_node_ids * sizeof(cpumask_t)); | 219 | map = alloc_bootmem_low(nr_node_ids * sizeof(cpumask_t)); |
| 220 | 220 | ||
| 221 | pr_debug(KERN_DEBUG "Node to cpumask map at %p for %d nodes\n", | 221 | pr_debug("Node to cpumask map at %p for %d nodes\n", |
| 222 | map, nr_node_ids); | 222 | map, nr_node_ids); |
| 223 | 223 | ||
| 224 | /* node_to_cpumask() will now work */ | 224 | /* node_to_cpumask() will now work */ |
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 7ece815ea63..7b109339731 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
| @@ -893,9 +893,11 @@ do_rest: | |||
| 893 | smpboot_setup_warm_reset_vector(start_ip); | 893 | smpboot_setup_warm_reset_vector(start_ip); |
| 894 | /* | 894 | /* |
| 895 | * Be paranoid about clearing APIC errors. | 895 | * Be paranoid about clearing APIC errors. |
| 896 | */ | 896 | */ |
| 897 | apic_write(APIC_ESR, 0); | 897 | if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) { |
| 898 | apic_read(APIC_ESR); | 898 | apic_write(APIC_ESR, 0); |
| 899 | apic_read(APIC_ESR); | ||
| 900 | } | ||
| 899 | } | 901 | } |
| 900 | 902 | ||
| 901 | /* | 903 | /* |
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c index 8b8c0d6640f..04431f34fd1 100644 --- a/arch/x86/kernel/tlb_uv.c +++ b/arch/x86/kernel/tlb_uv.c | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | * This code is released under the GNU General Public License version 2 or | 6 | * This code is released under the GNU General Public License version 2 or |
| 7 | * later. | 7 | * later. |
| 8 | */ | 8 | */ |
| 9 | #include <linux/mc146818rtc.h> | 9 | #include <linux/seq_file.h> |
| 10 | #include <linux/proc_fs.h> | 10 | #include <linux/proc_fs.h> |
| 11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
| 12 | 12 | ||
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index e062974cce3..04d242ab016 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c | |||
| @@ -931,14 +931,6 @@ do_device_not_available(struct pt_regs *regs, long error) | |||
| 931 | } | 931 | } |
| 932 | 932 | ||
| 933 | #ifdef CONFIG_X86_32 | 933 | #ifdef CONFIG_X86_32 |
| 934 | #ifdef CONFIG_X86_MCE | ||
| 935 | dotraplinkage void __kprobes do_machine_check(struct pt_regs *regs, long error) | ||
| 936 | { | ||
| 937 | conditional_sti(regs); | ||
| 938 | machine_check_vector(regs, error); | ||
| 939 | } | ||
| 940 | #endif | ||
| 941 | |||
| 942 | dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code) | 934 | dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code) |
| 943 | { | 935 | { |
| 944 | siginfo_t info; | 936 | siginfo_t info; |
diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c index 9abac8a9d82..b13acb75e82 100644 --- a/arch/x86/kernel/xsave.c +++ b/arch/x86/kernel/xsave.c | |||
| @@ -248,7 +248,7 @@ clear: | |||
| 248 | * This will be saved when ever the FP and extended state context is | 248 | * This will be saved when ever the FP and extended state context is |
| 249 | * saved on the user stack during the signal handler delivery to the user. | 249 | * saved on the user stack during the signal handler delivery to the user. |
| 250 | */ | 250 | */ |
| 251 | void prepare_fx_sw_frame(void) | 251 | static void prepare_fx_sw_frame(void) |
| 252 | { | 252 | { |
| 253 | int size_extended = (xstate_size - sizeof(struct i387_fxsave_struct)) + | 253 | int size_extended = (xstate_size - sizeof(struct i387_fxsave_struct)) + |
| 254 | FP_XSTATE_MAGIC2_SIZE; | 254 | FP_XSTATE_MAGIC2_SIZE; |
