sfc: simplify DMA mask setting
Christoph says[1] that dma_set_mask_and_coherent() is smart enough to truncate the mask itself if it's too long. So we can get rid of our "lop off one bit and retry" loop in efx_init_io(). [1]: https://www.spinics.net/lists/netdev/msg677266.html Signed-off-by: Edward Cree <ecree@solarflare.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
60bd2a2d1f
commit
08bdbcae29
|
@ -1086,17 +1086,7 @@ int efx_init_io(struct efx_nic *efx, int bar, dma_addr_t dma_mask,
|
|||
|
||||
pci_set_master(pci_dev);
|
||||
|
||||
/* Set the PCI DMA mask. Try all possibilities from our
|
||||
* genuine mask down to 32 bits, because some architectures
|
||||
* (e.g. x86_64 with iommu_sac_force set) will allow 40 bit
|
||||
* masks event though they reject 46 bit masks.
|
||||
*/
|
||||
while (dma_mask > 0x7fffffffUL) {
|
||||
rc = dma_set_mask_and_coherent(&pci_dev->dev, dma_mask);
|
||||
if (rc == 0)
|
||||
break;
|
||||
dma_mask >>= 1;
|
||||
}
|
||||
rc = dma_set_mask_and_coherent(&pci_dev->dev, dma_mask);
|
||||
if (rc) {
|
||||
netif_err(efx, probe, efx->net_dev,
|
||||
"could not find a suitable DMA mask\n");
|
||||
|
|
Loading…
Reference in New Issue