--- /dev/null
+From stable-bounces@linux.kernel.org Fri Dec 8 09:03:45 2006
+Date: Fri, 8 Dec 2006 11:58:15 -0500 (EST)
+From: Daniel Barkalow <barkalow@iabervon.org>
+To: stable@kernel.org
+Message-ID: <Pine.LNX.4.64.0612081147290.20138@iabervon.org>
+Cc: torvalds@osdl.org, gregkh@suse.de, jeff@garzik.org
+Subject: forcedeth: Disable INTx when enabling MSI in forcedeth
+
+At least some nforce cards continue to send legacy interrupts when MSI
+is enabled, and these interrupts are treated as unhandled by the
+kernel. This patch disables legacy interrupts explicitly when enabling
+MSI mode.
+
+The correct fix is to change the MSI infrastructure to disable legacy
+interrupts when enabling MSI, but this is potentially risky if the
+device isn't PCI-2.3 or is quirky, so the correct fix is going into
+mainline, while patches like this one go into -stable.
+
+Legend has it that it is most correct to disable legacy interrupts
+before enabling MSI, but the mainline patch does it in the other
+order, and this patch is "obviously" the same as mainline.
+
+Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+The general patch got into mainline last night, and this patch is clearly
+the same as that one, limited to the case of forcedeth (the pci_intx()
+calls are lifted from {enable,disable}_msi_mode to all of the indirect
+callers in forcedeth).
+
+ drivers/net/forcedeth.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- linux-2.6.18.5.orig/drivers/net/forcedeth.c
++++ linux-2.6.18.5/drivers/net/forcedeth.c
+@@ -2692,11 +2692,13 @@ static int nv_request_irq(struct net_dev
+ }
+ if (ret != 0 && np->msi_flags & NV_MSI_CAPABLE) {
+ if ((ret = pci_enable_msi(np->pci_dev)) == 0) {
++ pci_intx(np->pci_dev, 0);
+ np->msi_flags |= NV_MSI_ENABLED;
+ if ((!intr_test && request_irq(np->pci_dev->irq, &nv_nic_irq, IRQF_SHARED, dev->name, dev) != 0) ||
+ (intr_test && request_irq(np->pci_dev->irq, &nv_nic_irq_test, IRQF_SHARED, dev->name, dev) != 0)) {
+ printk(KERN_INFO "forcedeth: request_irq failed %d\n", ret);
+ pci_disable_msi(np->pci_dev);
++ pci_intx(np->pci_dev, 1);
+ np->msi_flags &= ~NV_MSI_ENABLED;
+ goto out_err;
+ }
+@@ -2739,6 +2741,7 @@ static void nv_free_irq(struct net_devic
+ free_irq(np->pci_dev->irq, dev);
+ if (np->msi_flags & NV_MSI_ENABLED) {
+ pci_disable_msi(np->pci_dev);
++ pci_intx(np->pci_dev, 1);
+ np->msi_flags &= ~NV_MSI_ENABLED;
+ }
+ }
--- /dev/null
+From stable-bounces@linux.kernel.org Fri Dec 8 02:41:46 2006
+Message-Id: <200612081035.kB8AZsUb016365@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: akpm@osdl.org
+Date: Fri, 08 Dec 2006 02:35:54 -0800
+Cc: akpm@osdl.org, takata@linux-m32r.org, stable@kernel.org
+Subject: m32r: make userspace headers platform-independent
+
+From: Hirokazu Takata <takata@linux-m32r.org>
+
+The m32r kernel 2.6.18-rc1 or after cause build errors of "unknown isa
+configuration" for userspace application programs, such as glibc, gdb, etc.
+
+This is because the recent kernel do not include linux/config.h not to expose
+kernel headers for userspace.
+
+To fix the above compile errors, this patch fixes two headers ptrace.h and
+sigcontext.h for m32r and makes them platform-independent.
+
+Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ arch/m32r/kernel/entry.S | 65 ++++++++++++++++++------------------------
+ include/asm-m32r/ptrace.h | 28 ++----------------
+ include/asm-m32r/sigcontext.h | 13 +-------
+ 3 files changed, 35 insertions(+), 71 deletions(-)
+
+--- linux-2.6.18.5.orig/arch/m32r/kernel/entry.S
++++ linux-2.6.18.5/arch/m32r/kernel/entry.S
+@@ -23,35 +23,35 @@
+ * updated in fork.c:copy_thread, signal.c:do_signal,
+ * ptrace.c and ptrace.h
+ *
+- * M32Rx/M32R2 M32R
+- * @(sp) - r4 ditto
+- * @(0x04,sp) - r5 ditto
+- * @(0x08,sp) - r6 ditto
+- * @(0x0c,sp) - *pt_regs ditto
+- * @(0x10,sp) - r0 ditto
+- * @(0x14,sp) - r1 ditto
+- * @(0x18,sp) - r2 ditto
+- * @(0x1c,sp) - r3 ditto
+- * @(0x20,sp) - r7 ditto
+- * @(0x24,sp) - r8 ditto
+- * @(0x28,sp) - r9 ditto
+- * @(0x2c,sp) - r10 ditto
+- * @(0x30,sp) - r11 ditto
+- * @(0x34,sp) - r12 ditto
+- * @(0x38,sp) - syscall_nr ditto
+- * @(0x3c,sp) - acc0h @(0x3c,sp) - acch
+- * @(0x40,sp) - acc0l @(0x40,sp) - accl
+- * @(0x44,sp) - acc1h @(0x44,sp) - dummy_acc1h
+- * @(0x48,sp) - acc1l @(0x48,sp) - dummy_acc1l
+- * @(0x4c,sp) - psw ditto
+- * @(0x50,sp) - bpc ditto
+- * @(0x54,sp) - bbpsw ditto
+- * @(0x58,sp) - bbpc ditto
+- * @(0x5c,sp) - spu (cr3) ditto
+- * @(0x60,sp) - fp (r13) ditto
+- * @(0x64,sp) - lr (r14) ditto
+- * @(0x68,sp) - spi (cr2) ditto
+- * @(0x6c,sp) - orig_r0 ditto
++ * M32R/M32Rx/M32R2
++ * @(sp) - r4
++ * @(0x04,sp) - r5
++ * @(0x08,sp) - r6
++ * @(0x0c,sp) - *pt_regs
++ * @(0x10,sp) - r0
++ * @(0x14,sp) - r1
++ * @(0x18,sp) - r2
++ * @(0x1c,sp) - r3
++ * @(0x20,sp) - r7
++ * @(0x24,sp) - r8
++ * @(0x28,sp) - r9
++ * @(0x2c,sp) - r10
++ * @(0x30,sp) - r11
++ * @(0x34,sp) - r12
++ * @(0x38,sp) - syscall_nr
++ * @(0x3c,sp) - acc0h
++ * @(0x40,sp) - acc0l
++ * @(0x44,sp) - acc1h ; ISA_DSP_LEVEL2 only
++ * @(0x48,sp) - acc1l ; ISA_DSP_LEVEL2 only
++ * @(0x4c,sp) - psw
++ * @(0x50,sp) - bpc
++ * @(0x54,sp) - bbpsw
++ * @(0x58,sp) - bbpc
++ * @(0x5c,sp) - spu (cr3)
++ * @(0x60,sp) - fp (r13)
++ * @(0x64,sp) - lr (r14)
++ * @(0x68,sp) - spi (cr2)
++ * @(0x6c,sp) - orig_r0
+ */
+
+ #include <linux/linkage.h>
+@@ -95,17 +95,10 @@
+ #define R11(reg) @(0x30,reg)
+ #define R12(reg) @(0x34,reg)
+ #define SYSCALL_NR(reg) @(0x38,reg)
+-#if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2)
+ #define ACC0H(reg) @(0x3C,reg)
+ #define ACC0L(reg) @(0x40,reg)
+ #define ACC1H(reg) @(0x44,reg)
+ #define ACC1L(reg) @(0x48,reg)
+-#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
+-#define ACCH(reg) @(0x3C,reg)
+-#define ACCL(reg) @(0x40,reg)
+-#else
+-#error unknown isa configuration
+-#endif
+ #define PSW(reg) @(0x4C,reg)
+ #define BPC(reg) @(0x50,reg)
+ #define BBPSW(reg) @(0x54,reg)
+--- linux-2.6.18.5.orig/include/asm-m32r/ptrace.h
++++ linux-2.6.18.5/include/asm-m32r/ptrace.h
+@@ -33,21 +33,10 @@
+ #define PT_R15 PT_SP
+
+ /* processor status and miscellaneous context registers. */
+-#if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2)
+ #define PT_ACC0H 15
+ #define PT_ACC0L 16
+-#define PT_ACC1H 17
+-#define PT_ACC1L 18
+-#define PT_ACCH PT_ACC0H
+-#define PT_ACCL PT_ACC0L
+-#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
+-#define PT_ACCH 15
+-#define PT_ACCL 16
+-#define PT_DUMMY_ACC1H 17
+-#define PT_DUMMY_ACC1L 18
+-#else
+-#error unknown isa conifiguration
+-#endif
++#define PT_ACC1H 17 /* ISA_DSP_LEVEL2 only */
++#define PT_ACC1L 18 /* ISA_DSP_LEVEL2 only */
+ #define PT_PSW 19
+ #define PT_BPC 20
+ #define PT_BBPSW 21
+@@ -103,19 +92,10 @@ struct pt_regs {
+ long syscall_nr;
+
+ /* Saved main processor status and miscellaneous context registers. */
+-#if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2)
+ unsigned long acc0h;
+ unsigned long acc0l;
+- unsigned long acc1h;
+- unsigned long acc1l;
+-#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
+- unsigned long acch;
+- unsigned long accl;
+- unsigned long dummy_acc1h;
+- unsigned long dummy_acc1l;
+-#else
+-#error unknown isa configuration
+-#endif
++ unsigned long acc1h; /* ISA_DSP_LEVEL2 only */
++ unsigned long acc1l; /* ISA_DSP_LEVEL2 only */
+ unsigned long psw;
+ unsigned long bpc; /* saved PC for TRAP syscalls */
+ unsigned long bbpsw;
+--- linux-2.6.18.5.orig/include/asm-m32r/sigcontext.h
++++ linux-2.6.18.5/include/asm-m32r/sigcontext.h
+@@ -23,19 +23,10 @@ struct sigcontext {
+ unsigned long sc_r12;
+
+ /* Saved main processor status and miscellaneous context registers. */
+-#if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2)
+ unsigned long sc_acc0h;
+ unsigned long sc_acc0l;
+- unsigned long sc_acc1h;
+- unsigned long sc_acc1l;
+-#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
+- unsigned long sc_acch;
+- unsigned long sc_accl;
+- unsigned long sc_dummy_acc1h;
+- unsigned long sc_dummy_acc1l;
+-#else
+-#error unknown isa configuration
+-#endif
++ unsigned long sc_acc1h; /* ISA_DSP_LEVEL2 only */
++ unsigned long sc_acc1l; /* ISA_DSP_LEVEL2 only */
+ unsigned long sc_psw;
+ unsigned long sc_bpc; /* saved PC for TRAP syscalls */
+ unsigned long sc_bbpsw;
v4l-fix-broken-tuner_lg_ntsc_tape-radio-support.patch
ieee1394-ohci1394-add-ppc_pmac-platform-code-to-driver-probe.patch
arm-add-sys_-at-syscalls.patch
+skip-data-conversion-in-compat_sys_mount-when-data_page-is-null.patch
+softirq-remove-bug_ons-which-can-incorrectly-trigger.patch
+m32r-make-userspace-headers-platform-independent.patch
+forcedeth-disable-intx-when-enabling-msi-in-forcedeth.patch
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Dec 6 20:37:02 2006
+Message-Id: <200612070431.kB74Vaup028758@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: akpm@osdl.org
+Date: Wed, 06 Dec 2006 20:31:35 -0800
+Cc: akpm@osdl.org, amirkin@openvz.org, stable@kernel.org
+Subject: skip data conversion in compat_sys_mount when data_page is NULL
+
+From: Andrey Mirkin <amirkin@openvz.org>
+
+OpenVZ Linux kernel team has found a problem with mounting in compat mode.
+
+Simple command "mount -t smbfs ..." on Fedora Core 5 distro in 32-bit mode
+leads to oops:
+
+Unable to handle kernel NULL pointer dereference at 0000000000000000 RIP:
+[<ffffffff802bc7c6>] compat_sys_mount+0xd6/0x290
+PGD 34d48067 PUD 34d03067 PMD 0
+Oops: 0000 [1] SMP
+CPU: 0
+Modules linked in: iptable_nat simfs smbfs ip_nat ip_conntrack vzdquota
+parport_pc lp parport 8021q bridge llc vznetdev vzmon nfs lockd sunrpc vzdev
+iptable_filter af_packet xt_length ipt_ttl xt_tcpmss ipt_TCPMSS
+iptable_mangle xt_limit ipt_tos ipt_REJECT ip_tables x_tables thermal
+processor fan button battery asus_acpi ac uhci_hcd ehci_hcd usbcore i2c_i801
+i2c_core e100 mii floppy ide_cd cdrom
+Pid: 14656, comm: mount
+RIP: 0060:[<ffffffff802bc7c6>] [<ffffffff802bc7c6>]
+compat_sys_mount+0xd6/0x290
+RSP: 0000:ffff810034d31f38 EFLAGS: 00010292
+RAX: 000000000000002c RBX: 0000000000000000 RCX: 0000000000000000
+RDX: ffff810034c86bc0 RSI: 0000000000000096 RDI: ffffffff8061fc90
+RBP: ffff810034d31f78 R08: 0000000000000000 R09: 000000000000000d
+R10: ffff810034d31e58 R11: 0000000000000001 R12: ffff810039dc3000
+R13: 000000000805ea48 R14: 0000000000000000 R15: 00000000c0ed0000
+FS: 0000000000000000(0000) GS:ffffffff80749000(0033) knlGS:00000000b7d556b0
+CS: 0060 DS: 007b ES: 007b CR0: 000000008005003b
+CR2: 0000000000000000 CR3: 0000000034d43000 CR4: 00000000000006e0
+Process mount (pid: 14656, veid=300, threadinfo ffff810034d30000, task
+ffff810034c86bc0)
+Stack: 0000000000000000 ffff810034dd0000 ffff810034e4a000 000000000805ea48
+ 0000000000000000 0000000000000000 0000000000000000 0000000000000000
+ 000000000805ea48 ffffffff8021e64e 0000000000000000 0000000000000000
+Call Trace:
+ [<ffffffff8021e64e>] ia32_sysret+0x0/0xa
+
+Code: 83 3b 06 0f 85 41 01 00 00 0f b7 43 0c 89 43 14 0f b7 43 0a
+RIP [<ffffffff802bc7c6>] compat_sys_mount+0xd6/0x290
+ RSP <ffff810034d31f38>
+CR2: 0000000000000000
+
+The problem is that data_page pointer can be NULL, so we should skip data
+conversion in this case.
+
+Signed-off-by: Andrey Mirkin <amirkin@openvz.org>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ fs/compat.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.18.5.orig/fs/compat.c
++++ linux-2.6.18.5/fs/compat.c
+@@ -873,7 +873,7 @@ asmlinkage long compat_sys_mount(char __
+
+ retval = -EINVAL;
+
+- if (type_page) {
++ if (type_page && data_page) {
+ if (!strcmp((char *)type_page, SMBFS_NAME)) {
+ do_smb_super_data_conv((void *)data_page);
+ } else if (!strcmp((char *)type_page, NCPFS_NAME)) {
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Dec 6 20:45:28 2006
+Message-Id: <200612070439.kB74ddJq030058@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: akpm@osdl.org
+Date: Wed, 06 Dec 2006 20:39:39 -0800
+Cc: akpm@osdl.org, zach@vmware.com, mingo@elte.hu, stable@kernel.org, caglar@pardus.org.tr
+Subject: softirq: remove BUG_ONs which can incorrectly trigger
+
+From: Zachary Amsden <zach@vmware.com>
+
+It is possible to have tasklets get scheduled before softirqd has had a chance
+to spawn on all CPUs. This is totally harmless; after success during action
+CPU_UP_PREPARE, action CPU_ONLINE will be called, which immediately wakes
+softirqd on the appropriate CPU to process the already pending tasklets. So
+there is no danger of having a missed wakeup for any tasklets that were
+already pending.
+
+In particular, i386 is affected by this during startup, and is visible when
+using a very large initrd; during the time it takes for the initrd to be
+decompressed, a timer IRQ can come in and schedule RCU callbacks. It is also
+possible that resending of a hardware IRQ via a softirq triggers the same bug.
+
+Because of different timing conditions, this shows up in all emulators and
+virtual machines tested, including Xen, VMware, Virtual PC, and Qemu. It is
+also possible to trigger on native hardware with a large enough initrd,
+although I don't have a reliable case demonstrating that.
+
+Signed-off-by: Zachary Amsden <zach@vmware.com>
+Cc: <caglar@pardus.org.tr>
+Cc: Ingo Molnar <mingo@elte.hu>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ kernel/softirq.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+--- linux-2.6.18.5.orig/kernel/softirq.c
++++ linux-2.6.18.5/kernel/softirq.c
+@@ -574,8 +574,6 @@ static int __cpuinit cpu_callback(struct
+
+ switch (action) {
+ case CPU_UP_PREPARE:
+- BUG_ON(per_cpu(tasklet_vec, hotcpu).list);
+- BUG_ON(per_cpu(tasklet_hi_vec, hotcpu).list);
+ p = kthread_create(ksoftirqd, hcpu, "ksoftirqd/%d", hotcpu);
+ if (IS_ERR(p)) {
+ printk("ksoftirqd for %i failed\n", hotcpu);