summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorJonathan Gray <jsg@jsg.id.au>2013-03-03 17:06:30 +1100
committerJonathan Gray <jsg@jsg.id.au>2013-03-03 17:06:30 +1100
commit9204ef1c7a48239a9558bf7666e5a6438d8d6dd9 (patch)
tree04989718d149dcee9d74cd3e12200619669e39e5 /sys
parentc861914e096a972cbda27b23d9db9db1bc9c1092 (diff)
make the wait_seqno call in intel_ring_wait_seqno non interruptible
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/drm/intel_ringbuffer.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/dev/pci/drm/intel_ringbuffer.c b/sys/dev/pci/drm/intel_ringbuffer.c
index 28a6e258ccf..bfee793a71f 100644
--- a/sys/dev/pci/drm/intel_ringbuffer.c
+++ b/sys/dev/pci/drm/intel_ringbuffer.c
@@ -1374,9 +1374,21 @@ intel_cleanup_ring_buffer(struct intel_ring_buffer *ring)
int
intel_ring_wait_seqno(struct intel_ring_buffer *ring, u32 seqno)
{
+ drm_i915_private_t *dev_priv = ring->dev->dev_private;
+ bool was_interruptible;
int ret;
+ /* XXX As we have not yet audited all the paths to check that
+ * they are ready for ERESTARTSYS from intel_ring_begin, do not
+ * allow us to be interruptible by a signal.
+ */
+ was_interruptible = dev_priv->mm.interruptible;
+ dev_priv->mm.interruptible = false;
+
ret = i915_wait_seqno(ring, seqno);
+
+ dev_priv->mm.interruptible = was_interruptible;
+
if (!ret)
i915_gem_retire_requests_ring(ring);