rpms/kernel/F-10 linux-2.6-libata-make-sure-port-is-thawed.patch, NONE, 1.1.2.1 TODO, 1.46.2.4, 1.46.2.5 kernel.spec, 1.1206.2.39, 1.1206.2.40

Chuck Ebbert cebbert at fedoraproject.org
Thu Mar 5 22:23:00 UTC 2009


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3676

Modified Files:
      Tag: private-fedora-10-2_6_27
	TODO kernel.spec 
Added Files:
      Tag: private-fedora-10-2_6_27
	linux-2.6-libata-make-sure-port-is-thawed.patch 
Log Message:
Fix endless error message spew from sata_nv in 2.6.27.19 (#488371)

linux-2.6-libata-make-sure-port-is-thawed.patch:

--- NEW FILE linux-2.6-libata-make-sure-port-is-thawed.patch ---
From: Tejun Heo <tj at kernel.org>
Date: Wed, 4 Mar 2009 06:59:30 +0000 (+0900)
Subject: libata: make sure port is thawed when skipping resets
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fjgarzik%2Flibata-dev.git;a=commitdiff_plain;h=d6515e6ff4ad3db4bd5ef2dd4e1026a7aca2482e

libata: make sure port is thawed when skipping resets

When SCR access is available and the link is offline, softreset is
skipped as it only wastes time and some controllers don't respond very
well.  However, the skip path forgot to thaw the port, which not only
blocks further event notification from the port but also causes
repeated EH invocations on the same event on drivers which rely on
->thaw() to clear events if the IRQ is shared with another device or
port.

This problem has always been there but is uncovered by recent sata_nv
nf2/3 change which dropped hardreset support while maintaining SCR
access.  nf2/3 doesn't clear hotplug event mask from the interrupt
handler but relies on ->thaw() to clear them.  When the hardreset was
there, the reset action was never skipped and the port was always
thawed but, with the hardreset gone, ->prereset() determines that
there's no need for softreset and both ->softreset() and ->thaw() are
skipped.  This leads to stuck hotplug event in the IRQ status register
triggering hotplug event whenever IRQ is delieverd on the same IRQ.
As the controller shares the same IRQ for both ports, this happens on
every IO if one port is occpupied and the other isn't.

This patch fixes the problem by making sure that the port is thawed on
reset-skip path.

bko#11615 reports this problem.

Signed-off-by: Tejun Heo <tj at kernel.org>
Cc: Robert Hancock <hancockrwd at gmail.com>
Reported-by: Dan Andresan <danyer at gmail.com>
Reported-by: Arne Woerner <arne_woerner at yahoo.com>
Reported-by: Stefan Lippers-Hollmann <s.L-H at gmx.de>
Signed-off-by: Jeff Garzik <jgarzik at redhat.com>
---

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 009ccc7..ea89091 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2272,11 +2272,14 @@ int ata_eh_reset(struct ata_link *link, int classify,
 		}
 
 		/* prereset() might have cleared ATA_EH_RESET.  If so,
-		 * bang classes and return.
+		 * bang classes, thaw and return.
 		 */
 		if (reset && !(ehc->i.action & ATA_EH_RESET)) {
 			ata_link_for_each_dev(dev, link)
 				classes[dev->devno] = ATA_DEV_NONE;
+			if ((ap->pflags & ATA_PFLAG_FROZEN) &&
+			    ata_is_host_link(link))
+				ata_eh_thaw_port(ap);
 			rc = 0;
 			goto out;
 		}


Index: TODO
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-10/TODO,v
retrieving revision 1.46.2.4
retrieving revision 1.46.2.5
diff -u -r1.46.2.4 -r1.46.2.5
--- TODO	23 Feb 2009 13:49:25 -0000	1.46.2.4
+++ TODO	5 Mar 2009 22:22:29 -0000	1.46.2.5
@@ -196,4 +196,6 @@
 	sent for -stable
 
 selinux-netlabel_setsockopt_fix.patch
-	todo: send for -stable
+	sent for -stable
+
+


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-10/kernel.spec,v
retrieving revision 1.1206.2.39
retrieving revision 1.1206.2.40
diff -u -r1.1206.2.39 -r1.1206.2.40
--- kernel.spec	5 Mar 2009 19:06:43 -0000	1.1206.2.39
+++ kernel.spec	5 Mar 2009 22:22:29 -0000	1.1206.2.40
@@ -645,6 +645,7 @@
 Patch600: sparc-2.6.git-aae7fb87ec4d2df6cb551670b1765cf4e5795a3b.patch
 
 Patch670: linux-2.6-ata-quirk.patch
+Patch671: linux-2.6-libata-make-sure-port-is-thawed.patch
 Patch673: linux-2.6-libata-pata-sch-notice-attached-slave-devices.patch
 
 Patch681: linux-2.6-iwl3945-ibss-tsf-fix.patch
@@ -1291,6 +1292,8 @@
 
 # ia64 ata quirk
 ApplyPatch linux-2.6-ata-quirk.patch
+# fix sata_nv broken by 2.6.27.19 update
+ApplyPatch linux-2.6-libata-make-sure-port-is-thawed.patch
 # fix detection of slave device on pata_sch (#467457)
 ApplyPatch linux-2.6-libata-pata-sch-notice-attached-slave-devices.patch
 
@@ -1979,6 +1982,9 @@
 %kernel_variant_files -k vmlinux %{with_kdump} kdump
 
 %changelog
+* Thu Mar 05 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.27.19-170.2.40
+- Fix endless error message spew from sata_nv in 2.6.27.19 (#488371)
+
 * Thu Mar 05 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.27.19-170.2.39
 - Add ALSA HDA probe_mask quirks from 2.6.29-rc7 (F11#485295)
 




More information about the fedora-extras-commits mailing list