Re: [PATCH #upstream-fixes] ahci: don't attach if ICH6 is in combined mode

2007-12-07 Thread Jeff Garzik

Tejun Heo wrote:

ICH6 R/Ms share PCI ID between piix and ahci modes and we've been
allowing ahci to attach regardless of how BIOS configured it.
However, enabling AHCI mode when the controller is in combined mode
can result in unexpected behavior.  Don't attach if the controller is
in combined mode.

Signed-off-by: Tejun Heo [EMAIL PROTECTED]
Cc: Bill Nottingham [EMAIL PROTECTED]
---
 drivers/ata/ahci.c |   18 ++
 1 file changed, 18 insertions(+)


applied both ahci fixes


-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH #upstream-fixes] ahci: don't attach if ICH6 is in combined mode

2007-12-05 Thread Tejun Heo
ICH6 R/Ms share PCI ID between piix and ahci modes and we've been
allowing ahci to attach regardless of how BIOS configured it.
However, enabling AHCI mode when the controller is in combined mode
can result in unexpected behavior.  Don't attach if the controller is
in combined mode.

Signed-off-by: Tejun Heo [EMAIL PROTECTED]
Cc: Bill Nottingham [EMAIL PROTECTED]
---
 drivers/ata/ahci.c |   18 ++
 1 file changed, 18 insertions(+)

Index: work/drivers/ata/ahci.c
===
--- work.orig/drivers/ata/ahci.c
+++ work/drivers/ata/ahci.c
@@ -193,6 +193,8 @@ enum {
  ATA_FLAG_ACPI_SATA | ATA_FLAG_AN |
  ATA_FLAG_IPM,
AHCI_LFLAG_COMMON   = ATA_LFLAG_SKIP_D2H_BSY,
+
+   ICH_MAP = 0x90, /* ICH MAP register */
 };
 
 struct ahci_cmd_hdr {
@@ -2273,6 +2275,22 @@ static int ahci_init_one(struct pci_dev 
if (rc)
return rc;
 
+   if (pdev-vendor == PCI_VENDOR_ID_INTEL 
+   (pdev-device == 0x2652 || pdev-device == 0x2653)) {
+   u8 map;
+
+   /* ICH6s share the same PCI ID for both piix and ahci
+* modes.  Enabling ahci mode while MAP indicates
+* combined mode is a bad idea.  Yield to ata_piix.
+*/
+   pci_read_config_byte(pdev, ICH_MAP, map);
+   if (map  0x3) {
+   dev_printk(KERN_INFO, pdev-dev, controller is in 
+  combined mode, can't enable AHCI mode\n);
+   return -ENODEV;
+   }
+   }
+
hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL);
if (!hpriv)
return -ENOMEM;
-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html