diff options
Diffstat (limited to 'drivers/gpu/drm/hyperv')
| -rw-r--r-- | drivers/gpu/drm/hyperv/hyperv_drm_modeset.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/hyperv/hyperv_drm_proto.c | 23 | 
2 files changed, 11 insertions, 17 deletions
diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_modeset.c b/drivers/gpu/drm/hyperv/hyperv_drm_modeset.c index e82b815f83a6..27f4fcb058f9 100644 --- a/drivers/gpu/drm/hyperv/hyperv_drm_modeset.c +++ b/drivers/gpu/drm/hyperv/hyperv_drm_modeset.c @@ -123,8 +123,11 @@ static int hyperv_pipe_check(struct drm_simple_display_pipe *pipe,  	if (fb->format->format != DRM_FORMAT_XRGB8888)  		return -EINVAL; -	if (fb->pitches[0] * fb->height > hv->fb_size) +	if (fb->pitches[0] * fb->height > hv->fb_size) { +		drm_err(&hv->dev, "fb size requested by %s for %dX%d (pitch %d) greater than %ld\n", +			current->comm, fb->width, fb->height, fb->pitches[0], hv->fb_size);  		return -EINVAL; +	}  	return 0;  } diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_proto.c b/drivers/gpu/drm/hyperv/hyperv_drm_proto.c index c0155c6271bf..76a182a9a765 100644 --- a/drivers/gpu/drm/hyperv/hyperv_drm_proto.c +++ b/drivers/gpu/drm/hyperv/hyperv_drm_proto.c @@ -18,16 +18,16 @@  #define SYNTHVID_VERSION(major, minor) ((minor) << 16 | (major))  #define SYNTHVID_VER_GET_MAJOR(ver) (ver & 0x0000ffff)  #define SYNTHVID_VER_GET_MINOR(ver) ((ver & 0xffff0000) >> 16) + +/* Support for VERSION_WIN7 is removed. #define is retained for reference. */  #define SYNTHVID_VERSION_WIN7 SYNTHVID_VERSION(3, 0)  #define SYNTHVID_VERSION_WIN8 SYNTHVID_VERSION(3, 2)  #define SYNTHVID_VERSION_WIN10 SYNTHVID_VERSION(3, 5) -#define SYNTHVID_DEPTH_WIN7 16  #define SYNTHVID_DEPTH_WIN8 32 -#define SYNTHVID_FB_SIZE_WIN7 (4 * 1024 * 1024) +#define SYNTHVID_WIDTH_WIN8 1600 +#define SYNTHVID_HEIGHT_WIN8 1200  #define SYNTHVID_FB_SIZE_WIN8 (8 * 1024 * 1024) -#define SYNTHVID_WIDTH_MAX_WIN7 1600 -#define SYNTHVID_HEIGHT_MAX_WIN7 1200  enum pipe_msg_type {  	PIPE_MSG_INVALID, @@ -496,12 +496,6 @@ int hyperv_connect_vsp(struct hv_device *hdev)  	case VERSION_WIN8:  	case VERSION_WIN8_1:  		ret = hyperv_negotiate_version(hdev, SYNTHVID_VERSION_WIN8); -		if (!ret) -			break; -		fallthrough; -	case VERSION_WS2008: -	case VERSION_WIN7: -		ret = hyperv_negotiate_version(hdev, SYNTHVID_VERSION_WIN7);  		break;  	default:  		ret = hyperv_negotiate_version(hdev, SYNTHVID_VERSION_WIN10); @@ -513,18 +507,15 @@ int hyperv_connect_vsp(struct hv_device *hdev)  		goto error;  	} -	if (hv->synthvid_version == SYNTHVID_VERSION_WIN7) -		hv->screen_depth = SYNTHVID_DEPTH_WIN7; -	else -		hv->screen_depth = SYNTHVID_DEPTH_WIN8; +	hv->screen_depth = SYNTHVID_DEPTH_WIN8;  	if (hyperv_version_ge(hv->synthvid_version, SYNTHVID_VERSION_WIN10)) {  		ret = hyperv_get_supported_resolution(hdev);  		if (ret)  			drm_err(dev, "Failed to get supported resolution from host, use default\n");  	} else { -		hv->screen_width_max = SYNTHVID_WIDTH_MAX_WIN7; -		hv->screen_height_max = SYNTHVID_HEIGHT_MAX_WIN7; +		hv->screen_width_max = SYNTHVID_WIDTH_WIN8; +		hv->screen_height_max = SYNTHVID_HEIGHT_WIN8;  	}  	hv->mmio_megabytes = hdev->channel->offermsg.offer.mmio_megabytes;  |