]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.25/patches.xen/xen-x86-no-lapic
Updated xen patches taken from suse.
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.xen / xen-x86-no-lapic
similarity index 69%
rename from src/patches/60061_xen-x86-no-lapic.patch1
rename to src/patches/suse-2.6.27.25/patches.xen/xen-x86-no-lapic
index 6beed7d8f2eb957561d0613bb37cef5ed8ce7a2a..cdf9226362d6bfc4f91f4c7da1592b2592c27803 100644 (file)
@@ -3,11 +3,9 @@ Subject: Disallow all accesses to the local APIC page
 Patch-mainline: obsolete
 References: 191115
 
-Index: head-2008-10-21/arch/x86/kernel/Makefile
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/Makefile      2008-10-21 13:44:06.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/Makefile   2008-10-21 13:44:08.000000000 +0200
-@@ -119,9 +119,11 @@ ifeq ($(CONFIG_X86_64),y)
+--- sle11-2009-06-04.orig/arch/x86/kernel/Makefile     2009-06-04 10:47:37.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/Makefile  2009-06-04 10:47:37.000000000 +0200
+@@ -120,9 +120,11 @@ ifeq ($(CONFIG_X86_64),y)
  
          obj-$(CONFIG_PCI_MMCONFIG)    += mmconf-fam10h_64.o
  
@@ -15,17 +13,15 @@ Index: head-2008-10-21/arch/x86/kernel/Makefile
        time_64-$(CONFIG_XEN)           += time_32.o
  endif
  
--disabled-obj-$(CONFIG_XEN) := bios_uv.o early-quirks.o hpet.o i8253.o \
+-disabled-obj-$(CONFIG_XEN) := %_uv.o crash.o early-quirks.o hpet.o i8253.o \
 -      i8259.o irqinit_$(BITS).o pci-swiotlb_64.o reboot.o smpboot.o \
--      tlb_$(BITS).o tsc.o tsc_sync.o vsmp_64.o
-+disabled-obj-$(CONFIG_XEN) := bios_uv.o early-quirks.o genapic_flat_64.o \
+-      tlb_$(BITS).o tsc.o tsc_sync.o uv_%.o vsmp_64.o
++disabled-obj-$(CONFIG_XEN) := %_uv.o crash.o early-quirks.o genapic_flat_64.o \
 +      genx2apic_%.o hpet.o i8253.o i8259.o irqinit_$(BITS).o \
-+      pci-swiotlb_64.o reboot.o smpboot.o tlb_$(BITS).o tlb_uv.o tsc.o \
-+      tsc_sync.o vsmp_64.o
-Index: head-2008-10-21/arch/x86/kernel/acpi/boot.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/acpi/boot.c   2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/acpi/boot.c        2008-10-21 13:44:08.000000000 +0200
++      pci-swiotlb_64.o reboot.o smpboot.o tlb_$(BITS).o tsc.o tsc_sync.o \
++      uv_%.o vsmp_64.o
+--- sle11-2009-06-04.orig/arch/x86/kernel/acpi/boot.c  2009-06-04 10:21:39.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/acpi/boot.c       2009-06-04 10:47:37.000000000 +0200
 @@ -89,7 +89,7 @@ int acpi_sci_override_gsi __initdata;
  int acpi_skip_timer_override __initdata;
  int acpi_use_timer_override __initdata;
@@ -88,10 +84,8 @@ Index: head-2008-10-21/arch/x86/kernel/acpi/boot.c
        if (ioapic_renumber_irq)
                gsi = ioapic_renumber_irq(ioapic, gsi);
  #endif
-Index: head-2008-10-21/arch/x86/kernel/apic_32-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/apic_32-xen.c 2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/apic_32-xen.c      2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/arch/x86/kernel/apic_32-xen.c        2009-06-04 10:21:39.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/apic_32-xen.c     2009-06-04 10:47:37.000000000 +0200
 @@ -1,60 +1,11 @@
  /*
 - *    Local APIC handling, local APIC timers
@@ -154,7 +148,7 @@ Index: head-2008-10-21/arch/x86/kernel/apic_32-xen.c
  
  /*
   * Debug level, exported for io_apic.c
-@@ -64,21 +15,16 @@ unsigned int apic_verbosity;
+@@ -64,33 +15,32 @@ unsigned int apic_verbosity;
  /* Have we found an MP table */
  int smp_found_config;
  
