diff options
author | Tejun Heo <htejun@gmail.com> | 2008-04-07 09:47:19 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-04-17 15:44:23 -0400 |
commit | ac371987a81c61c2efbd6931245cdcaf43baad89 (patch) | |
tree | f88970931b26d2ad344d7d67ddabc64d9b48181d /include/linux/libata.h | |
parent | 57c9efdfb3cee5d4564fcb5f70555e2edb1bc52a (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.h | 2 |
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 | */ |
1027 | extern int sata_pmp_qc_defer_cmd_switch(struct ata_queued_cmd *qc); | 1027 | extern int sata_pmp_qc_defer_cmd_switch(struct ata_queued_cmd *qc); |
1028 | extern int sata_pmp_std_prereset(struct ata_link *link, unsigned long deadline); | ||
1029 | extern int sata_pmp_std_hardreset(struct ata_link *link, unsigned int *class, | 1028 | extern int sata_pmp_std_hardreset(struct ata_link *link, unsigned int *class, |
1030 | unsigned long deadline); | 1029 | unsigned long deadline); |
1031 | extern void sata_pmp_std_postreset(struct ata_link *link, unsigned int *class); | ||
1032 | extern void sata_pmp_error_handler(struct ata_port *ap); | 1030 | extern void sata_pmp_error_handler(struct ata_port *ap); |
1033 | 1031 | ||
1034 | /* | 1032 | /* |