--- /dev/null
+From cebbert@redhat.com Tue Sep 30 16:10:41 2008
+From: Milan Broz <mbroz@redhat.com>
+Date: Wed, 3 Sep 2008 19:41:12 -0400
+Subject: ACPI: Fix thermal shutdowns
+To: stable@kernel.org
+Cc: Andi Kleen <ak@linux.intel.com>
+Message-ID: <20080903194112.79d41dbc@redhat.com>
+
+From: Milan Broz <mbroz@redhat.com>
+
+commit 9f497bcc695fb828da023d74ad3c966b1e58ad21 upstream
+
+ACPI: Fix thermal shutdowns
+
+Do not use unsigned int if there is test for negative number...
+
+See drivers/acpi/processor_perflib.c
+ static unsigned int ignore_ppc = -1;
+...
+ if (event == CPUFREQ_START && ignore_ppc <= 0) {
+ ignore_ppc = 0;
+...
+
+Signed-off-by: Milan Broz <mbroz@redhat.com>
+Signed-off-by: Andi Kleen <ak@linux.intel.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/processor_perflib.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/acpi/processor_perflib.c
++++ b/drivers/acpi/processor_perflib.c
+@@ -70,7 +70,7 @@ static DEFINE_MUTEX(performance_mutex);
+ * 0 -> cpufreq low level drivers initialized -> consider _PPC values
+ * 1 -> ignore _PPC totally -> forced by user through boot param
+ */
+-static unsigned int ignore_ppc = -1;
++static int ignore_ppc = -1;
+ module_param(ignore_ppc, uint, 0644);
+ MODULE_PARM_DESC(ignore_ppc, "If the frequency of your machine gets wrongly" \
+ "limited by BIOS, this should help");
--- /dev/null
+From khali@linux-fr.org Tue Sep 30 16:15:33 2008
+From: Sven Wegener <sven.wegener@stealer.net>
+Date: Sun, 28 Sep 2008 14:14:21 +0200
+Subject: i2c-dev: Return correct error code on class_create() failure
+To: stable@kernel.org
+Cc: Sven Wegener <sven.wegener@stealer.net>
+Message-ID: <20080928141421.2a53861e@hyperion.delvare>
+
+
+From: Sven Wegener <sven.wegener@stealer.net>
+
+In Linus' tree:
+http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commit;h=e74783ec3cb981211689bd2cfd3248f8dc48ec01
+
+We need to convert the error pointer from class_create(), else we'll return the
+successful return code from register_chrdev() on failure.
+
+Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/i2c/i2c-dev.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/i2c/i2c-dev.c
++++ b/drivers/i2c/i2c-dev.c
+@@ -581,8 +581,10 @@ static int __init i2c_dev_init(void)
+ goto out;
+
+ i2c_dev_class = class_create(THIS_MODULE, "i2c-dev");
+- if (IS_ERR(i2c_dev_class))
++ if (IS_ERR(i2c_dev_class)) {
++ res = PTR_ERR(i2c_dev_class);
+ goto out_unreg_chrdev;
++ }
+
+ res = i2c_add_driver(&i2cdev_driver);
+ if (res)
+x86-32-amd-c1e-force-timer-broadcast-late.patch
+acpi-fix-thermal-shutdowns.patch
+i2c-dev-return-correct-error-code-on-class_create-failure.patch
ixgbe-initialize-interrupt-throttle-rate.patch
drivers-mmc-card-block.c-fix-refcount-leak-in-mmc_block_open.patch
async_tx-fix-the-bug-in-async_tx_run_dependencies.patch
alsa-remove-unneeded-power_mutex-lock-in-snd_pcm_drop.patch
kvm-svm-fix-random-segfaults-with-npt-enabled.patch
kvm-svm-fix-guest-global-tlb-flushes-with-npt.patch
+x64-fpu-fix-possible-fpu-leakage-in-error-conditions.patch
--- /dev/null
+From suresh.b.siddha@intel.com Tue Sep 30 16:20:01 2008
+From: Suresh Siddha <suresh.b.siddha@intel.com>
+Date: Wed, 3 Sep 2008 11:57:06 -0700
+Subject: x64, fpu: fix possible FPU leakage in error conditions
+To: stable@kernel.org
+Cc: gregkh@suse.de
+Message-ID: <20080903185706.GG14481@linux-os.sc.intel.com>
+Content-Disposition: inline
+
+
+From: Suresh Siddha <suresh.b.siddha@intel.com>
+
+[Upstream commit: 6ffac1e90a17ea0aded5c581204397421eec91b6]
+
+On Thu, Jul 24, 2008 at 03:43:44PM -0700, Linus Torvalds wrote:
+> So how about this patch as a starting point? This is the RightThing(tm) to
+> do regardless, and if it then makes it easier to do some other cleanups,
+> we should do it first. What do you think?
+
+restore_fpu_checking() calls init_fpu() in error conditions.
+
+While this is wrong(as our main intention is to clear the fpu state of
+the thread), this was benign before commit 92d140e21f1 ("x86: fix taking
+DNA during 64bit sigreturn").
+
+Post commit 92d140e21f1, live FPU registers may not belong to this
+process at this error scenario.
+
+In the error condition for restore_fpu_checking() (especially during the
+64bit signal return), we are doing init_fpu(), which saves the live FPU
+register state (possibly belonging to some other process context) into
+the thread struct (through unlazy_fpu() in init_fpu()). This is wrong
+and can leak the FPU data.
+
+For the signal handler restore error condition in restore_i387(), clear
+the fpu state present in the thread struct(before ultimately sending a
+SIGSEGV for badframe).
+
+For the paranoid error condition check in math_state_restore(), send a
+SIGSEGV, if we fail to restore the state.
+
+Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+--- linux-2.6.26.2.orig/arch/x86/kernel/signal_64.c 2008-08-18 11:16:43.000000000 -0700
++++ linux-2.6.26.2/arch/x86/kernel/signal_64.c 2008-08-18 11:16:50.000000000 -0700
+@@ -104,7 +104,16 @@
+ clts();
+ task_thread_info(current)->status |= TS_USEDFPU;
+ }
+- return restore_fpu_checking((__force struct i387_fxsave_struct *)buf);
++ err = restore_fpu_checking((__force struct i387_fxsave_struct *)buf);
++ if (unlikely(err)) {
++ /*
++ * Encountered an error while doing the restore from the
++ * user buffer, clear the fpu state.
++ */
++ clear_fpu(tsk);
++ clear_used_math();
++ }
++ return err;
+ }
+
+ /*
+Index: linux-2.6.26.2/arch/x86/kernel/traps_64.c
+===================================================================
+--- linux-2.6.26.2.orig/arch/x86/kernel/traps_64.c 2008-08-06 09:19:01.000000000 -0700
++++ linux-2.6.26.2/arch/x86/kernel/traps_64.c 2008-08-18 11:17:43.000000000 -0700
+@@ -1141,7 +1141,14 @@
+ }
+
+ clts(); /* Allow maths ops (or we recurse) */
+- restore_fpu_checking(&me->thread.xstate->fxsave);
++ /*
++ * Paranoid restore. send a SIGSEGV if we fail to restore the state.
++ */
++ if (unlikely(restore_fpu_checking(&me->thread.xstate->fxsave))) {
++ stts();
++ force_sig(SIGSEGV, me);
++ return;
++ }
+ task_thread_info(me)->status |= TS_USEDFPU;
+ me->fpu_counter++;
+ }
+Index: linux-2.6.26.2/include/asm-x86/i387.h
+===================================================================
+--- linux-2.6.26.2.orig/include/asm-x86/i387.h 2008-08-18 11:16:43.000000000 -0700
++++ linux-2.6.26.2/include/asm-x86/i387.h 2008-08-18 11:16:50.000000000 -0700
+@@ -62,8 +62,6 @@
+ #else
+ : [fx] "cdaSDb" (fx), "m" (*fx), "0" (0));
+ #endif
+- if (unlikely(err))
+- init_fpu(current);
+ return err;
+ }
+
--- /dev/null
+From cebbert@redhat.com Tue Sep 30 16:21:43 2008
+From: Chuck Ebbert <cebbert@redhat.com>
+Date: Wed, 3 Sep 2008 19:34:59 -0400
+Subject: x86-32: AMD c1e force timer broadcast late
+To: stable@kernel.org
+Cc: linux-kernel@vger.kernel.org
+Message-ID: <20080903193459.67d9eb87@redhat.com>
+
+From: Chuck Ebbert <cebbert@redhat.com>
+
+This patch is not needed in 2.6.27 because it has new c1e-aware idle code.
+
+In kernel 2.6.26 the 32-bit x86 timers are started earlier than before.
+This breaks AMD c1e detection trying to force timer broadcast for the
+local apic timer. Copy the code from the 64-bit kernel to force timer
+broadcast late.
+
+Reference:
+http://bugzilla.kernel.org/show_bug.cgi?id=11427
+
+Signed-off-by: Chuck Ebbert <cebbert@redhat.com>
+Acked-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/apic_32.c | 25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+--- a/arch/x86/kernel/apic_32.c
++++ b/arch/x86/kernel/apic_32.c
+@@ -552,8 +552,31 @@ void __init setup_boot_APIC_clock(void)
+ setup_APIC_timer();
+ }
+
+-void __devinit setup_secondary_APIC_clock(void)
++/*
++ * AMD C1E enabled CPUs have a real nasty problem: Some BIOSes set the
++ * C1E flag only in the secondary CPU, so when we detect the wreckage
++ * we already have enabled the boot CPU local apic timer. Check, if
++ * disable_apic_timer is set and the DUMMY flag is cleared. If yes,
++ * set the DUMMY flag again and force the broadcast mode in the
++ * clockevents layer.
++ */
++static void __cpuinit check_boot_apic_timer_broadcast(void)
++{
++ if (!local_apic_timer_disabled ||
++ (lapic_clockevent.features & CLOCK_EVT_FEAT_DUMMY))
++ return;
++
++ lapic_clockevent.features |= CLOCK_EVT_FEAT_DUMMY;
++
++ local_irq_enable();
++ clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_FORCE,
++ &boot_cpu_physical_apicid);
++ local_irq_disable();
++}
++
++void __cpuinit setup_secondary_APIC_clock(void)
+ {
++ check_boot_apic_timer_broadcast();
+ setup_APIC_timer();
+ }
+