diff options
author | Shaohua Li <shaohua.li@intel.com> | 2006-06-23 05:04:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-23 10:43:00 -0400 |
commit | 55b2355eefc2f160246226d4d69fed431173a4d5 (patch) | |
tree | b5ed6dbf3d045443a12de412f9937a6b8dc20840 /arch/x86_64 | |
parent | 968808b8956e332e556b1eae9b4f7df77518f53b (diff) |
[PATCH] don't use flush_tlb_all in suspend time
flush_tlb_all uses on_each_cpu, which will disable/enable interrupt.
In suspend/resume time, this will make interrupt wrongly enabled.
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64')
-rw-r--r-- | arch/x86_64/kernel/acpi/sleep.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/acpi/sleep.c b/arch/x86_64/kernel/acpi/sleep.c index 867a0ebee177..091bc79c888f 100644 --- a/arch/x86_64/kernel/acpi/sleep.c +++ b/arch/x86_64/kernel/acpi/sleep.c | |||
@@ -35,6 +35,8 @@ | |||
35 | #include <linux/pci.h> | 35 | #include <linux/pci.h> |
36 | #include <linux/bootmem.h> | 36 | #include <linux/bootmem.h> |
37 | #include <linux/acpi.h> | 37 | #include <linux/acpi.h> |
38 | #include <linux/cpumask.h> | ||
39 | |||
38 | #include <asm/mpspec.h> | 40 | #include <asm/mpspec.h> |
39 | #include <asm/io.h> | 41 | #include <asm/io.h> |
40 | #include <asm/apic.h> | 42 | #include <asm/apic.h> |
@@ -66,7 +68,8 @@ static void init_low_mapping(void) | |||
66 | pgd_t *slot0 = pgd_offset(current->mm, 0UL); | 68 | pgd_t *slot0 = pgd_offset(current->mm, 0UL); |
67 | low_ptr = *slot0; | 69 | low_ptr = *slot0; |
68 | set_pgd(slot0, *pgd_offset(current->mm, PAGE_OFFSET)); | 70 | set_pgd(slot0, *pgd_offset(current->mm, PAGE_OFFSET)); |
69 | flush_tlb_all(); | 71 | WARN_ON(num_online_cpus() != 1); |
72 | local_flush_tlb(); | ||
70 | } | 73 | } |
71 | 74 | ||
72 | /** | 75 | /** |
@@ -92,7 +95,7 @@ int acpi_save_state_mem(void) | |||
92 | void acpi_restore_state_mem(void) | 95 | void acpi_restore_state_mem(void) |
93 | { | 96 | { |
94 | set_pgd(pgd_offset(current->mm, 0UL), low_ptr); | 97 | set_pgd(pgd_offset(current->mm, 0UL), low_ptr); |
95 | flush_tlb_all(); | 98 | local_flush_tlb(); |
96 | } | 99 | } |
97 | 100 | ||
98 | /** | 101 | /** |