162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci#include <linux/types.h> 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#include <xen/xen.h> 562306a36Sopenharmony_ci#include <xen/hvm.h> 662306a36Sopenharmony_ci#include <xen/features.h> 762306a36Sopenharmony_ci#include <xen/interface/features.h> 862306a36Sopenharmony_ci#include <xen/events.h> 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include "xen-ops.h" 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_civoid xen_hvm_post_suspend(int suspend_cancelled) 1362306a36Sopenharmony_ci{ 1462306a36Sopenharmony_ci if (!suspend_cancelled) { 1562306a36Sopenharmony_ci xen_hvm_init_shared_info(); 1662306a36Sopenharmony_ci xen_vcpu_restore(); 1762306a36Sopenharmony_ci } 1862306a36Sopenharmony_ci if (xen_percpu_upcall) { 1962306a36Sopenharmony_ci unsigned int cpu; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci for_each_online_cpu(cpu) 2262306a36Sopenharmony_ci BUG_ON(xen_set_upcall_vector(cpu)); 2362306a36Sopenharmony_ci } else { 2462306a36Sopenharmony_ci xen_setup_callback_vector(); 2562306a36Sopenharmony_ci } 2662306a36Sopenharmony_ci xen_unplug_emulated_devices(); 2762306a36Sopenharmony_ci} 28