Skip to content

Commit b01183a

Browse files
Marc St-Amandclaudiubeznea
authored andcommitted
net: macb: Align the dma and coherent dma masks
Single page and coherent memory blocks can use different DMA masks when the macb accesses physical memory directly. The kernel is clever enough to allocate pages that fit into the requested address width. When using the ARM SMMU, the DMA mask must be the same for single pages and big coherent memory blocks. Otherwise the translation tables turn into one big mess. [ 74.959909] macb ff0e0000.ethernet eth0: DMA bus error: HRESP not OK [ 74.959989] arm-smmu fd800000.smmu: Unhandled context fault: fsr=0x402, iova=0x3165687460, fsynr=0x20001, cbfrsynra=0x877, cb=1 [ 75.173939] macb ff0e0000.ethernet eth0: DMA bus error: HRESP not OK [ 75.173955] arm-smmu fd800000.smmu: Unhandled context fault: fsr=0x402, iova=0x3165687460, fsynr=0x20001, cbfrsynra=0x877, cb=1 Since using the same DMA mask does not hurt direct 1:1 physical memory mappings, this commit always aligns DMA and coherent masks. Signed-off-by: Marc St-Amand <mstamand@ciena.com> Signed-off-by: Harini Katakam <harini.katakam@xilinx.com> Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com> Tested-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 6d7130e commit b01183a

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

drivers/net/ethernet/cadence/macb_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4807,7 +4807,7 @@ static int macb_probe(struct platform_device *pdev)
48074807

48084808
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
48094809
if (GEM_BFEXT(DAW64, gem_readl(bp, DCFG6))) {
4810-
dma_set_mask(&pdev->dev, DMA_BIT_MASK(44));
4810+
dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(44));
48114811
bp->hw_dma_cap |= HW_DMA_CAP_64B;
48124812
}
48134813
#endif

0 commit comments

Comments
 (0)