summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-08-01 14:43:35 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2011-08-01 14:43:35 -0700
commite17b30104d0338a003aec4e6fa088f2833844750 (patch)
treee33dbf20508d18a0156191bc36d40a0a7d04dc34
parent90fe4afef00c686025d4d6807e5d416ee21d3ce2 (diff)
downloadlongterm-queue-2.6.33-e17b30104d0338a003aec4e6fa088f2833844750.tar.gz
.33 patches
-rw-r--r--queue-2.6.33/bridge-send-proper-message_age-in-config-bpdu.patch82
-rw-r--r--queue-2.6.33/davinci-dm365-evm-fix-video-input-mux-bits.patch43
-rw-r--r--queue-2.6.33/libata-fix-unexpectedly-frozen-port-after-ata_eh_reset.patch70
-rw-r--r--queue-2.6.33/series4
-rw-r--r--queue-2.6.33/x86-make-dell-latitude-e5420-use-reboot-pci.patch43
5 files changed, 242 insertions, 0 deletions
diff --git a/queue-2.6.33/bridge-send-proper-message_age-in-config-bpdu.patch b/queue-2.6.33/bridge-send-proper-message_age-in-config-bpdu.patch
new file mode 100644
index 0000000..758a205
--- /dev/null
+++ b/queue-2.6.33/bridge-send-proper-message_age-in-config-bpdu.patch
@@ -0,0 +1,82 @@
+From 0c03150e7ea8f7fcd03cfef29385e0010b22ee92 Mon Sep 17 00:00:00 2001
+From: stephen hemminger <shemminger@vyatta.com>
+Date: Fri, 22 Jul 2011 07:47:06 +0000
+Subject: bridge: send proper message_age in config BPDU
+
+From: stephen hemminger <shemminger@vyatta.com>
+
+commit 0c03150e7ea8f7fcd03cfef29385e0010b22ee92 upstream.
+
+A bridge topology with three systems:
+
+ +------+ +------+
+ | A(2) |--| B(1) |
+ +------+ +------+
+ \ /
+ +------+
+ | C(3) |
+ +------+
+
+What is supposed to happen:
+ * bridge with the lowest ID is elected root (for example: B)
+ * C detects that A->C is higher cost path and puts in blocking state
+
+What happens. Bridge with lowest id (B) is elected correctly as
+root and things start out fine initially. But then config BPDU
+doesn't get transmitted from A -> C. Because of that
+the link from A-C is transistioned to the forwarding state.
+
+The root cause of this is that the configuration messages
+is generated with bogus message age, and dropped before
+sending.
+
+In the standardmessage_age is supposed to be:
+ the time since the generation of the Configuration BPDU by
+ the Root that instigated the generation of this Configuration BPDU.
+
+Reimplement this by recording the timestamp (age + jiffies) when
+recording config information. The old code incorrectly used the time
+elapsed on the ageing timer which was incorrect.
+
+See also:
+ https://bugzilla.vyatta.com/show_bug.cgi?id=7164
+
+Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/bridge/br_private.h | 1 +
+ net/bridge/br_stp.c | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+--- a/net/bridge/br_private.h
++++ b/net/bridge/br_private.h
+@@ -75,6 +75,7 @@ struct net_bridge_port
+ bridge_id designated_bridge;
+ u32 path_cost;
+ u32 designated_cost;
++ unsigned long designated_age;
+
+ struct timer_list forward_delay_timer;
+ struct timer_list hold_timer;
+--- a/net/bridge/br_stp.c
++++ b/net/bridge/br_stp.c
+@@ -165,8 +165,7 @@ void br_transmit_config(struct net_bridg
+ else {
+ struct net_bridge_port *root
+ = br_get_port(br, br->root_port);
+- bpdu.message_age = br->max_age
+- - (root->message_age_timer.expires - jiffies)
++ bpdu.message_age = (jiffies - root->designated_age)
+ + MESSAGE_AGE_INCR;
+ }
+ bpdu.max_age = br->max_age;
+@@ -190,6 +189,7 @@ static inline void br_record_config_info
+ p->designated_cost = bpdu->root_path_cost;
+ p->designated_bridge = bpdu->bridge_id;
+ p->designated_port = bpdu->port_id;
++ p->designated_age = jiffies + bpdu->message_age;
+
+ mod_timer(&p->message_age_timer, jiffies
+ + (p->br->max_age - bpdu->message_age));
diff --git a/queue-2.6.33/davinci-dm365-evm-fix-video-input-mux-bits.patch b/queue-2.6.33/davinci-dm365-evm-fix-video-input-mux-bits.patch
new file mode 100644
index 0000000..5091e0c
--- /dev/null
+++ b/queue-2.6.33/davinci-dm365-evm-fix-video-input-mux-bits.patch
@@ -0,0 +1,43 @@
+From 9daedd833a38edd90cf7baa1b1fcf61c3a0721e3 Mon Sep 17 00:00:00 2001
+From: Jon Povey <jon.povey@racelogic.co.uk>
+Date: Tue, 19 Jul 2011 12:30:11 +0900
+Subject: davinci: DM365 EVM: fix video input mux bits
+
+From: Jon Povey <jon.povey@racelogic.co.uk>
+
+commit 9daedd833a38edd90cf7baa1b1fcf61c3a0721e3 upstream.
+
+Video input mux settings for tvp7002 and imager inputs were swapped.
+Comment was correct.
+
+Tested on EVM with tvp7002 input.
+
+Signed-off-by: Jon Povey <jon.povey@racelogic.co.uk>
+Acked-by: Manjunath Hadli <manjunath.hadli@ti.com>
+Signed-off-by: Sekhar Nori <nsekhar@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/mach-davinci/board-dm365-evm.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/mach-davinci/board-dm365-evm.c
++++ b/arch/arm/mach-davinci/board-dm365-evm.c
+@@ -453,7 +453,7 @@ fail:
+ */
+ if (have_imager()) {
+ label = "HD imager";
+- mux |= 1;
++ mux |= 2;
+
+ /* externally mux MMC1/ENET/AIC33 to imager */
+ mux |= BIT(6) | BIT(5) | BIT(3);
+@@ -474,7 +474,7 @@ fail:
+ resets &= ~BIT(1);
+
+ if (have_tvp7002()) {
+- mux |= 2;
++ mux |= 1;
+ resets &= ~BIT(2);
+ label = "tvp7002 HD";
+ } else {
diff --git a/queue-2.6.33/libata-fix-unexpectedly-frozen-port-after-ata_eh_reset.patch b/queue-2.6.33/libata-fix-unexpectedly-frozen-port-after-ata_eh_reset.patch
new file mode 100644
index 0000000..91bce8a
--- /dev/null
+++ b/queue-2.6.33/libata-fix-unexpectedly-frozen-port-after-ata_eh_reset.patch
@@ -0,0 +1,70 @@
+From 8c56cacc724c7650b893d43068fa66044aa29a61 Mon Sep 17 00:00:00 2001
+From: Tejun Heo <tj@kernel.org>
+Date: Wed, 25 May 2011 13:19:39 +0200
+Subject: libata: fix unexpectedly frozen port after ata_eh_reset()
+
+From: Tejun Heo <tj@kernel.org>
+
+commit 8c56cacc724c7650b893d43068fa66044aa29a61 upstream.
+
+To work around controllers which can't properly plug events while
+reset, ata_eh_reset() clears error states and ATA_PFLAG_EH_PENDING
+after reset but before RESET is marked done. As reset is the final
+recovery action and full verification of devices including onlineness
+and classfication match is done afterwards, this shouldn't lead to
+lost devices or missed hotplug events.
+
+Unfortunately, it forgot to thaw the port when clearing EH_PENDING, so
+if the condition happens after resetting an empty port, the port could
+be left frozen and EH will end without thawing it, making the port
+unresponsive to further hotplug events.
+
+Thaw if the port is frozen after clearing EH_PENDING. This problem is
+reported by Bruce Stenning in the following thread.
+
+ http://thread.gmane.org/gmane.linux.kernel/1123265
+
+stable: I think we should weather this patch a bit longer in -rcX
+ before sending it to -stable. Please wait at least a month
+ after this patch makes upstream. Thanks.
+
+-v2: Fixed spelling in the comment per Dave Howorth.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Reported-by: Bruce Stenning <b.stenning@indigovision.com>
+Cc: Dave Howorth <dhoworth@mrc-lmb.cam.ac.uk>
+Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/libata-eh.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+--- a/drivers/ata/libata-eh.c
++++ b/drivers/ata/libata-eh.c
+@@ -2716,10 +2716,11 @@ int ata_eh_reset(struct ata_link *link,
+ }
+
+ /*
+- * Some controllers can't be frozen very well and may set
+- * spuruious error conditions during reset. Clear accumulated
+- * error information. As reset is the final recovery action,
+- * nothing is lost by doing this.
++ * Some controllers can't be frozen very well and may set spurious
++ * error conditions during reset. Clear accumulated error
++ * information and re-thaw the port if frozen. As reset is the
++ * final recovery action and we cross check link onlineness against
++ * device classification later, no hotplug event is lost by this.
+ */
+ spin_lock_irqsave(link->ap->lock, flags);
+ memset(&link->eh_info, 0, sizeof(link->eh_info));
+@@ -2728,6 +2729,9 @@ int ata_eh_reset(struct ata_link *link,
+ ap->pflags &= ~ATA_PFLAG_EH_PENDING;
+ spin_unlock_irqrestore(link->ap->lock, flags);
+
++ if (ap->pflags & ATA_PFLAG_FROZEN)
++ ata_eh_thaw_port(ap);
++
+ /*
+ * Make sure onlineness and classification result correspond.
+ * Hotplug could have happened during reset and some
diff --git a/queue-2.6.33/series b/queue-2.6.33/series
index 85a251b..06e7d2c 100644
--- a/queue-2.6.33/series
+++ b/queue-2.6.33/series
@@ -11,3 +11,7 @@ hwmon-max1111-fix-race-condition-causing-null-pointer-exception.patch
usb-pl2303-add-adlink-nd-6530-usb-ids.patch
usb-pl2303.h-checkpatch-cleanups.patch
usb-serial-add-ids-for-winchiphead-usb-rs232-adapter.patch
+bridge-send-proper-message_age-in-config-bpdu.patch
+davinci-dm365-evm-fix-video-input-mux-bits.patch
+libata-fix-unexpectedly-frozen-port-after-ata_eh_reset.patch
+x86-make-dell-latitude-e5420-use-reboot-pci.patch
diff --git a/queue-2.6.33/x86-make-dell-latitude-e5420-use-reboot-pci.patch b/queue-2.6.33/x86-make-dell-latitude-e5420-use-reboot-pci.patch
new file mode 100644
index 0000000..53d7a2b
--- /dev/null
+++ b/queue-2.6.33/x86-make-dell-latitude-e5420-use-reboot-pci.patch
@@ -0,0 +1,43 @@
+From b7798d28ec15d20fd34b70fa57eb13f0cf6d1ecd Mon Sep 17 00:00:00 2001
+From: Daniel J Blueman <daniel.blueman@gmail.com>
+Date: Fri, 13 May 2011 09:04:59 +0800
+Subject: x86: Make Dell Latitude E5420 use reboot=pci
+
+From: Daniel J Blueman <daniel.blueman@gmail.com>
+
+commit b7798d28ec15d20fd34b70fa57eb13f0cf6d1ecd upstream.
+
+Rebooting on the Dell E5420 often hangs with the keyboard or ACPI
+methods, but is reliable via the PCI method.
+
+[ hpa: this was deferred because we believed for a long time that the
+ recent reshuffling of the boot priorities in commit
+ 660e34cebf0a11d54f2d5dd8838607452355f321 fixed this platform.
+ Unfortunately that turned out to be incorrect. ]
+
+Signed-off-by: Daniel J Blueman <daniel.blueman@gmail.com>
+Link: http://lkml.kernel.org/r/1305248699-2347-1-git-send-email-daniel.blueman@gmail.com
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/reboot.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/arch/x86/kernel/reboot.c
++++ b/arch/x86/kernel/reboot.c
+@@ -469,6 +469,14 @@ static struct dmi_system_id __initdata p
+ DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1"),
+ },
+ },
++ { /* Handle problems with rebooting on the Latitude E5420. */
++ .callback = set_pci_reboot,
++ .ident = "Dell Latitude E5420",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5420"),
++ },
++ },
+ { }
+ };
+