• Mark Lord's avatar
    sata_mv NCQ-EH for FIS-based switching · 4c299ca3
    Mark Lord authored
    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: default avatarMark Lord <mlord@pobox.com>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    4c299ca3
sata_mv.c 93.6 KB