From: Greg Kroah-Hartman Date: Tue, 24 Aug 2010 17:40:46 +0000 (-0700) Subject: .34 patches X-Git-Tag: v2.6.32.21~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0836ab211025f72540e8f4c582b645a5298af668;p=thirdparty%2Fkernel%2Fstable-queue.git .34 patches --- 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 index 00000000000..c3547a153d4 --- /dev/null +++ b/queue-2.6.34/alsa-intel8x0-mute-external-amplifier-by-default-for-thinkpad-x31.patch @@ -0,0 +1,38 @@ +From 9c77b846ec8b4e0c7107dd7f820172462dc84a61 Mon Sep 17 00:00:00 2001 +From: Daniel T Chen +Date: Wed, 18 Aug 2010 19:33:43 -0400 +Subject: ALSA: intel8x0: Mute External Amplifier by default for ThinkPad X31 + +From: Daniel T Chen + +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 +Signed-off-by: Daniel T Chen +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..11e766be3d5 --- /dev/null +++ b/queue-2.6.34/e1000e-disable-aspm-l1-on-82573.patch @@ -0,0 +1,35 @@ +From 19833b5dffe2f2e92a1b377f9aae9d5f32239512 Mon Sep 17 00:00:00 2001 +From: Bruce Allan +Date: Thu, 19 Aug 2010 15:48:30 -0700 +Subject: e1000e: disable ASPM L1 on 82573 + +From: Bruce Allan + +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 +Signed-off-by: Bruce Allan +Signed-off-by: Jeff Kirsher +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..322c734911b --- /dev/null +++ b/queue-2.6.34/e1000e-don-t-check-for-alternate-mac-addr-on-parts-that-don-t-support-it.patch @@ -0,0 +1,118 @@ +From 1aef70ef125165e0114a8e475636eff242a52030 Mon Sep 17 00:00:00 2001 +From: Bruce Allan +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 + +commit 1aef70ef125165e0114a8e475636eff242a52030 upstream. + +From: Bruce Allan + +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 +Reported-by: Fabio Varesano +Signed-off-by: Jeff Kirsher +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..da1c2153dfd --- /dev/null +++ b/queue-2.6.34/fixes-for-using-make-3.82.patch @@ -0,0 +1,48 @@ +From 3c955b407a084810f57260d61548cc92c14bc627 Mon Sep 17 00:00:00 2001 +From: Jan Beulich +Date: Mon, 16 Aug 2010 11:58:58 +0100 +Subject: fixes for using make 3.82 + +From: Jan Beulich + +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 +Acked-by: Sam Ravnborg +Andrew Benton +Signed-off-by: Michal Marek +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..87ac5b31eb1 --- /dev/null +++ b/queue-2.6.34/netlink-fix-compat-recvmsg.patch @@ -0,0 +1,130 @@ +From 68d6ac6d2740b6a55f3ae92a4e0be6d881904b32 Mon Sep 17 00:00:00 2001 +From: Johannes Berg +Date: Sun, 15 Aug 2010 21:20:44 +0000 +Subject: netlink: fix compat recvmsg + +From: Johannes Berg + +commit 68d6ac6d2740b6a55f3ae92a4e0be6d881904b32 upstream. + +Since +commit 1dacc76d0014a034b8aca14237c127d7c19d7726 +Author: Johannes Berg +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 +Signed-off-by: Johannes Berg +Acked-by: Eric Dumazet +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + 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); + diff --git a/queue-2.6.34/series b/queue-2.6.34/series index b43acefc152..77c123ec2e6 100644 --- a/queue-2.6.34/series +++ b/queue-2.6.34/series @@ -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