Tejun,
This patch looks like it might work for !PMP setups, but I am not so
sure about PMP.
Any comments? This should help begin addressing the problem where
hardware needs the DMA engine turned off before accessing the taskfile
registers -- something needed for ata_port_abort() via ata_qc_complete().
Jeff
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 0183131..0b7ed40 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1013,8 +1013,8 @@ int ata_port_freeze(struct ata_port *ap)
WARN_ON(!ap->ops->error_handler);
- nr_aborted = ata_port_abort(ap);
__ata_port_freeze(ap);
+ nr_aborted = ata_port_abort(ap);
return nr_aborted;
}