]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/ata/libata-sff.c
ahci: add a module parameter to ignore the SSS flags for async scanning
[linux-2.6-omap-h63xx.git] / drivers / ata / libata-sff.c
index 5a4aad123c4259236677470a202f0d46ca279766..0b299b0f81721bbe1446169b8fa5b51c86eecd2d 100644 (file)
@@ -1322,7 +1322,7 @@ fsm_start:
                                         * condition.  Mark hint.
                                         */
                                        ata_ehi_push_desc(ehi, "ST-ATA: "
-                                               "DRQ=1 with device error, "
+                                               "DRQ=0 without device error, "
                                                "dev_stat 0x%X", status);
                                        qc->err_mask |= AC_ERR_HSM |
                                                        AC_ERR_NODEV_HINT;
@@ -1358,6 +1358,16 @@ fsm_start:
                                        qc->err_mask |= AC_ERR_HSM;
                                }
 
+                               /* There are oddball controllers with
+                                * status register stuck at 0x7f and
+                                * lbal/m/h at zero which makes it
+                                * pass all other presence detection
+                                * mechanisms we have.  Set NODEV_HINT
+                                * for it.  Kernel bz#7241.
+                                */
+                               if (status == 0x7f)
+                                       qc->err_mask |= AC_ERR_NODEV_HINT;
+
                                /* ata_pio_sectors() might change the
                                 * state to HSM_ST_LAST. so, the state
                                 * is changed after ata_pio_sectors().