diff options
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_fb.c')
| -rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c index ed5ce2a41bb..b031b48dbb3 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c @@ -147,7 +147,7 @@ static int vmw_fb_check_var(struct fb_var_screeninfo *var,  	}  	if (!vmw_kms_validate_mode_vram(vmw_priv, -					info->fix.line_length, +					var->xres * var->bits_per_pixel/8,  					var->yoffset + var->yres)) {  		DRM_ERROR("Requested geom can not fit in framebuffer\n");  		return -EINVAL; @@ -162,6 +162,8 @@ static int vmw_fb_set_par(struct fb_info *info)  	struct vmw_private *vmw_priv = par->vmw_priv;  	int ret; +	info->fix.line_length = info->var.xres * info->var.bits_per_pixel/8; +  	ret = vmw_kms_write_svga(vmw_priv, info->var.xres, info->var.yres,  				 info->fix.line_length,  				 par->bpp, par->depth); @@ -377,14 +379,13 @@ static int vmw_fb_create_bo(struct vmw_private *vmw_priv,  	ne_placement.lpfn = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; -	/* interuptable? */ -	ret = ttm_write_lock(&vmw_priv->fbdev_master.lock, false); -	if (unlikely(ret != 0)) -		return ret; +	(void) ttm_write_lock(&vmw_priv->reservation_sem, false);  	vmw_bo = kmalloc(sizeof(*vmw_bo), GFP_KERNEL); -	if (!vmw_bo) +	if (!vmw_bo) { +		ret = -ENOMEM;  		goto err_unlock; +	}  	ret = vmw_dmabuf_init(vmw_priv, vmw_bo, size,  			      &ne_placement,  | 
