sata_mv NCQ-EH for FIS-based switching
authorMark Lord <liml@rtr.ca>
Fri, 2 May 2008 06:16:20 +0000 (02:16 -0400)
committerJeff Garzik <jgarzik@redhat.com>
Tue, 6 May 2008 15:38:24 +0000 (11:38 -0400)
commit4c299ca3649ccf666819e7d4a27a68c39fa174f1
tree2a1a60aaf098ed2efd7729fe168b5f0b97590226
parent29d187bb1e30682e228ce461c487d78d945c3e4f
sata_mv NCQ-EH for FIS-based switching

Convert sata_mv's EH for FIS-based switching (FBS) over to the
sequence recommended by Marvell.  This enables us to catch/analyze
multiple failed links on a port-multiplier when using NCQ.

To do this, we clear the ERR_DEV bit in the EDMA Halt-Conditions register,
so that the EDMA engine doesn't self-disable on the first NCQ error.

Our EH code sets the MV_PP_FLAG_DELAYED_EH flag to prevent new commands
being queued while we await completion of all outstanding NCQ commands
on all links of the failed PM.

The SATA Test Control register tells us which links have failed,
so we must only wait for any other active links to finish up
before we stop the EDMA and run the .error_handler afterward.

The patch also includes skeleton code for handling of non-NCQ FBS operation.
This is more for documentation purposes right now, as that mode is not yet
enabled in sata_mv.

Signed-off-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/sata_mv.c