• Mark Lord's avatar
    [PATCH] sata_mv: three bug fixes · 63af2a5c
    Mark Lord authored
    (1) A DMA transfer size of 0x10000 was not being written
    as 0x0000 in the PRDs.  Fixed.
    
    (1) The DEV_IRQ interrupt cause bit happens spuriously
    during EDMA operation, and was not being ignored by the driver.
    This led to various "drive busy" errors being reported,
    with associated unpredictable behaviour.  Fixed.
    
    (2) If a SATA or PCI interrupt was received with no outstanding
    command, the interrupt handler still attempted to invoke
    ata_qc_complete(), triggering assert()/BUG_ON() behaviour
    elsewhere in libata.  Fixed.
    
    The driver still has issues with confusion after error-recovery,
    but should now  be reliable in the absence of drive errors.
    I will be looking more into the error-handling bugs next.
    Signed-Off-By: default avatarMark Lord <mlord@pobox.com>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    63af2a5c
sata_mv.c 59.2 KB