|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
[Xen-ia64-devel] [PATCH][PVOPS] time.c cleanup
Hi Isaku,
Here's some cleanup to arch/ia64/kernel/time.c. I removed
time_resume() since it's not called from anywhere. I think this file
still needs some work; any PV guest is going to need something like
this, so it would be nice to isolate the Xen specific parts and have
everything else in PARAVIRT_GUEST code instead of XEN. This might be an
opportunity for another pv_ops structure. Maybe we should also create a
is_paravirt_guest() macro to clearly distinguish Xen-isms from things we
think apply to all PV guests. This should probably live in
asm/paravirt.h and include asm/xen/hypervisor.h so we can just include
one file and get both is_paravirt_guest() and is_running_on_xen().
Thanks,
Alex
Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---
time.c | 58 +++++++---------------------------------------------------
1 file changed, 7 insertions(+), 51 deletions(-)
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 1bb0362..cae777e 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -31,10 +31,10 @@
#include <asm/xen/hypervisor.h>
#ifdef CONFIG_XEN
+#include <asm/percpu.h>
#include <linux/kernel_stat.h>
#include <linux/posix-timers.h>
#include <xen/interface/vcpu.h>
-#include <asm/percpu.h>
#endif
#include "fsyscall_gtod_data.h"
@@ -283,7 +283,7 @@ __setup("nojitter", nojitter_setup);
#ifdef CONFIG_XEN
/* taken from i386/kernel/time-xen.c */
-static void init_missing_ticks_accounting(int cpu)
+static void xen_init_missing_ticks_accounting(int cpu)
{
struct vcpu_register_runstate_memory_area area;
struct vcpu_runstate_info *runstate = &per_cpu(runstate, cpu);
@@ -301,63 +301,19 @@ static void init_missing_ticks_accounting(int cpu)
+ runstate->time[RUNSTATE_offline];
}
-static int xen_ia64_settimefoday_after_resume;
+static int xen_ia64_settimeofday_after_resume;
static int __init __xen_ia64_settimeofday_after_resume(char *str)
{
- xen_ia64_settimefoday_after_resume = 1;
+ xen_ia64_settimeofday_after_resume = 1;
return 1;
}
-__setup("xen_ia64_settimefoday_after_resume",
+__setup("xen_ia64_settimeofday_after_resume",
__xen_ia64_settimeofday_after_resume);
-/* Called after suspend, to resume time. */
-void
-time_resume(void)
-{
- unsigned int cpu;
-
- /* Just trigger a tick. */
- ia64_cpu_local_tick();
-
- if (xen_ia64_settimefoday_after_resume) {
- /* do_settimeofday() resets timer interplator */
- struct timespec xen_time;
- int ret;
- efi_gettimeofday(&xen_time);
-
- ret = do_settimeofday(&xen_time);
- WARN_ON(ret);
- } else {
-#if 0
- /* adjust EFI time */
- struct timespec my_time = CURRENT_TIME;
- struct timespec xen_time;
- static timespec diff;
- struct xen_domctl domctl;
- int ret;
-
- efi_gettimeofday(&xen_time);
- diff = timespec_sub(&xen_time, &my_time);
- domctl.cmd = XEN_DOMCTL_settimeoffset;
- domctl.domain = DOMID_SELF;
- domctl.u.settimeoffset.timeoffset_seconds = diff.tv_sec;
- ret = HYPERVISOR_domctl_op(&domctl);
- WARN_ON(ret);
-#endif
- /* itc_clocksource remembers the last timer status in
- * itc_jitter_data. Forget it */
- clocksource_resume();
- }
-
- for_each_online_cpu(cpu)
- init_missing_ticks_accounting(cpu);
-
- touch_softlockup_watchdog();
-}
#else
-#define init_missing_ticks_accounting(cpu) do {} while (0)
+#define xen_init_missing_ticks_accounting(cpu) do {} while (0)
#endif
void __devinit
@@ -455,7 +411,7 @@ ia64_init_itm (void)
clocksource_itc.rating = 50;
if (is_running_on_xen())
- init_missing_ticks_accounting(smp_processor_id());
+ xen_init_missing_ticks_accounting(smp_processor_id());
/* avoid softlock up message when cpu is unplug and plugged again. */
touch_softlockup_watchdog();
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-ia64-devel] [PATCH][PVOPS] time.c cleanup,
Alex Williamson <=
|
|
|
|
|