IB/ipath: set up 32-bit DMA mask if 64-bit setup fails
Some systems do not set up 64-bit maps on systems with 2GB or less of memory installed, so we have to fall back to trying a 32-bit setup. Signed-off-by: Bryan O'Sullivan <bos@pathscale.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
committed by
Roland Dreier
parent
755e4ca4a9
commit
68dd43a162
@@ -417,11 +417,21 @@ static int __devinit ipath_init_one(struct pci_dev *pdev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret = pci_set_dma_mask(pdev, DMA_64BIT_MASK);
|
ret = pci_set_dma_mask(pdev, DMA_64BIT_MASK);
|
||||||
|
if (ret) {
|
||||||
|
/*
|
||||||
|
* if the 64 bit setup fails, try 32 bit. Some systems
|
||||||
|
* do not setup 64 bit maps on systems with 2GB or less
|
||||||
|
* memory installed.
|
||||||
|
*/
|
||||||
|
ret = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_info(&pdev->dev, "pci_set_dma_mask unit %u "
|
dev_info(&pdev->dev, "pci_set_dma_mask unit %u "
|
||||||
"fails: %d\n", dd->ipath_unit, ret);
|
"fails: %d\n", dd->ipath_unit, ret);
|
||||||
goto bail_regions;
|
goto bail_regions;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
ipath_dbg("No 64bit DMA mask, used 32 bit mask\n");
|
||||||
|
}
|
||||||
|
|
||||||
pci_set_master(pdev);
|
pci_set_master(pdev);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user