@@ -183,9 +177,28 @@ Index: head-2008-10-21/arch/x86/kernel/apic_32-xen.c
  
  int setup_profiling_timer(unsigned int multiplier)
  {
-Index: head-2008-10-21/arch/x86/kernel/apic_64-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/apic_64-xen.c 2008-10-21 13:30:34.000000000 +0200
+       return -EINVAL;
+ }
++#ifndef CONFIG_SMP
+ /*
+  * This initializes the IO-APIC and APIC hardware if this is
+  * a UP kernel.
+  */
+ int __init APIC_init_uniprocessor(void)
+ {
++      if (!cpu_has_apic)
++              return -1;
++
+ #ifdef CONFIG_X86_IO_APIC
+       if (smp_found_config)
+               if (!skip_ioapic_setup && nr_ioapics)
+@@ -99,3 +49,4 @@ int __init APIC_init_uniprocessor(void)
+       return 0;
+ }
++#endif
+--- sle11-2009-06-04.orig/arch/x86/kernel/apic_64-xen.c        2009-06-04 10:21:39.000000000 +0200
 +++ /dev/null  1970-01-01 00:00:00.000000000 +0000
 @@ -1,188 +0,0 @@
 -/*
@@ -376,11 +389,9 @@ Index: head-2008-10-21/arch/x86/kernel/apic_64-xen.c
 -              smp_processor_id(), v , v1);
 -      irq_exit();
 -}
-Index: head-2008-10-21/arch/x86/kernel/cpu/common-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/cpu/common-xen.c      2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/cpu/common-xen.c   2008-10-21 13:44:08.000000000 +0200
-@@ -18,10 +18,6 @@
+--- sle11-2009-06-04.orig/arch/x86/kernel/cpu/common-xen.c     2009-06-04 10:46:36.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/cpu/common-xen.c  2009-06-04 10:47:37.000000000 +0200
+@@ -19,10 +19,6 @@
  #include <asm/mpspec.h>
  #include <asm/apic.h>
  #include <mach_apic.h>
@@ -391,10 +402,8 @@ Index: head-2008-10-21/arch/x86/kernel/cpu/common-xen.c
  #endif
  #include <asm/hypervisor.h>
  
-Index: head-2008-10-21/arch/x86/kernel/genapic_64-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/genapic_64-xen.c      2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/genapic_64-xen.c   2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/arch/x86/kernel/genapic_64-xen.c     2009-06-04 10:46:28.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/genapic_64-xen.c  2009-06-04 10:47:37.000000000 +0200
 @@ -18,7 +18,6 @@
  #include <linux/hardirq.h>
  
@@ -403,28 +412,8 @@ Index: head-2008-10-21/arch/x86/kernel/genapic_64-xen.c
  #include <asm/genapic.h>
  
  #ifdef CONFIG_ACPI
-@@ -73,7 +72,7 @@ void __init setup_apic_routing(void)
- /* Same for both flat and physical. */
- #ifdef CONFIG_XEN
--extern void xen_send_IPI_shortcut(unsigned int shortcut, int vector, unsigned int dest);
-+extern void xen_send_IPI_shortcut(unsigned int shortcut, int vector);
- #endif
- void send_IPI_self(int vector)
-@@ -81,7 +80,7 @@ void send_IPI_self(int vector)
- #ifndef CONFIG_XEN
-       __send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL);
- #else
--      xen_send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL);
-+      xen_send_IPI_shortcut(APIC_DEST_SELF, vector);
- #endif
- }
-Index: head-2008-10-21/arch/x86/kernel/genapic_xen_64.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/genapic_xen_64.c      2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/genapic_xen_64.c   2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/arch/x86/kernel/genapic_xen_64.c     2009-06-04 10:47:21.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/genapic_xen_64.c  2009-06-04 10:47:37.000000000 +0200
 @@ -18,7 +18,6 @@
  #include <linux/init.h>
  #ifdef CONFIG_XEN_PRIVILEGED_GUEST
@@ -433,52 +422,63 @@ Index: head-2008-10-21/arch/x86/kernel/genapic_xen_64.c
  #else
  #include <asm/apic.h>
  #endif
