Commit 817820b0226a ("powerpc/iommu: Support "hybrid" iommu/direct DMA
    ops for coherent_mask < dma_mask) adds a check of coherent_dma_mask
    for dma allocations.
    Unfortunately current PASemi code does not set this value for the DMA
    engine, which ends up with the default value of 0xffffffff, the result 
    is on a PASemi system with >2Gb ram and iommu enabled the the onboard 
    ethernet stops working due to an inability to allocate memory.
    Add an initialisation to pci_dma_dev_setup_pasemi()
  
    Signed-off-by: Darren Stevens <dar...@stevens-zone.net>
  
---
diff --git a/arch/powerpc/platforms/pasemi/iommu.c 
b/arch/powerpc/platforms/pasemi/iommu.c
index c929644..81b334a 100644
--- a/arch/powerpc/platforms/pasemi/iommu.c
+++ b/arch/powerpc/platforms/pasemi/iommu.c
@@ -187,6 +187,11 @@ static void pci_dma_dev_setup_pasemi(struct pci_dev *dev)
        if (dev->vendor == 0x1959 && dev->device == 0xa007 &&
            !firmware_has_feature(FW_FEATURE_LPAR)) {
                dev->dev.archdata.dma_ops = &dma_direct_ops;
+               /*
+                * Set the coherent DMA mask to prevent the iommu
+                * being used unnecessarily
+                */
+               dev->dev.coherent_dma_mask = DMA_BIT_MASK(44);
                return;
        }
 #endif
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to