diff options
Diffstat (limited to 'xenolinux-2.4.25-sparse/arch')
-rw-r--r-- | xenolinux-2.4.25-sparse/arch/xen/kernel/setup.c | 7 | ||||
-rw-r--r-- | xenolinux-2.4.25-sparse/arch/xen/kernel/time.c | 18 |
2 files changed, 25 insertions, 0 deletions
diff --git a/xenolinux-2.4.25-sparse/arch/xen/kernel/setup.c b/xenolinux-2.4.25-sparse/arch/xen/kernel/setup.c index ad4a2fea4a..bce8d39497 100644 --- a/xenolinux-2.4.25-sparse/arch/xen/kernel/setup.c +++ b/xenolinux-2.4.25-sparse/arch/xen/kernel/setup.c @@ -1151,6 +1151,9 @@ static void stop_task(void *unused) extern void blkdev_suspend(void); extern void blkdev_resume(void); + extern void time_suspend(void); + extern void time_resume(void); + unsigned long *pfn_to_mfn_frame_list = NULL; suspend_record_t *suspend_record = NULL; struct net_device *dev; @@ -1198,6 +1201,8 @@ static void stop_task(void *unused) __cli(); + time_suspend(); + HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page; clear_fixmap(FIX_SHARED_INFO); @@ -1211,6 +1216,8 @@ static void stop_task(void *unused) HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO); memset(empty_zero_page, 0, PAGE_SIZE); + time_resume(); + __sti(); blkdev_resume(); diff --git a/xenolinux-2.4.25-sparse/arch/xen/kernel/time.c b/xenolinux-2.4.25-sparse/arch/xen/kernel/time.c index 663fdf2bad..1404fbdb2b 100644 --- a/xenolinux-2.4.25-sparse/arch/xen/kernel/time.c +++ b/xenolinux-2.4.25-sparse/arch/xen/kernel/time.c @@ -634,6 +634,24 @@ void __init time_init(void) rdtscll(alarm); } +void time_suspend(void) +{ +} + +void time_resume(void) +{ + unsigned long flags; + write_lock_irqsave(&xtime_lock, flags); + /* Get timebases for new environment. */ + __get_time_values_from_xen(); + /* Reset our own concept of passage of system time. */ + processed_system_time = shadow_system_time; + /* Accept a warp in UTC (wall-clock) time. */ + last_seen_tv.tv_sec = 0; + /* Make sure we resync UTC time with Xen on next timer interrupt. */ + last_update_from_xen = 0; + write_unlock_irqrestore(&xtime_lock, flags); +} /* * /proc/sys/xen: This really belongs in another file. It can stay here for |