Commit 6a9d8fc0 authored by Dave Airlie's avatar Dave Airlie

Merge branch 'vmwgfx-fixes-5.1' of git://people.freedesktop.org/~thomash/linux into drm-fixes

Two fixes CC'd stable. One fix for a long-standing a bit hard-to-trigger fbdev
modesetting bug and one out-of-bo-id fix.
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
From: Thomas Hellstrom <thellstrom@vmware.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190321112026.114328-1-thellstrom@vmware.com
parents 28d3ba6c c2d31155
...@@ -564,11 +564,9 @@ static int vmw_fb_set_par(struct fb_info *info) ...@@ -564,11 +564,9 @@ static int vmw_fb_set_par(struct fb_info *info)
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC)
}; };
struct drm_display_mode *old_mode;
struct drm_display_mode *mode; struct drm_display_mode *mode;
int ret; int ret;
old_mode = par->set_mode;
mode = drm_mode_duplicate(vmw_priv->dev, &new_mode); mode = drm_mode_duplicate(vmw_priv->dev, &new_mode);
if (!mode) { if (!mode) {
DRM_ERROR("Could not create new fb mode.\n"); DRM_ERROR("Could not create new fb mode.\n");
...@@ -579,11 +577,7 @@ static int vmw_fb_set_par(struct fb_info *info) ...@@ -579,11 +577,7 @@ static int vmw_fb_set_par(struct fb_info *info)
mode->vdisplay = var->yres; mode->vdisplay = var->yres;
vmw_guess_mode_timing(mode); vmw_guess_mode_timing(mode);
if (old_mode && drm_mode_equal(old_mode, mode)) { if (!vmw_kms_validate_mode_vram(vmw_priv,
drm_mode_destroy(vmw_priv->dev, mode);
mode = old_mode;
old_mode = NULL;
} else if (!vmw_kms_validate_mode_vram(vmw_priv,
mode->hdisplay * mode->hdisplay *
DIV_ROUND_UP(var->bits_per_pixel, 8), DIV_ROUND_UP(var->bits_per_pixel, 8),
mode->vdisplay)) { mode->vdisplay)) {
...@@ -620,8 +614,8 @@ static int vmw_fb_set_par(struct fb_info *info) ...@@ -620,8 +614,8 @@ static int vmw_fb_set_par(struct fb_info *info)
schedule_delayed_work(&par->local_work, 0); schedule_delayed_work(&par->local_work, 0);
out_unlock: out_unlock:
if (old_mode) if (par->set_mode)
drm_mode_destroy(vmw_priv->dev, old_mode); drm_mode_destroy(vmw_priv->dev, par->set_mode);
par->set_mode = mode; par->set_mode = mode;
mutex_unlock(&par->bo_mutex); mutex_unlock(&par->bo_mutex);
......
...@@ -57,7 +57,7 @@ static int vmw_gmrid_man_get_node(struct ttm_mem_type_manager *man, ...@@ -57,7 +57,7 @@ static int vmw_gmrid_man_get_node(struct ttm_mem_type_manager *man,
id = ida_alloc_max(&gman->gmr_ida, gman->max_gmr_ids - 1, GFP_KERNEL); id = ida_alloc_max(&gman->gmr_ida, gman->max_gmr_ids - 1, GFP_KERNEL);
if (id < 0) if (id < 0)
return id; return (id != -ENOMEM ? 0 : id);
spin_lock(&gman->lock); spin_lock(&gman->lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment