diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-06-06 14:21:25 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-06-06 14:21:28 -0400 |
commit | 75b5032212641f6d38ac041416945e70da833b68 (patch) | |
tree | bb827401e00c1681a29e75ade3b4ecc903df1a54 /arch/x86 | |
parent | 0b73da3f40128eab6ca2a07508f424029a1edaeb (diff) | |
parent | b87297fb405ef13cac375f202d114323b076a56d (diff) |
Merge branch 'linus' into perfcounters/core
Merge reason: Pick up the latest fixes before the -v8 perfcounters
release.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 4 | ||||
-rw-r--r-- | arch/x86/lguest/Makefile | 1 | ||||
-rw-r--r-- | arch/x86/lguest/boot.c | 17 |
3 files changed, 16 insertions, 6 deletions
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c index 208ecf6643df..54b6de2cd947 100644 --- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | |||
@@ -693,8 +693,8 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) | |||
693 | if (perf->control_register.space_id == ACPI_ADR_SPACE_FIXED_HARDWARE && | 693 | if (perf->control_register.space_id == ACPI_ADR_SPACE_FIXED_HARDWARE && |
694 | policy->cpuinfo.transition_latency > 20 * 1000) { | 694 | policy->cpuinfo.transition_latency > 20 * 1000) { |
695 | policy->cpuinfo.transition_latency = 20 * 1000; | 695 | policy->cpuinfo.transition_latency = 20 * 1000; |
696 | printk_once(KERN_INFO "Capping off P-state tranision" | 696 | printk_once(KERN_INFO |
697 | " latency at 20 uS\n"); | 697 | "P-state transition latency capped at 20 uS\n"); |
698 | } | 698 | } |
699 | 699 | ||
700 | /* table init */ | 700 | /* table init */ |
diff --git a/arch/x86/lguest/Makefile b/arch/x86/lguest/Makefile index 27f0c9ed7f60..94e0e54056a9 100644 --- a/arch/x86/lguest/Makefile +++ b/arch/x86/lguest/Makefile | |||
@@ -1 +1,2 @@ | |||
1 | obj-y := i386_head.o boot.o | 1 | obj-y := i386_head.o boot.o |
2 | CFLAGS_boot.o := $(call cc-option, -fno-stack-protector) | ||
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index ca7ec44bafc3..33a93b417396 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c | |||
@@ -67,6 +67,7 @@ | |||
67 | #include <asm/mce.h> | 67 | #include <asm/mce.h> |
68 | #include <asm/io.h> | 68 | #include <asm/io.h> |
69 | #include <asm/i387.h> | 69 | #include <asm/i387.h> |
70 | #include <asm/stackprotector.h> | ||
70 | #include <asm/reboot.h> /* for struct machine_ops */ | 71 | #include <asm/reboot.h> /* for struct machine_ops */ |
71 | 72 | ||
72 | /*G:010 Welcome to the Guest! | 73 | /*G:010 Welcome to the Guest! |
@@ -1088,13 +1089,21 @@ __init void lguest_init(void) | |||
1088 | * lguest_init() where the rest of the fairly chaotic boot setup | 1089 | * lguest_init() where the rest of the fairly chaotic boot setup |
1089 | * occurs. */ | 1090 | * occurs. */ |
1090 | 1091 | ||
1092 | /* The stack protector is a weird thing where gcc places a canary | ||
1093 | * value on the stack and then checks it on return. This file is | ||
1094 | * compiled with -fno-stack-protector it, so we got this far without | ||
1095 | * problems. The value of the canary is kept at offset 20 from the | ||
1096 | * %gs register, so we need to set that up before calling C functions | ||
1097 | * in other files. */ | ||
1098 | setup_stack_canary_segment(0); | ||
1099 | /* We could just call load_stack_canary_segment(), but we might as | ||
1100 | * call switch_to_new_gdt() which loads the whole table and sets up | ||
1101 | * the per-cpu segment descriptor register %fs as well. */ | ||
1102 | switch_to_new_gdt(0); | ||
1103 | |||
1091 | /* As described in head_32.S, we map the first 128M of memory. */ | 1104 | /* As described in head_32.S, we map the first 128M of memory. */ |
1092 | max_pfn_mapped = (128*1024*1024) >> PAGE_SHIFT; | 1105 | max_pfn_mapped = (128*1024*1024) >> PAGE_SHIFT; |
1093 | 1106 | ||
1094 | /* Load the %fs segment register (the per-cpu segment register) with | ||
1095 | * the normal data segment to get through booting. */ | ||
1096 | asm volatile ("mov %0, %%fs" : : "r" (__KERNEL_DS) : "memory"); | ||
1097 | |||
1098 | /* The Host<->Guest Switcher lives at the top of our address space, and | 1107 | /* The Host<->Guest Switcher lives at the top of our address space, and |
1099 | * the Host told us how big it is when we made LGUEST_INIT hypercall: | 1108 | * the Host told us how big it is when we made LGUEST_INIT hypercall: |
1100 | * it put the answer in lguest_data.reserve_mem */ | 1109 | * it put the answer in lguest_data.reserve_mem */ |