Acked-by: jbeulich@novell.com
-Index: head-2008-12-01/arch/x86/Kconfig
-===================================================================
---- head-2008-12-01.orig/arch/x86/Kconfig 2008-12-01 11:28:20.000000000 +0100
-+++ head-2008-12-01/arch/x86/Kconfig 2008-12-01 11:28:55.000000000 +0100
+--- sle11-2009-05-14.orig/arch/x86/Kconfig 2009-02-05 10:20:53.000000000 +0100
++++ sle11-2009-05-14/arch/x86/Kconfig 2009-04-20 11:36:10.000000000 +0200
@@ -44,7 +44,6 @@ config GENERIC_LOCKBREAK
config GENERIC_TIME
config GENERIC_CMOS_UPDATE
def_bool y
-Index: head-2008-12-01/arch/x86/kernel/Makefile
-===================================================================
---- head-2008-12-01.orig/arch/x86/kernel/Makefile 2008-12-01 11:14:33.000000000 +0100
-+++ head-2008-12-01/arch/x86/kernel/Makefile 2008-12-01 11:28:55.000000000 +0100
+--- sle11-2009-05-14.orig/arch/x86/kernel/Makefile 2008-12-01 11:14:33.000000000 +0100
++++ sle11-2009-05-14/arch/x86/kernel/Makefile 2009-04-20 11:36:10.000000000 +0200
@@ -124,5 +124,5 @@ ifeq ($(CONFIG_X86_64),y)
pci-dma_64-$(CONFIG_XEN) += pci-dma_32.o
endif
-disabled-obj-$(CONFIG_XEN) := i8259_$(BITS).o reboot.o smpboot_$(BITS).o
+disabled-obj-$(CONFIG_XEN) := i8253.o i8259_$(BITS).o reboot.o smpboot_$(BITS).o tsc_$(BITS).o
%/head_$(BITS).o %/head_$(BITS).s: $(if $(CONFIG_XEN),EXTRA_AFLAGS,dummy) :=
-Index: head-2008-12-01/arch/x86/kernel/entry_32-xen.S
-===================================================================
---- head-2008-12-01.orig/arch/x86/kernel/entry_32-xen.S 2007-12-10 08:47:31.000000000 +0100
-+++ head-2008-12-01/arch/x86/kernel/entry_32-xen.S 2008-12-01 11:28:55.000000000 +0100
+--- sle11-2009-05-14.orig/arch/x86/kernel/entry_32-xen.S 2009-05-14 11:01:13.000000000 +0200
++++ sle11-2009-05-14/arch/x86/kernel/entry_32-xen.S 2009-05-14 11:01:46.000000000 +0200
@@ -388,8 +388,10 @@ ENTRY(sysenter_entry_pv)
movl %ebp,12(%esp)
movl $__USER_CS,4(%esp)
/*
* Load the potential sixth argument from user stack.
* Careful about security.
-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-09-01 12:07:31.000000000 +0200
-+++ head-2008-12-01/arch/x86/kernel/time_32-xen.c 2008-12-01 11:28:55.000000000 +0100
+--- sle11-2009-05-14.orig/arch/x86/kernel/setup64-xen.c 2009-05-14 11:01:13.000000000 +0200
++++ sle11-2009-05-14/arch/x86/kernel/setup64-xen.c 2009-04-20 11:36:10.000000000 +0200
+@@ -363,5 +363,7 @@ void __cpuinit cpu_init (void)
+
+ fpu_init();
+
+- raw_local_save_flags(kernel_eflags);
++ asm ("pushfq; popq %0" : "=rm" (kernel_eflags));
++ if (raw_irqs_disabled())
++ kernel_eflags &= ~X86_EFLAGS_IF;
+ }
+--- sle11-2009-05-14.orig/arch/x86/kernel/time_32-xen.c 2009-03-18 12:51:05.000000000 +0100
++++ sle11-2009-05-14/arch/x86/kernel/time_32-xen.c 2009-04-20 11:36:10.000000000 +0200
@@ -76,8 +76,13 @@
#if defined (__i386__)
static void __update_wallclock(time_t sec, long nsec)
{
-@@ -379,6 +374,8 @@ void rtc_cmos_write(unsigned char val, u
+@@ -377,6 +372,8 @@ void rtc_cmos_write(unsigned char val, u
}
EXPORT_SYMBOL(rtc_cmos_write);
/*
* This version of gettimeofday has microsecond resolution
* and better than microsecond precision on fast x86 machines with TSC.
-@@ -513,6 +510,8 @@ int do_settimeofday(struct timespec *tv)
+@@ -512,6 +509,8 @@ int do_settimeofday(struct timespec *tv)
EXPORT_SYMBOL(do_settimeofday);
static void sync_xen_wallclock(unsigned long dummy);
static DEFINE_TIMER(sync_xen_wallclock_timer, sync_xen_wallclock, 0, 0);
static void sync_xen_wallclock(unsigned long dummy)
-@@ -564,11 +563,15 @@ static int set_rtc_mmss(unsigned long no
+@@ -563,11 +562,15 @@ static int set_rtc_mmss(unsigned long no
return retval;
}
{
unsigned int cpu = get_cpu();
struct shadow_time_info *shadow = &per_cpu(shadow_time, cpu);
-@@ -588,9 +591,9 @@ unsigned long long monotonic_clock(void)
+@@ -587,9 +590,9 @@ unsigned long long monotonic_clock(void)
return time;
}
unsigned long long sched_clock(void)
{
return monotonic_clock();
-@@ -760,6 +763,89 @@ irqreturn_t timer_interrupt(int irq, voi
+@@ -759,6 +762,89 @@ irqreturn_t timer_interrupt(int irq, voi
return IRQ_HANDLED;
}
static void init_missing_ticks_accounting(unsigned int cpu)
{
struct vcpu_register_runstate_memory_area area;
-@@ -948,11 +1034,11 @@ void __init time_init(void)
+@@ -947,11 +1033,11 @@ void __init time_init(void)
update_wallclock();
vxtime.mode = VXTIME_TSC;
vxtime.quot = (1000000L << 32) / vxtime_hz;
vxtime.tsc_quot = (1000L << 32) / cpu_khz;
-Index: head-2008-12-01/include/asm-x86/mach-xen/asm/pgtable_64.h
-===================================================================
---- head-2008-12-01.orig/include/asm-x86/mach-xen/asm/pgtable_64.h 2008-07-21 11:00:33.000000000 +0200
-+++ head-2008-12-01/include/asm-x86/mach-xen/asm/pgtable_64.h 2008-12-01 11:28:55.000000000 +0100
-@@ -392,7 +392,6 @@ static inline int pmd_large(pmd_t pte) {
+--- sle11-2009-05-14.orig/drivers/oprofile/oprofile_files.c 2009-02-16 16:01:39.000000000 +0100
++++ sle11-2009-05-14/drivers/oprofile/oprofile_files.c 2009-04-20 11:36:10.000000000 +0200
+@@ -217,7 +217,7 @@ static ssize_t adomain_read(struct file
+ }
+
+
+-static struct file_operations active_domain_ops = {
++static const struct file_operations active_domain_ops = {
+ .read = adomain_read,
+ .write = adomain_write,
+ };
+@@ -310,7 +310,7 @@ static ssize_t pdomain_read(struct file
+ return retval;
+ }
+
+-static struct file_operations passive_domain_ops = {
++static const struct file_operations passive_domain_ops = {
+ .read = pdomain_read,
+ .write = pdomain_write,
+ };
+--- sle11-2009-05-14.orig/drivers/xen/blktap/blktap.c 2009-04-20 11:35:40.000000000 +0200
++++ sle11-2009-05-14/drivers/xen/blktap/blktap.c 2009-04-20 11:36:10.000000000 +0200
+@@ -931,7 +931,7 @@ static int req_increase(void)
+
+ static void mmap_req_del(int mmap)
+ {
+- BUG_ON(!spin_is_locked(&pending_free_lock));
++ assert_spin_locked(&pending_free_lock);
+
+ kfree(pending_reqs[mmap]);
+ pending_reqs[mmap] = NULL;
+--- sle11-2009-05-14.orig/drivers/xen/core/smpboot.c 2009-05-14 11:01:13.000000000 +0200
++++ sle11-2009-05-14/drivers/xen/core/smpboot.c 2009-04-28 16:02:07.000000000 +0200
+@@ -48,10 +48,6 @@ cpumask_t cpu_initialized_map;
+ struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned;
+ EXPORT_SYMBOL(cpu_data);
+
+-#ifdef CONFIG_HOTPLUG_CPU
+-DEFINE_PER_CPU(int, cpu_state) = { 0 };
+-#endif
+-
+ static DEFINE_PER_CPU(int, resched_irq);
+ static DEFINE_PER_CPU(int, callfunc_irq);
+ static char resched_name[NR_CPUS][15];
+--- sle11-2009-05-14.orig/include/asm-x86/mach-xen/asm/pgtable_64.h 2008-12-15 11:13:45.000000000 +0100
++++ sle11-2009-05-14/include/asm-x86/mach-xen/asm/pgtable_64.h 2009-04-20 11:36:10.000000000 +0200
+@@ -394,7 +394,6 @@ static inline int pmd_large(pmd_t pte) {
/*
* Level 4 access.
*/
#define pgd_page(pgd) ((unsigned long) __va(pgd_val(pgd) & PTE_MASK))
#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
-Index: head-2008-12-01/include/asm-x86/mach-xen/asm/processor_32.h
-===================================================================
---- head-2008-12-01.orig/include/asm-x86/mach-xen/asm/processor_32.h 2008-01-28 12:24:19.000000000 +0100
-+++ head-2008-12-01/include/asm-x86/mach-xen/asm/processor_32.h 2008-12-01 11:28:55.000000000 +0100
+--- sle11-2009-05-14.orig/include/asm-x86/mach-xen/asm/processor_32.h 2009-05-14 11:01:13.000000000 +0200
++++ sle11-2009-05-14/include/asm-x86/mach-xen/asm/processor_32.h 2009-04-20 11:36:10.000000000 +0200
@@ -23,7 +23,7 @@
#include <xen/interface/physdev.h>
struct desc_struct {
unsigned long a,b;
-Index: head-2008-12-01/include/asm-x86/thread_info.h
-===================================================================
---- head-2008-12-01.orig/include/asm-x86/thread_info.h 2008-12-01 10:53:14.000000000 +0100
-+++ head-2008-12-01/include/asm-x86/thread_info.h 2008-12-01 11:28:55.000000000 +0100
+--- sle11-2009-05-14.orig/include/asm-x86/thread_info.h 2009-05-14 11:01:13.000000000 +0200
++++ sle11-2009-05-14/include/asm-x86/thread_info.h 2009-04-20 11:36:10.000000000 +0200
@@ -142,12 +142,16 @@ struct thread_info {
(_TIF_SIGPENDING|_TIF_MCE_NOTIFY|_TIF_NOTIFY_RESUME|_TIF_PERFMON_WORK)
+#ifndef CONFIG_XEN
#define _TIF_WORK_CTXSW \
(_TIF_IO_BITMAP|_TIF_DEBUGCTLMSR|_TIF_DS_AREA_MSR|_TIF_BTS_TRACE_TS| \
- _TIF_NOTSC)
+ _TIF_NOTSC|_TIF_PERFMON_CTXSW)
#define _TIF_WORK_CTXSW_PREV _TIF_WORK_CTXSW
#define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW|_TIF_DEBUG)
#define PREEMPT_ACTIVE 0x10000000
-Index: head-2008-12-01/arch/x86/kernel/setup64-xen.c
-===================================================================
---- head-2008-12-01.orig/arch/x86/kernel/setup64-xen.c 2008-01-28 12:24:19.000000000 +0100
-+++ head-2008-12-01/arch/x86/kernel/setup64-xen.c 2008-12-01 11:28:55.000000000 +0100
-@@ -363,5 +363,7 @@ void __cpuinit cpu_init (void)
-
- fpu_init();
-
-- raw_local_save_flags(kernel_eflags);
-+ asm ("pushfq; popq %0" : "=rm" (kernel_eflags));
-+ if (raw_irqs_disabled())
-+ kernel_eflags &= ~X86_EFLAGS_IF;
- }