46 lines
1.7 KiB
Diff
46 lines
1.7 KiB
Diff
From a6f7c997fb02c34d3cffdffcba7d1c98ae91d171 Mon Sep 17 00:00:00 2001
|
|
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
Date: Fri, 21 Feb 2020 18:57:11 +0100
|
|
Subject: [PATCH 321/325] drm/vmwgfx: Drop preempt_disable() in
|
|
vmw_fifo_ping_host()
|
|
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.115-rt48.tar.xz
|
|
|
|
[ 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>
|
|
---
|
|
drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c | 2 --
|
|
1 file changed, 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)
|
|
--
|
|
2.25.1
|
|
|