aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/xen/suspend.c
diff options
context:
space:
mode:
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>2010-05-14 07:48:19 -0400
committerJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2010-07-27 02:13:25 -0400
commit409771d258e9dd71c30f3c9520fd2b796ffc40f0 (patch)
tree68678275563114e9d381ae587fc80bd4d34a7e90 /arch/x86/xen/suspend.c
parent99ad198c4978036bb9f7ebd11618b225b77046da (diff)
x86: Use xen_vcpuop_clockevent, xen_clocksource and xen wallclock.
Use xen_vcpuop_clockevent instead of hpet and APIC timers as main clockevent device on all vcpus, use the xen wallclock time as wallclock instead of rtc and use xen_clocksource as clocksource. The pv clock algorithm needs to work correctly for the xen_clocksource and xen wallclock to be usable, only modern Xen versions offer a reliable pv clock in HVM guests (XENFEAT_hvm_safe_pvclock). Using the hpet as clocksource means a VMEXIT every time we read/write to the hpet mmio addresses, pvclock give us a better rating without VMEXITs. Same goes for the xen wallclock and xen_vcpuop_clockevent Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Don Dutile <ddutile@redhat.com> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Diffstat (limited to 'arch/x86/xen/suspend.c')
-rw-r--r--arch/x86/xen/suspend.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c
index d07479c340f5..1d789d56877c 100644
--- a/arch/x86/xen/suspend.c
+++ b/arch/x86/xen/suspend.c
@@ -28,8 +28,14 @@ void xen_pre_suspend(void)
28 28
29void xen_hvm_post_suspend(int suspend_cancelled) 29void xen_hvm_post_suspend(int suspend_cancelled)
30{ 30{
31 int cpu;
31 xen_hvm_init_shared_info(); 32 xen_hvm_init_shared_info();
32 xen_callback_vector(); 33 xen_callback_vector();
34 if (xen_feature(XENFEAT_hvm_safe_pvclock)) {
35 for_each_online_cpu(cpu) {
36 xen_setup_runstate_info(cpu);
37 }
38 }
33} 39}
34 40
35void xen_post_suspend(int suspend_cancelled) 41void xen_post_suspend(int suspend_cancelled)