... rather than calling just a few functions explicitly.
-Index: head-2008-12-01/arch/x86/kernel/time_32-xen.c
-===================================================================
---- head-2008-12-01.orig/arch/x86/kernel/time_32-xen.c 2008-12-01 12:07:15.000000000 +0100
-+++ head-2008-12-01/arch/x86/kernel/time_32-xen.c 2008-12-01 12:07:30.000000000 +0100
+--- sle11-2009-03-24.orig/arch/x86/kernel/time_32-xen.c 2009-03-24 10:22:14.000000000 +0100
++++ sle11-2009-03-24/arch/x86/kernel/time_32-xen.c 2009-03-24 10:22:24.000000000 +0100
@@ -88,6 +88,10 @@ static DEFINE_PER_CPU(struct vcpu_runsta
/* Must be signed, as it's compared with s64 quantities which can be -ve. */
#define NS_PER_TICK (1000000000LL/HZ)
static void __clock_was_set(struct work_struct *unused)
{
clock_was_set();
-@@ -599,6 +603,25 @@ void mark_tsc_unstable(char *reason)
+@@ -597,6 +601,25 @@ void mark_tsc_unstable(char *reason)
}
EXPORT_SYMBOL_GPL(mark_tsc_unstable);
static cycle_t cs_last;
static cycle_t xen_clocksource_read(void)
-@@ -635,11 +658,34 @@ static cycle_t xen_clocksource_read(void
+@@ -633,11 +656,32 @@ static cycle_t xen_clocksource_read(void
#endif
}
+ }
+
+ processed_system_time = per_cpu(shadow_time, 0).system_timestamp;
-+
-+ update_wallclock();
- time_resume();
cs_last = local_clock();
}
-@@ -654,25 +700,6 @@ static struct clocksource clocksource_xe
+@@ -652,25 +696,6 @@ static struct clocksource clocksource_xe
.resume = xen_clocksource_resume,
};
unsigned long xen_read_persistent_clock(void)
{
const shared_info_t *s = HYPERVISOR_shared_info;
-@@ -717,10 +744,6 @@ static void __init setup_cpu0_timer_irq(
+@@ -715,10 +740,6 @@ static void __init setup_cpu0_timer_irq(
BUG_ON(per_cpu(timer_irq, 0) < 0);
}
void __init time_init(void)
{
init_cpu_khz();
-@@ -844,35 +867,6 @@ void xen_halt(void)
+@@ -842,35 +863,6 @@ void xen_halt(void)
}
EXPORT_SYMBOL(xen_halt);
#ifdef CONFIG_SMP
static char timer_name[NR_CPUS][15];
-Index: head-2008-12-01/drivers/xen/core/evtchn.c
-===================================================================
---- head-2008-12-01.orig/drivers/xen/core/evtchn.c 2008-12-02 09:11:31.000000000 +0100
-+++ head-2008-12-01/drivers/xen/core/evtchn.c 2008-12-02 09:23:09.000000000 +0100
+--- sle11-2009-03-24.orig/drivers/xen/core/evtchn.c 2009-03-16 16:38:16.000000000 +0100
++++ sle11-2009-03-24/drivers/xen/core/evtchn.c 2009-01-14 14:57:55.000000000 +0100
@@ -35,6 +35,7 @@
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/kernel_stat.h>
+#include <linux/sysdev.h>
+ #include <linux/bootmem.h>
#include <linux/version.h>
#include <asm/atomic.h>
- #include <asm/system.h>
-@@ -1061,9 +1062,20 @@ static void restore_cpu_ipis(unsigned in
+@@ -1070,9 +1071,20 @@ static void restore_cpu_ipis(unsigned in
}
}
init_evtchn_cpu_bindings();
-@@ -1094,7 +1106,32 @@ void irq_resume(void)
+@@ -1103,7 +1115,32 @@ void irq_resume(void)
restore_cpu_ipis(cpu);
}
#endif
#if defined(CONFIG_X86_IO_APIC)
-Index: head-2008-12-01/drivers/xen/core/gnttab.c
-===================================================================
---- head-2008-12-01.orig/drivers/xen/core/gnttab.c 2008-12-02 09:26:17.000000000 +0100
-+++ head-2008-12-01/drivers/xen/core/gnttab.c 2008-12-02 09:26:51.000000000 +0100
+--- sle11-2009-03-24.orig/drivers/xen/core/gnttab.c 2009-03-16 16:38:16.000000000 +0100
++++ sle11-2009-03-24/drivers/xen/core/gnttab.c 2008-12-15 11:32:52.000000000 +0100
@@ -35,6 +35,7 @@
#include <linux/sched.h>
#include <linux/mm.h>
nr_grant_frames = 1;
boot_max_nr_grant_frames = __max_nr_grant_frames();
-Index: head-2008-12-01/drivers/xen/core/machine_reboot.c
-===================================================================
---- head-2008-12-01.orig/drivers/xen/core/machine_reboot.c 2008-12-01 11:49:07.000000000 +0100
-+++ head-2008-12-01/drivers/xen/core/machine_reboot.c 2008-12-01 12:07:30.000000000 +0100
+--- sle11-2009-03-24.orig/drivers/xen/core/machine_reboot.c 2009-03-16 16:38:16.000000000 +0100
++++ sle11-2009-03-24/drivers/xen/core/machine_reboot.c 2009-02-17 12:23:48.000000000 +0100
@@ -17,6 +17,7 @@
#include <xen/xencons.h>
#include <xen/cpu_hotplug.h>
#if defined(__i386__) || defined(__x86_64__)
-@@ -149,7 +150,6 @@ static int take_machine_down(void *_susp
+@@ -141,7 +142,6 @@ static int take_machine_down(void *_susp
{
struct suspend *suspend = _suspend;
int suspend_cancelled, err;
if (suspend->fast_suspend) {
BUG_ON(!irqs_disabled());
-@@ -175,20 +175,23 @@ static int take_machine_down(void *_susp
+@@ -167,20 +167,23 @@ static int take_machine_down(void *_susp
}
mm_pin_all();
#ifdef __x86_64__
/*
* Older versions of Xen do not save/restore the user %cr3.
-@@ -200,7 +203,6 @@ static int take_machine_down(void *_susp
+@@ -192,7 +195,6 @@ static int take_machine_down(void *_susp
current->active_mm->pgd)));
#endif
}
if (!suspend->fast_suspend)
local_irq_enable();
-Index: head-2008-12-01/include/xen/evtchn.h
-===================================================================
---- head-2008-12-01.orig/include/xen/evtchn.h 2008-12-02 09:25:52.000000000 +0100
-+++ head-2008-12-01/include/xen/evtchn.h 2008-12-01 12:07:30.000000000 +0100
+--- sle11-2009-03-24.orig/include/xen/evtchn.h 2009-03-16 16:33:40.000000000 +0100
++++ sle11-2009-03-24/include/xen/evtchn.h 2008-12-15 11:32:52.000000000 +0100
@@ -93,7 +93,9 @@ int bind_ipi_to_irqhandler(
*/
void unbind_from_irqhandler(unsigned int irq, void *dev_id);
/* Entry point for notifications into Linux subsystems. */
asmlinkage void evtchn_do_upcall(struct pt_regs *regs);
-Index: head-2008-12-01/include/xen/gnttab.h
-===================================================================
---- head-2008-12-01.orig/include/xen/gnttab.h 2008-12-02 09:25:52.000000000 +0100
-+++ head-2008-12-01/include/xen/gnttab.h 2008-12-01 12:07:30.000000000 +0100
+--- sle11-2009-03-24.orig/include/xen/gnttab.h 2009-03-24 10:00:14.000000000 +0100
++++ sle11-2009-03-24/include/xen/gnttab.h 2008-12-15 11:32:52.000000000 +0100
@@ -110,8 +110,9 @@ static inline void __gnttab_dma_unmap_pa
void gnttab_reset_grant_page(struct page *page);