diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (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.c | 18 |
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); |