Commit bc8784f3 authored by Maxime Ripard's avatar Maxime Ripard Committed by Joerg Roedel
Browse files

iommu/sun50i: Change the readl timeout to the atomic variant



The flush_all_tlb call back can be called from an atomic context, so using
readl_poll_timeout that embeds a udelay doesn't work.

Fixes: 4100b8c2 ("iommu: Add Allwinner H6 IOMMU driver")
Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/20200628180844.79205-1-maxime@cerno.tech


Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 9ebcfadb
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -313,7 +313,7 @@ static int sun50i_iommu_flush_all_tlb(struct sun50i_iommu *iommu)
		    IOMMU_TLB_FLUSH_MICRO_TLB(1) |
		    IOMMU_TLB_FLUSH_MICRO_TLB(0));

	ret = readl_poll_timeout(iommu->base + IOMMU_TLB_FLUSH_REG,
	ret = readl_poll_timeout_atomic(iommu->base + IOMMU_TLB_FLUSH_REG,
					reg, !reg,
					1, 2000);
	if (ret)