Commit 4478976a authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'dma-mapping-4.13-3' of git://git.infradead.org/users/hch/dma-mapping

Pull dma-mapping fix from Christoph Hellwig:
 "Another dma-mapping regression fix"

* tag 'dma-mapping-4.13-3' of git://git.infradead.org/users/hch/dma-mapping:
  of: fix DMA mask generation
parents 04d49f36 ee7b1f31
...@@ -89,6 +89,7 @@ int of_dma_configure(struct device *dev, struct device_node *np) ...@@ -89,6 +89,7 @@ int of_dma_configure(struct device *dev, struct device_node *np)
bool coherent; bool coherent;
unsigned long offset; unsigned long offset;
const struct iommu_ops *iommu; const struct iommu_ops *iommu;
u64 mask;
/* /*
* Set default coherent_dma_mask to 32 bit. Drivers are expected to * Set default coherent_dma_mask to 32 bit. Drivers are expected to
...@@ -134,10 +135,9 @@ int of_dma_configure(struct device *dev, struct device_node *np) ...@@ -134,10 +135,9 @@ int of_dma_configure(struct device *dev, struct device_node *np)
* Limit coherent and dma mask based on size and default mask * Limit coherent and dma mask based on size and default mask
* set by the driver. * set by the driver.
*/ */
dev->coherent_dma_mask = min(dev->coherent_dma_mask, mask = DMA_BIT_MASK(ilog2(dma_addr + size - 1) + 1);
DMA_BIT_MASK(ilog2(dma_addr + size))); dev->coherent_dma_mask &= mask;
*dev->dma_mask = min((*dev->dma_mask), *dev->dma_mask &= mask;
DMA_BIT_MASK(ilog2(dma_addr + size)));
coherent = of_dma_is_coherent(np); coherent = of_dma_is_coherent(np);
dev_dbg(dev, "device is%sdma coherent\n", dev_dbg(dev, "device is%sdma coherent\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment