Message ID | 20180806150036.14644-1-ralf.goebel@imago-technologies.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iommu/omap: Fix cache flushes on L2 table entries | expand |
On Mon, Aug 06, 2018 at 05:00:36PM +0200, Ralf Goebel wrote: > The base address used for DMA operations on the second-level table > did incorrectly include the offset for the table entry. The offset > was then added again which lead to incorrect behavior. > > Operations on the L1 table are not affected. > > The calculation of the base address is changed to point to the > beginning of the L2 table. > > Fixes: bfee0cf0ee1d ("iommu/omap: Use DMA-API for performing cache flushes") > Acked-by: Suman Anna <s-anna@ti.com> > Signed-off-by: Ralf Goebel <ralf.goebel@imago-technologies.com> Applied for v4.19, thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c index af4a8e7fcd27..3b05117118c3 100644 --- a/drivers/iommu/omap-iommu.c +++ b/drivers/iommu/omap-iommu.c @@ -550,7 +550,7 @@ static u32 *iopte_alloc(struct omap_iommu *obj, u32 *iopgd, pte_ready: iopte = iopte_offset(iopgd, da); - *pt_dma = virt_to_phys(iopte); + *pt_dma = iopgd_page_paddr(iopgd); dev_vdbg(obj->dev, "%s: da:%08x pgd:%p *pgd:%08x pte:%p *pte:%08x\n", __func__, da, iopgd, *iopgd, iopte, *iopte); @@ -738,7 +738,7 @@ static size_t iopgtable_clear_entry_core(struct omap_iommu *obj, u32 da) } bytes *= nent; memset(iopte, 0, nent * sizeof(*iopte)); - pt_dma = virt_to_phys(iopte); + pt_dma = iopgd_page_paddr(iopgd); flush_iopte_range(obj->dev, pt_dma, pt_offset, nent); /*