diff options
author | Dave Jiang <dave.jiang@intel.com> | 2020-10-27 10:34:40 -0700 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-10-30 14:10:36 +0530 |
commit | e4f4d8cdeb9a2fe746411c0b9a7538b5c0232c1e (patch) | |
tree | 7273200c8ca36d68ab7ee3c3bb99bd1be03d749c /drivers/dma/idxd/idxd.h | |
parent | 8e50d392652f20616a136165dff516b86baf5e49 (diff) |
dmaengine: idxd: Clean up descriptors with fault error
Add code to "complete" a descriptor when the descriptor or its completion
address hit a fault error when SVA mode is being used. This error can be
triggered due to bad programming by the user. A lock is introduced in order
to protect the descriptor completion lists since the fault handler will run
from the system work queue after being scheduled in the interrupt handler.
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Link: https://lore.kernel.org/r/160382008092.3911367.12766483427643278985.stgit@djiang5-desk3.ch.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma/idxd/idxd.h')
-rw-r--r-- | drivers/dma/idxd/idxd.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/dma/idxd/idxd.h b/drivers/dma/idxd/idxd.h index dcac3bb5a0d0..7e54209c433a 100644 --- a/drivers/dma/idxd/idxd.h +++ b/drivers/dma/idxd/idxd.h @@ -34,6 +34,11 @@ struct idxd_irq_entry { int id; struct llist_head pending_llist; struct list_head work_list; + /* + * Lock to protect access between irq thread process descriptor + * and irq thread processing error descriptor. + */ + spinlock_t list_lock; }; struct idxd_group { |