mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-01 02:33:57 +00:00
iommu/ipmmu-vmsa: Convert to read_poll_timeout_atomic()
Use read_poll_timeout_atomic() instead of open-coding the same operation. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Link: https://lore.kernel.org/r/649c7e09841b998c5c8d7fc274884a85e4b5bfe9.1689599528.git.geert+renesas@glider.be Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
06c2afb862
commit
aedd11e01d
@ -14,6 +14,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/iopoll.h>
|
||||
#include <linux/io-pgtable.h>
|
||||
#include <linux/iommu.h>
|
||||
#include <linux/of.h>
|
||||
@ -253,17 +254,13 @@ static void ipmmu_imuctr_write(struct ipmmu_vmsa_device *mmu,
|
||||
/* Wait for any pending TLB invalidations to complete */
|
||||
static void ipmmu_tlb_sync(struct ipmmu_vmsa_domain *domain)
|
||||
{
|
||||
unsigned int count = 0;
|
||||
u32 val;
|
||||
|
||||
while (ipmmu_ctx_read_root(domain, IMCTR) & IMCTR_FLUSH) {
|
||||
cpu_relax();
|
||||
if (++count == TLB_LOOP_TIMEOUT) {
|
||||
dev_err_ratelimited(domain->mmu->dev,
|
||||
if (read_poll_timeout_atomic(ipmmu_ctx_read_root, val,
|
||||
!(val & IMCTR_FLUSH), 1, TLB_LOOP_TIMEOUT,
|
||||
false, domain, IMCTR))
|
||||
dev_err_ratelimited(domain->mmu->dev,
|
||||
"TLB sync timed out -- MMU may be deadlocked\n");
|
||||
return;
|
||||
}
|
||||
udelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
static void ipmmu_tlb_invalidate(struct ipmmu_vmsa_domain *domain)
|
||||
|
Loading…
Reference in New Issue
Block a user