aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/qxl
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-01-29 23:49:12 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-29 23:49:12 -0500
commit9b0cd304f26b9fca140de15deeac2bf357d1f388 (patch)
tree03a0d74614865a5b776b2a98a433232013b1d369 /drivers/gpu/drm/qxl
parentca2a650f3dfdc30d71d21bcbb04d2d057779f3f9 (diff)
parentef64cf9d06049e4e9df661f3be60b217e476bee1 (diff)
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull drm updates from Dave Airlie: "Been a bit busy, first week of kids school, and waiting on other trees to go in before I could send this, so its a bit later than I'd normally like. Highlights: - core: timestamp fixes, lots of misc cleanups - new drivers: bochs virtual vga - vmwgfx: major overhaul for their nextgen virt gpu. - i915: runtime D3 on HSW, watermark fixes, power well work, fbc fixes, bdw is no longer prelim. - nouveau: gk110/208 acceleration, more pm groundwork, old overlay support - radeon: dpm rework and clockgating for CIK, pci config reset, big endian fixes - tegra: panel support and DSI support, build as module, prime. - armada, omap, gma500, rcar, exynos, mgag200, cirrus, ast: fixes - msm: hdmi support for mdp5" * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (595 commits) drm/nouveau: resume display if any later suspend bits fail drm/nouveau: fix lock unbalance in nouveau_crtc_page_flip drm/nouveau: implement hooks for needed for drm vblank timestamping support drm/nouveau/disp: add a method to fetch info needed by drm vblank timestamping drm/nv50: fill in crtc mode struct members from crtc_mode_fixup drm/radeon/dce8: workaround for atom BlankCrtc table drm/radeon/DCE4+: clear bios scratch dpms bit (v2) drm/radeon: set si_notify_smc_display_change properly drm/radeon: fix DAC interrupt handling on DCE5+ drm/radeon: clean up active vram sizing drm/radeon: skip async dma init on r6xx drm/radeon/runpm: don't runtime suspend non-PX cards drm/radeon: add ring to fence trace functions drm/radeon: add missing trace point drm/radeon: fix VMID use tracking drm: ast,cirrus,mgag200: use drm_can_sleep drm/gma500: Lock struct_mutex around cursor updates drm/i915: Fix the offset issue for the stolen GEM objects DRM: armada: fix missing DRM_KMS_FB_HELPER select drm/i915: Decouple GPU error reporting from ring initialisation ...
Diffstat (limited to 'drivers/gpu/drm/qxl')
-rw-r--r--drivers/gpu/drm/qxl/qxl_display.c9
-rw-r--r--drivers/gpu/drm/qxl/qxl_drv.h2
-rw-r--r--drivers/gpu/drm/qxl/qxl_ioctl.c4
-rw-r--r--drivers/gpu/drm/qxl/qxl_irq.c2
-rw-r--r--drivers/gpu/drm/qxl/qxl_kms.c2
5 files changed, 13 insertions, 6 deletions
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index d70aafb83307..798bde2e5881 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -399,10 +399,14 @@ static int qxl_framebuffer_surface_dirty(struct drm_framebuffer *fb,
399 struct qxl_bo *qobj; 399 struct qxl_bo *qobj;
400 int inc = 1; 400 int inc = 1;
401 401
402 drm_modeset_lock_all(fb->dev);
403
402 qobj = gem_to_qxl_bo(qxl_fb->obj); 404 qobj = gem_to_qxl_bo(qxl_fb->obj);
403 /* if we aren't primary surface ignore this */ 405 /* if we aren't primary surface ignore this */
404 if (!qobj->is_primary) 406 if (!qobj->is_primary) {
407 drm_modeset_unlock_all(fb->dev);
405 return 0; 408 return 0;
409 }
406 410
407 if (!num_clips) { 411 if (!num_clips) {
408 num_clips = 1; 412 num_clips = 1;
@@ -417,6 +421,9 @@ static int qxl_framebuffer_surface_dirty(struct drm_framebuffer *fb,
417 421
418 qxl_draw_dirty_fb(qdev, qxl_fb, qobj, flags, color, 422 qxl_draw_dirty_fb(qdev, qxl_fb, qobj, flags, color,
419 clips, num_clips, inc); 423 clips, num_clips, inc);
424
425 drm_modeset_unlock_all(fb->dev);
426
420 return 0; 427 return 0;
421} 428}
422 429
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
index 7bda32f68d3b..36ed40ba773f 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.h
+++ b/drivers/gpu/drm/qxl/qxl_drv.h
@@ -534,7 +534,7 @@ void qxl_debugfs_takedown(struct drm_minor *minor);
534 534
535/* qxl_irq.c */ 535/* qxl_irq.c */
536int qxl_irq_init(struct qxl_device *qdev); 536int qxl_irq_init(struct qxl_device *qdev);
537irqreturn_t qxl_irq_handler(DRM_IRQ_ARGS); 537irqreturn_t qxl_irq_handler(int irq, void *arg);
538 538
539/* qxl_fb.c */ 539/* qxl_fb.c */
540int qxl_fb_init(struct qxl_device *qdev); 540int qxl_fb_init(struct qxl_device *qdev);
diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c
index 7b95c75e9626..0bb86e6d41b4 100644
--- a/drivers/gpu/drm/qxl/qxl_ioctl.c
+++ b/drivers/gpu/drm/qxl/qxl_ioctl.c
@@ -200,7 +200,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
200 for (i = 0; i < cmd->relocs_num; ++i) { 200 for (i = 0; i < cmd->relocs_num; ++i) {
201 struct drm_qxl_reloc reloc; 201 struct drm_qxl_reloc reloc;
202 202
203 if (DRM_COPY_FROM_USER(&reloc, 203 if (copy_from_user(&reloc,
204 &((struct drm_qxl_reloc *)(uintptr_t)cmd->relocs)[i], 204 &((struct drm_qxl_reloc *)(uintptr_t)cmd->relocs)[i],
205 sizeof(reloc))) { 205 sizeof(reloc))) {
206 ret = -EFAULT; 206 ret = -EFAULT;
@@ -297,7 +297,7 @@ static int qxl_execbuffer_ioctl(struct drm_device *dev, void *data,
297 struct drm_qxl_command *commands = 297 struct drm_qxl_command *commands =
298 (struct drm_qxl_command *)(uintptr_t)execbuffer->commands; 298 (struct drm_qxl_command *)(uintptr_t)execbuffer->commands;
299 299
300 if (DRM_COPY_FROM_USER(&user_cmd, &commands[cmd_num], 300 if (copy_from_user(&user_cmd, &commands[cmd_num],
301 sizeof(user_cmd))) 301 sizeof(user_cmd)))
302 return -EFAULT; 302 return -EFAULT;
303 303
diff --git a/drivers/gpu/drm/qxl/qxl_irq.c b/drivers/gpu/drm/qxl/qxl_irq.c
index 21393dc4700a..28f84b4fce32 100644
--- a/drivers/gpu/drm/qxl/qxl_irq.c
+++ b/drivers/gpu/drm/qxl/qxl_irq.c
@@ -25,7 +25,7 @@
25 25
26#include "qxl_drv.h" 26#include "qxl_drv.h"
27 27
28irqreturn_t qxl_irq_handler(DRM_IRQ_ARGS) 28irqreturn_t qxl_irq_handler(int irq, void *arg)
29{ 29{
30 struct drm_device *dev = (struct drm_device *) arg; 30 struct drm_device *dev = (struct drm_device *) arg;
31 struct qxl_device *qdev = (struct qxl_device *)dev->dev_private; 31 struct qxl_device *qdev = (struct qxl_device *)dev->dev_private;
diff --git a/drivers/gpu/drm/qxl/qxl_kms.c b/drivers/gpu/drm/qxl/qxl_kms.c
index e5ca498be920..fd88eb4a3f79 100644
--- a/drivers/gpu/drm/qxl/qxl_kms.c
+++ b/drivers/gpu/drm/qxl/qxl_kms.c
@@ -115,7 +115,7 @@ static void qxl_gc_work(struct work_struct *work)
115 qxl_garbage_collect(qdev); 115 qxl_garbage_collect(qdev);
116} 116}
117 117
118int qxl_device_init(struct qxl_device *qdev, 118static int qxl_device_init(struct qxl_device *qdev,
119 struct drm_device *ddev, 119 struct drm_device *ddev,
120 struct pci_dev *pdev, 120 struct pci_dev *pdev,
121 unsigned long flags) 121 unsigned long flags)