diff options
author | Krzysztof Karas <krzysztof.karas@intel.com> | 2025-01-16 13:40:46 +0300 |
---|---|---|
committer | Andi Shyti <andi.shyti@linux.intel.com> | 2025-02-13 20:39:29 +0300 |
commit | c088387ddd6482b40f21ccf23db1125e8fa4af7e (patch) | |
tree | 302fc3d6c8151b186bf42cd31707fab960433d60 /rust/helpers/helpers.c | |
parent | efa6fbd5899b975512c2ee684bbf98692259fbb4 (diff) | |
download | linux-c088387ddd6482b40f21ccf23db1125e8fa4af7e.tar.xz |
drm/i915/gt: Use spin_lock_irqsave() in interruptible context
spin_lock/unlock() functions used in interrupt contexts could
result in a deadlock, as seen in GitLab issue #13399,
which occurs when interrupt comes in while holding a lock.
Try to remedy the problem by saving irq state before spin lock
acquisition.
v2: add irqs' state save/restore calls to all locks/unlocks in
signal_irq_work() execution (Maciej)
v3: use with spin_lock_irqsave() in guc_lrc_desc_unpin() instead
of other lock/unlock calls and add Fixes and Cc tags (Tvrtko);
change title and commit message
Fixes: 2f2cc53b5fe7 ("drm/i915/guc: Close deregister-context race against CT-loss")
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13399
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
Cc: <stable@vger.kernel.org> # v6.9+
Reviewed-by: Maciej Patelczyk <maciej.patelczyk@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/pusppq5ybyszau2oocboj3mtj5x574gwij323jlclm5zxvimmu@mnfg6odxbpsv
Diffstat (limited to 'rust/helpers/helpers.c')
0 files changed, 0 insertions, 0 deletions