--- /dev/null
+From 2444e56b0c08e6f3e3877583841a1213e3263d98 Mon Sep 17 00:00:00 2001
+From: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
+Date: Thu, 24 Apr 2008 16:54:50 +0400
+Subject: alpha: unbreak OSF/1 (a.out) binaries
+
+From: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
+
+commit 2444e56b0c08e6f3e3877583841a1213e3263d98 upstream
+
+
+OSF/1 brk(2) was broken by following one-liner in sys_brk()
+(commit 4cc6028d4040f95cdb590a87db478b42b8be0508):
+
+- if (brk < mm->end_code)
++ if (brk < mm->start_brk)
+ goto out;
+
+The problem is that osf_set_program_attributes()
+does update mm->end_code, but not mm->start_brk,
+which still contains inappropriate value left from
+binary loader, so brk() always fails.
+
+Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/alpha/kernel/osf_sys.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/alpha/kernel/osf_sys.c
++++ b/arch/alpha/kernel/osf_sys.c
+@@ -75,6 +75,7 @@ osf_set_program_attributes(unsigned long
+ lock_kernel();
+ mm = current->mm;
+ mm->end_code = bss_start + bss_len;
++ mm->start_brk = bss_start + bss_len;
+ mm->brk = bss_start + bss_len;
+ #if 0
+ printk("set_program_attributes(%lx %lx %lx %lx)\n",
--- /dev/null
+From jejb@kernel.org Mon Apr 28 13:50:10 2008
+From: Chien Tung <ctung@neteffect.com>
+Date: Sun, 27 Apr 2008 18:35:11 GMT
+Subject: RDMA/nes: Fix adapter reset after PXE boot
+To: jejb@kernel.org, stable@kernel.org
+Message-ID: <200804271835.m3RIZBh0002982@hera.kernel.org>
+
+From: Chien Tung <ctung@neteffect.com>
+
+commit: bc5698f3ecc9587e1edb343a2878f8d228c49e0e upstream
+
+After PXE boot, the iw_nes driver does a full reset to ensure the card
+is in a clean state. However, it doesn't wait for firmware to
+complete its work before issuing a port reset to enable the ports,
+which leads to problems bringing up the ports.
+
+The solution is to wait for firmware to complete its work before
+proceeding with port reset.
+
+This bug was flagged by Roland Dreier <rolandd@cisco.com>.
+
+Signed-off-by: Chien Tung <ctung@neteffect.com>
+Signed-off-by: Roland Dreier <rolandd@cisco.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/infiniband/hw/nes/nes_cm.c | 6 ++++--
+ drivers/infiniband/hw/nes/nes_hw.c | 20 +++++++++-----------
+ 2 files changed, 13 insertions(+), 13 deletions(-)
+
+--- a/drivers/infiniband/hw/nes/nes_cm.c
++++ b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -1834,8 +1834,10 @@ int mini_cm_recv_pkt(struct nes_cm_core
+ nfo.rem_addr = ntohl(iph->saddr);
+ nfo.rem_port = ntohs(tcph->source);
+
+- nes_debug(NES_DBG_CM, "Received packet: dest=0x%08X:0x%04X src=0x%08X:0x%04X\n",
+- iph->daddr, tcph->dest, iph->saddr, tcph->source);
++ nes_debug(NES_DBG_CM, "Received packet: dest=" NIPQUAD_FMT
++ ":0x%04X src=" NIPQUAD_FMT ":0x%04X\n",
++ NIPQUAD(iph->daddr), tcph->dest,
++ NIPQUAD(iph->saddr), tcph->source);
+
+ /* note: this call is going to increment cm_node ref count */
+ cm_node = find_node(cm_core,
+--- a/drivers/infiniband/hw/nes/nes_hw.c
++++ b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -625,6 +625,15 @@ unsigned int nes_reset_adapter_ne020(str
+ nes_debug(NES_DBG_INIT, "Did not see full soft reset done.\n");
+ return 0;
+ }
++
++ i = 0;
++ while ((nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS) != 0x80) && i++ < 10000)
++ mdelay(1);
++ if (i >= 10000) {
++ printk(KERN_ERR PFX "Internal CPU not ready, status = %02X\n",
++ nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS));
++ return 0;
++ }
+ }
+
+ /* port reset */
+@@ -673,17 +682,6 @@ unsigned int nes_reset_adapter_ne020(str
+ }
+ }
+
+-
+-
+- i = 0;
+- while ((nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS) != 0x80) && i++ < 10000)
+- mdelay(1);
+- if (i >= 10000) {
+- printk(KERN_ERR PFX "Internal CPU not ready, status = %02X\n",
+- nes_read_indexed(nesdev, NES_IDX_INT_CPU_STATUS));
+- return 0;
+- }
+-
+ return port_count;
+ }
+
--- /dev/null
+From jejb@kernel.org Mon Apr 28 13:50:50 2008
+From: Andrew Vasquez <andrew.vasquez@qlogic.com>
+Date: Sun, 27 Apr 2008 18:35:08 GMT
+Subject: SCSI: qla2xxx: Correct regression in relogin code.
+To: jejb@kernel.org, stable@kernel.org
+Message-ID: <200804271835.m3RIZ8xe002732@hera.kernel.org>
+
+
+From: Andrew Vasquez <andrew.vasquez@qlogic.com>
+
+commit: 666301e673e192c87a40e07a8357d6996b57b70f upstream
+
+
+Commit 63a8651f2548c6bb5132c0b4e7dad4f57a9274db ([SCSI] qla2xxx:
+Correct infinite-login-retry issue.) introduced a small
+regression where a successful relogin would result in an fcport's
+loop_id to be incorrectly reset to FC_NO_LOOP_ID. Only clear-out
+loopid, if retries have been 'truly' exhausted.
+
+Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/qla2xxx/qla_os.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/scsi/qla2xxx/qla_os.c
++++ b/drivers/scsi/qla2xxx/qla_os.c
+@@ -2357,7 +2357,7 @@ qla2x00_do_dpc(void *data)
+ } else {
+ fcport->login_retry = 0;
+ }
+- if (fcport->login_retry == 0)
++ if (fcport->login_retry == 0 && status != QLA_SUCCESS)
+ fcport->loop_id = FC_NO_LOOP_ID;
+ }
+ if (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))
dz-test-after-postfix-decrement-fails-in-dz_console_putchar.patch
mm-fix-possible-off-by-one-in-walk_pte_range.patch
hrtimer-timeout-too-long-when-using-hrtimer_cb_softirq.patch
+rdma-nes-fix-adapter-reset-after-pxe-boot.patch
+scsi-qla2xxx-correct-regression-in-relogin-code.patch
+alpha-unbreak-osf-1-binaries.patch
+x86-fix-32-bit-x86-msi-x-allocation-leakage.patch
--- /dev/null
+From peter.p.waskiewicz.jr@intel.com Mon Apr 28 13:52:54 2008
+From: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com>
+Date: Mon, 28 Apr 2008 11:56:22 -0700
+Subject: x86: Fix 32-bit x86 MSI-X allocation leakage
+To: stable@kernel.org, linux-kernel@vger.kernel.org
+Cc: netdev@vger.kernel.org
+Message-ID: <20080428185622.11638.29287.stgit@scrappy.jf.intel.com>
+
+From: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com>
+
+commit 9d9ad4b51d2b29b5bbeb4011f5e76f7538119cf9 upstream
+
+This bug was introduced in the 2.6.24 i386/x86_64 tree merge, where
+MSI-X vector allocation will eventually fail. The cause is the new
+bit array tracking used vectors is not getting cleared properly on
+IRQ destruction on the 32-bit APIC code.
+
+This can be seen easily using the ixgbe 10 GbE driver on multi-core
+systems by simply loading and unloading the driver a few times.
+Depending on the number of available vectors on the host system, the
+MSI-X allocation will eventually fail, and the driver will only be
+able to use legacy interrupts.
+
+Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/io_apic_32.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/x86/kernel/io_apic_32.c
++++ b/arch/x86/kernel/io_apic_32.c
+@@ -2477,6 +2477,7 @@ void destroy_irq(unsigned int irq)
+ dynamic_irq_cleanup(irq);
+
+ spin_lock_irqsave(&vector_lock, flags);
++ clear_bit(irq_vector[irq], used_vectors);
+ irq_vector[irq] = 0;
+ spin_unlock_irqrestore(&vector_lock, flags);
+ }