drm/fb: Don't expose mmio for fbdev emulation layer
[deliverable/linux.git] / drivers / gpu / drm / vmwgfx / vmwgfx_fb.c
index 409e172f4abfe94502be96502e251b5d6b2e54c9..dd596f2bd6e8f50c521e9f96a7bcefc40b95d005 100644 (file)
@@ -144,6 +144,13 @@ static int vmw_fb_check_var(struct fb_var_screeninfo *var,
                return -EINVAL;
        }
 
+       if (!vmw_kms_validate_mode_vram(vmw_priv,
+                                       info->fix.line_length,
+                                       var->yoffset + var->yres)) {
+               DRM_ERROR("Requested geom can not fit in framebuffer\n");
+               return -EINVAL;
+       }
+
        return 0;
 }
 
@@ -205,6 +212,9 @@ static void vmw_fb_dirty_flush(struct vmw_fb_par *par)
                SVGAFifoCmdUpdate body;
        } *cmd;
 
+       if (vmw_priv->suspended)
+               return;
+
        spin_lock_irqsave(&par->dirty.lock, flags);
        if (!par->dirty.active) {
                spin_unlock_irqrestore(&par->dirty.lock, flags);
@@ -470,9 +480,6 @@ int vmw_fb_init(struct vmw_private *vmw_priv)
        info->fix.smem_start = 0;
        info->fix.smem_len = fb_size;
 
-       info->fix.mmio_start = 0;
-       info->fix.mmio_len = 0;
-
        info->pseudo_palette = par->pseudo_palette;
        info->screen_base = par->vmalloc;
        info->screen_size = fb_size;
@@ -616,7 +623,8 @@ int vmw_dmabuf_to_start_of_vram(struct vmw_private *vmw_priv,
                goto err_unlock;
 
        if (bo->mem.mem_type == TTM_PL_VRAM &&
-           bo->mem.mm_node->start < bo->num_pages)
+           bo->mem.start < bo->num_pages &&
+           bo->mem.start > 0)
                (void) ttm_bo_validate(bo, &vmw_sys_placement, false,
                                       false, false);
 
This page took 0.027585 seconds and 5 git commands to generate.