• Robert Hancock's avatar
    sata_nv: fix ADMA freeze/thaw/irq_clear issues · 53014e25
    Robert Hancock authored
    This patch fixes some problems with ADMA-capable controllers with
    regard to freeze, thaw and irq_clear libata callbacks. Freeze and
    thaw didn't switch the ADMA-specific interrupts on or off, and more
    critically the irq_clear function didn't respect the restriction that
    the notifier clear registers for both ports have to be written at
    the same time even when only one port is being cleared. This could
    result in timeouts on one port when error handling (i.e. as a result
    of hotplug) occurred on the other port.
    
    As well, this fixes some issues in the interrupt handler: we shouldn't
    check any ADMA status if the port has ADMA switched off because of
    an ATAPI device, and it also checks to see if any ADMA interrupt has
    been raised even when we are in port-register mode.
    Signed-off-by: default avatarRobert Hancock <hancockr@shaw.ca>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    53014e25
sata_nv.c 48.2 KB