diff options
Diffstat (limited to 'arch/arm/mm/dma-mapping.c')
| -rw-r--r-- | arch/arm/mm/dma-mapping.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index ef691a5720d2..d7909091cf97 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -1769,8 +1769,14 @@ static void arm_teardown_iommu_dma_ops(struct device *dev) { }  void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,  			const struct iommu_ops *iommu, bool coherent)  { -	dev->archdata.dma_coherent = coherent; -	dev->dma_coherent = coherent; +	/* +	 * Due to legacy code that sets the ->dma_coherent flag from a bus +	 * notifier we can't just assign coherent to the ->dma_coherent flag +	 * here, but instead have to make sure we only set but never clear it +	 * for now. +	 */ +	if (coherent) +		dev->dma_coherent = true;  	/*  	 * Don't override the dma_ops if they have already been set. Ideally  |