]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
more patches queued
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 13 Dec 2005 07:30:26 +0000 (23:30 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 13 Dec 2005 07:30:26 +0000 (23:30 -0800)
queue/bonding-fix-feature-consolidation.patch [new file with mode: 0644]
queue/fix-serverworks-tlb-flush..patch [new file with mode: 0644]
queue/i8k-fix-proc-reporting-of-blank-service-tags.patch [new file with mode: 0644]
queue/locking-rewrite.patch [new file with mode: 0644]
queue/recompute-features-when-adding-a-new-device.patch [new file with mode: 0644]
queue/series

diff --git a/queue/bonding-fix-feature-consolidation.patch b/queue/bonding-fix-feature-consolidation.patch
new file mode 100644 (file)
index 0000000..9f5c35d
--- /dev/null
@@ -0,0 +1,111 @@
+From stable-bounces@linux.kernel.org Mon Dec 12 12:26:42 2005
+Date: Wed, 9 Nov 2005 10:02:38 -0800
+Message-Id: <200511091802.jA9I2csb003326@hera.kernel.org>
+From: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
+To: git-commits-head@vger.kernel.org
+Cc: 
+Subject: bonding: fix feature consolidation
+
+From: Jay Vosburgh <fubar@us.ibm.com>
+
+[PATCH] bonding: fix feature consolidation
+
+This should resolve http://bugzilla.kernel.org/show_bug.cgi?id=5519
+
+The current feature computation loses bits that it doesn't know about,
+resulting in an inability to add VLANs and possibly other havoc.
+Rewrote function to preserve bits it doesn't know about, remove an
+unneeded state variable, and simplify the code.
+
+Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
+index 8032126..94cec3c 100644
+---
+ drivers/net/bonding/bond_main.c |   32 +++++++++++---------------------
+ drivers/net/bonding/bonding.h   |    7 ++-----
+ 2 files changed, 13 insertions(+), 26 deletions(-)
+
+--- linux-2.6.14.3.orig/drivers/net/bonding/bond_main.c
++++ linux-2.6.14.3/drivers/net/bonding/bond_main.c
+@@ -1604,35 +1604,27 @@ static int bond_sethwaddr(struct net_dev
+       (NETIF_F_SG|NETIF_F_IP_CSUM|NETIF_F_NO_CSUM|NETIF_F_HW_CSUM)
+ /* 
+- * Compute the features available to the bonding device by 
+- * intersection of all of the slave devices' BOND_INTERSECT_FEATURES.
+- * Call this after attaching or detaching a slave to update the 
+- * bond's features.
++ * Compute the common dev->feature set available to all slaves.  Some
++ * feature bits are managed elsewhere, so preserve feature bits set on
++ * master device that are not part of the examined set.
+  */
+ static int bond_compute_features(struct bonding *bond)
+ {
+-      int i;
++      unsigned long features = BOND_INTERSECT_FEATURES;
+       struct slave *slave;
+       struct net_device *bond_dev = bond->dev;
+-      int features = bond->bond_features;
++      int i;
+-      bond_for_each_slave(bond, slave, i) {
+-              struct net_device * slave_dev = slave->dev;
+-              if (i == 0) {
+-                      features |= BOND_INTERSECT_FEATURES;
+-              }
+-              features &=
+-                      ~(~slave_dev->features & BOND_INTERSECT_FEATURES);
+-      }
++      bond_for_each_slave(bond, slave, i)
++              features &= (slave->dev->features & BOND_INTERSECT_FEATURES);
+-      /* turn off NETIF_F_SG if we need a csum and h/w can't do it */
+       if ((features & NETIF_F_SG) && 
+-              !(features & (NETIF_F_IP_CSUM |
+-                            NETIF_F_NO_CSUM |
+-                            NETIF_F_HW_CSUM))) {
++          !(features & (NETIF_F_IP_CSUM |
++                        NETIF_F_NO_CSUM |
++                        NETIF_F_HW_CSUM)))
+               features &= ~NETIF_F_SG;
+-      }
++      features |= (bond_dev->features & ~BOND_INTERSECT_FEATURES);
+       bond_dev->features = features;
+       return 0;
+@@ -4508,8 +4500,6 @@ static int __init bond_init(struct net_d
+                              NETIF_F_HW_VLAN_RX |
+                              NETIF_F_HW_VLAN_FILTER);
+-      bond->bond_features = bond_dev->features;
+-
+ #ifdef CONFIG_PROC_FS
+       bond_create_proc_entry(bond);
+ #endif
+--- linux-2.6.14.3.orig/drivers/net/bonding/bonding.h
++++ linux-2.6.14.3/drivers/net/bonding/bonding.h
+@@ -40,8 +40,8 @@
+ #include "bond_3ad.h"
+ #include "bond_alb.h"
+-#define DRV_VERSION   "2.6.4"
+-#define DRV_RELDATE   "September 26, 2005"
++#define DRV_VERSION   "2.6.5"
++#define DRV_RELDATE   "November 4, 2005"
+ #define DRV_NAME      "bonding"
+ #define DRV_DESCRIPTION       "Ethernet Channel Bonding Driver"
+@@ -211,9 +211,6 @@ struct bonding {
+       struct   bond_params params;
+       struct   list_head vlan_list;
+       struct   vlan_group *vlgrp;
+-      /* the features the bonding device supports, independently 
+-       * of any slaves */
+-      int      bond_features; 
+ };
+ /**
diff --git a/queue/fix-serverworks-tlb-flush..patch b/queue/fix-serverworks-tlb-flush..patch
new file mode 100644 (file)
index 0000000..514b258
--- /dev/null
@@ -0,0 +1,59 @@
+From stable-bounces@linux.kernel.org Mon Dec 12 12:32:30 2005
+Date: Mon, 7 Nov 2005 14:02:58 -0800
+Message-Id: <200511072202.jA7M2wXl001471@hera.kernel.org>
+From: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
+To: git-commits-head@vger.kernel.org
+Cc: 
+Subject: [stable] [AGPGART] Fix serverworks TLB flush.
+
+From: Dave Jones <davej@redhat.com>
+
+[AGPGART] Fix serverworks TLB flush.
+Go back to what 2.4 kernels used to do here, as if this hits,
+the kernel just hangs indefinitly.
+
+Actually an improvement over 2.4 - we now break; out of the loop
+instead of just printing messages on timeouts.
+
+Signed-off-by: Dave Jones <davej@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c
+index a9fb12c..5396897 100644
+---
+ drivers/char/agp/sworks-agp.c |   18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+--- linux-2.6.14.3.orig/drivers/char/agp/sworks-agp.c
++++ linux-2.6.14.3/drivers/char/agp/sworks-agp.c
+@@ -242,13 +242,27 @@ static int serverworks_fetch_size(void)
+  */
+ static void serverworks_tlbflush(struct agp_memory *temp)
+ {
++      unsigned long timeout;
++
+       writeb(1, serverworks_private.registers+SVWRKS_POSTFLUSH);
+-      while (readb(serverworks_private.registers+SVWRKS_POSTFLUSH) == 1)
++      timeout = jiffies + 3*HZ;
++      while (readb(serverworks_private.registers+SVWRKS_POSTFLUSH) == 1) {
+               cpu_relax();
++              if (time_after(jiffies, timeout)) {
++                      printk(KERN_ERR PFX "TLB post flush took more than 3 seconds\n");
++                      break;
++              }
++      }
+       writel(1, serverworks_private.registers+SVWRKS_DIRFLUSH);
+-      while(readl(serverworks_private.registers+SVWRKS_DIRFLUSH) == 1)
++      timeout = jiffies + 3*HZ;
++      while (readl(serverworks_private.registers+SVWRKS_DIRFLUSH) == 1) {
+               cpu_relax();
++              if (time_after(jiffies, timeout)) {
++                      printk(KERN_ERR PFX "TLB Dir flush took more than 3 seconds\n");
++                      break;
++              }
++      }
+ }
+ static int serverworks_configure(void)
diff --git a/queue/i8k-fix-proc-reporting-of-blank-service-tags.patch b/queue/i8k-fix-proc-reporting-of-blank-service-tags.patch
new file mode 100644 (file)
index 0000000..e4fe3e8
--- /dev/null
@@ -0,0 +1,46 @@
+From stable-bounces@linux.kernel.org Mon Dec 12 12:32:39 2005
+Date: Sat, 12 Nov 2005 11:59:25 -0800
+Message-Id: <200511121959.jACJxPZh004172@hera.kernel.org>
+From: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
+To: git-commits-head@vger.kernel.org
+Cc: 
+Subject: I8K: fix /proc reporting of blank service tags
+
+From: Dmitry Torokhov <dtor_core@ameritech.net>
+
+[PATCH] I8K: fix /proc reporting of blank service tags
+
+Make /proc/i8k display '?' when service tag is blank in BIOS.
+This fixes segfault in i8k gkrellm plugin.
+
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/char/i8k.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- linux-2.6.14.3.orig/drivers/char/i8k.c
++++ linux-2.6.14.3/drivers/char/i8k.c
+@@ -99,7 +99,9 @@ struct smm_regs {
+ static inline char *i8k_get_dmi_data(int field)
+ {
+-      return dmi_get_system_info(field) ? : "N/A";
++      char *dmi_data = dmi_get_system_info(field);
++
++      return dmi_data && *dmi_data ? dmi_data : "?";
+ }
+ /*
+@@ -396,7 +398,7 @@ static int i8k_proc_show(struct seq_file
+       return seq_printf(seq, "%s %s %s %d %d %d %d %d %d %d\n",
+                         I8K_PROC_FMT,
+                         bios_version,
+-                        dmi_get_system_info(DMI_PRODUCT_SERIAL) ? : "N/A",
++                        i8k_get_dmi_data(DMI_PRODUCT_SERIAL),
+                         cpu_temp,
+                         left_fan, right_fan, left_speed, right_speed,
+                         ac_power, fn_key);
diff --git a/queue/locking-rewrite.patch b/queue/locking-rewrite.patch
new file mode 100644 (file)
index 0000000..8cb9563
--- /dev/null
@@ -0,0 +1,74 @@
+From stable-bounces@linux.kernel.org Mon Dec 12 12:27:15 2005
+Date: Mon, 31 Oct 2005 09:05:36 -0800
+Message-Id: <200510311705.j9VH5aDM031690@hera.kernel.org>
+From: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
+To: git-commits-head@vger.kernel.org
+Cc: 
+Subject: [libata] locking rewrite (== fix)
+
+From: Jeff Garzik <jgarzik@pobox.com>
+
+[libata] locking rewrite (== fix)
+
+A lot of power packed into a little patch.
+
+This change eliminates the sharing between our controller-wide spinlock
+and the SCSI core's Scsi_Host lock.  As the locking in libata was
+already highly compartmentalized, always referencing our own lock, and
+never scsi_host::host_lock.
+
+As a side effect, this change eliminates a deadlock from calling
+scsi_finish_command() while inside our spinlock.
+
+
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/libata-core.c |    2 --
+ drivers/scsi/libata-scsi.c |    9 ++++++++-
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+--- linux-2.6.14.3.orig/drivers/scsi/libata-core.c
++++ linux-2.6.14.3/drivers/scsi/libata-core.c
+@@ -3916,8 +3916,6 @@ static void ata_host_init(struct ata_por
+       host->unique_id = ata_unique_id++;
+       host->max_cmd_len = 12;
+-      scsi_assign_lock(host, &host_set->lock);
+-
+       ap->flags = ATA_FLAG_PORT_DISABLED;
+       ap->id = host->unique_id;
+       ap->host = host;
+--- linux-2.6.14.3.orig/drivers/scsi/libata-scsi.c
++++ linux-2.6.14.3/drivers/scsi/libata-scsi.c
+@@ -39,6 +39,7 @@
+ #include <scsi/scsi.h>
+ #include "scsi.h"
+ #include <scsi/scsi_host.h>
++#include <scsi/scsi_device.h>
+ #include <linux/libata.h>
+ #include <asm/uaccess.h>
+@@ -1565,8 +1566,12 @@ int ata_scsi_queuecmd(struct scsi_cmnd *
+       struct ata_port *ap;
+       struct ata_device *dev;
+       struct scsi_device *scsidev = cmd->device;
++      struct Scsi_Host *shost = scsidev->host;
+-      ap = (struct ata_port *) &scsidev->host->hostdata[0];
++      ap = (struct ata_port *) &shost->hostdata[0];
++
++      spin_unlock(shost->host_lock);
++      spin_lock(&ap->host_set->lock);
+       ata_scsi_dump_cdb(ap, cmd);
+@@ -1589,6 +1594,8 @@ int ata_scsi_queuecmd(struct scsi_cmnd *
+               ata_scsi_translate(ap, dev, cmd, done, atapi_xlat);
+ out_unlock:
++      spin_unlock(&ap->host_set->lock);
++      spin_lock(shost->host_lock);
+       return 0;
+ }
diff --git a/queue/recompute-features-when-adding-a-new-device.patch b/queue/recompute-features-when-adding-a-new-device.patch
new file mode 100644 (file)
index 0000000..e7768c0
--- /dev/null
@@ -0,0 +1,35 @@
+From stable-bounces@linux.kernel.org Mon Dec 12 12:27:13 2005
+Date: Thu, 24 Nov 2005 00:00:03 -0800
+Message-Id: <200511240800.jAO803jw027240@hera.kernel.org>
+From: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
+To: git-commits-head@vger.kernel.org
+Cc: 
+Subject: [BRIDGE]: recompute features when adding a new device
+
+From: Olaf Rempel <razzor@kopf-tisch.de>
+
+[BRIDGE]: recompute features when adding a new device
+
+We must recompute bridge features everytime the list of underlying
+devices changes, or we might end up with features that are not supported
+by all devices (eg. NETIF_F_TSO)
+This patch adds the missing recompute when adding a device to the bridge.
+
+Signed-off-by: Olaf Rempel <razzor@kopf-tisch.de>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/bridge/br_if.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- linux-2.6.14.3.orig/net/bridge/br_if.c
++++ linux-2.6.14.3/net/bridge/br_if.c
+@@ -366,6 +366,7 @@ int br_add_if(struct net_bridge *br, str
+               spin_lock_bh(&br->lock);
+               br_stp_recalculate_bridge_id(br);
++              br_features_recompute(br);
+               if ((br->dev->flags & IFF_UP) 
+                   && (dev->flags & IFF_UP) && netif_carrier_ok(dev))
+                       br_stp_enable_port(p);
index 875db6b32c5ee8634389b4086472827768ad4517..494c9892a04788b11640e1564a7ced15912de92b 100644 (file)
@@ -15,3 +15,8 @@ v4l-dvb-fix-tuner-init-for-pinnacle-pctv-stereo.patch
 v4l-dvb-fix-analog-ntsc-for-thomson-dtt-761x-hybrid-tuner.patch
 nm256-reset-workaround-for-latitude-csx.patch
 i82365-release-all-resources-if-no-devices-are-found.patch
+fix-serverworks-tlb-flush..patch
+bonding-fix-feature-consolidation.patch
+recompute-features-when-adding-a-new-device.patch
+locking-rewrite.patch
+i8k-fix-proc-reporting-of-blank-service-tags.patch