Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/vmwgfx: Get maximum mob size from register SVGA_REG_MOB_MAX_SIZE

This patch queries the register SVGA_REG_MOB_MAX_SIZE for the
maximum size of a single mob.

Signed-off-by: Charmaine Lee <charmainel@vmware.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>

authored by

Charmaine Lee and committed by
Thomas Hellstrom
857aea1c 8e67bbbc

+16 -1
+8 -1
drivers/gpu/drm/vmwgfx/svga_reg.h
··· 169 169 SVGA_REG_TRACES = 45, /* Enable trace-based updates even when FIFO is on */ 170 170 SVGA_REG_GMRS_MAX_PAGES = 46, /* Maximum number of 4KB pages for all GMRs */ 171 171 SVGA_REG_MEMORY_SIZE = 47, /* Total dedicated device memory excluding FIFO */ 172 + SVGA_REG_COMMAND_LOW = 48, /* Lower 32 bits and submits commands */ 173 + SVGA_REG_COMMAND_HIGH = 49, /* Upper 32 bits of command buffer PA */ 172 174 SVGA_REG_MAX_PRIMARY_BOUNDING_BOX_MEM = 50, /* Max primary memory */ 173 175 SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB = 51, /* Suggested limit on mob mem */ 174 176 SVGA_REG_DEV_CAP = 52, /* Write dev cap index, read value */ 175 - SVGA_REG_TOP = 53, /* Must be 1 more than the last register */ 177 + SVGA_REG_CMD_PREPEND_LOW = 53, 178 + SVGA_REG_CMD_PREPEND_HIGH = 54, 179 + SVGA_REG_SCREENTARGET_MAX_WIDTH = 55, 180 + SVGA_REG_SCREENTARGET_MAX_HEIGHT = 56, 181 + SVGA_REG_MOB_MAX_SIZE = 57, 182 + SVGA_REG_TOP = 58, /* Must be 1 more than the last register */ 176 183 177 184 SVGA_PALETTE_BASE = 1024, /* Base of SVGA color map */ 178 185 /* Next 768 (== 256*3) registers exist for colormap */
+3
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
··· 667 667 dev_priv->memory_size = 512*1024*1024; 668 668 } 669 669 dev_priv->max_mob_pages = 0; 670 + dev_priv->max_mob_size = 0; 670 671 if (dev_priv->capabilities & SVGA_CAP_GBOBJECTS) { 671 672 uint64_t mem_size = 672 673 vmw_read(dev_priv, ··· 677 676 dev_priv->prim_bb_mem = 678 677 vmw_read(dev_priv, 679 678 SVGA_REG_MAX_PRIMARY_BOUNDING_BOX_MEM); 679 + dev_priv->max_mob_size = 680 + vmw_read(dev_priv, SVGA_REG_MOB_MAX_SIZE); 680 681 } else 681 682 dev_priv->prim_bb_mem = dev_priv->vram_size; 682 683
+1
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
··· 386 386 uint32_t max_gmr_ids; 387 387 uint32_t max_gmr_pages; 388 388 uint32_t max_mob_pages; 389 + uint32_t max_mob_size; 389 390 uint32_t memory_size; 390 391 bool has_gmr; 391 392 bool has_mob;
+3
drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
··· 102 102 vmw_fp->gb_aware = true; 103 103 param->value = dev_priv->max_mob_pages * PAGE_SIZE; 104 104 break; 105 + case DRM_VMW_PARAM_MAX_MOB_SIZE: 106 + param->value = dev_priv->max_mob_size; 107 + break; 105 108 default: 106 109 DRM_ERROR("Illegal vmwgfx get param request: %d\n", 107 110 param->param);
+1
include/uapi/drm/vmwgfx_drm.h
··· 87 87 #define DRM_VMW_PARAM_MAX_SURF_MEMORY 7 88 88 #define DRM_VMW_PARAM_3D_CAPS_SIZE 8 89 89 #define DRM_VMW_PARAM_MAX_MOB_MEMORY 9 90 + #define DRM_VMW_PARAM_MAX_MOB_SIZE 10 90 91 91 92 /** 92 93 * struct drm_vmw_getparam_arg