libata-sff; Unbreak non DMA capable controllers again
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Thu, 26 Jul 2007 17:41:30 +0000 (18:41 +0100)
committerJeff Garzik <jeff@garzik.org>
Wed, 1 Aug 2007 14:00:56 +0000 (10:00 -0400)
Seems nobody else is checking/testing this case as it keeps getting
horked.

If we have no BAR4 mapping on an SFF controller this is *NOT* an error,
it just means it isn't doing BMDMA.

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

index 6c289c7b13224119d2ff13756ad556bcbff11fcf..1cce2198baaf1203deb7e1e7e6df305e215501df 100644 (file)
@@ -573,6 +573,10 @@ int ata_pci_init_bmdma(struct ata_host *host)
        struct pci_dev *pdev = to_pci_dev(gdev);
        int i, rc;
 
+       /* No BAR4 allocation: No DMA */
+       if (pci_resource_start(pdev, 4) == 0)
+               return 0;
+
        /* TODO: If we get no DMA mask we should fall back to PIO */
        rc = pci_set_dma_mask(pdev, ATA_DMA_MASK);
        if (rc)