Patches contributed by Eötvös Lorand University


commit 4434e5156409eb3ec98f5ad7f0a0c07ebafe970d
Merge: 2b8f836fb196 694593e3374a
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 13:22:13 2009 +0100

    Merge branches 'sched/cleanups', 'sched/urgent' and 'linus' into sched/core

commit 0c489c47d45ecac21059567c163f92138b2fbaa2
Merge: 8e818179eb9e f3dfd2656deb
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 13:03:29 2009 +0100

    Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/perfcounters into perfcounters/core

commit 8e818179eb9e8f9e44d8410dd2a25077d026a08e
Merge: 742bd95ba96e ecc25fbd6b9e
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 13:02:23 2009 +0100

    Merge branch 'x86/core' into perfcounters/core
    
    Conflicts:
            arch/x86/kernel/apic/apic.c
            arch/x86/kernel/irqinit_32.c
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --cc arch/x86/kernel/apic/apic.c
index d1bf032ba26f,f9cecdfd05c5..4732768c5348
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@@ -34,8 -34,6 +34,7 @@@
  #include <linux/smp.h>
  #include <linux/mm.h>
  
 +#include <asm/perf_counter.h>
- #include <asm/arch_hooks.h>
  #include <asm/pgalloc.h>
  #include <asm/atomic.h>
  #include <asm/mpspec.h>
