aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/libata.h
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2008-04-07 09:47:19 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-04-17 15:44:23 -0400
commitac371987a81c61c2efbd6931245cdcaf43baad89 (patch)
treef88970931b26d2ad344d7d67ddabc64d9b48181d /include/linux/libata.h
parent57c9efdfb3cee5d4564fcb5f70555e2edb1bc52a (diff)
libata: clear SError after link resume
SError used to be cleared in ->postreset. This has small hotplug race condition. If a device is plugged in after reset is complete but postreset hasn't run yet, its hotplug event gets lost when SError is cleared. This patch makes sata_link_resume() clear SError. This kills the race condition and makes a lot of sense as some PMP and host PHYs don't work properly without SError cleared. This change makes sata_pmp_std_{pre|post}_reset()'s unnecessary as they become identical to ata_std counterparts. It also simplifies sata_pmp_hardreset() and ahci_vt8251_hardreset(). Signed-off-by: Tejun Heo <htejun@gmail.com>
Diffstat (limited to 'include/linux/libata.h')
-rw-r--r--include/linux/libata.h2
1 files changed, 0 insertions, 2 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index c060cd3cba66..b9188371b12a 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -1025,10 +1025,8 @@ static inline int ata_acpi_cbl_80wire(struct ata_port *ap,
1025 * PMP - drivers/ata/libata-pmp.c 1025 * PMP - drivers/ata/libata-pmp.c
1026 */ 1026 */
1027extern int sata_pmp_qc_defer_cmd_switch(struct ata_queued_cmd *qc); 1027extern int sata_pmp_qc_defer_cmd_switch(struct ata_queued_cmd *qc);
1028extern int sata_pmp_std_prereset(struct ata_link *link, unsigned long deadline);
1029extern int sata_pmp_std_hardreset(struct ata_link *link, unsigned int *class, 1028extern int sata_pmp_std_hardreset(struct ata_link *link, unsigned int *class,
1030 unsigned long deadline); 1029 unsigned long deadline);
1031extern void sata_pmp_std_postreset(struct ata_link *link, unsigned int *class);
1032extern void sata_pmp_error_handler(struct ata_port *ap); 1030extern void sata_pmp_error_handler(struct ata_port *ap);
1033 1031
1034/* 1032/*