libata-sff: Don't call bmdma_stop on non DMA capable controllers
authorAlan <alan@lxorguk.ukuu.org.uk>
Thu, 25 Jan 2007 15:09:05 +0000 (15:09 +0000)
committerJeff Garzik <jeff@garzik.org>
Thu, 25 Jan 2007 23:27:16 +0000 (18:27 -0500)
Fixes bogus accesses to ports 0-15 with a non DMA capable controller.
This I think should go in for 2.6.20

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/libata-sff.c

index 114fa81deb8349b22bcfae623ddff948a6d50770..942aeba2940af1135ba971b794a6ef84781b21a7 100644 (file)
@@ -827,7 +827,8 @@ void ata_bmdma_error_handler(struct ata_port *ap)
  */
 void ata_bmdma_post_internal_cmd(struct ata_queued_cmd *qc)
 {
-       ata_bmdma_stop(qc);
+       if (qc->ap->ioaddr.bmdma_addr)
+               ata_bmdma_stop(qc);
 }
 
 #ifdef CONFIG_PCI