diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-02-01 22:29:57 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-02-01 22:29:57 -0500 |
commit | 687fcdf741e4a268c2c7bac8b3734de761bb9719 (patch) | |
tree | 82603cd0f892b13d4252cc525ecaec99bb86c0cd /arch/x86 | |
parent | 215e871aaa3d94540121a3809d80d0c5e5686e4f (diff) | |
parent | a6eb84bc1e069e1d285167e09035ed6c27978feb (diff) |
Merge branch 'suspend' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'suspend' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (38 commits)
suspend: cleanup reference to swsusp_pg_dir[]
PM: Remove obsolete /sys/devices/.../power/state docs
Hibernation: Invoke suspend notifications after console switch
Suspend: Invoke suspend notifications after console switch
Suspend: Clean up suspend_64.c
Suspend: Add config option to disable the freezer if architecture wants that
ACPI: Print message before calling _PTS
ACPI hibernation: Call _PTS before suspending devices
Hibernation: Introduce begin() and end() callbacks
ACPI suspend: Call _PTS before suspending devices
ACPI: Separate disabling of GPEs from _PTS
ACPI: Separate invocations of _GTS and _BFS from _PTS and _WAK
Suspend: Introduce begin() and end() callbacks
suspend: fix ia64 allmodconfig build
ACPI: clear GPE earily in resume to avoid warning
Suspend: Clean up Kconfig (V2)
Hibernation: Clean up Kconfig (V2)
Hibernation: Update messages
Suspend: Use common prefix in messages
Hibernation: Remove unnecessary variable declaration
...
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/Kconfig | 8 | ||||
-rw-r--r-- | arch/x86/kernel/suspend_64.c | 8 | ||||
-rw-r--r-- | arch/x86/mm/init_32.c | 10 |
3 files changed, 19 insertions, 7 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index bb07f87d8622..7109037bdf7c 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -112,6 +112,14 @@ config ARCH_SUPPORTS_OPROFILE | |||
112 | 112 | ||
113 | select HAVE_KVM | 113 | select HAVE_KVM |
114 | 114 | ||
115 | config ARCH_HIBERNATION_POSSIBLE | ||
116 | def_bool y | ||
117 | depends on !SMP || !X86_VOYAGER | ||
118 | |||
119 | config ARCH_SUSPEND_POSSIBLE | ||
120 | def_bool y | ||
121 | depends on !X86_VOYAGER | ||
122 | |||
115 | config ZONE_DMA32 | 123 | config ZONE_DMA32 |
116 | bool | 124 | bool |
117 | default X86_64 | 125 | default X86_64 |
diff --git a/arch/x86/kernel/suspend_64.c b/arch/x86/kernel/suspend_64.c index 09199511c256..7ac7130022f1 100644 --- a/arch/x86/kernel/suspend_64.c +++ b/arch/x86/kernel/suspend_64.c | |||
@@ -140,7 +140,12 @@ static void fix_processor_context(void) | |||
140 | int cpu = smp_processor_id(); | 140 | int cpu = smp_processor_id(); |
141 | struct tss_struct *t = &per_cpu(init_tss, cpu); | 141 | struct tss_struct *t = &per_cpu(init_tss, cpu); |
142 | 142 | ||
143 | set_tss_desc(cpu,t); /* This just modifies memory; should not be necessary. But... This is necessary, because 386 hardware has concept of busy TSS or some similar stupidity. */ | 143 | /* |
144 | * This just modifies memory; should not be necessary. But... This | ||
145 | * is necessary, because 386 hardware has concept of busy TSS or some | ||
146 | * similar stupidity. | ||
147 | */ | ||
148 | set_tss_desc(cpu, t); | ||
144 | 149 | ||
145 | get_cpu_gdt_table(cpu)[GDT_ENTRY_TSS].type = 9; | 150 | get_cpu_gdt_table(cpu)[GDT_ENTRY_TSS].type = 9; |
146 | 151 | ||
@@ -160,7 +165,6 @@ static void fix_processor_context(void) | |||
160 | loaddebug(¤t->thread, 6); | 165 | loaddebug(¤t->thread, 6); |
161 | loaddebug(¤t->thread, 7); | 166 | loaddebug(¤t->thread, 7); |
162 | } | 167 | } |
163 | |||
164 | } | 168 | } |
165 | 169 | ||
166 | #ifdef CONFIG_HIBERNATION | 170 | #ifdef CONFIG_HIBERNATION |
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index da524fb22422..f2f36f8dae52 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
@@ -423,23 +423,23 @@ static void __init pagetable_init(void) | |||
423 | paravirt_pagetable_setup_done(pgd_base); | 423 | paravirt_pagetable_setup_done(pgd_base); |
424 | } | 424 | } |
425 | 425 | ||
426 | #if defined(CONFIG_HIBERNATION) || defined(CONFIG_ACPI) | 426 | #ifdef CONFIG_ACPI_SLEEP |
427 | /* | 427 | /* |
428 | * Swap suspend & friends need this for resume because things like the intel-agp | 428 | * ACPI suspend needs this for resume, because things like the intel-agp |
429 | * driver might have split up a kernel 4MB mapping. | 429 | * driver might have split up a kernel 4MB mapping. |
430 | */ | 430 | */ |
431 | char __nosavedata swsusp_pg_dir[PAGE_SIZE] | 431 | char swsusp_pg_dir[PAGE_SIZE] |
432 | __attribute__ ((aligned(PAGE_SIZE))); | 432 | __attribute__ ((aligned(PAGE_SIZE))); |
433 | 433 | ||
434 | static inline void save_pg_dir(void) | 434 | static inline void save_pg_dir(void) |
435 | { | 435 | { |
436 | memcpy(swsusp_pg_dir, swapper_pg_dir, PAGE_SIZE); | 436 | memcpy(swsusp_pg_dir, swapper_pg_dir, PAGE_SIZE); |
437 | } | 437 | } |
438 | #else | 438 | #else /* !CONFIG_ACPI_SLEEP */ |
439 | static inline void save_pg_dir(void) | 439 | static inline void save_pg_dir(void) |
440 | { | 440 | { |
441 | } | 441 | } |
442 | #endif | 442 | #endif /* !CONFIG_ACPI_SLEEP */ |
443 | 443 | ||
444 | void zap_low_mappings(void) | 444 | void zap_low_mappings(void) |
445 | { | 445 | { |