--- /dev/null
+From stable-bounces@linux.kernel.org Wed Dec 6 20:37:11 2006
+Message-Id: <200612070431.kB74VVj5028746@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: akpm@osdl.org
+Date: Wed, 06 Dec 2006 20:31:30 -0800
+Cc: akpm@osdl.org, mingo@elte.hu, rdunlap@xenotime.net, ak@suse.de, stable@kernel.org
+Subject: add bottom_half.h
+
+From: Andrew Morton <akpm@osdl.org>
+
+With CONFIG_SMP=n:
+
+drivers/input/ff-memless.c:384: warning: implicit declaration of function 'local_bh_disable'
+drivers/input/ff-memless.c:393: warning: implicit declaration of function 'local_bh_enable'
+
+Really linux/spinlock.h should include linux/interrupt.h. But interrupt.h
+includes sched.h which will need spinlock.h.
+
+So the patch breaks the _bh declarations out into a separate header and
+includes it in bothj interrupt.h and spinlock.h.
+
+Cc: "Randy.Dunlap" <rdunlap@xenotime.net>
+Cc: Andi Kleen <ak@suse.de>
+Cc: <stable@kernel.org>
+Cc: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ include/linux/bottom_half.h | 5 +++++
+ include/linux/interrupt.h | 7 +------
+ include/linux/spinlock.h | 1 +
+ 3 files changed, 7 insertions(+), 6 deletions(-)
+
+--- /dev/null
++++ linux-2.6.19/include/linux/bottom_half.h
+@@ -0,0 +1,5 @@
++extern void local_bh_disable(void);
++extern void __local_bh_enable(void);
++extern void _local_bh_enable(void);
++extern void local_bh_enable(void);
++extern void local_bh_enable_ip(unsigned long ip);
+--- linux-2.6.19.orig/include/linux/interrupt.h
++++ linux-2.6.19/include/linux/interrupt.h
+@@ -11,6 +11,7 @@
+ #include <linux/hardirq.h>
+ #include <linux/sched.h>
+ #include <linux/irqflags.h>
++#include <linux/bottom_half.h>
+ #include <asm/atomic.h>
+ #include <asm/ptrace.h>
+ #include <asm/system.h>
+@@ -217,12 +218,6 @@ static inline void __deprecated save_and
+ #define save_and_cli(x) save_and_cli(&x)
+ #endif /* CONFIG_SMP */
+
+-extern void local_bh_disable(void);
+-extern void __local_bh_enable(void);
+-extern void _local_bh_enable(void);
+-extern void local_bh_enable(void);
+-extern void local_bh_enable_ip(unsigned long ip);
+-
+ /* PLEASE, avoid to allocate new softirqs, if you need not _really_ high
+ frequency threaded job scheduling. For almost all the purposes
+ tasklets are more than enough. F.e. all serial device BHs et
+--- linux-2.6.19.orig/include/linux/spinlock.h
++++ linux-2.6.19/include/linux/spinlock.h
+@@ -52,6 +52,7 @@
+ #include <linux/thread_info.h>
+ #include <linux/kernel.h>
+ #include <linux/stringify.h>
++#include <linux/bottom_half.h>
+
+ #include <asm/system.h>
+
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Dec 6 20:45:03 2006
+Message-Id: <200612070439.kB74dcGc030054@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: akpm@osdl.org
+Date: Wed, 06 Dec 2006 20:39:38 -0800
+Cc: akpm@osdl.org, jkosina@suse.cz, stable@kernel.org, raven@themaw.net
+Subject: autofs: fix error code path in autofs_fill_sb()
+
+From: Jiri Kosina <jkosina@suse.cz>
+
+When kernel is compiled with old version of autofs (CONFIG_AUTOFS_FS), and
+new (observed at least with 5.x.x) automount deamon is started, kernel
+correctly reports incompatible version of kernel and userland daemon, but
+then screws things up instead of correct handling of the error:
+
+ autofs: kernel does not match daemon version
+ =====================================
+ [ BUG: bad unlock balance detected! ]
+ -------------------------------------
+ automount/4199 is trying to release lock (&type->s_umount_key) at:
+ [<c0163b9e>] get_sb_nodev+0x76/0xa4
+ but there are no more locks to release!
+
+ other info that might help us debug this:
+ no locks held by automount/4199.
+
+ stack backtrace:
+ [<c0103b15>] dump_trace+0x68/0x1b2
+ [<c0103c77>] show_trace_log_lvl+0x18/0x2c
+ [<c01041db>] show_trace+0xf/0x11
+ [<c010424d>] dump_stack+0x12/0x14
+ [<c012e02c>] print_unlock_inbalance_bug+0xe7/0xf3
+ [<c012fd4f>] lock_release+0x8d/0x164
+ [<c012b452>] up_write+0x14/0x27
+ [<c0163b9e>] get_sb_nodev+0x76/0xa4
+ [<c0163689>] vfs_kern_mount+0x83/0xf6
+ [<c016373e>] do_kern_mount+0x2d/0x3e
+ [<c017513f>] do_mount+0x607/0x67a
+ [<c0175224>] sys_mount+0x72/0xa4
+ [<c0102b96>] sysenter_past_esp+0x5f/0x99
+ DWARF2 unwinder stuck at sysenter_past_esp+0x5f/0x99
+ Leftover inexact backtrace:
+ =======================
+
+and then deadlock comes.
+
+The problem: autofs_fill_super() returns EINVAL to get_sb_nodev(), but
+before that, it calls kill_anon_super() to destroy the superblock which
+won't be needed. This is however way too soon to call kill_anon_super(),
+because get_sb_nodev() has to perform its own cleanup of the superblock
+first (deactivate_super(), etc.). The correct time to call
+kill_anon_super() is in the autofs_kill_sb() callback, which is called by
+deactivate_super() at proper time, when the superblock is ready to be
+killed.
+
+I can see the same faulty codepath also in autofs4. This patch solves
+issues in both filesystems in a same way - it postpones the
+kill_anon_super() until the proper time is signalized by deactivate_super()
+calling the kill_sb() callback.
+
+[raven@themaw.net: update comment]
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Acked-by: Ian Kent <raven@themaw.net>
+Cc: <stable@kernel.org>
+Signed-off-by: Ian Kent <raven@themaw.net>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ fs/autofs/inode.c | 7 ++++---
+ fs/autofs4/inode.c | 7 ++++---
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+--- linux-2.6.19.orig/fs/autofs/inode.c
++++ linux-2.6.19/fs/autofs/inode.c
+@@ -28,10 +28,11 @@ void autofs_kill_sb(struct super_block *
+ /*
+ * In the event of a failure in get_sb_nodev the superblock
+ * info is not present so nothing else has been setup, so
+- * just exit when we are called from deactivate_super.
++ * just call kill_anon_super when we are called from
++ * deactivate_super.
+ */
+ if (!sbi)
+- return;
++ goto out_kill_sb;
+
+ if ( !sbi->catatonic )
+ autofs_catatonic_mode(sbi); /* Free wait queues, close pipe */
+@@ -44,6 +45,7 @@ void autofs_kill_sb(struct super_block *
+
+ kfree(sb->s_fs_info);
+
++out_kill_sb:
+ DPRINTK(("autofs: shutting down\n"));
+ kill_anon_super(sb);
+ }
+@@ -209,7 +211,6 @@ fail_iput:
+ fail_free:
+ kfree(sbi);
+ s->s_fs_info = NULL;
+- kill_anon_super(s);
+ fail_unlock:
+ return -EINVAL;
+ }
+--- linux-2.6.19.orig/fs/autofs4/inode.c
++++ linux-2.6.19/fs/autofs4/inode.c
+@@ -152,10 +152,11 @@ void autofs4_kill_sb(struct super_block
+ /*
+ * In the event of a failure in get_sb_nodev the superblock
+ * info is not present so nothing else has been setup, so
+- * just exit when we are called from deactivate_super.
++ * just call kill_anon_super when we are called from
++ * deactivate_super.
+ */
+ if (!sbi)
+- return;
++ goto out_kill_sb;
+
+ sb->s_fs_info = NULL;
+
+@@ -167,6 +168,7 @@ void autofs4_kill_sb(struct super_block
+
+ kfree(sbi);
+
++out_kill_sb:
+ DPRINTK("shutting down");
+ kill_anon_super(sb);
+ }
+@@ -426,7 +428,6 @@ fail_ino:
+ fail_free:
+ kfree(sbi);
+ s->s_fs_info = NULL;
+- kill_anon_super(s);
+ fail_unlock:
+ return -EINVAL;
+ }
--- /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: compat: 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.19.orig/fs/compat.c
++++ linux-2.6.19/fs/compat.c
+@@ -869,7 +869,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:37:09 2006
+Message-Id: <200612070431.kB74VX7u028754@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: akpm@osdl.org
+Date: Wed, 06 Dec 2006 20:31:33 -0800
+Cc: akpm@osdl.org, airlied@linux.ie, stable@kernel.org, daniel-silveira@gee.inatel.br
+Subject: drm-sis linkage fix
+
+From: Andrew Morton <akpm@osdl.org>
+
+Fix http://bugzilla.kernel.org/show_bug.cgi?id=7606
+
+WARNING: "drm_sman_set_manager" [drivers/char/drm/sis.ko] undefined!
+
+Cc: <daniel-silveira@gee.inatel.br>
+Cc: Dave Airlie <airlied@linux.ie>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/char/drm/drm_sman.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- linux-2.6.19.orig/drivers/char/drm/drm_sman.c
++++ linux-2.6.19/drivers/char/drm/drm_sman.c
+@@ -162,6 +162,7 @@ drm_sman_set_manager(drm_sman_t * sman,
+
+ return 0;
+ }
++EXPORT_SYMBOL(drm_sman_set_manager);
+
+ static drm_owner_item_t *drm_sman_get_owner_item(drm_sman_t * sman,
+ unsigned long owner)
--- /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: Linus Torvalds <torvalds@osdl.org>, Greg KH <gregkh@suse.de>, Jeff Garzik <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>
+Cc: Jeff Garzik <jeff@garzik.org>
+Cc: Greg KH <gregkh@suse.de>
+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.19.orig/drivers/net/forcedeth.c
++++ linux-2.6.19/drivers/net/forcedeth.c
+@@ -2815,11 +2815,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;
+ }
+@@ -2862,6 +2864,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 Thu Dec 7 15:37:55 2006
+Date: Fri, 8 Dec 2006 01:32:22 +0200
+From: Samuel Ortiz <samuel@sortiz.org>
+To: stable@kernel.org
+Message-ID: <20061207233222.GA4549@sortiz.org>
+Cc: "David S. Miller" <davem@davemloft.net>
+Subject: IrDA: Incorrect TTP header reservation
+
+From: Jeet Chaudhuri <jeetlinux@yahoo.co.in>
+
+We must reserve SAR + MAX_HEADER bytes for IrLMP to fit in.
+This fixes an oops reported (and fixed) by Jeet Chaudhuri, when max_sdu_size
+is greater than 0.
+
+Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+
+---
+ net/irda/irttp.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- linux-2.6.19.orig/net/irda/irttp.c
++++ linux-2.6.19/net/irda/irttp.c
+@@ -1099,7 +1099,7 @@ int irttp_connect_request(struct tsap_cb
+ return -ENOMEM;
+
+ /* Reserve space for MUX_CONTROL and LAP header */
+- skb_reserve(tx_skb, TTP_MAX_HEADER);
++ skb_reserve(tx_skb, TTP_MAX_HEADER + TTP_SAR_HEADER);
+ } else {
+ tx_skb = userdata;
+ /*
+@@ -1348,7 +1348,7 @@ int irttp_connect_response(struct tsap_c
+ return -ENOMEM;
+
+ /* Reserve space for MUX_CONTROL and LAP header */
+- skb_reserve(tx_skb, TTP_MAX_HEADER);
++ skb_reserve(tx_skb, TTP_MAX_HEADER + TTP_SAR_HEADER);
+ } else {
+ tx_skb = userdata;
+ /*
--- /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.19.orig/arch/m32r/kernel/entry.S
++++ linux-2.6.19/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.19.orig/include/asm-m32r/ptrace.h
++++ linux-2.6.19/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.19.orig/include/asm-m32r/sigcontext.h
++++ linux-2.6.19/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;
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Dec 6 20:40:11 2006
+Message-Id: <200612070434.kB74YlSL029177@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: akpm@osdl.org
+Date: Wed, 06 Dec 2006 20:34:47 -0800
+Cc: akpm@osdl.org, rjw@sisk.pl, stable@kernel.org, pavel@ucw.cz
+Subject: PM: Fix swsusp debug mode testproc
+
+From: "Rafael J. Wysocki" <rjw@sisk.pl>
+
+The 'testproc' swsusp debug mode thaws tasks twice in a row, which is _very_
+confusing. Fix that.
+
+Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
+Acked-by: Pavel Machek <pavel@ucw.cz>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ kernel/power/disk.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.19.orig/kernel/power/disk.c
++++ linux-2.6.19/kernel/power/disk.c
+@@ -127,7 +127,7 @@ int pm_suspend_disk(void)
+ return error;
+
+ if (pm_disk_mode == PM_DISK_TESTPROC)
+- goto Thaw;
++ return 0;
+
+ suspend_console();
+ error = device_suspend(PMSG_FREEZE);
--- /dev/null
+From 283e36529e3b1308fc46b6d28bcf63d45ee061c3 Mon Sep 17 00:00:00 2001
+From: Thomas Graf <tgraf@suug.ch>
+Date: Thu, 7 Dec 2006 23:49:45 -0800
+Subject: NETLINK: Restore API compatibility of address and neighbour bits
+
+Restore API compatibility due to bits moved from rtnetlink.h to
+separate headers.
+
+Signed-off-by: Thomas Graf <tgraf@suug.ch>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ include/linux/rtnetlink.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- linux-2.6.19.orig/include/linux/rtnetlink.h
++++ linux-2.6.19/include/linux/rtnetlink.h
+@@ -3,6 +3,8 @@
+
+ #include <linux/netlink.h>
+ #include <linux/if_link.h>
++#include <linux/if_addr.h>
++#include <linux/neighbour.h>
+
+ /****
+ * Routing/neighbour discovery messages.
xfrm-use-output-device-disable_xfrm-for-forwarded-packets.patch
usb-fix-oops-in-phidgetservo.patch
ipsec-fix-inetpeer-leak-in-ipv4-xfrm-dst-entries.patch
+irda-incorrect-ttp-header-reservation.patch
+restore-api-compatibility-of-address-and-neighbour-bits.patch
+add-bottom_half.h.patch
+drm-sis-linkage-fix.patch
+compat-skip-data-conversion-in-compat_sys_mount-when-data_page-is-null.patch
+pm-fix-swsusp-debug-mode-testproc.patch
+autofs-fix-error-code-path-in-autofs_fill_sb.patch
+softirq-remove-bug_ons-which-can-incorrectly-trigger.patch
+m32r-make-userspace-headers-platform-independent.patch
+x86_64-fix-boot-hang-due-to-nmi-watchdog-init-code.patch
+forcedeth-disable-intx-when-enabling-msi-in-forcedeth.patch
--- /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.19.orig/kernel/softirq.c
++++ linux-2.6.19/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);
--- /dev/null
+From stable-bounces@linux.kernel.org Fri Dec 8 03:26:13 2006
+Message-Id: <200612081120.kB8BKZqK019065@shell0.pdx.osdl.net>
+To: ak@muc.de
+From: akpm@osdl.org
+Date: Fri, 08 Dec 2006 03:20:34 -0800
+Cc: akpm@osdl.org, shai@scalex86.org, stable@kernel.org, kiran@scalex86.org
+Subject: x86_64: fix boot hang due to nmi watchdog init code
+
+From: Ravikiran G Thirumalai <kiran@scalex86.org>
+
+2.6.19 stopped booting (or booted based on build/config) on our x86_64
+systems due to a bug introduced in 2.6.19. check_nmi_watchdog schedules an
+IPI on all cpus to busy wait on a flag, but fails to set the busywait flag
+if NMI functionality is disabled.
+
+This causes the secondary cpus to spin in an endless loop, causing the
+kernel bootup to hang.
+
+Depending upon the build, the busywait flag got overwritten (stack
+variable) and caused the kernel to bootup on certain builds. Following
+patch fixes the bug by setting the busywait flag before returning from
+check_nmi_watchdog.
+
+I guess using a stack variable is not good here as the calling function
+could potentially return while the busy wait loop is still spinning on the
+flag. I would think this is a good candidate for 2.6.19 stable as well.
+
+[akpm@osdl.org: cleanups]
+Signed-off-by: Ravikiran Thirumalai <kiran@scalex86.org>
+Signed-off-by: Shai Fultheim <shai@scalex86.org>
+Cc: Andi Kleen <ak@muc.de>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ arch/x86_64/kernel/nmi.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- linux-2.6.19.orig/arch/x86_64/kernel/nmi.c
++++ linux-2.6.19/arch/x86_64/kernel/nmi.c
+@@ -212,7 +212,7 @@ static __init void nmi_cpu_busy(void *da
+
+ int __init check_nmi_watchdog (void)
+ {
+- volatile int endflag = 0;
++ static int __initdata endflag;
+ int *counts;
+ int cpu;
+
+@@ -253,6 +253,7 @@ int __init check_nmi_watchdog (void)
+ if (!atomic_read(&nmi_active)) {
+ kfree(counts);
+ atomic_set(&nmi_active, -1);
++ endflag = 1;
+ return -1;
+ }
+ endflag = 1;