About
Contact
QtCreator
KDevelop
Solarized
1
// SPDX-License-Identifier: GPL-2.0
2
#include
<linux/types.h>
3
4
#include
<asm/xen/hypercall.h>
5
#include
<asm/xen/page.h>
6
7
#include
<asm/fixmap.h>
8
9
#include
"xen-ops.h"
10
11
void
xen_pv_pre_suspend
(
void
)
12
{
13
xen_mm_pin_all
();
14
15
xen_start_info
->
store_mfn
=
mfn_to_pfn
(
mfn:
xen_start_info
->
store_mfn
);
16
xen_start_info
->
console
.
domU
.
mfn
=
17
mfn_to_pfn
(
mfn:
xen_start_info
->
console
.
domU
.
mfn
);
18
19
BUG_ON
(!
irqs_disabled
());
20
21
HYPERVISOR_shared_info
= &
xen_dummy_shared_info
;
22
if
(
HYPERVISOR_update_va_mapping
(
va:
fix_to_virt
(
idx:
FIX_PARAVIRT_BOOTMAP
),
23
new_val:
__pte_ma
(
x:
0
),
flags:
0
))
24
BUG
();
25
}
26
27
void
xen_pv_post_suspend
(
int
suspend_cancelled
)
28
{
29
xen_build_mfn_list_list
();
30
set_fixmap
(
FIX_PARAVIRT_BOOTMAP
,
xen_start_info
->
shared_info
);
31
HYPERVISOR_shared_info
= (
void
*)
fix_to_virt
(
idx:
FIX_PARAVIRT_BOOTMAP
);
32
xen_setup_mfn_list_list
();
33
34
if
(
suspend_cancelled
) {
35
xen_start_info
->
store_mfn
=
36
pfn_to_mfn
(
pfn:
xen_start_info
->
store_mfn
);
37
xen_start_info
->
console
.
domU
.
mfn
=
38
pfn_to_mfn
(
pfn:
xen_start_info
->
console
.
domU
.
mfn
);
39
}
else
{
40
#
ifdef
CONFIG_SMP
41
BUG_ON
(
xen_cpu_initialized_map
==
NULL
);
42
cpumask_copy
(
dstp:
xen_cpu_initialized_map
,
cpu_online_mask
);
43
#
endif
44
xen_vcpu_restore
();
45
}
46
47
xen_mm_unpin_all
();
48
}
49