-@@ -34,7 +33,7 @@ static inline void __send_IPI_one(unsign
-       notify_remote_via_irq(irq);
- }
--void xen_send_IPI_shortcut(unsigned int shortcut, int vector, unsigned int dest)
-+void xen_send_IPI_shortcut(unsigned int shortcut, int vector)
- {
-       int cpu;
-@@ -91,12 +90,12 @@ static void xen_send_IPI_allbutself(int 
-        * thus we have to avoid sending IPIs in this case.
-        */
-       if (num_online_cpus() > 1)
--              xen_send_IPI_shortcut(APIC_DEST_ALLBUT, vector, APIC_DEST_LOGICAL);
-+              xen_send_IPI_shortcut(APIC_DEST_ALLBUT, vector);
+@@ -78,20 +77,6 @@ static const cpumask_t *xen_target_cpus(
+       return &cpu_online_map;
  }
  
- static void xen_send_IPI_all(int vector)
+-static void xen_vector_allocation_domain(int cpu, cpumask_t *retmask)
+-{
+-      cpus_clear(*retmask);
+-      cpu_set(cpu, *retmask);
+-}
+-
+-/*
+- * Set up the logical destination ID.
+- * Do nothing, not called now.
+- */
+-static void xen_init_apic_ldr(void)
+-{
+-}
+-
+ static void xen_send_IPI_mask(const cpumask_t *cpumask, int vector)
  {
--      xen_send_IPI_shortcut(APIC_DEST_ALLINC, vector, APIC_DEST_LOGICAL);
-+      xen_send_IPI_shortcut(APIC_DEST_ALLINC, vector);
+       xen_send_IPI_shortcut(APIC_DEST_ALLINC, cpumask, vector);
+@@ -118,17 +103,9 @@ static void xen_send_IPI_self(int vector
+       xen_send_IPI_shortcut(APIC_DEST_SELF, NULL, vector);
  }
  
- static void xen_send_IPI_mask(cpumask_t cpumask, int vector)
-@@ -126,7 +125,7 @@ static int xen_apic_id_registered(void)
- static unsigned int xen_cpu_mask_to_apicid(cpumask_t cpumask)
+-#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+-static int xen_apic_id_registered(void)
+-{
+-      /* better be set */
+-      return physid_isset(smp_processor_id(), phys_cpu_present_map);
+-}
+-#endif
+-
+ static unsigned int xen_cpu_mask_to_apicid(const cpumask_t *cpumask)
  {
--      return cpus_addr(cpumask)[0] & APIC_ALL_CPUS;
-+      return cpus_addr(cpumask)[0];
+-      return cpus_addr(*cpumask)[0] & APIC_ALL_CPUS;
++      return cpus_addr(*cpumask)[0];
  }
  
  static unsigned int phys_pkg_id(int index_msb)
-@@ -142,7 +141,7 @@ struct genapic apic_xen =  {
+@@ -144,13 +121,8 @@ struct genapic apic_xen =  {
  #ifdef CONFIG_XEN_PRIVILEGED_GUEST
        .int_delivery_mode = dest_LowestPrio,
  #endif
 -      .int_dest_mode = (APIC_DEST_LOGICAL != 0),
 +      .int_dest_mode = 1,
        .target_cpus = xen_target_cpus,
-       .vector_allocation_domain = xen_vector_allocation_domain,
- #ifdef CONFIG_XEN_PRIVILEGED_GUEST
-Index: head-2008-10-21/arch/x86/kernel/io_apic_32-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/io_apic_32-xen.c      2008-10-21 13:43:37.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/io_apic_32-xen.c   2008-10-21 13:44:08.000000000 +0200
+-      .vector_allocation_domain = xen_vector_allocation_domain,
+-#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+-      .apic_id_registered = xen_apic_id_registered,
+-#endif
+-      .init_apic_ldr = xen_init_apic_ldr,
+       .send_IPI_all = xen_send_IPI_all,
+       .send_IPI_allbutself = xen_send_IPI_allbutself,
+       .send_IPI_mask = xen_send_IPI_mask,
+--- sle11-2009-06-04.orig/arch/x86/kernel/io_apic_32-xen.c     2009-06-04 10:46:34.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/io_apic_32-xen.c  2009-06-04 10:47:37.000000000 +0200
 @@ -48,7 +48,6 @@
  #include <asm/hypertransport.h>
  
@@ -487,7 +487,7 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_32-xen.c
  
  #ifdef CONFIG_XEN
  #include <xen/interface/xen.h>
-@@ -63,10 +62,10 @@
+@@ -63,20 +62,20 @@
  unsigned long io_apic_irqs;
  
  #define clear_IO_APIC() ((void)0)
@@ -496,11 +496,13 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_32-xen.c
 +#else
  int (*ioapic_renumber_irq)(int ioapic, int irq);
  atomic_t irq_mis_count;
-+#endif /* CONFIG_XEN */
  
+-#ifndef CONFIG_XEN
  /* Where if anywhere is the i8259 connect in external int mode */
  static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
-@@ -74,7 +73,9 @@ static struct { int pin, apic; } ioapic_
+-#endif
++#endif /* CONFIG_XEN */
  static DEFINE_SPINLOCK(ioapic_lock);
  static DEFINE_SPINLOCK(vector_lock);
  
@@ -510,7 +512,7 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_32-xen.c
  
  /*
   *    Is the SiS APIC rmw bug present ?
-@@ -103,7 +104,9 @@ int mp_bus_id_to_type[MAX_MP_BUSSES];
+@@ -105,7 +104,9 @@ int mp_bus_id_to_type[MAX_MP_BUSSES];
  
  DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES);
  
@@ -520,7 +522,7 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_32-xen.c
  
  /*
   * Rough estimation of how many shared IRQs there are, can
-@@ -1171,11 +1174,13 @@ static int pin_2_irq(int idx, int apic, 
+@@ -1177,11 +1178,13 @@ static int pin_2_irq(int idx, int apic, 
                        irq += nr_ioapic_registers[i++];
                irq += pin;
  
@@ -534,7 +536,7 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_32-xen.c
        }
  
        /*
-@@ -2918,6 +2923,7 @@ int acpi_get_override_irq(int bus_irq, i
+@@ -2933,6 +2936,7 @@ int acpi_get_override_irq(int bus_irq, i
  
  #endif /* CONFIG_ACPI */
  
@@ -542,7 +544,7 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_32-xen.c
  static int __init parse_disable_timer_pin_1(char *arg)
  {
        disable_timer_pin_1 = 1;
-@@ -2931,6 +2937,7 @@ static int __init parse_enable_timer_pin
+@@ -2946,6 +2950,7 @@ static int __init parse_enable_timer_pin
        return 0;
  }
  early_param("enable_timer_pin_1", parse_enable_timer_pin_1);
@@ -550,10 +552,8 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_32-xen.c
  
  static int __init parse_noapic(char *arg)
  {
-Index: head-2008-10-21/arch/x86/kernel/io_apic_64-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/io_apic_64-xen.c      2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/io_apic_64-xen.c   2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/arch/x86/kernel/io_apic_64-xen.c     2009-06-04 10:46:34.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/io_apic_64-xen.c  2009-06-04 10:47:37.000000000 +0200
 @@ -78,10 +78,6 @@ char system_vectors[NR_VECTORS] = { [0 .
  
  int sis_apic_bug; /* not actually supported, dummy for compile */
@@ -576,7 +576,7 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_64-xen.c
  int timer_through_8259 __initdata;
  
  /* Where if anywhere is the i8259 connect in external int mode */
-@@ -485,6 +485,7 @@ static int __init parse_noapic(char *str
+@@ -487,6 +487,7 @@ static int __init parse_noapic(char *str
  }
  early_param("noapic", parse_noapic);
  
@@ -584,7 +584,7 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_64-xen.c
  /* Actually the next is obsolete, but keep it for paranoid reasons -AK */
  static int __init disable_timer_pin_setup(char *arg)
  {
-@@ -492,6 +493,7 @@ static int __init disable_timer_pin_setu
+@@ -494,6 +495,7 @@ static int __init disable_timer_pin_setu
        return 1;
  }
  __setup("disable_timer_pin_1", disable_timer_pin_setup);
@@ -592,7 +592,7 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_64-xen.c
  
  
  /*
-@@ -1814,10 +1816,6 @@ static inline void __init check_timer(vo
+@@ -1820,10 +1822,6 @@ static inline void __init check_timer(vo
  out:
        local_irq_restore(flags);
  }
@@ -603,7 +603,7 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_64-xen.c
  
  static int __init notimercheck(char *s)
  {
-@@ -1825,6 +1823,10 @@ static int __init notimercheck(char *s)
+@@ -1831,6 +1829,10 @@ static int __init notimercheck(char *s)
        return 1;
  }
  __setup("no_timer_check", notimercheck);
@@ -614,10 +614,8 @@ Index: head-2008-10-21/arch/x86/kernel/io_apic_64-xen.c
  
  /*
   *
-Index: head-2008-10-21/arch/x86/kernel/irq_32-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/irq_32-xen.c  2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/irq_32-xen.c       2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/arch/x86/kernel/irq_32-xen.c 2009-06-04 10:47:21.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/irq_32-xen.c      2009-06-04 10:47:37.000000000 +0200
 @@ -252,7 +252,9 @@ unsigned int do_IRQ(struct pt_regs *regs
   * Interrupt statistics:
   */
@@ -670,10 +668,8 @@ Index: head-2008-10-21/arch/x86/kernel/irq_32-xen.c
  }
  
  #ifdef CONFIG_HOTPLUG_CPU
-Index: head-2008-10-21/arch/x86/kernel/irq_64-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/irq_64-xen.c  2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/irq_64-xen.c       2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/arch/x86/kernel/irq_64-xen.c 2009-06-04 10:47:21.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/irq_64-xen.c      2009-06-04 10:47:37.000000000 +0200
 @@ -18,7 +18,9 @@
  #include <asm/idle.h>
  #include <asm/smp.h>
@@ -741,10 +737,8 @@ Index: head-2008-10-21/arch/x86/kernel/irq_64-xen.c
  }
  
  /*
-Index: head-2008-10-21/arch/x86/kernel/mpparse-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/mpparse-xen.c 2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/mpparse-xen.c      2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/arch/x86/kernel/mpparse-xen.c        2009-06-04 10:21:39.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/mpparse-xen.c     2009-06-04 10:47:37.000000000 +0200
 @@ -31,7 +31,6 @@
  
  #include <mach_apic.h>
@@ -753,7 +747,7 @@ Index: head-2008-10-21/arch/x86/kernel/mpparse-xen.c
  #include <mach_mpparse.h>
  #endif
  
-@@ -285,7 +284,9 @@ static int __init smp_check_mpc(struct m
+@@ -287,7 +286,9 @@ static int __init smp_check_mpc(struct m
  
        printk(KERN_INFO "MPTABLE: Product ID: %s\n", str);
  
@@ -763,7 +757,7 @@ Index: head-2008-10-21/arch/x86/kernel/mpparse-xen.c
  
        return 1;
  }
-@@ -313,9 +314,11 @@ static int __init smp_read_mpc(struct mp
+@@ -315,9 +316,11 @@ static int __init smp_read_mpc(struct mp
        } else
                mps_oem_check(mpc, oem, str);
  #endif
@@ -775,7 +769,7 @@ Index: head-2008-10-21/arch/x86/kernel/mpparse-xen.c
  
        if (early)
                return 1;
-@@ -546,10 +549,12 @@ static inline void __init construct_defa
+@@ -548,10 +551,12 @@ static inline void __init construct_defa
        int linttypes[2] = { mp_ExtINT, mp_NMI };
        int i;
  
@@ -788,7 +782,7 @@ Index: head-2008-10-21/arch/x86/kernel/mpparse-xen.c
  
        /*
         * 2 CPUs, numbered 0 & 1.
-@@ -625,10 +630,12 @@ static void __init __get_smp_config(unsi
+@@ -627,10 +632,12 @@ static void __init __get_smp_config(unsi
         */
        if (mpf->mpf_feature1 != 0) {
                if (early) {
@@ -801,11 +795,9 @@ Index: head-2008-10-21/arch/x86/kernel/mpparse-xen.c
                        return;
                }
  
-Index: head-2008-10-21/arch/x86/kernel/traps_64-xen.c
-===================================================================
---- head-2008-10-21.orig/arch/x86/kernel/traps_64-xen.c        2008-10-21 13:44:06.000000000 +0200
-+++ head-2008-10-21/arch/x86/kernel/traps_64-xen.c     2008-10-21 13:44:08.000000000 +0200
-@@ -1170,15 +1170,15 @@ asmlinkage void do_spurious_interrupt_bu
+--- sle11-2009-06-04.orig/arch/x86/kernel/traps_64-xen.c       2009-06-04 10:47:37.000000000 +0200
++++ sle11-2009-06-04/arch/x86/kernel/traps_64-xen.c    2009-06-04 10:47:37.000000000 +0200
+@@ -1174,15 +1174,15 @@ asmlinkage void do_spurious_interrupt_bu
  {
  }
  
@@ -823,10 +815,19 @@ Index: head-2008-10-21/arch/x86/kernel/traps_64-xen.c
  
  /*
   * 'math_state_restore()' saves the current math information in the
-Index: head-2008-10-21/include/asm-x86/apic.h
-===================================================================
---- head-2008-10-21.orig/include/asm-x86/apic.h        2008-10-21 13:25:32.000000000 +0200
-+++ head-2008-10-21/include/asm-x86/apic.h     2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/drivers/xen/core/smpboot.c   2009-06-04 10:47:28.000000000 +0200
++++ sle11-2009-06-04/drivers/xen/core/smpboot.c        2009-06-04 10:47:37.000000000 +0200
+@@ -346,7 +346,7 @@ void __init smp_prepare_cpus(unsigned in
+        * Here we can be sure that there is an IO-APIC in the system. Let's
+        * go and set it up:
+        */
+-      if (!skip_ioapic_setup && nr_ioapics)
++      if (cpu_has_apic && !skip_ioapic_setup && nr_ioapics)
+               setup_IO_APIC();
+ #endif
+ }
+--- sle11-2009-06-04.orig/include/asm-x86/apic.h       2009-06-04 10:18:34.000000000 +0200
++++ sle11-2009-06-04/include/asm-x86/apic.h    2009-06-04 10:47:37.000000000 +0200
 @@ -5,7 +5,9 @@
  #include <linux/delay.h>
  
@@ -845,7 +846,7 @@ Index: head-2008-10-21/include/asm-x86/apic.h
  extern int local_apic_timer_c2_ok;
  
  extern int ioapic_force;
-@@ -141,6 +144,7 @@ static inline void ack_APIC_irq(void)
+@@ -149,6 +152,7 @@ static inline void ack_APIC_irq(void)
        /* Docs say use 0 for future compatibility */
        apic_write(APIC_EOI, 0);
  }
@@ -853,10 +854,8 @@ Index: head-2008-10-21/include/asm-x86/apic.h
  
  extern int lapic_get_maxlvt(void);
  extern void clear_local_APIC(void);
-Index: head-2008-10-21/include/asm-x86/apicdef.h
-===================================================================
---- head-2008-10-21.orig/include/asm-x86/apicdef.h     2008-10-21 12:57:02.000000000 +0200
-+++ head-2008-10-21/include/asm-x86/apicdef.h  2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/include/asm-x86/apicdef.h    2009-06-04 10:17:48.000000000 +0200
++++ sle11-2009-06-04/include/asm-x86/apicdef.h 2009-06-04 10:47:37.000000000 +0200
 @@ -1,6 +1,8 @@
  #ifndef _ASM_X86_APICDEF_H
  #define _ASM_X86_APICDEF_H
@@ -901,10 +900,8 @@ Index: head-2008-10-21/include/asm-x86/apicdef.h
  #ifdef CONFIG_X86_32
   #define BAD_APICID 0xFFu
  #else
-Index: head-2008-10-21/include/asm-x86/ipi.h
-===================================================================
---- head-2008-10-21.orig/include/asm-x86/ipi.h 2008-10-21 12:57:02.000000000 +0200
-+++ head-2008-10-21/include/asm-x86/ipi.h      2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/include/asm-x86/ipi.h        2009-06-04 10:17:48.000000000 +0200
++++ sle11-2009-06-04/include/asm-x86/ipi.h     2009-06-04 10:47:37.000000000 +0200
 @@ -1,6 +1,8 @@
  #ifndef __ASM_IPI_H
  #define __ASM_IPI_H
@@ -914,17 +911,15 @@ Index: head-2008-10-21/include/asm-x86/ipi.h
  /*
   * Copyright 2004 James Cleverdon, IBM.
   * Subject to the GNU Public License, v.2
-@@ -135,4 +137,6 @@ static inline void send_IPI_mask_sequenc
+@@ -151,4 +153,6 @@ static inline void send_IPI_mask_allbuts
        local_irq_restore(flags);
  }
  
 +#endif /* CONFIG_XEN */
 +
  #endif /* __ASM_IPI_H */
-Index: head-2008-10-21/include/asm-x86/mach-xen/asm/fixmap_32.h
-===================================================================
---- head-2008-10-21.orig/include/asm-x86/mach-xen/asm/fixmap_32.h      2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/include/asm-x86/mach-xen/asm/fixmap_32.h   2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/include/asm-x86/mach-xen/asm/fixmap_32.h     2009-06-04 10:21:39.000000000 +0200
++++ sle11-2009-06-04/include/asm-x86/mach-xen/asm/fixmap_32.h  2009-06-04 10:47:37.000000000 +0200
 @@ -55,10 +55,10 @@ enum fixed_addresses {
        FIX_VDSO,
        FIX_DBGP_BASE,
@@ -937,10 +932,8 @@ Index: head-2008-10-21/include/asm-x86/mach-xen/asm/fixmap_32.h
  #ifdef CONFIG_X86_IO_APIC
        FIX_IO_APIC_BASE_0,
        FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1,
-Index: head-2008-10-21/include/asm-x86/mach-xen/asm/fixmap_64.h
-===================================================================
---- head-2008-10-21.orig/include/asm-x86/mach-xen/asm/fixmap_64.h      2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/include/asm-x86/mach-xen/asm/fixmap_64.h   2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/include/asm-x86/mach-xen/asm/fixmap_64.h     2009-06-04 10:21:39.000000000 +0200
++++ sle11-2009-06-04/include/asm-x86/mach-xen/asm/fixmap_64.h  2009-06-04 10:47:37.000000000 +0200
 @@ -13,7 +13,6 @@
  
  #include <linux/kernel.h>
@@ -961,10 +954,8 @@ Index: head-2008-10-21/include/asm-x86/mach-xen/asm/fixmap_64.h
        FIX_IO_APIC_BASE_0,
        FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS - 1,
  #endif
-Index: head-2008-10-21/include/asm-x86/mach-xen/asm/smp.h
-===================================================================
---- head-2008-10-21.orig/include/asm-x86/mach-xen/asm/smp.h    2008-10-21 13:30:34.000000000 +0200
-+++ head-2008-10-21/include/asm-x86/mach-xen/asm/smp.h 2008-10-21 13:44:08.000000000 +0200
+--- sle11-2009-06-04.orig/include/asm-x86/mach-xen/asm/smp.h   2009-06-04 10:46:32.000000000 +0200
++++ sle11-2009-06-04/include/asm-x86/mach-xen/asm/smp.h        2009-06-04 10:47:37.000000000 +0200
 @@ -16,7 +16,7 @@
  # endif
  #endif
@@ -983,15 +974,13 @@ Index: head-2008-10-21/include/asm-x86/mach-xen/asm/smp.h
  
  static inline int logical_smp_processor_id(void)
  {
-Index: head-2008-10-21/include/asm-x86/mach-xen/mach_apic.h
-===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ head-2008-10-21/include/asm-x86/mach-xen/mach_apic.h       2008-10-21 13:44:08.000000000 +0200
-@@ -0,0 +1,56 @@
++++ sle11-2009-06-04/include/asm-x86/mach-xen/mach_apic.h      2009-06-04 10:47:37.000000000 +0200
+@@ -0,0 +1,54 @@
 +#ifndef __ASM_MACH_APIC_H
 +#define __ASM_MACH_APIC_H
 +
-+#include <linux/cpumask.h>
++#include <asm/smp.h>
 +
 +#ifdef CONFIG_X86_64
 +
@@ -999,11 +988,9 @@ Index: head-2008-10-21/include/asm-x86/mach-xen/mach_apic.h
 +#define INT_DELIVERY_MODE (genapic->int_delivery_mode)
 +#define INT_DEST_MODE (genapic->int_dest_mode)
 +#define TARGET_CPUS     (genapic->target_cpus())
-+#define apic_id_registered (genapic->apic_id_registered)
-+#define init_apic_ldr (genapic->init_apic_ldr)
 +#define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)
 +#define phys_pkg_id   (genapic->phys_pkg_id)
-+#define vector_allocation_domain    (genapic->vector_allocation_domain)
++#define send_IPI_self (genapic->send_IPI_self)
 +extern void setup_apic_routing(void);
 +
 +#else