From: Alan Cox Date: Thu, 26 Jul 2007 17:41:30 +0000 (+0100) Subject: libata-sff; Unbreak non DMA capable controllers again X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=6fdc99a224bd52020c602c3d4d57e5f8a75f6bb8;p=deliverable%2Flinux.git libata-sff; Unbreak non DMA capable controllers again 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 Signed-off-by: Jeff Garzik --- diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 6c289c7b1322..1cce2198baaf 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c @@ -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)