aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_fb.c')
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_fb.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
index 409e172f4abf..bfab60c938ac 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
@@ -144,6 +144,13 @@ static int vmw_fb_check_var(struct fb_var_screeninfo *var,
144 return -EINVAL; 144 return -EINVAL;
145 } 145 }
146 146
147 if (!vmw_kms_validate_mode_vram(vmw_priv,
148 info->fix.line_length,
149 var->yoffset + var->yres)) {
150 DRM_ERROR("Requested geom can not fit in framebuffer\n");
151 return -EINVAL;
152 }
153
147 return 0; 154 return 0;
148} 155}
149 156
@@ -205,6 +212,9 @@ static void vmw_fb_dirty_flush(struct vmw_fb_par *par)
205 SVGAFifoCmdUpdate body; 212 SVGAFifoCmdUpdate body;
206 } *cmd; 213 } *cmd;
207 214
215 if (vmw_priv->suspended)
216 return;
217
208 spin_lock_irqsave(&par->dirty.lock, flags); 218 spin_lock_irqsave(&par->dirty.lock, flags);
209 if (!par->dirty.active) { 219 if (!par->dirty.active) {
210 spin_unlock_irqrestore(&par->dirty.lock, flags); 220 spin_unlock_irqrestore(&par->dirty.lock, flags);
@@ -470,9 +480,6 @@ int vmw_fb_init(struct vmw_private *vmw_priv)
470 info->fix.smem_start = 0; 480 info->fix.smem_start = 0;
471 info->fix.smem_len = fb_size; 481 info->fix.smem_len = fb_size;
472 482
473 info->fix.mmio_start = 0;
474 info->fix.mmio_len = 0;
475
476 info->pseudo_palette = par->pseudo_palette; 483 info->pseudo_palette = par->pseudo_palette;
477 info->screen_base = par->vmalloc; 484 info->screen_base = par->vmalloc;
478 info->screen_size = fb_size; 485 info->screen_size = fb_size;
@@ -616,7 +623,8 @@ int vmw_dmabuf_to_start_of_vram(struct vmw_private *vmw_priv,
616 goto err_unlock; 623 goto err_unlock;
617 624
618 if (bo->mem.mem_type == TTM_PL_VRAM && 625 if (bo->mem.mem_type == TTM_PL_VRAM &&
619 bo->mem.mm_node->start < bo->num_pages) 626 bo->mem.start < bo->num_pages &&
627 bo->mem.start > 0)
620 (void) ttm_bo_validate(bo, &vmw_sys_placement, false, 628 (void) ttm_bo_validate(bo, &vmw_sys_placement, false,
621 false, false); 629 false, false);
622 630
@@ -648,7 +656,7 @@ int vmw_fb_off(struct vmw_private *vmw_priv)
648 par->dirty.active = false; 656 par->dirty.active = false;
649 spin_unlock_irqrestore(&par->dirty.lock, flags); 657 spin_unlock_irqrestore(&par->dirty.lock, flags);
650 658
651 flush_scheduled_work(); 659 flush_delayed_work_sync(&info->deferred_work);
652 660
653 par->bo_ptr = NULL; 661 par->bo_ptr = NULL;
654 ttm_bo_kunmap(&par->map); 662 ttm_bo_kunmap(&par->map);