diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2007-04-02 02:49:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-02 13:06:09 -0400 |
commit | 1d64b9cb1dc2a7cd521444e3d908adeccd026356 (patch) | |
tree | 31c6c7751b656e74b5ee05159c85154f710e8956 /include/linux | |
parent | 0c84ce268b69855919b6ac7edc8f11caf21e9c88 (diff) |
[PATCH] Fix microcode-related suspend problem
Fix the regression resulting from the recent change of suspend code
ordering that causes systems based on Intel x86 CPUs using the microcode
driver to hang during the resume.
The problem occurs since the microcode driver uses request_firmware() in
its CPU hotplug notifier, which is called after tasks has been frozen and
hangs. It can be fixed by telling the microcode driver to use the
microcode stored in memory during the resume instead of trying to load it
from disk.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Adrian Bunk <bunk@stusta.de>
Cc: Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Maxim <maximlevitsky@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/cpu.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/cpu.h b/include/linux/cpu.h index 769ddc6df492..c22b0dfcbcd2 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h | |||
@@ -127,9 +127,13 @@ static inline int cpu_is_offline(int cpu) { return 0; } | |||
127 | #endif /* CONFIG_HOTPLUG_CPU */ | 127 | #endif /* CONFIG_HOTPLUG_CPU */ |
128 | 128 | ||
129 | #ifdef CONFIG_SUSPEND_SMP | 129 | #ifdef CONFIG_SUSPEND_SMP |
130 | extern int suspend_cpu_hotplug; | ||
131 | |||
130 | extern int disable_nonboot_cpus(void); | 132 | extern int disable_nonboot_cpus(void); |
131 | extern void enable_nonboot_cpus(void); | 133 | extern void enable_nonboot_cpus(void); |
132 | #else | 134 | #else |
135 | #define suspend_cpu_hotplug 0 | ||
136 | |||
133 | static inline int disable_nonboot_cpus(void) { return 0; } | 137 | static inline int disable_nonboot_cpus(void) { return 0; } |
134 | static inline void enable_nonboot_cpus(void) {} | 138 | static inline void enable_nonboot_cpus(void) {} |
135 | #endif | 139 | #endif |