diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-02-17 12:27:37 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2010-02-17 12:28:05 -0500 |
commit | b7e56edba4b02f2079042c326a8cd72a44635817 (patch) | |
tree | b5042002e9747cd8fb1278d61f86d8b92a74c018 /arch/x86/kernel/setup.c | |
parent | 13ca0fcaa33f6b1984c4111b6ec5df42689fea6f (diff) | |
parent | b0483e78e5c4c9871fc5541875b3bc006846d46b (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.c | 39 |
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 | */ |
251 | static inline void copy_edd(void) | 253 | static 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 |
260 | static inline void copy_edd(void) | 262 | static 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 |