]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.32 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 19 Apr 2010 22:20:02 +0000 (15:20 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 19 Apr 2010 22:20:02 +0000 (15:20 -0700)
Also delete a wireless patch that broke the .32 build

queue-2.6.32/9p-skip-check-for-mandatory-locks-when-unlocking.patch [new file with mode: 0644]
queue-2.6.32/fc-class-fail-fast-bsg-requests.patch [new file with mode: 0644]
queue-2.6.32/igb-add-support-for-82576ns-serdes-adapter.patch [new file with mode: 0644]
queue-2.6.32/mac80211-handle-mesh-action-frames-in-ieee80211_rx_h_action.patch [deleted file]
queue-2.6.32/ocfs2-change-bg_chain-check-for-ocfs2_validate_gd_parent.patch [new file with mode: 0644]
queue-2.6.32/ocfs2-set-i_mode-on-disk-during-acl-operations.patch [new file with mode: 0644]
queue-2.6.32/pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch [new file with mode: 0644]
queue-2.6.32/scsi-add-scsi-target-reset-support-to-scsi-ioctl.patch [new file with mode: 0644]
queue-2.6.32/scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch [new file with mode: 0644]
queue-2.6.32/series
queue-2.6.32/vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch [new file with mode: 0644]

diff --git a/queue-2.6.32/9p-skip-check-for-mandatory-locks-when-unlocking.patch b/queue-2.6.32/9p-skip-check-for-mandatory-locks-when-unlocking.patch
new file mode 100644 (file)
index 0000000..ed22a0e
--- /dev/null
@@ -0,0 +1,42 @@
+From f78233dd44a110c574fe760ad6f9c1e8741a0d00 Mon Sep 17 00:00:00 2001
+From: Sachin Prabhu <sprabhu@redhat.com>
+Date: Sat, 13 Mar 2010 09:03:55 -0600
+Subject: 9p: Skip check for mandatory locks when unlocking
+
+From: Sachin Prabhu <sprabhu@redhat.com>
+
+commit f78233dd44a110c574fe760ad6f9c1e8741a0d00 upstream.
+
+While investigating a bug, I came across a possible bug in v9fs. The
+problem is similar to the one reported for NFS by ASANO Masahiro in
+http://lkml.org/lkml/2005/12/21/334.
+
+v9fs_file_lock() will skip locks on file which has mode set to 02666.
+This is a problem in cases where the mode of the file is changed after
+a process has obtained a lock on the file. Such a lock will be skipped
+during unlock and the machine will end up with a BUG in
+locks_remove_flock().
+
+v9fs_file_lock() should skip the check for mandatory locks when
+unlocking a file.
+
+Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
+Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/9p/vfs_file.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/9p/vfs_file.c
++++ b/fs/9p/vfs_file.c
+@@ -114,7 +114,7 @@ static int v9fs_file_lock(struct file *f
+       P9_DPRINTK(P9_DEBUG_VFS, "filp: %p lock: %p\n", filp, fl);
+       /* No mandatory locks */
+-      if (__mandatory_lock(inode))
++      if (__mandatory_lock(inode) && fl->fl_type != F_UNLCK)
+               return -ENOLCK;
+       if ((IS_SETLK(cmd) || IS_SETLKW(cmd)) && fl->fl_type != F_UNLCK) {
diff --git a/queue-2.6.32/fc-class-fail-fast-bsg-requests.patch b/queue-2.6.32/fc-class-fail-fast-bsg-requests.patch
new file mode 100644 (file)
index 0000000..cf87f2f
--- /dev/null
@@ -0,0 +1,40 @@
+From 2bc1c59dbdefdb6f9767e06efb86bbdb2923a8be Mon Sep 17 00:00:00 2001
+From: Mike Christie <michaelc@cs.wisc.edu>
+Date: Thu, 5 Nov 2009 11:18:09 -0600
+Subject: [SCSI] fc class: fail fast bsg requests
+
+From: Mike Christie <michaelc@cs.wisc.edu>
+
+commit 2bc1c59dbdefdb6f9767e06efb86bbdb2923a8be upstream.
+
+If the port state is blocked and the fast io fail tmo has
+fired then this patch will fail bsg requests immediately.
+This is needed if userspace is sending IOs to test the transport
+like with fcping, so it will not have to wait for the dev loss tmo.
+With this patch he bsg req fast io fail code behaves like the normal
+and sg io/passthrough fast io fail.
+
+Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
+Acked-By: James Smart <james.smart@emulex.com>
+Signed-off-by: James Bottomley <James.Bottomley@suse.de>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/scsi_transport_fc.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/scsi_transport_fc.c
++++ b/drivers/scsi/scsi_transport_fc.c
+@@ -3796,8 +3796,9 @@ fc_bsg_request_handler(struct request_qu
+               return;
+       while (!blk_queue_plugged(q)) {
+-              if (rport && (rport->port_state == FC_PORTSTATE_BLOCKED))
+-                              break;
++              if (rport && (rport->port_state == FC_PORTSTATE_BLOCKED) &&
++                  !(rport->flags & FC_RPORT_FAST_FAIL_TIMEDOUT))
++                      break;
+               req = blk_fetch_request(q);
+               if (!req)
diff --git a/queue-2.6.32/igb-add-support-for-82576ns-serdes-adapter.patch b/queue-2.6.32/igb-add-support-for-82576ns-serdes-adapter.patch
new file mode 100644 (file)
index 0000000..7cc44b1
--- /dev/null
@@ -0,0 +1,54 @@
+From 747d49baaf4e3f4ad5ae77477830da026eeef69d Mon Sep 17 00:00:00 2001
+From: Alexander Duyck <alexander.h.duyck@intel.com>
+Date: Mon, 5 Oct 2009 06:33:27 +0000
+Subject: igb: add support for 82576NS SerDes adapter
+
+From: Alexander Duyck <alexander.h.duyck@intel.com>
+
+commit 747d49baaf4e3f4ad5ae77477830da026eeef69d upstream.
+
+This patch adds the device ID necessary to support the 82576NS SerDes
+adapter.
+
+Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/igb/e1000_82575.c |    1 +
+ drivers/net/igb/e1000_hw.h    |    1 +
+ drivers/net/igb/igb_main.c    |    1 +
+ 3 files changed, 3 insertions(+)
+
+--- a/drivers/net/igb/e1000_82575.c
++++ b/drivers/net/igb/e1000_82575.c
+@@ -81,6 +81,7 @@ static s32 igb_get_invariants_82575(stru
+               break;
+       case E1000_DEV_ID_82576:
+       case E1000_DEV_ID_82576_NS:
++      case E1000_DEV_ID_82576_NS_SERDES:
+       case E1000_DEV_ID_82576_FIBER:
+       case E1000_DEV_ID_82576_SERDES:
+       case E1000_DEV_ID_82576_QUAD_COPPER:
+--- a/drivers/net/igb/e1000_hw.h
++++ b/drivers/net/igb/e1000_hw.h
+@@ -42,6 +42,7 @@ struct e1000_hw;
+ #define E1000_DEV_ID_82576_SERDES             0x10E7
+ #define E1000_DEV_ID_82576_QUAD_COPPER        0x10E8
+ #define E1000_DEV_ID_82576_NS                 0x150A
++#define E1000_DEV_ID_82576_NS_SERDES          0x1518
+ #define E1000_DEV_ID_82576_SERDES_QUAD        0x150D
+ #define E1000_DEV_ID_82575EB_COPPER           0x10A7
+ #define E1000_DEV_ID_82575EB_FIBER_SERDES     0x10A9
+--- a/drivers/net/igb/igb_main.c
++++ b/drivers/net/igb/igb_main.c
+@@ -63,6 +63,7 @@ static const struct e1000_info *igb_info
+ static struct pci_device_id igb_pci_tbl[] = {
+       { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576), board_82575 },
+       { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_NS), board_82575 },
++      { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_NS_SERDES), board_82575 },
+       { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_FIBER), board_82575 },
+       { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES), board_82575 },
+       { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES_QUAD), board_82575 },
diff --git a/queue-2.6.32/mac80211-handle-mesh-action-frames-in-ieee80211_rx_h_action.patch b/queue-2.6.32/mac80211-handle-mesh-action-frames-in-ieee80211_rx_h_action.patch
deleted file mode 100644 (file)
index 2360361..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-From 1cb561f83793191cf86a2db3948d28f5f42df9ff Mon Sep 17 00:00:00 2001
-From: Javier Cardona <javier@cozybit.com>
-Date: Mon, 29 Mar 2010 11:00:20 -0700
-Subject: mac80211: Handle mesh action frames in ieee80211_rx_h_action
-
-From: Javier Cardona <javier@cozybit.com>
-
-commit 1cb561f83793191cf86a2db3948d28f5f42df9ff upstream.
-
-This fixes the problem introduced in commit
-8404080568613d93ad7cf0a16dfb68 which broke mesh peer link establishment.
-
-changes:
-v2     Added missing break (Johannes)
-v3     Broke original patch into two (Johannes)
-
-Signed-off-by: Javier Cardona <javier@cozybit.com>
-Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
-Signed-off-by: John W. Linville <linville@tuxdriver.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- net/mac80211/mesh.c |    3 ---
- net/mac80211/rx.c   |    5 +++++
- 2 files changed, 5 insertions(+), 3 deletions(-)
-
---- a/net/mac80211/mesh.c
-+++ b/net/mac80211/mesh.c
-@@ -704,9 +704,6 @@ ieee80211_mesh_rx_mgmt(struct ieee80211_
-       switch (fc & IEEE80211_FCTL_STYPE) {
-       case IEEE80211_STYPE_ACTION:
--              if (skb->len < IEEE80211_MIN_ACTION_SIZE)
--                      return RX_DROP_MONITOR;
--              /* fall through */
-       case IEEE80211_STYPE_PROBE_RESP:
-       case IEEE80211_STYPE_BEACON:
-               skb_queue_tail(&ifmsh->skb_queue, skb);
---- a/net/mac80211/rx.c
-+++ b/net/mac80211/rx.c
-@@ -2038,6 +2038,11 @@ static void ieee80211_invoke_rx_handlers
-       case RX_QUEUED:
-               I802_DEBUG_INC(sdata->local->rx_handlers_queued);
-               break;
-+      case MESH_PLINK_CATEGORY:
-+      case MESH_PATH_SEL_CATEGORY:
-+              if (ieee80211_vif_is_mesh(&sdata->vif))
-+                      return ieee80211_mesh_rx_mgmt(sdata, rx->skb);
-+              break;
-       }
- }
diff --git a/queue-2.6.32/ocfs2-change-bg_chain-check-for-ocfs2_validate_gd_parent.patch b/queue-2.6.32/ocfs2-change-bg_chain-check-for-ocfs2_validate_gd_parent.patch
new file mode 100644 (file)
index 0000000..617ea19
--- /dev/null
@@ -0,0 +1,73 @@
+From 78c37eb0d5e6a9727b12ea0f1821795ffaa66cfe Mon Sep 17 00:00:00 2001
+From: Tao Ma <tao.ma@oracle.com>
+Date: Wed, 3 Mar 2010 11:26:27 +0800
+Subject: ocfs2: Change bg_chain check for ocfs2_validate_gd_parent.
+
+From: Tao Ma <tao.ma@oracle.com>
+
+commit 78c37eb0d5e6a9727b12ea0f1821795ffaa66cfe upstream.
+
+In ocfs2_validate_gd_parent, we check bg_chain against the
+cl_next_free_rec of the dinode. Actually in resize, we have
+the chance of bg_chain == cl_next_free_rec. So add some
+additional condition check for it.
+
+I also rename paramter "clean_error" to "resize", since the
+old one is not clearly enough to indicate that we should only
+meet with this case in resize.
+
+btw, the correpsonding bug is
+http://oss.oracle.com/bugzilla/show_bug.cgi?id=1230.
+
+Signed-off-by: Tao Ma <tao.ma@oracle.com>
+Signed-off-by: Joel Becker <joel.becker@oracle.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/ocfs2/suballoc.c |   13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+--- a/fs/ocfs2/suballoc.c
++++ b/fs/ocfs2/suballoc.c
+@@ -152,7 +152,7 @@ static u32 ocfs2_bits_per_group(struct o
+ #define do_error(fmt, ...)                                            \
+       do{                                                             \
+-              if (clean_error)                                        \
++              if (resize)                                     \
+                       mlog(ML_ERROR, fmt "\n", ##__VA_ARGS__);        \
+               else                                                    \
+                       ocfs2_error(sb, fmt, ##__VA_ARGS__);            \
+@@ -160,7 +160,7 @@ static u32 ocfs2_bits_per_group(struct o
+ static int ocfs2_validate_gd_self(struct super_block *sb,
+                                 struct buffer_head *bh,
+-                                int clean_error)
++                                int resize)
+ {
+       struct ocfs2_group_desc *gd = (struct ocfs2_group_desc *)bh->b_data;
+@@ -211,7 +211,7 @@ static int ocfs2_validate_gd_self(struct
+ static int ocfs2_validate_gd_parent(struct super_block *sb,
+                                   struct ocfs2_dinode *di,
+                                   struct buffer_head *bh,
+-                                  int clean_error)
++                                  int resize)
+ {
+       unsigned int max_bits;
+       struct ocfs2_group_desc *gd = (struct ocfs2_group_desc *)bh->b_data;
+@@ -233,8 +233,11 @@ static int ocfs2_validate_gd_parent(stru
+               return -EINVAL;
+       }
+-      if (le16_to_cpu(gd->bg_chain) >=
+-          le16_to_cpu(di->id2.i_chain.cl_next_free_rec)) {
++      /* In resize, we may meet the case bg_chain == cl_next_free_rec. */
++      if ((le16_to_cpu(gd->bg_chain) >
++           le16_to_cpu(di->id2.i_chain.cl_next_free_rec)) ||
++          ((le16_to_cpu(gd->bg_chain) ==
++           le16_to_cpu(di->id2.i_chain.cl_next_free_rec)) && !resize)) {
+               do_error("Group descriptor #%llu has bad chain %u",
+                        (unsigned long long)bh->b_blocknr,
+                        le16_to_cpu(gd->bg_chain));
diff --git a/queue-2.6.32/ocfs2-set-i_mode-on-disk-during-acl-operations.patch b/queue-2.6.32/ocfs2-set-i_mode-on-disk-during-acl-operations.patch
new file mode 100644 (file)
index 0000000..bf6d620
--- /dev/null
@@ -0,0 +1,151 @@
+From fcefd25ac89239cb57fa198f125a79ff85468c75 Mon Sep 17 00:00:00 2001
+From: Mark Fasheh <mfasheh@suse.com>
+Date: Mon, 15 Mar 2010 15:39:00 -0700
+Subject: ocfs2: set i_mode on disk during acl operations
+
+From: Mark Fasheh <mfasheh@suse.com>
+
+commit fcefd25ac89239cb57fa198f125a79ff85468c75 upstream.
+
+ocfs2_set_acl() and ocfs2_init_acl() were setting i_mode on the in-memory
+inode, but never setting it on the disk copy. Thus, acls were some times not
+getting propagated between nodes. This patch fixes the issue by adding a
+helper function ocfs2_acl_set_mode() which does this the right way.
+ocfs2_set_acl() and ocfs2_init_acl() are then updated to call
+ocfs2_acl_set_mode().
+
+Signed-off-by: Mark Fasheh <mfasheh@suse.com>
+Signed-off-by: Joel Becker <joel.becker@oracle.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/ocfs2/acl.c |   77 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 72 insertions(+), 5 deletions(-)
+
+--- a/fs/ocfs2/acl.c
++++ b/fs/ocfs2/acl.c
+@@ -30,6 +30,8 @@
+ #include "alloc.h"
+ #include "dlmglue.h"
+ #include "file.h"
++#include "inode.h"
++#include "journal.h"
+ #include "ocfs2_fs.h"
+ #include "xattr.h"
+@@ -170,6 +172,60 @@ static struct posix_acl *ocfs2_get_acl(s
+ }
+ /*
++ * Helper function to set i_mode in memory and disk. Some call paths
++ * will not have di_bh or a journal handle to pass, in which case it
++ * will create it's own.
++ */
++static int ocfs2_acl_set_mode(struct inode *inode, struct buffer_head *di_bh,
++                            handle_t *handle, umode_t new_mode)
++{
++      int ret, commit_handle = 0;
++      struct ocfs2_dinode *di;
++
++      if (di_bh == NULL) {
++              ret = ocfs2_read_inode_block(inode, &di_bh);
++              if (ret) {
++                      mlog_errno(ret);
++                      goto out;
++              }
++      } else
++              get_bh(di_bh);
++
++      if (handle == NULL) {
++              handle = ocfs2_start_trans(OCFS2_SB(inode->i_sb),
++                                         OCFS2_INODE_UPDATE_CREDITS);
++              if (IS_ERR(handle)) {
++                      ret = PTR_ERR(handle);
++                      mlog_errno(ret);
++                      goto out_brelse;
++              }
++
++              commit_handle = 1;
++      }
++
++      di = (struct ocfs2_dinode *)di_bh->b_data;
++      ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), di_bh,
++                                    OCFS2_JOURNAL_ACCESS_WRITE);
++      if (ret) {
++              mlog_errno(ret);
++              goto out_commit;
++      }
++
++      inode->i_mode = new_mode;
++      di->i_mode = cpu_to_le16(inode->i_mode);
++
++      ocfs2_journal_dirty(handle, di_bh);
++
++out_commit:
++      if (commit_handle)
++              ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle);
++out_brelse:
++      brelse(di_bh);
++out:
++      return ret;
++}
++
++/*
+  * Set the access or default ACL of an inode.
+  */
+ static int ocfs2_set_acl(handle_t *handle,
+@@ -197,9 +253,14 @@ static int ocfs2_set_acl(handle_t *handl
+                       if (ret < 0)
+                               return ret;
+                       else {
+-                              inode->i_mode = mode;
+                               if (ret == 0)
+                                       acl = NULL;
++
++                              ret = ocfs2_acl_set_mode(inode, di_bh,
++                                                       handle, mode);
++                              if (ret)
++                                      return ret;
++
+                       }
+               }
+               break;
+@@ -287,6 +348,7 @@ int ocfs2_init_acl(handle_t *handle,
+       struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
+       struct posix_acl *acl = NULL;
+       int ret = 0;
++      mode_t mode;
+       if (!S_ISLNK(inode->i_mode)) {
+               if (osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL) {
+@@ -295,12 +357,17 @@ int ocfs2_init_acl(handle_t *handle,
+                       if (IS_ERR(acl))
+                               return PTR_ERR(acl);
+               }
+-              if (!acl)
+-                      inode->i_mode &= ~current_umask();
++              if (!acl) {
++                      mode = inode->i_mode & ~current_umask();
++                      ret = ocfs2_acl_set_mode(inode, di_bh, handle, mode);
++                      if (ret) {
++                              mlog_errno(ret);
++                              goto cleanup;
++                      }
++              }
+       }
+       if ((osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL) && acl) {
+               struct posix_acl *clone;
+-              mode_t mode;
+               if (S_ISDIR(inode->i_mode)) {
+                       ret = ocfs2_set_acl(handle, inode, di_bh,
+@@ -317,7 +384,7 @@ int ocfs2_init_acl(handle_t *handle,
+               mode = inode->i_mode;
+               ret = posix_acl_create_masq(clone, &mode);
+               if (ret >= 0) {
+-                      inode->i_mode = mode;
++                      ret = ocfs2_acl_set_mode(inode, di_bh, handle, mode);
+                       if (ret > 0) {
+                               ret = ocfs2_set_acl(handle, inode,
+                                                   di_bh, ACL_TYPE_ACCESS,
diff --git a/queue-2.6.32/pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch b/queue-2.6.32/pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch
new file mode 100644 (file)
index 0000000..891baf7
--- /dev/null
@@ -0,0 +1,63 @@
+From b49bfd32901625e4adcfee011d2b32a43b4db67d Mon Sep 17 00:00:00 2001
+From: Youquan,Song <youquan.song@linux.intel.com>
+Date: Thu, 17 Dec 2009 08:22:48 -0500
+Subject: PCIe AER: prevent AER injection if hardware masks error reporting
+
+From: Youquan,Song <youquan.song@linux.intel.com>
+
+commit b49bfd32901625e4adcfee011d2b32a43b4db67d upstream.
+
+The Correcteable/Uncorrectable Error Mask Registers are used by PCIe AER
+driver which will controls the reporting of individual errors to PCIe RC
+via PCIe error messages.
+
+If hardware masks special error reporting to RC, the aer_inject driver
+should not inject aer error.
+
+Acked-by: Andi Kleen <ak@linux.intel.com>
+Signed-off-by: Youquan, Song <youquan.song@intel.com>
+Acked-by: Ying, Huang <ying.huang@intel.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pcie/aer/aer_inject.c |   20 +++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+--- a/drivers/pci/pcie/aer/aer_inject.c
++++ b/drivers/pci/pcie/aer/aer_inject.c
+@@ -302,7 +302,7 @@ static int aer_inject(struct aer_error_i
+       unsigned long flags;
+       unsigned int devfn = PCI_DEVFN(einj->dev, einj->fn);
+       int pos_cap_err, rp_pos_cap_err;
+-      u32 sever;
++      u32 sever, mask;
+       int ret = 0;
+       dev = pci_get_bus_and_slot(einj->bus, devfn);
+@@ -354,6 +354,24 @@ static int aer_inject(struct aer_error_i
+       err->header_log2 = einj->header_log2;
+       err->header_log3 = einj->header_log3;
++      pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &mask);
++      if (einj->cor_status && !(einj->cor_status & ~mask)) {
++              ret = -EINVAL;
++              printk(KERN_WARNING "The correctable error(s) is masked "
++                              "by device\n");
++              spin_unlock_irqrestore(&inject_lock, flags);
++              goto out_put;
++      }
++
++      pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK, &mask);
++      if (einj->uncor_status && !(einj->uncor_status & ~mask)) {
++              ret = -EINVAL;
++              printk(KERN_WARNING "The uncorrectable error(s) is masked "
++                              "by device\n");
++              spin_unlock_irqrestore(&inject_lock, flags);
++              goto out_put;
++      }
++
+       rperr = __find_aer_error_by_dev(rpdev);
+       if (!rperr) {
+               rperr = rperr_alloc;
diff --git a/queue-2.6.32/scsi-add-scsi-target-reset-support-to-scsi-ioctl.patch b/queue-2.6.32/scsi-add-scsi-target-reset-support-to-scsi-ioctl.patch
new file mode 100644 (file)
index 0000000..523c353
--- /dev/null
@@ -0,0 +1,33 @@
+From 3f9daedfcb197d784c6e7ecd731e3aa9859bc951 Mon Sep 17 00:00:00 2001
+From: Mike Christie <michaelc@cs.wisc.edu>
+Date: Thu, 5 Nov 2009 11:37:28 -0600
+Subject: SCSI: add scsi target reset support to scsi ioctl
+
+From: Mike Christie <michaelc@cs.wisc.edu>
+
+commit 3f9daedfcb197d784c6e7ecd731e3aa9859bc951 upstream.
+
+The scsi ioctl code path was missing scsi target reset
+support. This patch just adds it.
+
+Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
+Signed-off-by: James Bottomley <James.Bottomley@suse.de>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/scsi_ioctl.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/scsi/scsi_ioctl.c
++++ b/drivers/scsi/scsi_ioctl.c
+@@ -308,6 +308,9 @@ int scsi_nonblockable_ioctl(struct scsi_
+               case SG_SCSI_RESET_DEVICE:
+                       val = SCSI_TRY_RESET_DEVICE;
+                       break;
++              case SG_SCSI_RESET_TARGET:
++                      val = SCSI_TRY_RESET_TARGET;
++                      break;
+               case SG_SCSI_RESET_BUS:
+                       val = SCSI_TRY_RESET_BUS;
+                       break;
diff --git a/queue-2.6.32/scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch b/queue-2.6.32/scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch
new file mode 100644 (file)
index 0000000..f8369b9
--- /dev/null
@@ -0,0 +1,33 @@
+From eda05a28ec52be40086400a1b606d211276f0e41 Mon Sep 17 00:00:00 2001
+From: Harish Zunjarrao <harish.zunjarrao@qlogic.com>
+Date: Tue, 12 Jan 2010 12:59:50 -0800
+Subject: SCSI: fc-transport: Use packed modifier for fc_bsg_request structure.
+
+From: Harish Zunjarrao <harish.zunjarrao@qlogic.com>
+
+commit eda05a28ec52be40086400a1b606d211276f0e41 upstream.
+
+The 32bit kernel does not add padding bytes in the fc_bsg_request structure
+whereas the 64bit kernel adds padding bytes in the fc_bsg_request structure.
+Due to this, structure elements gets mismatched with 32bit application and
+64bit kernel.To resolve this, used packed modifier to avoid adding padding bytes.
+Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
+Signed-off-by: James Bottomley <James.Bottomley@suse.de>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/scsi/scsi_bsg_fc.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/scsi/scsi_bsg_fc.h
++++ b/include/scsi/scsi_bsg_fc.h
+@@ -292,7 +292,7 @@ struct fc_bsg_request {
+               struct fc_bsg_rport_els         r_els;
+               struct fc_bsg_rport_ct          r_ct;
+       } rqst_data;
+-};
++} __attribute__((packed));
+ /* response (request sense data) structure of the sg_io_v4 */
index 361f176488a8285af13bf945558555346b23f357..a201a4e5e9cd4bf120dff4fb40d43cedca330a81 100644 (file)
@@ -82,7 +82,6 @@ libata-disable-ncq-on-crucial-c300-ssd.patch
 cifs-fix-a-kernel-bug-with-remote-os-2-server-try-3.patch
 cifs-initialize-nbytes-at-the-beginning-of-cifssmbwrite.patch
 iwlwifi-need-check-for-valid-qos-packet-before-free.patch
-mac80211-handle-mesh-action-frames-in-ieee80211_rx_h_action.patch
 arm-6031-1-fix-thumb-2-decompressor.patch
 drm-edid-quirks-envision-en2028.patch
 drm-radeon-r300-ad-only-has-one-quad-pipe.patch
@@ -127,3 +126,12 @@ dm-mpath-fix-stall-when-requeueing-io.patch
 quota-fix-possible-dq_flags-corruption.patch
 staging-comedi-fix-usbdux-timeout-bug.patch
 staging-comedi-usbdux.c-fix-locking-up-of-the-driver-when-the-comedi-ringbuffer-runs-empty.patch
+ocfs2-set-i_mode-on-disk-during-acl-operations.patch
+ocfs2-change-bg_chain-check-for-ocfs2_validate_gd_parent.patch
+9p-skip-check-for-mandatory-locks-when-unlocking.patch
+fc-class-fail-fast-bsg-requests.patch
+scsi-add-scsi-target-reset-support-to-scsi-ioctl.patch
+igb-add-support-for-82576ns-serdes-adapter.patch
+pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch
+vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch
+scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch
diff --git a/queue-2.6.32/vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch b/queue-2.6.32/vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch
new file mode 100644 (file)
index 0000000..af1d7b3
--- /dev/null
@@ -0,0 +1,83 @@
+From 773a38dbdad03474c5ee235f7d9bf9f51c9e3c2b Mon Sep 17 00:00:00 2001
+From: Mike Travis <travis@sgi.com>
+Date: Tue, 2 Feb 2010 14:38:15 -0800
+Subject: vgaarb: Fix VGA arbiter to accept PCI domains other than 0
+
+From: Mike Travis <travis@sgi.com>
+
+commit 773a38dbdad03474c5ee235f7d9bf9f51c9e3c2b upstream.
+
+Update the VGA Arbiter to accept PCI Domains other than 0.
+
+Signed-off-by: Mike Travis <travis@sgi.com>
+LKML-Reference: <201002022238.o12McFe8018730@imap1.linux-foundation.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Robin Holt <holt@sgi.com>
+Cc: Jack Steiner <steiner@sgi.com>
+Cc: Ingo Molnar <mingo@elte.hu>
+Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: David Airlie <airlied@linux.ie>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/vga/vgaarb.c |   23 +++++++++++++++++++----
+ 1 file changed, 19 insertions(+), 4 deletions(-)
+
+--- a/drivers/gpu/vga/vgaarb.c
++++ b/drivers/gpu/vga/vgaarb.c
+@@ -954,6 +954,7 @@ static ssize_t vga_arb_write(struct file
+               }
+       } else if (strncmp(curr_pos, "target ", 7) == 0) {
++              struct pci_bus *pbus;
+               unsigned int domain, bus, devfn;
+               struct vga_device *vgadev;
+@@ -969,18 +970,31 @@ static ssize_t vga_arb_write(struct file
+                               ret_val = -EPROTO;
+                               goto done;
+                       }
++                      pr_devel("vgaarb: %s ==> %x:%x:%x.%x\n", curr_pos,
++                              domain, bus, PCI_SLOT(devfn), PCI_FUNC(devfn));
+-                      pdev = pci_get_bus_and_slot(bus, devfn);
++                      pbus = pci_find_bus(domain, bus);
++                      pr_devel("vgaarb: pbus %p\n", pbus);
++                      if (pbus == NULL) {
++                              pr_err("vgaarb: invalid PCI domain and/or bus address %x:%x\n",
++                                      domain, bus);
++                              ret_val = -ENODEV;
++                              goto done;
++                      }
++                      pdev = pci_get_slot(pbus, devfn);
++                      pr_devel("vgaarb: pdev %p\n", pdev);
+                       if (!pdev) {
+-                              pr_info("vgaarb: invalid PCI address!\n");
++                              pr_err("vgaarb: invalid PCI address %x:%x\n",
++                                      bus, devfn);
+                               ret_val = -ENODEV;
+                               goto done;
+                       }
+               }
+               vgadev = vgadev_find(pdev);
++              pr_devel("vgaarb: vgadev %p\n", vgadev);
+               if (vgadev == NULL) {
+-                      pr_info("vgaarb: this pci device is not a vga device\n");
++                      pr_err("vgaarb: this pci device is not a vga device\n");
+                       pci_dev_put(pdev);
+                       ret_val = -ENODEV;
+                       goto done;
+@@ -998,7 +1012,8 @@ static ssize_t vga_arb_write(struct file
+                       }
+               }
+               if (i == MAX_USER_CARDS) {
+-                      pr_err("vgaarb: maximum user cards number reached!\n");
++                      pr_err("vgaarb: maximum user cards (%d) number reached!\n",
++                              MAX_USER_CARDS);
+                       pci_dev_put(pdev);
+                       /* XXX: which value to return? */
+                       ret_val =  -ENOMEM;