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
This commit is contained in:
Коммит
c3c9897c63
|
@ -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:
|
||||
if (!n--) break;
|
||||
*args++ = regs->bp;
|
||||
case 5:
|
||||
if (!n--) break;
|
||||
*args++ = regs->di;
|
||||
case 4:
|
||||
if (!n--) break;
|
||||
*args++ = regs->si;
|
||||
case 3:
|
||||
if (!n--) break;
|
||||
*args++ = regs->dx;
|
||||
case 2:
|
||||
if (!n--) break;
|
||||
*args++ = regs->cx;
|
||||
case 1:
|
||||
switch (i) {
|
||||
case 0:
|
||||
if (!n--) break;
|
||||
*args++ = regs->bx;
|
||||
case 0:
|
||||
case 1:
|
||||
if (!n--) break;
|
||||
*args++ = regs->cx;
|
||||
case 2:
|
||||
if (!n--) break;
|
||||
*args++ = regs->dx;
|
||||
case 3:
|
||||
if (!n--) break;
|
||||
*args++ = regs->si;
|
||||
case 4:
|
||||
if (!n--) break;
|
||||
*args++ = regs->di;
|
||||
case 5:
|
||||
if (!n--) break;
|
||||
*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:
|
||||
if (!n--) break;
|
||||
*args++ = regs->r9;
|
||||
case 5:
|
||||
if (!n--) break;
|
||||
*args++ = regs->r8;
|
||||
case 4:
|
||||
if (!n--) break;
|
||||
*args++ = regs->r10;
|
||||
case 3:
|
||||
if (!n--) break;
|
||||
*args++ = regs->dx;
|
||||
case 2:
|
||||
if (!n--) break;
|
||||
*args++ = regs->si;
|
||||
case 1:
|
||||
switch (i) {
|
||||
case 0:
|
||||
if (!n--) break;
|
||||
*args++ = regs->di;
|
||||
case 0:
|
||||
case 1:
|
||||
if (!n--) break;
|
||||
*args++ = regs->si;
|
||||
case 2:
|
||||
if (!n--) break;
|
||||
*args++ = regs->dx;
|
||||
case 3:
|
||||
if (!n--) break;
|
||||
*args++ = regs->r10;
|
||||
case 4:
|
||||
if (!n--) break;
|
||||
*args++ = regs->r8;
|
||||
case 5:
|
||||
if (!n--) break;
|
||||
*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:
|
||||
if (!n--) break;
|
||||
regs->bp = *args++;
|
||||
case 5:
|
||||
if (!n--) break;
|
||||
regs->di = *args++;
|
||||
case 4:
|
||||
if (!n--) break;
|
||||
regs->si = *args++;
|
||||
case 3:
|
||||
if (!n--) break;
|
||||
regs->dx = *args++;
|
||||
case 2:
|
||||
if (!n--) break;
|
||||
regs->cx = *args++;
|
||||
case 1:
|
||||
switch (i) {
|
||||
case 0:
|
||||
if (!n--) break;
|
||||
regs->bx = *args++;
|
||||
case 0:
|
||||
case 1:
|
||||
if (!n--) break;
|
||||
regs->cx = *args++;
|
||||
case 2:
|
||||
if (!n--) break;
|
||||
regs->dx = *args++;
|
||||
case 3:
|
||||
if (!n--) break;
|
||||
regs->si = *args++;
|
||||
case 4:
|
||||
if (!n--) break;
|
||||
regs->di = *args++;
|
||||
case 5:
|
||||
if (!n--) break;
|
||||
regs->bp = *args++;
|
||||
case 6:
|
||||
if (!n--) break;
|
||||
default:
|
||||
BUG();
|
||||
break;
|
||||
}
|
||||
else
|
||||
# endif
|
||||
switch (i + n) {
|
||||
case 6:
|
||||
if (!n--) break;
|
||||
regs->r9 = *args++;
|
||||
case 5:
|
||||
if (!n--) break;
|
||||
regs->r8 = *args++;
|
||||
case 4:
|
||||
if (!n--) break;
|
||||
regs->r10 = *args++;
|
||||
case 3:
|
||||
if (!n--) break;
|
||||
regs->dx = *args++;
|
||||
case 2:
|
||||
if (!n--) break;
|
||||
regs->si = *args++;
|
||||
case 1:
|
||||
switch (i) {
|
||||
case 0:
|
||||
if (!n--) break;
|
||||
regs->di = *args++;
|
||||
case 0:
|
||||
case 1:
|
||||
if (!n--) break;
|
||||
regs->si = *args++;
|
||||
case 2:
|
||||
if (!n--) break;
|
||||
regs->dx = *args++;
|
||||
case 3:
|
||||
if (!n--) break;
|
||||
regs->r10 = *args++;
|
||||
case 4:
|
||||
if (!n--) break;
|
||||
regs->r8 = *args++;
|
||||
case 5:
|
||||
if (!n--) break;
|
||||
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 @@ do_rest:
|
|||
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 @@ clear:
|
|||
* 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 */
|
||||
|
|
Загрузка…
Ссылка в новой задаче