summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0320-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0320-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch')
-rw-r--r--debian/patches-rt/0320-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/debian/patches-rt/0320-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch b/debian/patches-rt/0320-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch
new file mode 100644
index 000000000..2dc30fc19
--- /dev/null
+++ b/debian/patches-rt/0320-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch
@@ -0,0 +1,45 @@
+From fc0f8480da7d2d5927404e67031daba0ca53a1a2 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 320/347] 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.246-rt110.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.36.1
+