diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 10 | ||||
-rw-r--r-- | arch/x86/kernel/vmlinux_64.lds.S | 6 | ||||
-rw-r--r-- | arch/x86/vdso/vdso.S | 10 |
3 files changed, 19 insertions, 7 deletions
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c index e2d870de837c..8db8f73503b3 100644 --- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | |||
@@ -339,6 +339,7 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cpu) | |||
339 | { | 339 | { |
340 | struct acpi_cpufreq_data *data = per_cpu(drv_data, cpu); | 340 | struct acpi_cpufreq_data *data = per_cpu(drv_data, cpu); |
341 | unsigned int freq; | 341 | unsigned int freq; |
342 | unsigned int cached_freq; | ||
342 | 343 | ||
343 | dprintk("get_cur_freq_on_cpu (%d)\n", cpu); | 344 | dprintk("get_cur_freq_on_cpu (%d)\n", cpu); |
344 | 345 | ||
@@ -347,7 +348,16 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cpu) | |||
347 | return 0; | 348 | return 0; |
348 | } | 349 | } |
349 | 350 | ||
351 | cached_freq = data->freq_table[data->acpi_data->state].frequency; | ||
350 | freq = extract_freq(get_cur_val(&cpumask_of_cpu(cpu)), data); | 352 | freq = extract_freq(get_cur_val(&cpumask_of_cpu(cpu)), data); |
353 | if (freq != cached_freq) { | ||
354 | /* | ||
355 | * The dreaded BIOS frequency change behind our back. | ||
356 | * Force set the frequency on next target call. | ||
357 | */ | ||
358 | data->resume = 1; | ||
359 | } | ||
360 | |||
351 | dprintk("cur freq = %u\n", freq); | 361 | dprintk("cur freq = %u\n", freq); |
352 | 362 | ||
353 | return freq; | 363 | return freq; |
diff --git a/arch/x86/kernel/vmlinux_64.lds.S b/arch/x86/kernel/vmlinux_64.lds.S index b7ab3c335fae..fad3674b06a5 100644 --- a/arch/x86/kernel/vmlinux_64.lds.S +++ b/arch/x86/kernel/vmlinux_64.lds.S | |||
@@ -209,12 +209,6 @@ SECTIONS | |||
209 | EXIT_DATA | 209 | EXIT_DATA |
210 | } | 210 | } |
211 | 211 | ||
212 | /* vdso blob that is mapped into user space */ | ||
213 | vdso_start = . ; | ||
214 | .vdso : AT(ADDR(.vdso) - LOAD_OFFSET) { *(.vdso) } | ||
215 | . = ALIGN(PAGE_SIZE); | ||
216 | vdso_end = .; | ||
217 | |||
218 | #ifdef CONFIG_BLK_DEV_INITRD | 212 | #ifdef CONFIG_BLK_DEV_INITRD |
219 | . = ALIGN(PAGE_SIZE); | 213 | . = ALIGN(PAGE_SIZE); |
220 | __initramfs_start = .; | 214 | __initramfs_start = .; |
diff --git a/arch/x86/vdso/vdso.S b/arch/x86/vdso/vdso.S index 4b1620a1529e..1d3aa6b87181 100644 --- a/arch/x86/vdso/vdso.S +++ b/arch/x86/vdso/vdso.S | |||
@@ -1,2 +1,10 @@ | |||
1 | .section ".vdso","a" | 1 | #include <linux/init.h> |
2 | |||
3 | __INITDATA | ||
4 | |||
5 | .globl vdso_start, vdso_end | ||
6 | vdso_start: | ||
2 | .incbin "arch/x86/vdso/vdso.so" | 7 | .incbin "arch/x86/vdso/vdso.so" |
8 | vdso_end: | ||
9 | |||
10 | __FINIT | ||