From: Dave Jiang Date: Wed, 29 Jul 2020 15:57:26 +0000 (-0700) Subject: dmaengine: idxd: clear misc interrupt cause after read X-Git-Tag: v5.15~2669^2~68 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0ec083e50ca816953e65e3209c7199cd1a203ddc;p=platform%2Fkernel%2Flinux-starfive.git dmaengine: idxd: clear misc interrupt cause after read Move the clearing of misc interrupt cause to immediately after reading the register in order to allow the next interrupt to be asserted. Suggested-by: Nikhil Rao Signed-off-by: Dave Jiang Link: https://lore.kernel.org/r/159603824665.28647.5344356370364397996.stgit@djiang5-desk3.ch.intel.com Signed-off-by: Vinod Koul --- diff --git a/drivers/dma/idxd/irq.c b/drivers/dma/idxd/irq.c index b514255..11ac070 100644 --- a/drivers/dma/idxd/irq.c +++ b/drivers/dma/idxd/irq.c @@ -76,6 +76,7 @@ irqreturn_t idxd_misc_thread(int vec, void *data) bool err = false; cause = ioread32(idxd->reg_base + IDXD_INTCAUSE_OFFSET); + iowrite32(cause, idxd->reg_base + IDXD_INTCAUSE_OFFSET); if (cause & IDXD_INTC_ERR) { spin_lock_bh(&idxd->dev_lock); @@ -133,7 +134,6 @@ irqreturn_t idxd_misc_thread(int vec, void *data) dev_warn_once(dev, "Unexpected interrupt cause bits set: %#x\n", val); - iowrite32(cause, idxd->reg_base + IDXD_INTCAUSE_OFFSET); if (!err) goto out;