Browse Source

drm/vmwgfx: Fix single framebuffer detection.

V2: Fix a typo.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Jakob Bornecrantz 15 năm trước cách đây
mục cha
commit
6a591a96d7

+ 3 - 0
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c

@@ -130,6 +130,7 @@ static int vmw_ldu_del_active(struct vmw_private *vmw_priv,
 	if (list_empty(&ldu->active))
 	if (list_empty(&ldu->active))
 		return 0;
 		return 0;
 
 
+	/* Must init otherwise list_empty(&ldu->active) will not work. */
 	list_del_init(&ldu->active);
 	list_del_init(&ldu->active);
 	if (--(ld->num_active) == 0) {
 	if (--(ld->num_active) == 0) {
 		BUG_ON(!ld->fb);
 		BUG_ON(!ld->fb);
@@ -208,6 +209,8 @@ static int vmw_ldu_crtc_set_config(struct drm_mode_set *set)
 
 
 	/* ldu only supports one fb active at the time */
 	/* ldu only supports one fb active at the time */
 	if (dev_priv->ldu_priv->fb && vfb &&
 	if (dev_priv->ldu_priv->fb && vfb &&
+	    !(dev_priv->ldu_priv->num_active == 1 &&
+	      !list_empty(&ldu->active)) &&
 	    dev_priv->ldu_priv->fb != vfb) {
 	    dev_priv->ldu_priv->fb != vfb) {
 		DRM_ERROR("Multiple framebuffers not supported\n");
 		DRM_ERROR("Multiple framebuffers not supported\n");
 		return -EINVAL;
 		return -EINVAL;