diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-05-30 20:33:02 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-06-02 07:25:34 -0400 |
commit | 9c7a794209f8a91f47697c3be20597eb60531e6d (patch) | |
tree | c1cdc49e4cf4ee5f80ea24a36e4f9498bdeeaf6b /arch/x86/xen/suspend.c | |
parent | e2426cf85f8db5891fb5831323d2d0c176c4dadc (diff) |
xen: restore vcpu_info mapping
If we're using vcpu_info mapping, then make sure its restored on all
processors before relasing them from stop_machine.
The only complication is that if this fails, we can't continue because
we've already made assumptions that the mapping is available (baked in
calls to the _direct versions of the functions, for example).
Fortunately this can only happen with a 32-bit hypervisor, which may
possibly run out of mapping space. On a 64-bit hypervisor, this is a
non-issue.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/xen/suspend.c')
-rw-r--r-- | arch/x86/xen/suspend.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c index 7620a16fe535..7ab10f6b39a5 100644 --- a/arch/x86/xen/suspend.c +++ b/arch/x86/xen/suspend.c | |||
@@ -26,6 +26,8 @@ void xen_pre_suspend(void) | |||
26 | 26 | ||
27 | void xen_post_suspend(int suspend_cancelled) | 27 | void xen_post_suspend(int suspend_cancelled) |
28 | { | 28 | { |
29 | xen_setup_shared_info(); | ||
30 | |||
29 | if (suspend_cancelled) { | 31 | if (suspend_cancelled) { |
30 | xen_start_info->store_mfn = | 32 | xen_start_info->store_mfn = |
31 | pfn_to_mfn(xen_start_info->store_mfn); | 33 | pfn_to_mfn(xen_start_info->store_mfn); |
@@ -35,8 +37,8 @@ void xen_post_suspend(int suspend_cancelled) | |||
35 | #ifdef CONFIG_SMP | 37 | #ifdef CONFIG_SMP |
36 | xen_cpu_initialized_map = cpu_online_map; | 38 | xen_cpu_initialized_map = cpu_online_map; |
37 | #endif | 39 | #endif |
40 | xen_vcpu_restore(); | ||
38 | } | 41 | } |
39 | 42 | ||
40 | xen_setup_shared_info(); | ||
41 | } | 43 | } |
42 | 44 | ||