diff options
author | Dave Jiang <dave.jiang@intel.com> | 2020-06-25 21:16:54 +0200 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-07-02 15:32:20 +0200 |
commit | e3122822a74033ba8d6d9af855078f9ab741e33f (patch) | |
tree | 29965e36d9a293767f4a7ce368addf1a663e3ced /drivers/dma/idxd | |
parent | dmaengine: idxd: cleanup workqueue config after disabling (diff) | |
download | linux-e3122822a74033ba8d6d9af855078f9ab741e33f.tar.xz linux-e3122822a74033ba8d6d9af855078f9ab741e33f.zip |
dmaengine: idxd: fix misc interrupt handler thread unmasking
Fix unmasking of misc interrupt handler when completing normal. It exits
early and skips the unmasking with the current implementation. Fix to
unmask interrupt when exiting normally.
Fixes: bfe1d56091c1 ("dmaengine: idxd: Init and probe for Intel data accelerators")
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/159311256528.855.11527922406329728512.stgit@djiang5-desk3.ch.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma/idxd')
-rw-r--r-- | drivers/dma/idxd/irq.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/dma/idxd/irq.c b/drivers/dma/idxd/irq.c index 6510791b9921..8a35f58da689 100644 --- a/drivers/dma/idxd/irq.c +++ b/drivers/dma/idxd/irq.c @@ -141,7 +141,7 @@ irqreturn_t idxd_misc_thread(int vec, void *data) iowrite32(cause, idxd->reg_base + IDXD_INTCAUSE_OFFSET); if (!err) - return IRQ_HANDLED; + goto out; gensts.bits = ioread32(idxd->reg_base + IDXD_GENSTATS_OFFSET); if (gensts.state == IDXD_DEVICE_STATE_HALT) { @@ -162,6 +162,7 @@ irqreturn_t idxd_misc_thread(int vec, void *data) spin_unlock_bh(&idxd->dev_lock); } + out: idxd_unmask_msix_vector(idxd, irq_entry->id); return IRQ_HANDLED; } |