From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-outbound-1.vmware.com ([208.91.2.12]:34527 "EHLO smtp-outbound-1.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751480AbcF3AXc (ORCPT ); Wed, 29 Jun 2016 20:23:32 -0400 From: "Sinclair Yeh" To: dri-devel@lists.freedesktop.org Cc: linux-graphics-maintainer@vmware.com, Sinclair Yeh , stable@vger.kernel.org Subject: [PATCH 1/2] drm/vmwgfx: Work around mode set failure in 2D VMs Date: Wed, 29 Jun 2016 17:14:47 -0700 Message-Id: <1467245688-24449-2-git-send-email-syeh@vmware.com> In-Reply-To: <1467245688-24449-1-git-send-email-syeh@vmware.com> References: <1467245688-24449-1-git-send-email-syeh@vmware.com> Sender: stable-owner@vger.kernel.org List-ID: In a low-memory 2D VM, fbdev can take up a large percentage of available memory, making them unavailable for other DRM clients. Since we do not take fbdev into account when filtering modes, we end up claiming to support more modes than we actually do. The current mode filtering mechanism keys off of SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB, i.e. the maximum amount of surface memory we have. Since this value is a performance suggestion, not a hard limit, and since there should not be much of a performance impact for a 2D VM, rather than filtering out more modes, we will just allow ourselves to exceed the SVGA's performance suggestion. Also changed assumed bpp to 32 from 16 to make sure we can actually support all the modes listed. Signed-off-by: Sinclair Yeh Reviewed-by: Thomas Hellstrom Cc: --- drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 7 +++++++ drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 9 +-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c index 9fcd820..fc9ad00 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -706,6 +706,13 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) vmw_read(dev_priv, SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB); + /* + * Workaround for low memory 2D VMs to compensate for the + * allocation taken by fbdev + */ + if (!(dev_priv->capabilities & SVGA_CAP_3D)) + mem_size *= 2; + dev_priv->max_mob_pages = mem_size * 1024 / PAGE_SIZE; dev_priv->prim_bb_mem = vmw_read(dev_priv, diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 55231cc..077f16d 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@ -1553,14 +1553,7 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }; int i; - u32 assumed_bpp = 2; - - /* - * If using screen objects, then assume 32-bpp because that's what the - * SVGA device is assuming - */ - if (dev_priv->active_display_unit == vmw_du_screen_object) - assumed_bpp = 4; + u32 assumed_bpp = 4; if (dev_priv->active_display_unit == vmw_du_screen_target) { max_width = min(max_width, dev_priv->stdu_max_width); -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sinclair Yeh" Subject: [PATCH 1/2] drm/vmwgfx: Work around mode set failure in 2D VMs Date: Wed, 29 Jun 2016 17:14:47 -0700 Message-ID: <1467245688-24449-2-git-send-email-syeh@vmware.com> References: <1467245688-24449-1-git-send-email-syeh@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp-outbound-1.vmware.com (smtp-outbound-1.vmware.com [208.91.2.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id D69666E7AC for ; Thu, 30 Jun 2016 00:16:07 +0000 (UTC) In-Reply-To: <1467245688-24449-1-git-send-email-syeh@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: linux-graphics-maintainer@vmware.com, stable@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org SW4gYSBsb3ctbWVtb3J5IDJEIFZNLCBmYmRldiBjYW4gdGFrZSB1cCBhIGxhcmdlIHBlcmNlbnRh Z2Ugb2YKYXZhaWxhYmxlIG1lbW9yeSwgbWFraW5nIHRoZW0gdW5hdmFpbGFibGUgZm9yIG90aGVy IERSTSBjbGllbnRzLgoKU2luY2Ugd2UgZG8gbm90IHRha2UgZmJkZXYgaW50byBhY2NvdW50IHdo ZW4gZmlsdGVyaW5nIG1vZGVzLAp3ZSBlbmQgdXAgY2xhaW1pbmcgdG8gc3VwcG9ydCBtb3JlIG1v ZGVzIHRoYW4gd2UgYWN0dWFsbHkgZG8uCgpUaGUgY3VycmVudCBtb2RlIGZpbHRlcmluZyBtZWNo YW5pc20ga2V5cyBvZmYgb2YKU1ZHQV9SRUdfU1VHR0VTVEVEX0dCT0JKRUNUX01FTV9TSVpFX0tC LCBpLmUuIHRoZSBtYXhpbXVtIGFtb3VudApvZiBzdXJmYWNlIG1lbW9yeSB3ZSBoYXZlLiAgU2lu Y2UgdGhpcyB2YWx1ZSBpcyBhIHBlcmZvcm1hbmNlCnN1Z2dlc3Rpb24sIG5vdCBhIGhhcmQgbGlt aXQsIGFuZCBzaW5jZSB0aGVyZSBzaG91bGQgbm90IGJlIG11Y2gKb2YgYSBwZXJmb3JtYW5jZSBp bXBhY3QgZm9yIGEgMkQgVk0sIHJhdGhlciB0aGFuIGZpbHRlcmluZyBvdXQKbW9yZSBtb2Rlcywg d2Ugd2lsbCBqdXN0IGFsbG93IG91cnNlbHZlcyB0byBleGNlZWQgdGhlIFNWR0EncwpwZXJmb3Jt YW5jZSBzdWdnZXN0aW9uLgoKQWxzbyBjaGFuZ2VkIGFzc3VtZWQgYnBwIHRvIDMyIGZyb20gMTYg dG8gbWFrZSBzdXJlIHdlIGNhbgphY3R1YWxseSBzdXBwb3J0IGFsbCB0aGUgbW9kZXMgbGlzdGVk LgoKU2lnbmVkLW9mZi1ieTogU2luY2xhaXIgWWVoIDxzeWVoQHZtd2FyZS5jb20+ClJldmlld2Vk LWJ5OiBUaG9tYXMgSGVsbHN0cm9tIDx0aGVsbHN0cm9tQHZtd2FyZS5jb20+CkNjOiA8c3RhYmxl QHZnZXIua2VybmVsLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYu YyB8IDcgKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMgfCA5ICst LS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYwppbmRleCA5ZmNkODIwLi5mYzlhZDAwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYwpAQCAtNzA2LDYgKzcwNiwxMyBAQCBzdGF0 aWMgaW50IHZtd19kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBs b25nIGNoaXBzZXQpCiAJCQl2bXdfcmVhZChkZXZfcHJpdiwKIAkJCQkgU1ZHQV9SRUdfU1VHR0VT VEVEX0dCT0JKRUNUX01FTV9TSVpFX0tCKTsKIAorCQkvKgorCQkgKiBXb3JrYXJvdW5kIGZvciBs b3cgbWVtb3J5IDJEIFZNcyB0byBjb21wZW5zYXRlIGZvciB0aGUKKwkJICogYWxsb2NhdGlvbiB0 YWtlbiBieSBmYmRldgorCQkgKi8KKwkJaWYgKCEoZGV2X3ByaXYtPmNhcGFiaWxpdGllcyAmIFNW R0FfQ0FQXzNEKSkKKwkJCW1lbV9zaXplICo9IDI7CisKIAkJZGV2X3ByaXYtPm1heF9tb2JfcGFn ZXMgPSBtZW1fc2l6ZSAqIDEwMjQgLyBQQUdFX1NJWkU7CiAJCWRldl9wcml2LT5wcmltX2JiX21l bSA9CiAJCQl2bXdfcmVhZChkZXZfcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMK aW5kZXggNTUyMzFjYy4uMDc3ZjE2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMK QEAgLTE1NTMsMTQgKzE1NTMsNyBAQCBpbnQgdm13X2R1X2Nvbm5lY3Rvcl9maWxsX21vZGVzKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCURSTV9NT0RFX0ZMQUdfTkhTWU5DIHwg RFJNX01PREVfRkxBR19QVlNZTkMpCiAJfTsKIAlpbnQgaTsKLQl1MzIgYXNzdW1lZF9icHAgPSAy OwotCi0JLyoKLQkgKiBJZiB1c2luZyBzY3JlZW4gb2JqZWN0cywgdGhlbiBhc3N1bWUgMzItYnBw IGJlY2F1c2UgdGhhdCdzIHdoYXQgdGhlCi0JICogU1ZHQSBkZXZpY2UgaXMgYXNzdW1pbmcKLQkg Ki8KLQlpZiAoZGV2X3ByaXYtPmFjdGl2ZV9kaXNwbGF5X3VuaXQgPT0gdm13X2R1X3NjcmVlbl9v YmplY3QpCi0JCWFzc3VtZWRfYnBwID0gNDsKKwl1MzIgYXNzdW1lZF9icHAgPSA0OwogCiAJaWYg KGRldl9wcml2LT5hY3RpdmVfZGlzcGxheV91bml0ID09IHZtd19kdV9zY3JlZW5fdGFyZ2V0KSB7 CiAJCW1heF93aWR0aCAgPSBtaW4obWF4X3dpZHRoLCAgZGV2X3ByaXYtPnN0ZHVfbWF4X3dpZHRo KTsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK