]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iommu/sun50i: Change the readl timeout to the atomic variant
authorMaxime Ripard <maxime@cerno.tech>
Sun, 28 Jun 2020 18:08:43 +0000 (20:08 +0200)
committerJoerg Roedel <jroedel@suse.de>
Tue, 30 Jun 2020 10:05:09 +0000 (12:05 +0200)
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: 4100b8c229b3 ("iommu: Add Allwinner H6 IOMMU driver")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/20200628180844.79205-1-maxime@cerno.tech
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/sun50i-iommu.c

index fce605e96aa2451506d3c70584ea0b6716e5f4a7..a1563b54c74313e4ee1b6d19e27caa0f21cccd3f 100644 (file)
@@ -313,9 +313,9 @@ 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,
-                                reg, !reg,
-                                1, 2000);
+       ret = readl_poll_timeout_atomic(iommu->base + IOMMU_TLB_FLUSH_REG,
+                                       reg, !reg,
+                                       1, 2000);
        if (ret)
                dev_warn(iommu->dev, "TLB Flush timed out!\n");