[PATCH] sata_mv: three bug fixes
authorMark Lord <lkml@rtr.ca>
Wed, 29 Mar 2006 14:50:31 +0000 (09:50 -0500)
committerJeff Garzik <jeff@garzik.org>
Thu, 30 Mar 2006 00:40:24 +0000 (19:40 -0500)
commit63af2a5c5990d95f1e7d8795f1425fb976ea2b4b
treeea1a7dbe399b200aa6df8a826be206f84eb60ae2
parent7705a8792b0fc82fd7d4dd923724606bbfd9fb20
[PATCH] sata_mv: three bug fixes

(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: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/scsi/sata_mv.c