mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
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:
commit
c3c9897c63
18 changed files with 112 additions and 106 deletions
|
@ -378,8 +378,9 @@ T: git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
AMD MICROCODE UPDATE SUPPORT
|
AMD MICROCODE UPDATE SUPPORT
|
||||||
P: Peter Oruba
|
P: Andreas Herrmann
|
||||||
M: peter.oruba@amd.com
|
M: andeas.herrmann3@amd.com
|
||||||
|
L: amd64-microcode@amd64.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
AMS (Apple Motion Sensor) DRIVER
|
AMS (Apple Motion Sensor) DRIVER
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include "boot.h"
|
#include "boot.h"
|
||||||
#include "video.h"
|
#include "video.h"
|
||||||
|
|
||||||
__videocard video_bios;
|
static __videocard video_bios;
|
||||||
|
|
||||||
/* Set a conventional BIOS mode */
|
/* Set a conventional BIOS mode */
|
||||||
static int set_bios_mode(u8 mode);
|
static int set_bios_mode(u8 mode);
|
||||||
|
@ -119,7 +119,7 @@ static int bios_probe(void)
|
||||||
return nmodes;
|
return nmodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
__videocard video_bios =
|
static __videocard video_bios =
|
||||||
{
|
{
|
||||||
.card_name = "BIOS",
|
.card_name = "BIOS",
|
||||||
.probe = bios_probe,
|
.probe = bios_probe,
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
static struct vesa_general_info vginfo;
|
static struct vesa_general_info vginfo;
|
||||||
static struct vesa_mode_info vminfo;
|
static struct vesa_mode_info vminfo;
|
||||||
|
|
||||||
__videocard video_vesa;
|
static __videocard video_vesa;
|
||||||
|
|
||||||
#ifndef _WAKEUP
|
#ifndef _WAKEUP
|
||||||
static void vesa_store_mode_params_graphics(void);
|
static void vesa_store_mode_params_graphics(void);
|
||||||
|
@ -293,7 +293,7 @@ void vesa_store_edid(void)
|
||||||
|
|
||||||
#endif /* not _WAKEUP */
|
#endif /* not _WAKEUP */
|
||||||
|
|
||||||
__videocard video_vesa =
|
static __videocard video_vesa =
|
||||||
{
|
{
|
||||||
.card_name = "VESA",
|
.card_name = "VESA",
|
||||||
.probe = vesa_probe,
|
.probe = vesa_probe,
|
||||||
|
|
|
@ -93,26 +93,26 @@ static inline void syscall_get_arguments(struct task_struct *task,
|
||||||
{
|
{
|
||||||
# ifdef CONFIG_IA32_EMULATION
|
# ifdef CONFIG_IA32_EMULATION
|
||||||
if (task_thread_info(task)->status & TS_COMPAT)
|
if (task_thread_info(task)->status & TS_COMPAT)
|
||||||
switch (i + n) {
|
switch (i) {
|
||||||
case 6:
|
case 0:
|
||||||
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:
|
|
||||||
if (!n--) break;
|
if (!n--) break;
|
||||||
*args++ = regs->bx;
|
*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;
|
if (!n--) break;
|
||||||
default:
|
default:
|
||||||
BUG();
|
BUG();
|
||||||
|
@ -120,26 +120,26 @@ static inline void syscall_get_arguments(struct task_struct *task,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
# endif
|
# endif
|
||||||
switch (i + n) {
|
switch (i) {
|
||||||
case 6:
|
case 0:
|
||||||
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:
|
|
||||||
if (!n--) break;
|
if (!n--) break;
|
||||||
*args++ = regs->di;
|
*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;
|
if (!n--) break;
|
||||||
default:
|
default:
|
||||||
BUG();
|
BUG();
|
||||||
|
@ -154,55 +154,57 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
||||||
{
|
{
|
||||||
# ifdef CONFIG_IA32_EMULATION
|
# ifdef CONFIG_IA32_EMULATION
|
||||||
if (task_thread_info(task)->status & TS_COMPAT)
|
if (task_thread_info(task)->status & TS_COMPAT)
|
||||||
switch (i + n) {
|
switch (i) {
|
||||||
case 6:
|
case 0:
|
||||||
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:
|
|
||||||
if (!n--) break;
|
if (!n--) break;
|
||||||
regs->bx = *args++;
|
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;
|
if (!n--) break;
|
||||||
default:
|
default:
|
||||||
BUG();
|
BUG();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
# endif
|
# endif
|
||||||
switch (i + n) {
|
switch (i) {
|
||||||
case 6:
|
case 0:
|
||||||
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:
|
|
||||||
if (!n--) break;
|
if (!n--) break;
|
||||||
regs->di = *args++;
|
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;
|
if (!n--) break;
|
||||||
default:
|
default:
|
||||||
BUG();
|
BUG();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1137,7 +1137,7 @@ int mp_register_gsi(u32 gsi, int triggering, int polarity)
|
||||||
return gsi;
|
return gsi;
|
||||||
}
|
}
|
||||||
if (test_bit(ioapic_pin, mp_ioapic_routing[ioapic].pin_programmed)) {
|
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);
|
mp_ioapic_routing[ioapic].apic_id, ioapic_pin);
|
||||||
#ifdef CONFIG_X86_32
|
#ifdef CONFIG_X86_32
|
||||||
return (gsi < IRQ_COMPRESSION_START ? gsi : gsi_to_irq[gsi]);
|
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"),
|
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,
|
* HP laptops which use a DSDT reporting as HP/SB400/10000,
|
||||||
* which includes some code which overrides all temperature
|
* 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)
|
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
|
* If acpi_disabled, bail out
|
||||||
* One exception: acpi=ht continues far enough to enumerate LAPICs
|
* 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 */
|
if (*pos == 0) /* just in case, cpu 0 is not the first */
|
||||||
*pos = first_cpu(cpu_online_map);
|
*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 &cpu_data(*pos);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *c_next(struct seq_file *m, void *v, loff_t *pos)
|
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);
|
return c_start(m, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -405,7 +405,6 @@ die_nmi(char *str, struct pt_regs *regs, int do_panic)
|
||||||
panic("Non maskable interrupt");
|
panic("Non maskable interrupt");
|
||||||
console_silent();
|
console_silent();
|
||||||
spin_unlock(&nmi_print_lock);
|
spin_unlock(&nmi_print_lock);
|
||||||
bust_spinlocks(0);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we are in kernel we are probably nested up pretty bad
|
* 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);
|
crash_kexec(regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bust_spinlocks(0);
|
||||||
do_exit(SIGSEGV);
|
do_exit(SIGSEGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1024,7 +1024,7 @@ ENTRY(machine_check)
|
||||||
RING0_INT_FRAME
|
RING0_INT_FRAME
|
||||||
pushl $0
|
pushl $0
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
CFI_ADJUST_CFA_OFFSET 4
|
||||||
pushl $do_machine_check
|
pushl machine_check_vector
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
CFI_ADJUST_CFA_OFFSET 4
|
||||||
jmp error_code
|
jmp error_code
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include <acpi/acpi_bus.h>
|
#include <acpi/acpi_bus.h>
|
||||||
#endif
|
#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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,7 @@ struct genapic apic_flat = {
|
||||||
* We cannot use logical delivery in this case because the mask
|
* We cannot use logical delivery in this case because the mask
|
||||||
* overflows, so use physical mode.
|
* 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
|
#ifdef CONFIG_ACPI
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
DEFINE_PER_CPU(u32, x86_cpu_to_logical_apicid);
|
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)
|
if (cpu_has_x2apic)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -19,7 +19,7 @@ static int set_x2apic_phys_mode(char *arg)
|
||||||
}
|
}
|
||||||
early_param("x2apic_phys", set_x2apic_phys_mode);
|
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)
|
if (cpu_has_x2apic && x2apic_phys)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -30,7 +30,7 @@ DEFINE_PER_CPU(int, x2apic_extra_bits);
|
||||||
|
|
||||||
static enum uv_system_type uv_system_type;
|
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_id, "SGI")) {
|
||||||
if (!strcmp(oem_table_id, "UVL"))
|
if (!strcmp(oem_table_id, "UVL"))
|
||||||
|
|
|
@ -218,7 +218,7 @@ static void __init setup_node_to_cpumask_map(void)
|
||||||
/* allocate the map */
|
/* allocate the map */
|
||||||
map = alloc_bootmem_low(nr_node_ids * sizeof(cpumask_t));
|
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);
|
map, nr_node_ids);
|
||||||
|
|
||||||
/* node_to_cpumask() will now work */
|
/* node_to_cpumask() will now work */
|
||||||
|
|
|
@ -894,9 +894,11 @@ do_rest:
|
||||||
/*
|
/*
|
||||||
* Be paranoid about clearing APIC errors.
|
* Be paranoid about clearing APIC errors.
|
||||||
*/
|
*/
|
||||||
|
if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) {
|
||||||
apic_write(APIC_ESR, 0);
|
apic_write(APIC_ESR, 0);
|
||||||
apic_read(APIC_ESR);
|
apic_read(APIC_ESR);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Starting actual IPI sequence...
|
* Starting actual IPI sequence...
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* This code is released under the GNU General Public License version 2 or
|
* This code is released under the GNU General Public License version 2 or
|
||||||
* later.
|
* later.
|
||||||
*/
|
*/
|
||||||
#include <linux/mc146818rtc.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
#include <linux/kernel.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_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)
|
dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
|
||||||
{
|
{
|
||||||
siginfo_t info;
|
siginfo_t info;
|
||||||
|
|
|
@ -248,7 +248,7 @@ clear:
|
||||||
* This will be saved when ever the FP and extended state context is
|
* 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.
|
* 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)) +
|
int size_extended = (xstate_size - sizeof(struct i387_fxsave_struct)) +
|
||||||
FP_XSTATE_MAGIC2_SIZE;
|
FP_XSTATE_MAGIC2_SIZE;
|
||||||
|
|
|
@ -61,9 +61,9 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
|
||||||
last_bad += incr;
|
last_bad += incr;
|
||||||
} else {
|
} else {
|
||||||
if (start_bad) {
|
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);
|
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;
|
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) {
|
if (start_bad) {
|
||||||
printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
|
printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
|
||||||
val, start_bad, last_bad + incr);
|
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 */
|
/* default is disabled */
|
||||||
|
|
Loading…
Reference in a new issue