diff --cc arch/x86/kernel/irqinit_32.c
index 520e6c1c5d22,50b8c3a3006c..f3e11cb295c4
--- a/arch/x86/kernel/irqinit_32.c
+++ b/arch/x86/kernel/irqinit_32.c
@@@ -163,40 -178,12 +163,40 @@@ static void __init apic_intr_init(void
  	/* IPI vectors for APIC spurious and error interrupts */
  	alloc_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt);
  	alloc_intr_gate(ERROR_APIC_VECTOR, error_interrupt);
 -#endif
 +# ifdef CONFIG_PERF_COUNTERS
 +	alloc_intr_gate(LOCAL_PERF_VECTOR, perf_counter_interrupt);
 +# endif
  
 -#if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86_MCE_P4THERMAL)
 +# ifdef CONFIG_X86_MCE_P4THERMAL
  	/* thermal monitor LVT interrupt */
  	alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt);
 +# endif
  #endif
 +}
 +
 +/* Overridden in paravirt.c */
 +void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ")));
 +
 +void __init native_init_IRQ(void)
 +{
 +	int i;
 +
- 	/* all the set up before the call gates are initialised */
- 	pre_intr_init_hook();
++	/* Execute any quirks before the call gates are initialised: */
++	x86_quirk_pre_intr_init();
 +
 +	apic_intr_init();
 +
 +	/*
 +	 * Cover the whole vector space, no vector can escape
 +	 * us. (some of these will be overridden and become
 +	 * 'special' SMP interrupts)
 +	 */
 +	for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {
 +		int vector = FIRST_EXTERNAL_VECTOR + i;
 +		/* SYSCALL_VECTOR was reserved in trap_init. */
 +		if (!test_bit(vector, used_vectors))
 +			set_intr_gate(vector, interrupt[i]);
 +	}
  
  	if (!acpi_ioapic)
  		setup_irq(2, &irq2);

commit 0917c01f8e793f57a53cf886533d4c75c67f6e89
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 12:47:40 2009 +0100

    x86: remove update_apic from x86_quirks, fix
    
    Impact: build fix
    
    wakeup_secondary_cpu_via_init(), the default platform method for
    booting a secondary CPU, is always used on UP due to probe_32.c,
    if CONFIG_X86_LOCAL_APIC is enabled but SMP is off.
    
    So provide a UP wrapper inline as well.
    
    Cc: Yinghai Lu <yinghai@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 24e21273e30b..0fbf6f1520fa 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -331,10 +331,27 @@ struct apic {
 	u32 (*safe_wait_icr_idle)(void);
 };
 
+/*
+ * Pointer to the local APIC driver in use on this system (there's
+ * always just one such driver in use - the kernel decides via an
+ * early probing process which one it picks - and then sticks to it):
+ */
 extern struct apic *apic;
+
+/*
+ * APIC functionality to boot other CPUs - only used on SMP:
+ */
+#ifdef CONFIG_SMP
 extern atomic_t init_deasserted;
 extern int wakeup_secondary_cpu_via_nmi(int apicid, unsigned long start_eip);
 extern int wakeup_secondary_cpu_via_init(int apicid, unsigned long start_eip);
+#else
+static inline int
+wakeup_secondary_cpu_via_init(int apicid, unsigned long start_eip)
+{
+	return 0;
+}
+#endif
 
 static inline u32 apic_read(u32 reg)
 {

commit ecc25fbd6b9e07b33895c61ddf84006b00f55d99
Merge: 801c0be81454 b5f26d05565d 15d4fcd61598 63823126c221 34754b69a6f8 694593e3374a
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 06:31:32 2009 +0100

    Merge branches 'x86/apic', 'x86/defconfig', 'x86/memtest', 'x86/mm' and 'linus' into x86/core

diff --cc arch/x86/configs/i386_defconfig
index 5c023f6f652c,5c023f6f652c,c2cae417fab8,5c023f6f652c,096dd5359cd9,edba00d98ac3..235b81d0f6f2
--- a/arch/x86/configs/i386_defconfig
+++ b/arch/x86/configs/i386_defconfig
@@@@@@@ -1,7 -1,7 -1,7 -1,7 -1,7 -1,7 +1,7 @@@@@@@
      #
      # Automatically generated make config: don't edit
     -# Linux kernel version: 2.6.27-rc5
     -# Wed Sep  3 17:23:09 2008
     +# Linux kernel version: 2.6.29-rc4
-- -- # Thu Feb 12 12:57:57 2009
++ +++# Tue Feb 24 15:50:58 2009
      #
      # CONFIG_64BIT is not set
      CONFIG_X86_32=y
@@@@@@@ -193,10 -193,10 -193,12 -193,10 -193,11 -186,11 +193,10 @@@@@@@ CONFIG_NO_HZ=
      CONFIG_HIGH_RES_TIMERS=y
      CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
      CONFIG_SMP=y
     +CONFIG_SPARSE_IRQ=y
      CONFIG_X86_FIND_SMP_CONFIG=y
      CONFIG_X86_MPPARSE=y
  -  -CONFIG_X86_PC=y
      # CONFIG_X86_ELAN is not set
  - --# CONFIG_X86_VOYAGER is not set
      # CONFIG_X86_GENERICARCH is not set
      # CONFIG_X86_VSMP is not set
      # CONFIG_X86_RDC321X is not set
@@@@@@@ -265,8 -265,8 -267,10 -265,8 -266,8 -250,7 +265,10 @@@@@@@ CONFIG_PREEMPT_VOLUNTARY=
      # CONFIG_PREEMPT is not set
      CONFIG_X86_LOCAL_APIC=y
      CONFIG_X86_IO_APIC=y
     -# CONFIG_X86_MCE is not set
     +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-- -- # CONFIG_X86_MCE is not set
++ +++CONFIG_X86_MCE=y
++ +++CONFIG_X86_MCE_NONFATAL=y
++ +++CONFIG_X86_MCE_P4THERMAL=y
      CONFIG_VM86=y
      # CONFIG_TOSHIBA is not set
      # CONFIG_I8K is not set
diff --cc arch/x86/configs/x86_64_defconfig
index 4157cc4a2bde,4157cc4a2bde,9fd7d156a129,4157cc4a2bde,2efb5d5063ff,322dd2748fc9..9fe5d212ab4c
--- a/arch/x86/configs/x86_64_defconfig
+++ b/arch/x86/configs/x86_64_defconfig
@@@@@@@ -1,7 -1,7 -1,7 -1,7 -1,7 -1,7 +1,7 @@@@@@@
      #
      # Automatically generated make config: don't edit
     -# Linux kernel version: 2.6.27-rc5
     -# Wed Sep  3 17:13:39 2008
     +# Linux kernel version: 2.6.29-rc4
-- -- # Thu Feb 12 12:57:29 2009
++ +++# Tue Feb 24 15:44:16 2009
      #
      CONFIG_64BIT=y
      # CONFIG_X86_32 is not set
@@@@@@@ -194,14 -194,14 -194,16 -194,14 -194,15 -185,13 +194,14 @@@@@@@ CONFIG_NO_HZ=
      CONFIG_HIGH_RES_TIMERS=y
      CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
      CONFIG_SMP=y
     +CONFIG_SPARSE_IRQ=y
     +# CONFIG_NUMA_MIGRATE_IRQ_DESC is not set
      CONFIG_X86_FIND_SMP_CONFIG=y
      CONFIG_X86_MPPARSE=y
  -  -CONFIG_X86_PC=y
      # CONFIG_X86_ELAN is not set
  - --# CONFIG_X86_VOYAGER is not set
      # CONFIG_X86_GENERICARCH is not set
      # CONFIG_X86_VSMP is not set
     +CONFIG_SCHED_OMIT_FRAME_POINTER=y
      # CONFIG_PARAVIRT_GUEST is not set
      # CONFIG_MEMTEST is not set
      # CONFIG_M386 is not set
@@@@@@@ -265,12 -265,12 -267,14 -265,12 -266,12 -247,9 +265,14 @@@@@@@ CONFIG_PREEMPT_VOLUNTARY=
      # CONFIG_PREEMPT is not set
      CONFIG_X86_LOCAL_APIC=y
      CONFIG_X86_IO_APIC=y
     -# CONFIG_X86_MCE is not set
     +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-- -- # CONFIG_X86_MCE is not set
++ +++CONFIG_X86_MCE=y
++ +++CONFIG_X86_MCE_INTEL=y
++ +++CONFIG_X86_MCE_AMD=y
      # CONFIG_I8K is not set
      CONFIG_MICROCODE=y
     +CONFIG_MICROCODE_INTEL=y
     +CONFIG_MICROCODE_AMD=y
      CONFIG_MICROCODE_OLD_INTERFACE=y
      CONFIG_X86_MSR=y
      CONFIG_X86_CPUID=y
diff --cc drivers/gpu/drm/i915/i915_gem.c
index 25b337438ca7,ac534c9a2f81,818576654092,25b337438ca7,6b209db8370d,28b726d07a0c..e9882d0c2473
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@@@@@@ -3139,31 -3126,27 -3107,6 -3139,31 -3107,6 -3142,31 +3142,31 @@@@@@@ i915_gem_init_hws(struct drm_device *de
      	return 0;
      }
      
  + + static void
  + + i915_gem_cleanup_hws(struct drm_device *dev)
  + + {
  + + 	drm_i915_private_t *dev_priv = dev->dev_private;
 -    	struct drm_gem_object *obj = dev_priv->hws_obj;
 -    	struct drm_i915_gem_object *obj_priv = obj->driver_private;
 ++ + 	struct drm_gem_object *obj;
 ++ + 	struct drm_i915_gem_object *obj_priv;
  + + 
  + + 	if (dev_priv->hws_obj == NULL)
  + + 		return;
  + + 
 ++ + 	obj = dev_priv->hws_obj;
 ++ + 	obj_priv = obj->driver_private;
 ++ + 
  + + 	kunmap(obj_priv->page_list[0]);
  + + 	i915_gem_object_unpin(obj);
  + + 	drm_gem_object_unreference(obj);
  + + 	dev_priv->hws_obj = NULL;
 ++ + 
  + + 	memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map));
  + + 	dev_priv->hw_status_page = NULL;
  + + 
  + + 	/* Write high address into HWS_PGA when disabling. */
  + + 	I915_WRITE(HWS_PGA, 0x1ffff000);
  + + }
  + + 
      int
      i915_gem_init_ringbuffer(struct drm_device *dev)
      {

commit 801c0be81454901e02c49abe12929c67e7d1cb55
Merge: 13b2eda64d14 13093cb0e590
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 06:31:23 2009 +0100

    Merge branches 'x86/urgent' and 'x86/pat' into x86/core
    
    Conflicts:
            arch/x86/include/asm/pat.h

diff --cc arch/x86/include/asm/pat.h
index 9709fdff6615,abb3c29fc9d5..b0e70056838e
--- a/arch/x86/include/asm/pat.h
+++ b/arch/x86/include/asm/pat.h
@@@ -15,4 -17,9 +15,7 @@@ extern int reserve_memtype(u64 start, u
  		unsigned long req_type, unsigned long *ret_type);
  extern int free_memtype(u64 start, u64 end);
  
 -extern void pat_disable(char *reason);
 -
+ extern int kernel_map_sync_memtype(u64 base, unsigned long size,
+ 		unsigned long flag);
+ 
  #endif /* _ASM_X86_PAT_H */

commit 13b2eda64d14d0a0c15c092664c7351ea58ea851
Merge: a852cbfaaf81 55d808567186
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 06:30:42 2009 +0100

    Merge branch 'x86/urgent' into x86/core
    
    Conflicts:
            arch/x86/mach-voyager/voyager_smp.c

commit 0093b108a6853d8398e1acf9021bcbd4666f4594
Merge: d2b026150660 e317603694bf
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 04:22:20 2009 +0100

    Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu

commit f4abfb8d0da70e436013e5799338357e1e6a0832
Merge: e36b1e136aa8 3cdfdf91fcc7
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 03:48:44 2009 +0100

    Merge branch 'tip/tracing/ftrace' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace

commit e36b1e136aa8f8c42fa6b96848c9c6bcaf2c269c
Merge: d7350c3f4569 2d542cf34264 694593e3374a
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Feb 26 03:47:27 2009 +0100

    Merge branches 'tracing/ftrace', 'tracing/hw-branch-tracing' and 'linus' into tracing/core