diff options
Diffstat (limited to 'arch/x86/xen/suspend.c')
| -rw-r--r-- | arch/x86/xen/suspend.c | 23 | 
1 files changed, 17 insertions, 6 deletions
| diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c index 53b4c0811f4f..feddabdab448 100644 --- a/arch/x86/xen/suspend.c +++ b/arch/x86/xen/suspend.c @@ -11,6 +11,7 @@  #include "xen-ops.h"  #include "mmu.h" +#include "pmu.h"  static void xen_pv_pre_suspend(void)  { @@ -67,16 +68,26 @@ static void xen_pv_post_suspend(int suspend_cancelled)  void xen_arch_pre_suspend(void)  { -    if (xen_pv_domain()) -        xen_pv_pre_suspend(); +	int cpu; + +	for_each_online_cpu(cpu) +		xen_pmu_finish(cpu); + +	if (xen_pv_domain()) +		xen_pv_pre_suspend();  }  void xen_arch_post_suspend(int cancelled)  { -    if (xen_pv_domain()) -        xen_pv_post_suspend(cancelled); -    else -        xen_hvm_post_suspend(cancelled); +	int cpu; + +	if (xen_pv_domain()) +		xen_pv_post_suspend(cancelled); +	else +		xen_hvm_post_suspend(cancelled); + +	for_each_online_cpu(cpu) +		xen_pmu_init(cpu);  }  static void xen_vcpu_notify_restore(void *data) |