diff options
Diffstat (limited to 'drivers/gpu/drm/qxl/qxl_display.c')
| -rw-r--r-- | drivers/gpu/drm/qxl/qxl_display.c | 24 | 
1 files changed, 17 insertions, 7 deletions
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c index 7c6225c84ba6..183aea1abebc 100644 --- a/drivers/gpu/drm/qxl/qxl_display.c +++ b/drivers/gpu/drm/qxl/qxl_display.c @@ -244,6 +244,10 @@ static int qxl_crtc_page_flip(struct drm_crtc *crtc,  	ret = qxl_bo_reserve(bo, false);  	if (ret)  		return ret; +	ret = qxl_bo_pin(bo, bo->type, NULL); +	qxl_bo_unreserve(bo); +	if (ret) +		return ret;  	qxl_draw_dirty_fb(qdev, qfb_src, bo, 0, 0,  			  &norect, one_clip_rect, inc); @@ -257,7 +261,11 @@ static int qxl_crtc_page_flip(struct drm_crtc *crtc,  	}  	drm_vblank_put(dev, qcrtc->index); -	qxl_bo_unreserve(bo); +	ret = qxl_bo_reserve(bo, false); +	if (!ret) { +		qxl_bo_unpin(bo); +		qxl_bo_unreserve(bo); +	}  	return 0;  } @@ -618,7 +626,7 @@ static int qxl_crtc_mode_set(struct drm_crtc *crtc,  		  adjusted_mode->hdisplay,  		  adjusted_mode->vdisplay); -	if (qcrtc->index == 0) +	if (bo->is_primary == false)  		recreate_primary = true;  	if (bo->surf.stride * bo->surf.height > qdev->vram_size) { @@ -886,13 +894,15 @@ static enum drm_connector_status qxl_conn_detect(  		drm_connector_to_qxl_output(connector);  	struct drm_device *ddev = connector->dev;  	struct qxl_device *qdev = ddev->dev_private; -	int connected; +	bool connected = false;  	/* The first monitor is always connected */ -	connected = (output->index == 0) || -		    (qdev->client_monitors_config && -		     qdev->client_monitors_config->count > output->index && -		     qxl_head_enabled(&qdev->client_monitors_config->heads[output->index])); +	if (!qdev->client_monitors_config) { +		if (output->index == 0) +			connected = true; +	} else +		connected = qdev->client_monitors_config->count > output->index && +		     qxl_head_enabled(&qdev->client_monitors_config->heads[output->index]);  	DRM_DEBUG("#%d connected: %d\n", output->index, connected);  	if (!connected)  | 
