xref: /openbmc/linux/arch/x86/xen/suspend_hvm.c (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
29963236dSVitaly Kuznetsov #include <linux/types.h>
39963236dSVitaly Kuznetsov 
49963236dSVitaly Kuznetsov #include <xen/xen.h>
5998c2034SVitaly Kuznetsov #include <xen/hvm.h>
69963236dSVitaly Kuznetsov #include <xen/features.h>
79963236dSVitaly Kuznetsov #include <xen/interface/features.h>
8*b1c3497eSJane Malalane #include <xen/events.h>
99963236dSVitaly Kuznetsov 
109963236dSVitaly Kuznetsov #include "xen-ops.h"
119963236dSVitaly Kuznetsov 
xen_hvm_post_suspend(int suspend_cancelled)129963236dSVitaly Kuznetsov void xen_hvm_post_suspend(int suspend_cancelled)
139963236dSVitaly Kuznetsov {
140b64ffb8SAnkur Arora 	if (!suspend_cancelled) {
159963236dSVitaly Kuznetsov 		xen_hvm_init_shared_info();
160b64ffb8SAnkur Arora 		xen_vcpu_restore();
170b64ffb8SAnkur Arora 	}
18*b1c3497eSJane Malalane 	if (xen_percpu_upcall) {
19*b1c3497eSJane Malalane 		unsigned int cpu;
20*b1c3497eSJane Malalane 
21*b1c3497eSJane Malalane 		for_each_online_cpu(cpu)
22*b1c3497eSJane Malalane 			BUG_ON(xen_set_upcall_vector(cpu));
23*b1c3497eSJane Malalane 	} else {
24a0bb51f2SVitaly Kuznetsov 		xen_setup_callback_vector();
25*b1c3497eSJane Malalane 	}
269963236dSVitaly Kuznetsov 	xen_unplug_emulated_devices();
279963236dSVitaly Kuznetsov }
28