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