aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_channel.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2010-10-05 16:53:48 +1000
committerBen Skeggs <bskeggs@redhat.com>2010-12-03 15:05:10 +1000
commit6a6b73f254123851f7f73ab5e57344a569d6a0ab (patch)
tree5db28f577f0a7b15525aeef57d45a34ea4366bb8 /drivers/gpu/drm/nouveau/nouveau_channel.c
parentceed5f30bf0f515b52246230e5faacf89983fd8f (diff)
downloadkernel_samsung_smdk4412-6a6b73f254123851f7f73ab5e57344a569d6a0ab.zip
kernel_samsung_smdk4412-6a6b73f254123851f7f73ab5e57344a569d6a0ab.tar.gz
kernel_samsung_smdk4412-6a6b73f254123851f7f73ab5e57344a569d6a0ab.tar.bz2
drm/nouveau: add per-channel mutex, use to lock access to drm's channel
This fixes a race condition between fbcon acceleration and TTM buffer moves. To reproduce: - start X - switch to vt and "while (true); do dmesg; done" - switch to another vt and "sleep 2 && cat /path/to/debugfs/dri/0/evict_vram" - switch back to vt running dmesg We don't make use of this on any other channel yet, they're currently protected by drm_global_mutex. This will change in the near future. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_channel.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_channel.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_channel.c b/drivers/gpu/drm/nouveau/nouveau_channel.c
index 373950e..8636478 100644
--- a/drivers/gpu/drm/nouveau/nouveau_channel.c
+++ b/drivers/gpu/drm/nouveau/nouveau_channel.c
@@ -145,6 +145,7 @@ nouveau_channel_alloc(struct drm_device *dev, struct nouveau_channel **chan_ret,
chan->file_priv = file_priv;
chan->vram_handle = vram_handle;
chan->gart_handle = tt_handle;
+ mutex_init(&chan->mutex);
NV_INFO(dev, "Allocating FIFO number %d\n", channel);