rpms/kernel/F-9 linux-2.6-libata-ata_piix-check-sidpr.patch, NONE, 1.1 linux-2.6-md-fix-oops-in-rdev_attr_store.patch, NONE, 1.1 kernel.spec, 1.631, 1.632

Chuck Ebbert (cebbert) fedora-extras-commits at redhat.com
Thu May 1 02:02:59 UTC 2008


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-9
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv10844

Modified Files:
	kernel.spec 
Added Files:
	linux-2.6-libata-ata_piix-check-sidpr.patch 
	linux-2.6-md-fix-oops-in-rdev_attr_store.patch 
Log Message:
* Wed Apr 30 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.25-13
- Fix drive detection on some Macbook models (#439398)
- Fix oops in RAID code (#441765)


linux-2.6-libata-ata_piix-check-sidpr.patch:

--- NEW FILE linux-2.6-libata-ata_piix-check-sidpr.patch ---
On certain configurations (certain macbooks), even though all the
conditions for SIDPR access described in the datasheet are met,
actually reading those registers just returns 0 and have no effect on
write.  Verify SIDPR is actually working before enabling it.

This is reported by Ryan Roth in bz#10512.

Signed-off-by: Tejun Heo <htejun at gmail.com>
Cc: Ryan Roth <ryan.roth at ch2m.com>
---
Apple did another weird thing with ich8m in addition to the weird
lockup on second port enable and SIDPR causes drive misdetection.
This one probably should go to -stable too.

Thanks.

 drivers/ata/ata_piix.c |   25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index ea2c764..a9027b8 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -1348,6 +1348,8 @@ static void __devinit piix_init_sidpr(struct ata_host *host)
 {
 	struct pci_dev *pdev = to_pci_dev(host->dev);
 	struct piix_host_priv *hpriv = host->private_data;
+	struct ata_device *dev0 = &host->ports[0]->link.device[0];
+	u32 scontrol;
 	int i;
 
 	/* check for availability */
@@ -1366,6 +1368,29 @@ static void __devinit piix_init_sidpr(struct ata_host *host)
 		return;
 
 	hpriv->sidpr = pcim_iomap_table(pdev)[PIIX_SIDPR_BAR];
+
+	/* SCR access via SIDPR doesn't work on some configurations.
+	 * Give it a test drive by inhibiting power save modes which
+	 * we'll do anyway.
+	 */
+	scontrol = piix_sidpr_read(dev0, SCR_CONTROL);
+
+	/* if IPM is already 3, SCR access is probably working.  Don't
+	 * un-inhibit power save modes as BIOS might have inhibited
+	 * them for a reason.
+	 */
+	if ((scontrol & 0xf00) != 0x300) {
+		scontrol |= 0x300;
+		piix_sidpr_write(dev0, SCR_CONTROL, scontrol);
+		scontrol = piix_sidpr_read(dev0, SCR_CONTROL);
+
+		if ((scontrol & 0xf00) != 0x300) {
+			dev_printk(KERN_INFO, host->dev, "SCR access via "
+				   "SIDPR is available but doesn't work\n");
+			return;
+		}
+	}
+
 	host->ports[0]->ops = &piix_sidpr_sata_ops;
 	host->ports[1]->ops = &piix_sidpr_sata_ops;
 }
_

linux-2.6-md-fix-oops-in-rdev_attr_store.patch:

--- NEW FILE linux-2.6-md-fix-oops-in-rdev_attr_store.patch ---
md: fix use after free when removing rdev via sysfs

From: Dan Williams <dan.j.williams at intel.com>

rdev->mddev is no longer valid upon return from entry->store() when the
'remove' command is given.

Signed-off-by: Dan Williams <dan.j.williams at intel.com>
Signed-off-by: Neil Brown <neilb at suse.de>

### Diffstat output
 ./drivers/md/md.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff .prev/drivers/md/md.c ./drivers/md/md.c
--- .prev/drivers/md/md.c	2008-04-28 14:58:30.000000000 +1000
+++ ./drivers/md/md.c	2008-04-28 14:58:30.000000000 +1000
@@ -2096,7 +2096,7 @@ rdev_attr_store(struct kobject *kobj, st
 			rv = -EBUSY;
 		else
 			rv = entry->store(rdev, page, length);
-		mddev_unlock(rdev->mddev);
+		mddev_unlock(mddev);
 	}
 	return rv;
 }


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/kernel.spec,v
retrieving revision 1.631
retrieving revision 1.632
diff -u -r1.631 -r1.632
--- kernel.spec	30 Apr 2008 06:53:37 -0000	1.631
+++ kernel.spec	1 May 2008 02:02:17 -0000	1.632
@@ -611,6 +611,7 @@
 Patch610: linux-2.6-defaults-fat-utf8.patch
 Patch670: linux-2.6-ata-quirk.patch
 Patch671: linux-2.6-libata-force-hardreset-in-sleep-mode.patch
+Patch672: linux-2.6-libata-ata_piix-check-sidpr.patch
 
 Patch680: linux-2.6-wireless.patch
 Patch681: linux-2.6-wireless-pending.patch
@@ -620,6 +621,8 @@
 
 Patch700: linux-2.6-nfs-client-mounts-hang.patch
 
+Patch750: linux-2.6-md-fix-oops-in-rdev_attr_store.patch
+
 # SELinux patches, will go upstream in .26
 Patch800: linux-2.6-selinux-ssinitialized-bugon.patch
 
@@ -1142,6 +1145,8 @@
 ApplyPatch linux-2.6-ata-quirk.patch
 # wake up links that have been put to sleep by BIOS (#436099)
 ApplyPatch linux-2.6-libata-force-hardreset-in-sleep-mode.patch
+# fix broken drive detection on some macbooks (#439398)
+ApplyPatch linux-2.6-libata-ata_piix-check-sidpr.patch
 
 # wireless patches headed for 2.6.25
 #ApplyPatch linux-2.6-wireless.patch
@@ -1160,6 +1165,9 @@
 # NFS Client mounts hang when exported directory do not exist
 ApplyPatch linux-2.6-nfs-client-mounts-hang.patch
 
+# fix oops in mdraid (#441765)
+ApplyPatch linux-2.6-md-fix-oops-in-rdev_attr_store.patch
+
 # build id related enhancements
 ApplyPatch linux-2.6-default-mmf_dump_elf_headers.patch
 
@@ -1797,6 +1805,10 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Wed Apr 30 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.25-13
+- Fix drive detection on some Macbook models (#439398)
+- Fix oops in RAID code (#441765)
+
 * Tue Apr 29 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.25-12
 - Fix CVE-2008-1675; patches taken from 2.6.25.1-rc1.
 




More information about the fedora-extras-commits mailing list