diff options
author | Darren Stevens <darren@stevens-zone.net> | 2016-07-27 16:41:29 +0200 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2016-08-08 08:19:09 +0200 |
commit | 416f37d0816b9720b8227953e55954d81456f991 (patch) | |
tree | cac5f41c493670fd5a857805294110c0df3d06f7 /arch/powerpc/platforms | |
parent | Linux 4.8-rc1 (diff) | |
download | linux-416f37d0816b9720b8227953e55954d81456f991.tar.xz linux-416f37d0816b9720b8227953e55954d81456f991.zip |
powerpc/pasemi: Fix coherent_dma_mask for dma engine
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 <darren@stevens-zone.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/platforms')
-rw-r--r-- | arch/powerpc/platforms/pasemi/iommu.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/pasemi/iommu.c b/arch/powerpc/platforms/pasemi/iommu.c index 309d9ccccd50..c61667e8bb06 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 |