diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2020-02-21 18:57:11 +0100 |
---|---|---|
committer | Tom Zanussi <zanussi@kernel.org> | 2020-07-14 10:22:08 -0500 |
commit | b1c465b150f9a4b0580ccab1679788b31affb601 (patch) | |
tree | 0c138f1bbacfa2ac921ad2531950526b0111ca98 | |
parent | 02b6495d76a106ea7570038b44d1335bc5e4c052 (diff) | |
download | linux-rt-b1c465b150f9a4b0580ccab1679788b31affb601.tar.gz |
drm/vmwgfx: Drop preempt_disable() in vmw_fifo_ping_host()
[ Upstream commit b901491e7b9b7a676818d84e482b69be72fc142f ]
vmw_fifo_ping_host() disables preemption around a test and a register
write via vmw_write(). The write function acquires a spinlock_t typed
lock which is not allowed in a preempt_disable()ed section on
PREEMPT_RT. This has been reported in the bugzilla.
It has been explained by Thomas Hellstrom that this preempt_disable()ed
section is not required for correctness.
Remove the preempt_disable() section.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=206591
Link: https://lkml.kernel.org/r/0b5e1c65d89951de993deab06d1d197b40fd67aa.camel@vmware.com
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c index d0fd147ef75f..fb5a3461bb8c 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c @@ -167,10 +167,8 @@ void vmw_fifo_ping_host(struct vmw_private *dev_priv, uint32_t reason) { u32 *fifo_mem = dev_priv->mmio_virt; - preempt_disable(); if (cmpxchg(fifo_mem + SVGA_FIFO_BUSY, 0, 1) == 0) vmw_write(dev_priv, SVGA_REG_SYNC, reason); - preempt_enable(); } void vmw_fifo_release(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo) |