diff options
Diffstat (limited to 'arch/x86_64/kernel/setup.c')
-rw-r--r-- | arch/x86_64/kernel/setup.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c index 3d98b696881d..db51577bda32 100644 --- a/arch/x86_64/kernel/setup.c +++ b/arch/x86_64/kernel/setup.c | |||
@@ -79,6 +79,8 @@ int bootloader_type; | |||
79 | 79 | ||
80 | unsigned long saved_video_mode; | 80 | unsigned long saved_video_mode; |
81 | 81 | ||
82 | int force_mwait __cpuinitdata; | ||
83 | |||
82 | /* | 84 | /* |
83 | * Early DMI memory | 85 | * Early DMI memory |
84 | */ | 86 | */ |
@@ -205,10 +207,10 @@ static void discover_ebda(void) | |||
205 | * there is a real-mode segmented pointer pointing to the | 207 | * there is a real-mode segmented pointer pointing to the |
206 | * 4K EBDA area at 0x40E | 208 | * 4K EBDA area at 0x40E |
207 | */ | 209 | */ |
208 | ebda_addr = *(unsigned short *)EBDA_ADDR_POINTER; | 210 | ebda_addr = *(unsigned short *)__va(EBDA_ADDR_POINTER); |
209 | ebda_addr <<= 4; | 211 | ebda_addr <<= 4; |
210 | 212 | ||
211 | ebda_size = *(unsigned short *)(unsigned long)ebda_addr; | 213 | ebda_size = *(unsigned short *)__va(ebda_addr); |
212 | 214 | ||
213 | /* Round EBDA up to pages */ | 215 | /* Round EBDA up to pages */ |
214 | if (ebda_size == 0) | 216 | if (ebda_size == 0) |
@@ -274,8 +276,6 @@ void __init setup_arch(char **cmdline_p) | |||
274 | 276 | ||
275 | dmi_scan_machine(); | 277 | dmi_scan_machine(); |
276 | 278 | ||
277 | zap_low_mappings(0); | ||
278 | |||
279 | #ifdef CONFIG_ACPI | 279 | #ifdef CONFIG_ACPI |
280 | /* | 280 | /* |
281 | * Initialize the ACPI boot-time table parser (gets the RSDP and SDT). | 281 | * Initialize the ACPI boot-time table parser (gets the RSDP and SDT). |
@@ -329,15 +329,8 @@ void __init setup_arch(char **cmdline_p) | |||
329 | #endif | 329 | #endif |
330 | 330 | ||
331 | #ifdef CONFIG_SMP | 331 | #ifdef CONFIG_SMP |
332 | /* | ||
333 | * But first pinch a few for the stack/trampoline stuff | ||
334 | * FIXME: Don't need the extra page at 4K, but need to fix | ||
335 | * trampoline before removing it. (see the GDT stuff) | ||
336 | */ | ||
337 | reserve_bootmem_generic(PAGE_SIZE, PAGE_SIZE); | ||
338 | |||
339 | /* Reserve SMP trampoline */ | 332 | /* Reserve SMP trampoline */ |
340 | reserve_bootmem_generic(SMP_TRAMPOLINE_BASE, PAGE_SIZE); | 333 | reserve_bootmem_generic(SMP_TRAMPOLINE_BASE, 2*PAGE_SIZE); |
341 | #endif | 334 | #endif |
342 | 335 | ||
343 | #ifdef CONFIG_ACPI_SLEEP | 336 | #ifdef CONFIG_ACPI_SLEEP |
@@ -612,6 +605,10 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) | |||
612 | 605 | ||
613 | /* RDTSC can be speculated around */ | 606 | /* RDTSC can be speculated around */ |
614 | clear_bit(X86_FEATURE_SYNC_RDTSC, &c->x86_capability); | 607 | clear_bit(X86_FEATURE_SYNC_RDTSC, &c->x86_capability); |
608 | |||
609 | /* Family 10 doesn't support C states in MWAIT so don't use it */ | ||
610 | if (c->x86 == 0x10 && !force_mwait) | ||
611 | clear_bit(X86_FEATURE_MWAIT, &c->x86_capability); | ||
615 | } | 612 | } |
616 | 613 | ||
617 | static void __cpuinit detect_ht(struct cpuinfo_x86 *c) | 614 | static void __cpuinit detect_ht(struct cpuinfo_x86 *c) |
@@ -987,9 +984,8 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
987 | "stc", | 984 | "stc", |
988 | "100mhzsteps", | 985 | "100mhzsteps", |
989 | "hwpstate", | 986 | "hwpstate", |
990 | NULL, /* tsc invariant mapped to constant_tsc */ | 987 | "", /* tsc invariant mapped to constant_tsc */ |
991 | NULL, | 988 | /* nothing */ |
992 | /* nothing */ /* constant_tsc - moved to flags */ | ||
993 | }; | 989 | }; |
994 | 990 | ||
995 | 991 | ||