Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
x86
xen
suspend.c
Go to the documentation of this file.
1
#include <linux/types.h>
2
#include <
linux/clockchips.h
>
3
4
#include <
xen/interface/xen.h
>
5
#include <
xen/grant_table.h
>
6
#include <xen/events.h>
7
8
#include <asm/xen/hypercall.h>
9
#include <asm/xen/page.h>
10
#include <asm/fixmap.h>
11
12
#include "
xen-ops.h
"
13
#include "
mmu.h
"
14
15
void
xen_arch_pre_suspend
(
void
)
16
{
17
xen_start_info
->store_mfn =
mfn_to_pfn
(
xen_start_info
->store_mfn);
18
xen_start_info
->console.domU.mfn =
19
mfn_to_pfn
(
xen_start_info
->console.domU.mfn);
20
21
BUG_ON
(!
irqs_disabled
());
22
23
HYPERVISOR_shared_info
= &
xen_dummy_shared_info
;
24
if
(
HYPERVISOR_update_va_mapping
(fix_to_virt(FIX_PARAVIRT_BOOTMAP),
25
__pte_ma
(0), 0))
26
BUG
();
27
}
28
29
void
xen_arch_hvm_post_suspend
(
int
suspend_cancelled)
30
{
31
#ifdef CONFIG_XEN_PVHVM
32
int
cpu
;
33
xen_hvm_init_shared_info
();
34
xen_callback_vector
();
35
xen_unplug_emulated_devices
();
36
if
(xen_feature(
XENFEAT_hvm_safe_pvclock
)) {
37
for_each_online_cpu
(cpu) {
38
xen_setup_runstate_info
(cpu);
39
}
40
}
41
#endif
42
}
43
44
void
xen_arch_post_suspend
(
int
suspend_cancelled)
45
{
46
xen_build_mfn_list_list
();
47
48
xen_setup_shared_info
();
49
50
if
(suspend_cancelled) {
51
xen_start_info
->store_mfn =
52
pfn_to_mfn
(
xen_start_info
->store_mfn);
53
xen_start_info
->console.domU.mfn =
54
pfn_to_mfn
(
xen_start_info
->console.domU.mfn);
55
}
else
{
56
#ifdef CONFIG_SMP
57
BUG_ON
(
xen_cpu_initialized_map
==
NULL
);
58
cpumask_copy(
xen_cpu_initialized_map
,
cpu_online_mask
);
59
#endif
60
xen_vcpu_restore
();
61
}
62
63
}
64
65
static
void
xen_vcpu_notify_restore(
void
*
data
)
66
{
67
unsigned
long
reason
= (
unsigned
long
)data;
68
69
/* Boot processor notified via generic timekeeping_resume() */
70
if
(
smp_processor_id
() == 0)
71
return
;
72
73
clockevents_notify
(reason,
NULL
);
74
}
75
76
void
xen_arch_resume
(
void
)
77
{
78
on_each_cpu
(xen_vcpu_notify_restore,
79
(
void
*)CLOCK_EVT_NOTIFY_RESUME, 1);
80
}
Generated on Thu Jan 10 2013 12:56:23 for Linux Kernel by
1.8.2