提交 c91e468a 编写于 作者: A Andreas Schwab 提交者: Jeff Garzik

[PATCH] Use pci_set_consistent_dma_mask in ixgb driver

The ixgb driver is using pci_alloc_consistent, thus is should also use
pci_set_consistent_dma_mask.  This allows the driver to work on SGI
systems.

In case of an error during probing it should also disable the device again.
Signed-off-by: NAndreas Schwab <schwab@suse.de>
Signed-off-by: NJeff Garzik <jeff@garzik.org>
上级 43f2f104
...@@ -357,18 +357,20 @@ ixgb_probe(struct pci_dev *pdev, ...@@ -357,18 +357,20 @@ ixgb_probe(struct pci_dev *pdev,
if((err = pci_enable_device(pdev))) if((err = pci_enable_device(pdev)))
return err; return err;
if(!(err = pci_set_dma_mask(pdev, DMA_64BIT_MASK))) { if(!(err = pci_set_dma_mask(pdev, DMA_64BIT_MASK)) &&
!(err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK))) {
pci_using_dac = 1; pci_using_dac = 1;
} else { } else {
if((err = pci_set_dma_mask(pdev, DMA_32BIT_MASK))) { if((err = pci_set_dma_mask(pdev, DMA_32BIT_MASK)) ||
(err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK))) {
IXGB_ERR("No usable DMA configuration, aborting\n"); IXGB_ERR("No usable DMA configuration, aborting\n");
return err; goto err_dma_mask;
} }
pci_using_dac = 0; pci_using_dac = 0;
} }
if((err = pci_request_regions(pdev, ixgb_driver_name))) if((err = pci_request_regions(pdev, ixgb_driver_name)))
return err; goto err_request_regions;
pci_set_master(pdev); pci_set_master(pdev);
...@@ -502,6 +504,9 @@ ixgb_probe(struct pci_dev *pdev, ...@@ -502,6 +504,9 @@ ixgb_probe(struct pci_dev *pdev,
free_netdev(netdev); free_netdev(netdev);
err_alloc_etherdev: err_alloc_etherdev:
pci_release_regions(pdev); pci_release_regions(pdev);
err_request_regions:
err_dma_mask:
pci_disable_device(pdev);
return err; return err;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册