]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.34 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 24 Aug 2010 17:40:46 +0000 (10:40 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 24 Aug 2010 17:40:46 +0000 (10:40 -0700)
queue-2.6.34/alsa-intel8x0-mute-external-amplifier-by-default-for-thinkpad-x31.patch [new file with mode: 0644]
queue-2.6.34/e1000e-disable-aspm-l1-on-82573.patch [new file with mode: 0644]
queue-2.6.34/e1000e-don-t-check-for-alternate-mac-addr-on-parts-that-don-t-support-it.patch [new file with mode: 0644]
queue-2.6.34/fixes-for-using-make-3.82.patch [new file with mode: 0644]
queue-2.6.34/netlink-fix-compat-recvmsg.patch [new file with mode: 0644]
queue-2.6.34/series

diff --git a/queue-2.6.34/alsa-intel8x0-mute-external-amplifier-by-default-for-thinkpad-x31.patch b/queue-2.6.34/alsa-intel8x0-mute-external-amplifier-by-default-for-thinkpad-x31.patch
new file mode 100644 (file)
index 0000000..c3547a1
--- /dev/null
@@ -0,0 +1,38 @@
+From 9c77b846ec8b4e0c7107dd7f820172462dc84a61 Mon Sep 17 00:00:00 2001
+From: Daniel T Chen <crimsun@ubuntu.com>
+Date: Wed, 18 Aug 2010 19:33:43 -0400
+Subject: ALSA: intel8x0: Mute External Amplifier by default for ThinkPad X31
+
+From: Daniel T Chen <crimsun@ubuntu.com>
+
+commit 9c77b846ec8b4e0c7107dd7f820172462dc84a61 upstream.
+
+BugLink: https://bugs.launchpad.net/bugs/619439
+
+This ThinkPad model needs External Amplifier muted for audible playback,
+so set the inv_eapd quirk for it.
+
+Reported-and-tested-by: Dennis Bell <dennis.bell@parkerg.co.uk>
+Signed-off-by: Daniel T Chen <crimsun@ubuntu.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/intel8x0.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/sound/pci/intel8x0.c
++++ b/sound/pci/intel8x0.c
+@@ -1776,6 +1776,12 @@ static struct ac97_quirk ac97_quirks[] _
+         },
+       {
+               .subvendor = 0x1014,
++              .subdevice = 0x0534,
++              .name = "ThinkPad X31",
++              .type = AC97_TUNE_INV_EAPD
++      },
++      {
++              .subvendor = 0x1014,
+               .subdevice = 0x1f00,
+               .name = "MS-9128",
+               .type = AC97_TUNE_ALC_JACK
diff --git a/queue-2.6.34/e1000e-disable-aspm-l1-on-82573.patch b/queue-2.6.34/e1000e-disable-aspm-l1-on-82573.patch
new file mode 100644 (file)
index 0000000..11e766b
--- /dev/null
@@ -0,0 +1,35 @@
+From 19833b5dffe2f2e92a1b377f9aae9d5f32239512 Mon Sep 17 00:00:00 2001
+From: Bruce Allan <bruce.w.allan@intel.com>
+Date: Thu, 19 Aug 2010 15:48:30 -0700
+Subject: e1000e: disable ASPM L1 on 82573
+
+From: Bruce Allan <bruce.w.allan@intel.com>
+
+commit 19833b5dffe2f2e92a1b377f9aae9d5f32239512 upstream.
+
+On the e1000-devel mailing list, Nils Faerber reported latency issues with
+the 82573 LOM on a ThinkPad X60.  It was found to be caused by ASPM L1;
+disabling it resolves the latency.  The issue is present in kernels back
+to 2.6.34 and possibly 2.6.33.
+
+
+Reported-by: Nils Faerber <nils.faerber@kernelconcepts.de>
+Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/e1000e/82571.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/e1000e/82571.c
++++ b/drivers/net/e1000e/82571.c
+@@ -1826,6 +1826,7 @@ struct e1000_info e1000_82573_info = {
+                                 | FLAG_HAS_SMART_POWER_DOWN
+                                 | FLAG_HAS_AMT
+                                 | FLAG_HAS_SWSM_ON_LOAD,
++      .flags2                 = FLAG2_DISABLE_ASPM_L1,
+       .pba                    = 20,
+       .max_hw_frame_size      = ETH_FRAME_LEN + ETH_FCS_LEN,
+       .get_variants           = e1000_get_variants_82571,
diff --git a/queue-2.6.34/e1000e-don-t-check-for-alternate-mac-addr-on-parts-that-don-t-support-it.patch b/queue-2.6.34/e1000e-don-t-check-for-alternate-mac-addr-on-parts-that-don-t-support-it.patch
new file mode 100644 (file)
index 0000000..322c734
--- /dev/null
@@ -0,0 +1,118 @@
+From 1aef70ef125165e0114a8e475636eff242a52030 Mon Sep 17 00:00:00 2001
+From: Bruce Allan <bruce.w.allan@intel.com>
+Date: Thu, 19 Aug 2010 15:48:52 -0700
+Subject: e1000e: don't check for alternate MAC addr on parts that don't support it
+
+From: Bruce Allan <bruce.w.allan@intel.com>
+
+commit 1aef70ef125165e0114a8e475636eff242a52030 upstream.
+
+From: Bruce Allan <bruce.w.allan@intel.com>
+
+The alternate MAC address feature is only supported by 80003ES2LAN and
+82571 LOMs as well as a couple 82571 mezzanine cards.  Checking for an
+alternate MAC address on other parts can fail leading to the driver not
+able to load.  This patch limits the check for an alternate MAC address
+to be done only for parts that support the feature.
+
+This issue has been around since support for the feature was introduced
+to the e1000e driver in 2.6.34.
+
+Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
+Reported-by: Fabio Varesano <fax8@users.sourceforge.net>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/e1000e/82571.c   |   30 +++++++++++++++++-------------
+ drivers/net/e1000e/defines.h |    4 ++++
+ drivers/net/e1000e/lib.c     |   10 ++++++++++
+ 3 files changed, 31 insertions(+), 13 deletions(-)
+
+--- a/drivers/net/e1000e/82571.c
++++ b/drivers/net/e1000e/82571.c
+@@ -926,12 +926,14 @@ static s32 e1000_reset_hw_82571(struct e
+       ew32(IMC, 0xffffffff);
+       icr = er32(ICR);
+-      /* Install any alternate MAC address into RAR0 */
+-      ret_val = e1000_check_alt_mac_addr_generic(hw);
+-      if (ret_val)
+-              return ret_val;
++      if (hw->mac.type == e1000_82571) {
++              /* Install any alternate MAC address into RAR0 */
++              ret_val = e1000_check_alt_mac_addr_generic(hw);
++              if (ret_val)
++                      return ret_val;
+-      e1000e_set_laa_state_82571(hw, true);
++              e1000e_set_laa_state_82571(hw, true);
++      }
+       /* Reinitialize the 82571 serdes link state machine */
+       if (hw->phy.media_type == e1000_media_type_internal_serdes)
+@@ -1609,14 +1611,16 @@ static s32 e1000_read_mac_addr_82571(str
+ {
+       s32 ret_val = 0;
+-      /*
+-       * If there's an alternate MAC address place it in RAR0
+-       * so that it will override the Si installed default perm
+-       * address.
+-       */
+-      ret_val = e1000_check_alt_mac_addr_generic(hw);
+-      if (ret_val)
+-              goto out;
++      if (hw->mac.type == e1000_82571) {
++              /*
++               * If there's an alternate MAC address place it in RAR0
++               * so that it will override the Si installed default perm
++               * address.
++               */
++              ret_val = e1000_check_alt_mac_addr_generic(hw);
++              if (ret_val)
++                      goto out;
++      }
+       ret_val = e1000_read_mac_addr_generic(hw);
+--- a/drivers/net/e1000e/defines.h
++++ b/drivers/net/e1000e/defines.h
+@@ -613,6 +613,7 @@
+ #define E1000_FLASH_UPDATES  2000
+ /* NVM Word Offsets */
++#define NVM_COMPAT                 0x0003
+ #define NVM_ID_LED_SETTINGS        0x0004
+ #define NVM_INIT_CONTROL2_REG      0x000F
+ #define NVM_INIT_CONTROL3_PORT_B   0x0014
+@@ -633,6 +634,9 @@
+ /* Mask bits for fields in Word 0x1a of the NVM */
+ #define NVM_WORD1A_ASPM_MASK  0x000C
++/* Mask bits for fields in Word 0x03 of the EEPROM */
++#define NVM_COMPAT_LOM    0x0800
++
+ /* For checksumming, the sum of all words in the NVM should equal 0xBABA. */
+ #define NVM_SUM                    0xBABA
+--- a/drivers/net/e1000e/lib.c
++++ b/drivers/net/e1000e/lib.c
+@@ -183,6 +183,16 @@ s32 e1000_check_alt_mac_addr_generic(str
+       u16 offset, nvm_alt_mac_addr_offset, nvm_data;
+       u8 alt_mac_addr[ETH_ALEN];
++      ret_val = e1000_read_nvm(hw, NVM_COMPAT, 1, &nvm_data);
++      if (ret_val)
++              goto out;
++
++      /* Check for LOM (vs. NIC) or one of two valid mezzanine cards */
++      if (!((nvm_data & NVM_COMPAT_LOM) ||
++            (hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_DUAL) ||
++            (hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_QUAD)))
++              goto out;
++
+       ret_val = e1000_read_nvm(hw, NVM_ALT_MAC_ADDR_PTR, 1,
+                                &nvm_alt_mac_addr_offset);
+       if (ret_val) {
diff --git a/queue-2.6.34/fixes-for-using-make-3.82.patch b/queue-2.6.34/fixes-for-using-make-3.82.patch
new file mode 100644 (file)
index 0000000..da1c215
--- /dev/null
@@ -0,0 +1,48 @@
+From 3c955b407a084810f57260d61548cc92c14bc627 Mon Sep 17 00:00:00 2001
+From: Jan Beulich <JBeulich@novell.com>
+Date: Mon, 16 Aug 2010 11:58:58 +0100
+Subject: fixes for using make 3.82
+
+From: Jan Beulich <JBeulich@novell.com>
+
+commit 3c955b407a084810f57260d61548cc92c14bc627 upstream.
+
+It doesn't like pattern and explicit rules to be on the same line,
+and it seems to be more picky when matching file (or really directory)
+names with different numbers of trailing slashes.
+
+Signed-off-by: Jan Beulich <jbeulich@novell.com>
+Acked-by: Sam Ravnborg <sam@ravnborg.org>
+Andrew Benton <b3nton@gmail.com>
+Signed-off-by: Michal Marek <mmarek@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ firmware/Makefile  |    2 +-
+ scripts/mkmakefile |    4 +++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+--- a/firmware/Makefile
++++ b/firmware/Makefile
+@@ -141,7 +141,7 @@ fw-shipped-$(CONFIG_YAM) += yam/1200.bin
+ fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
+ # Directories which we _might_ need to create, so we have a rule for them.
+-firmware-dirs := $(sort $(patsubst %,$(objtree)/$(obj)/%/,$(dir $(fw-external-y) $(fw-shipped-all))))
++firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all))))
+ quiet_cmd_mkdir = MKDIR   $(patsubst $(objtree)/%,%,$@)
+       cmd_mkdir = mkdir -p $@
+--- a/scripts/mkmakefile
++++ b/scripts/mkmakefile
+@@ -44,7 +44,9 @@ all:
+ Makefile:;
+-\$(all) %/: all
++\$(all): all
+       @:
++%/: all
++      @:
+ EOF
diff --git a/queue-2.6.34/netlink-fix-compat-recvmsg.patch b/queue-2.6.34/netlink-fix-compat-recvmsg.patch
new file mode 100644 (file)
index 0000000..87ac5b3
--- /dev/null
@@ -0,0 +1,130 @@
+From 68d6ac6d2740b6a55f3ae92a4e0be6d881904b32 Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Sun, 15 Aug 2010 21:20:44 +0000
+Subject: netlink: fix compat recvmsg
+
+From: Johannes Berg <johannes.berg@intel.com>
+
+commit 68d6ac6d2740b6a55f3ae92a4e0be6d881904b32 upstream.
+
+Since
+commit 1dacc76d0014a034b8aca14237c127d7c19d7726
+Author: Johannes Berg <johannes@sipsolutions.net>
+Date:   Wed Jul 1 11:26:02 2009 +0000
+
+    net/compat/wext: send different messages to compat tasks
+
+we had a race condition when setting and then
+restoring frag_list. Eric attempted to fix it,
+but the fix created even worse problems.
+
+However, the original motivation I had when I
+added the code that turned out to be racy is
+no longer clear to me, since we only copy up
+to skb->len to userspace, which doesn't include
+the frag_list length. As a result, not doing
+any frag_list clearing and restoring avoids
+the race condition, while not introducing any
+other problems.
+
+Additionally, while preparing this patch I found
+that since none of the remaining netlink code is
+really aware of the frag_list, we need to use the
+original skb's information for packet information
+and credentials. This fixes, for example, the
+group information received by compat tasks.
+
+Cc: Eric Dumazet <eric.dumazet@gmail.com>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/netlink/af_netlink.c |   46 ++++++++++++++++------------------------------
+ 1 file changed, 16 insertions(+), 30 deletions(-)
+
+--- a/net/netlink/af_netlink.c
++++ b/net/netlink/af_netlink.c
+@@ -1383,7 +1383,7 @@ static int netlink_recvmsg(struct kiocb
+       struct netlink_sock *nlk = nlk_sk(sk);
+       int noblock = flags&MSG_DONTWAIT;
+       size_t copied;
+-      struct sk_buff *skb, *frag __maybe_unused = NULL;
++      struct sk_buff *skb, *data_skb;
+       int err;
+       if (flags&MSG_OOB)
+@@ -1395,45 +1395,35 @@ static int netlink_recvmsg(struct kiocb
+       if (skb == NULL)
+               goto out;
++      data_skb = skb;
++
+ #ifdef CONFIG_COMPAT_NETLINK_MESSAGES
+       if (unlikely(skb_shinfo(skb)->frag_list)) {
+-              bool need_compat = !!(flags & MSG_CMSG_COMPAT);
+-
+               /*
+-               * If this skb has a frag_list, then here that means that
+-               * we will have to use the frag_list skb for compat tasks
+-               * and the regular skb for non-compat tasks.
++               * If this skb has a frag_list, then here that means that we
++               * will have to use the frag_list skb's data for compat tasks
++               * and the regular skb's data for normal (non-compat) tasks.
+                *
+-               * The skb might (and likely will) be cloned, so we can't
+-               * just reset frag_list and go on with things -- we need to
+-               * keep that. For the compat case that's easy -- simply get
+-               * a reference to the compat skb and free the regular one
+-               * including the frag. For the non-compat case, we need to
+-               * avoid sending the frag to the user -- so assign NULL but
+-               * restore it below before freeing the skb.
++               * If we need to send the compat skb, assign it to the
++               * 'data_skb' variable so that it will be used below for data
++               * copying. We keep 'skb' for everything else, including
++               * freeing both later.
+                */
+-              if (need_compat) {
+-                      struct sk_buff *compskb = skb_shinfo(skb)->frag_list;
+-                      skb_get(compskb);
+-                      kfree_skb(skb);
+-                      skb = compskb;
+-              } else {
+-                      frag = skb_shinfo(skb)->frag_list;
+-                      skb_shinfo(skb)->frag_list = NULL;
+-              }
++              if (flags & MSG_CMSG_COMPAT)
++                      data_skb = skb_shinfo(skb)->frag_list;
+       }
+ #endif
+       msg->msg_namelen = 0;
+-      copied = skb->len;
++      copied = data_skb->len;
+       if (len < copied) {
+               msg->msg_flags |= MSG_TRUNC;
+               copied = len;
+       }
+-      skb_reset_transport_header(skb);
+-      err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
++      skb_reset_transport_header(data_skb);
++      err = skb_copy_datagram_iovec(data_skb, 0, msg->msg_iov, copied);
+       if (msg->msg_name) {
+               struct sockaddr_nl *addr = (struct sockaddr_nl *)msg->msg_name;
+@@ -1453,11 +1443,7 @@ static int netlink_recvmsg(struct kiocb
+       }
+       siocb->scm->creds = *NETLINK_CREDS(skb);
+       if (flags & MSG_TRUNC)
+-              copied = skb->len;
+-
+-#ifdef CONFIG_COMPAT_NETLINK_MESSAGES
+-      skb_shinfo(skb)->frag_list = frag;
+-#endif
++              copied = data_skb->len;
+       skb_free_datagram(sk, skb);
index b43acefc152c39f4cfef0d7d8e49f92c63676c53..77c123ec2e66c54a68bb0df9b5f4eed1b591fbdb 100644 (file)
@@ -65,3 +65,8 @@ isdn-gigaset-reduce-syslog-spam.patch
 isdn-gigaset-add-missing-unlock.patch
 oprofile-change-cpuids-from-decimal-to-hex-and-add-some-comments.patch
 oprofile-add-support-for-intel-processor-model-30.patch
+e1000e-disable-aspm-l1-on-82573.patch
+e1000e-don-t-check-for-alternate-mac-addr-on-parts-that-don-t-support-it.patch
+fixes-for-using-make-3.82.patch
+alsa-intel8x0-mute-external-amplifier-by-default-for-thinkpad-x31.patch
+netlink-fix-compat-recvmsg.patch