提交 c3c9897c 编写于 作者: L Linus Torvalds

Merge branch 'x86-fixes-for-linus' of...

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
......@@ -378,8 +378,9 @@ T: git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git
S: Supported
AMD MICROCODE UPDATE SUPPORT
P: Peter Oruba
M: peter.oruba@amd.com
P: Andreas Herrmann
M: andeas.herrmann3@amd.com
L: amd64-microcode@amd64.org
S: Supported
AMS (Apple Motion Sensor) DRIVER
......
......@@ -17,7 +17,7 @@
#include "boot.h"
#include "video.h"
__videocard video_bios;
static __videocard video_bios;
/* Set a conventional BIOS mode */
static int set_bios_mode(u8 mode);
......@@ -119,7 +119,7 @@ static int bios_probe(void)
return nmodes;
}
__videocard video_bios =
static __videocard video_bios =
{
.card_name = "BIOS",
.probe = bios_probe,
......
......@@ -20,7 +20,7 @@
static struct vesa_general_info vginfo;
static struct vesa_mode_info vminfo;
__videocard video_vesa;
static __videocard video_vesa;
#ifndef _WAKEUP
static void vesa_store_mode_params_graphics(void);
......@@ -293,7 +293,7 @@ void vesa_store_edid(void)
#endif /* not _WAKEUP */
__videocard video_vesa =
static __videocard video_vesa =
{
.card_name = "VESA",
.probe = vesa_probe,
......
......@@ -93,26 +93,26 @@ static inline void syscall_get_arguments(struct task_struct *task,
{
# ifdef CONFIG_IA32_EMULATION
if (task_thread_info(task)->status & TS_COMPAT)
switch (i + n) {
case 6:
switch (i) {
case 0:
if (!n--) break;
*args++ = regs->bp;
case 5:
*args++ = regs->bx;
case 1:
if (!n--) break;
*args++ = regs->di;
case 4:
*args++ = regs->cx;
case 2:
if (!n--) break;
*args++ = regs->si;
*args++ = regs->dx;
case 3:
if (!n--) break;
*args++ = regs->dx;
case 2:
*args++ = regs->si;
case 4:
if (!n--) break;
*args++ = regs->cx;
case 1:
*args++ = regs->di;
case 5:
if (!n--) break;
*args++ = regs->bx;
case 0:
*args++ = regs->bp;
case 6:
if (!n--) break;
default:
BUG();
......@@ -120,26 +120,26 @@ static inline void syscall_get_arguments(struct task_struct *task,
}
else
# endif
switch (i + n) {
case 6:
switch (i) {
case 0:
if (!n--) break;
*args++ = regs->r9;
case 5:
*args++ = regs->di;
case 1:
if (!n--) break;
*args++ = regs->r8;
case 4:
*args++ = regs->si;
case 2:
if (!n--) break;
*args++ = regs->r10;
*args++ = regs->dx;
case 3:
if (!n--) break;
*args++ = regs->dx;
case 2:
*args++ = regs->r10;
case 4:
if (!n--) break;
*args++ = regs->si;
case 1:
*args++ = regs->r8;
case 5:
if (!n--) break;
*args++ = regs->di;
case 0:
*args++ = regs->r9;
case 6:
if (!n--) break;
default:
BUG();
......@@ -154,55 +154,57 @@ static inline void syscall_set_arguments(struct task_struct *task,
{
# ifdef CONFIG_IA32_EMULATION
if (task_thread_info(task)->status & TS_COMPAT)
switch (i + n) {
case 6:
switch (i) {
case 0:
if (!n--) break;
regs->bp = *args++;
case 5:
regs->bx = *args++;
case 1:
if (!n--) break;
regs->di = *args++;
case 4:
regs->cx = *args++;
case 2:
if (!n--) break;
regs->si = *args++;
regs->dx = *args++;
case 3:
if (!n--) break;
regs->dx = *args++;
case 2:
regs->si = *args++;
case 4:
if (!n--) break;
regs->cx = *args++;
case 1:
regs->di = *args++;
case 5:
if (!n--) break;
regs->bx = *args++;
case 0:
regs->bp = *args++;
case 6:
if (!n--) break;
default:
BUG();
break;
}
else
# endif
switch (i + n) {
case 6:
switch (i) {
case 0:
if (!n--) break;
regs->r9 = *args++;
case 5:
regs->di = *args++;
case 1:
if (!n--) break;
regs->r8 = *args++;
case 4:
regs->si = *args++;
case 2:
if (!n--) break;
regs->r10 = *args++;
regs->dx = *args++;
case 3:
if (!n--) break;
regs->dx = *args++;
case 2:
regs->r10 = *args++;
case 4:
if (!n--) break;
regs->si = *args++;
case 1:
regs->r8 = *args++;
case 5:
if (!n--) break;
regs->di = *args++;
case 0:
regs->r9 = *args++;
case 6:
if (!n--) break;
default:
BUG();
break;
}
}
......
......@@ -1137,7 +1137,7 @@ int mp_register_gsi(u32 gsi, int triggering, int polarity)
return gsi;
}
if (test_bit(ioapic_pin, mp_ioapic_routing[ioapic].pin_programmed)) {
pr_debug(KERN_DEBUG "Pin %d-%d already programmed\n",
pr_debug("Pin %d-%d already programmed\n",
mp_ioapic_routing[ioapic].apic_id, ioapic_pin);
#ifdef CONFIG_X86_32
return (gsi < IRQ_COMPRESSION_START ? gsi : gsi_to_irq[gsi]);
......@@ -1599,6 +1599,11 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
},
},
{}
};
/* second table for DMI checks that should run after early-quirks */
static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
/*
* HP laptops which use a DSDT reporting as HP/SB400/10000,
* which includes some code which overrides all temperature
......@@ -1727,6 +1732,9 @@ int __init early_acpi_boot_init(void)
int __init acpi_boot_init(void)
{
/* those are executed after early-quirks are executed */
dmi_check_system(acpi_dmi_table_late);
/*
* If acpi_disabled, bail out
* One exception: acpi=ht continues far enough to enumerate LAPICs
......
......@@ -160,14 +160,16 @@ static void *c_start(struct seq_file *m, loff_t *pos)
{
if (*pos == 0) /* just in case, cpu 0 is not the first */
*pos = first_cpu(cpu_online_map);
if ((*pos) < nr_cpu_ids && cpu_online(*pos))
else
*pos = next_cpu_nr(*pos - 1, cpu_online_map);
if ((*pos) < nr_cpu_ids)
return &cpu_data(*pos);
return NULL;
}
static void *c_next(struct seq_file *m, void *v, loff_t *pos)
{
*pos = next_cpu(*pos, cpu_online_map);
(*pos)++;
return c_start(m, pos);
}
......
......@@ -405,7 +405,6 @@ die_nmi(char *str, struct pt_regs *regs, int do_panic)
panic("Non maskable interrupt");
console_silent();
spin_unlock(&nmi_print_lock);
bust_spinlocks(0);
/*
* 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)
crash_kexec(regs);
}
bust_spinlocks(0);
do_exit(SIGSEGV);
}
......
......@@ -1024,7 +1024,7 @@ ENTRY(machine_check)
RING0_INT_FRAME
pushl $0
CFI_ADJUST_CFA_OFFSET 4
pushl $do_machine_check
pushl machine_check_vector
CFI_ADJUST_CFA_OFFSET 4
jmp error_code
CFI_ENDPROC
......
......@@ -25,7 +25,7 @@
#include <acpi/acpi_bus.h>
#endif
static int __init flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
static int flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{
return 1;
}
......@@ -170,7 +170,7 @@ struct genapic apic_flat = {
* We cannot use logical delivery in this case because the mask
* overflows, so use physical mode.
*/
static int __init physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
static int physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{
#ifdef CONFIG_ACPI
/*
......
......@@ -12,7 +12,7 @@
DEFINE_PER_CPU(u32, x86_cpu_to_logical_apicid);
static int __init x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{
if (cpu_has_x2apic)
return 1;
......
......@@ -19,7 +19,7 @@ static int set_x2apic_phys_mode(char *arg)
}
early_param("x2apic_phys", set_x2apic_phys_mode);
static int __init x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{
if (cpu_has_x2apic && x2apic_phys)
return 1;
......
......@@ -30,7 +30,7 @@ DEFINE_PER_CPU(int, x2apic_extra_bits);
static enum uv_system_type uv_system_type;
static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
static int uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{
if (!strcmp(oem_id, "SGI")) {
if (!strcmp(oem_table_id, "UVL"))
......
......@@ -218,7 +218,7 @@ static void __init setup_node_to_cpumask_map(void)
/* allocate the map */
map = alloc_bootmem_low(nr_node_ids * sizeof(cpumask_t));
pr_debug(KERN_DEBUG "Node to cpumask map at %p for %d nodes\n",
pr_debug("Node to cpumask map at %p for %d nodes\n",
map, nr_node_ids);
/* node_to_cpumask() will now work */
......
......@@ -893,9 +893,11 @@ static int __cpuinit do_boot_cpu(int apicid, int cpu)
smpboot_setup_warm_reset_vector(start_ip);
/*
* Be paranoid about clearing APIC errors.
*/
apic_write(APIC_ESR, 0);
apic_read(APIC_ESR);
*/
if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) {
apic_write(APIC_ESR, 0);
apic_read(APIC_ESR);
}
}
/*
......
......@@ -6,7 +6,7 @@
* This code is released under the GNU General Public License version 2 or
* later.
*/
#include <linux/mc146818rtc.h>
#include <linux/seq_file.h>
#include <linux/proc_fs.h>
#include <linux/kernel.h>
......
......@@ -931,14 +931,6 @@ do_device_not_available(struct pt_regs *regs, long error)
}
#ifdef CONFIG_X86_32
#ifdef CONFIG_X86_MCE
dotraplinkage void __kprobes do_machine_check(struct pt_regs *regs, long error)
{
conditional_sti(regs);
machine_check_vector(regs, error);
}
#endif
dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
{
siginfo_t info;
......
......@@ -248,7 +248,7 @@ int restore_i387_xstate(void __user *buf)
* This will be saved when ever the FP and extended state context is
* saved on the user stack during the signal handler delivery to the user.
*/
void prepare_fx_sw_frame(void)
static void prepare_fx_sw_frame(void)
{
int size_extended = (xstate_size - sizeof(struct i387_fxsave_struct)) +
FP_XSTATE_MAGIC2_SIZE;
......
......@@ -61,9 +61,9 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
last_bad += incr;
} else {
if (start_bad) {
printk(KERN_CONT "\n %010lx bad mem addr %010lx - %010lx reserved",
printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
val, start_bad, last_bad + incr);
reserve_early(start_bad, last_bad - start_bad, "BAD RAM");
reserve_early(start_bad, last_bad + incr, "BAD RAM");
}
start_bad = last_bad = start_phys_aligned;
}
......@@ -72,9 +72,8 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
if (start_bad) {
printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
val, start_bad, last_bad + incr);
reserve_early(start_bad, last_bad - start_bad, "BAD RAM");
reserve_early(start_bad, last_bad + incr, "BAD RAM");
}
}
/* default is disabled */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册