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 Kuznetsovvoid 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