aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/setup.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2010-02-17 12:27:37 -0500
committerThomas Gleixner <tglx@linutronix.de>2010-02-17 12:28:05 -0500
commitb7e56edba4b02f2079042c326a8cd72a44635817 (patch)
treeb5042002e9747cd8fb1278d61f86d8b92a74c018 /arch/x86/kernel/setup.c
parent13ca0fcaa33f6b1984c4111b6ec5df42689fea6f (diff)
parentb0483e78e5c4c9871fc5541875b3bc006846d46b (diff)
Merge branch 'linus' into x86/mm
x86/mm is on 32-rc4 and missing the spinlock namespace changes which are needed for further commits into this topic. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/setup.c')
-rw-r--r--arch/x86/kernel/setup.c39
1 files changed, 30 insertions, 9 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index f9b1f4e5ab74..3499b4fabc94 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -73,6 +73,7 @@
73 73
74#include <asm/mtrr.h> 74#include <asm/mtrr.h>
75#include <asm/apic.h> 75#include <asm/apic.h>
76#include <asm/trampoline.h>
76#include <asm/e820.h> 77#include <asm/e820.h>
77#include <asm/mpspec.h> 78#include <asm/mpspec.h>
78#include <asm/setup.h> 79#include <asm/setup.h>
@@ -110,6 +111,7 @@
110#ifdef CONFIG_X86_64 111#ifdef CONFIG_X86_64
111#include <asm/numa_64.h> 112#include <asm/numa_64.h>
112#endif 113#endif
114#include <asm/mce.h>
113 115
114/* 116/*
115 * end_pfn only includes RAM, while max_pfn_mapped includes all e820 entries. 117 * end_pfn only includes RAM, while max_pfn_mapped includes all e820 entries.
@@ -248,7 +250,7 @@ EXPORT_SYMBOL(edd);
248 * from boot_params into a safe place. 250 * from boot_params into a safe place.
249 * 251 *
250 */ 252 */
251static inline void copy_edd(void) 253static inline void __init copy_edd(void)
252{ 254{
253 memcpy(edd.mbr_signature, boot_params.edd_mbr_sig_buffer, 255 memcpy(edd.mbr_signature, boot_params.edd_mbr_sig_buffer,
254 sizeof(edd.mbr_signature)); 256 sizeof(edd.mbr_signature));
@@ -257,7 +259,7 @@ static inline void copy_edd(void)
257 edd.edd_info_nr = boot_params.eddbuf_entries; 259 edd.edd_info_nr = boot_params.eddbuf_entries;
258} 260}
259#else 261#else
260static inline void copy_edd(void) 262static inline void __init copy_edd(void)
261{ 263{
262} 264}
263#endif 265#endif
@@ -634,18 +636,33 @@ static struct dmi_system_id __initdata bad_bios_dmi_table[] = {
634 }, 636 },
635 }, 637 },
636 { 638 {
639 .callback = dmi_low_memory_corruption,
640 .ident = "Phoenix/MSC BIOS",
641 .matches = {
642 DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix/MSC"),
643 },
644 },
637 /* 645 /*
638 * AMI BIOS with low memory corruption was found on Intel DG45ID board. 646 * AMI BIOS with low memory corruption was found on Intel DG45ID and
639 * It hase different DMI_BIOS_VENDOR = "Intel Corp.", for now we will 647 * DG45FC boards.
648 * It has a different DMI_BIOS_VENDOR = "Intel Corp.", for now we will
640 * match only DMI_BOARD_NAME and see if there is more bad products 649 * match only DMI_BOARD_NAME and see if there is more bad products
641 * with this vendor. 650 * with this vendor.
642 */ 651 */
652 {
643 .callback = dmi_low_memory_corruption, 653 .callback = dmi_low_memory_corruption,
644 .ident = "AMI BIOS", 654 .ident = "AMI BIOS",
645 .matches = { 655 .matches = {
646 DMI_MATCH(DMI_BOARD_NAME, "DG45ID"), 656 DMI_MATCH(DMI_BOARD_NAME, "DG45ID"),
647 }, 657 },
648 }, 658 },
659 {
660 .callback = dmi_low_memory_corruption,
661 .ident = "AMI BIOS",
662 .matches = {
663 DMI_MATCH(DMI_BOARD_NAME, "DG45FC"),
664 },
665 },
649#endif 666#endif
650 {} 667 {}
651}; 668};
@@ -884,6 +901,13 @@ void __init setup_arch(char **cmdline_p)
884 901
885 reserve_brk(); 902 reserve_brk();
886 903
904 /*
905 * Find and reserve possible boot-time SMP configuration:
906 */
907 find_smp_config();
908
909 reserve_trampoline_memory();
910
887#ifdef CONFIG_ACPI_SLEEP 911#ifdef CONFIG_ACPI_SLEEP
888 /* 912 /*
889 * Reserve low memory region for sleep support. 913 * Reserve low memory region for sleep support.
@@ -930,11 +954,6 @@ void __init setup_arch(char **cmdline_p)
930 954
931 early_acpi_boot_init(); 955 early_acpi_boot_init();
932 956
933 /*
934 * Find and reserve possible boot-time SMP configuration:
935 */
936 find_smp_config();
937
938#ifdef CONFIG_ACPI_NUMA 957#ifdef CONFIG_ACPI_NUMA
939 /* 958 /*
940 * Parse SRAT to discover nodes. 959 * Parse SRAT to discover nodes.
@@ -1021,6 +1040,8 @@ void __init setup_arch(char **cmdline_p)
1021#endif 1040#endif
1022#endif 1041#endif
1023 x86_init.oem.banner(); 1042 x86_init.oem.banner();
1043
1044 mcheck_init();
1024} 1045}
1025 1046
1026#ifdef CONFIG_X86_32 1047#ifdef CONFIG_X86_32