diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2021-03-23 10:22:21 +0100 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2021-03-25 18:21:03 +0100 |
commit | 6e457914935a3161eeb74e319abf9fd511aa1e4d (patch) | |
tree | 0908cb2091d706cba088d9d2ec88f5aea3b955b1 | |
parent | a359f757965aafd0f58570de95dc6bc06cf12a9c (diff) | |
download | lwn-6e457914935a3161eeb74e319abf9fd511aa1e4d.tar.gz lwn-6e457914935a3161eeb74e319abf9fd511aa1e4d.zip |
drm/i915: Use tasklet_unlock_spin_wait() in __tasklet_disable_sync_once()
The i915 driver has its own tasklet interface which was overseen in the
tasklet rework. __tasklet_disable_sync_once() is a wrapper around
tasklet_unlock_wait(). tasklet_unlock_wait() might sleep, but the i915
wrappers invokes it from non-preemtible contexts with bottom halves disabled.
Use tasklet_unlock_spin_wait() instead which can be invoked from
non-preemptible contexts.
Fixes: da044747401fc ("tasklets: Replace spin wait in tasklet_unlock_wait()")
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20210323092221.awq7g5b2muzypjw3@flow
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.h b/drivers/gpu/drm/i915/i915_gem.h index e622aee6e4be..440c35f1abc9 100644 --- a/drivers/gpu/drm/i915/i915_gem.h +++ b/drivers/gpu/drm/i915/i915_gem.h @@ -105,7 +105,7 @@ static inline bool tasklet_is_locked(const struct tasklet_struct *t) static inline void __tasklet_disable_sync_once(struct tasklet_struct *t) { if (!atomic_fetch_inc(&t->count)) - tasklet_unlock_wait(t); + tasklet_unlock_spin_wait(t); } static inline bool __tasklet_is_enabled(const struct tasklet_struct *t) |