diff options
author | Christian König <christian.koenig@amd.com> | 2020-07-23 15:19:49 +0200 |
---|---|---|
committer | Christian König <christian.koenig@amd.com> | 2020-07-31 17:13:46 +0200 |
commit | 3629ca5dfb9ab583a6307abb31793bb0afacf933 (patch) | |
tree | 4626f794c268f166c90cb548f1f0fd0be0a193d9 /drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | |
parent | 473633540c2f51403df1b065ccf51d8267e880a6 (diff) | |
download | linux-3629ca5dfb9ab583a6307abb31793bb0afacf933.tar.bz2 |
drm/vmwgfx: stop implementing init_mem_type v2
Instead just initialize the memory type parameters
before calling ttm_bo_init_mm.
v2: keep extra system domain handling
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/382082/
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_drv.c')
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c index 470428387878..8e67a29471a8 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -859,11 +859,16 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) DRM_ERROR("Failed initializing TTM buffer object driver.\n"); goto out_no_bdev; } + dev_priv->bdev.man[TTM_PL_SYSTEM].available_caching = + TTM_PL_FLAG_CACHED; /* * Enable VRAM, but initially don't use it until SVGA is enabled and * unhidden. */ + dev_priv->bdev.man[TTM_PL_VRAM].func = &vmw_thp_func; + dev_priv->bdev.man[TTM_PL_VRAM].available_caching = TTM_PL_FLAG_CACHED; + dev_priv->bdev.man[TTM_PL_VRAM].default_caching = TTM_PL_FLAG_CACHED; ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM, (dev_priv->vram_size >> PAGE_SHIFT)); if (unlikely(ret != 0)) { @@ -872,7 +877,17 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) } dev_priv->bdev.man[TTM_PL_VRAM].use_type = false; + /* + * "Guest Memory Regions" is an aperture like feature with + * one slot per bo. There is an upper limit of the number of + * slots as well as the bo size. + */ dev_priv->has_gmr = true; + dev_priv->bdev.man[VMW_PL_GMR].func = &vmw_gmrid_manager_func; + dev_priv->bdev.man[VMW_PL_GMR].available_caching = TTM_PL_FLAG_CACHED; + dev_priv->bdev.man[VMW_PL_GMR].default_caching = TTM_PL_FLAG_CACHED; + /* TODO: This is most likely not correct */ + dev_priv->bdev.man[VMW_PL_GMR].use_tt = true; if (((dev_priv->capabilities & (SVGA_CAP_GMR | SVGA_CAP_GMR2)) == 0) || refuse_dma || ttm_bo_init_mm(&dev_priv->bdev, VMW_PL_GMR, VMW_PL_GMR) != 0) { @@ -883,6 +898,11 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) if (dev_priv->capabilities & SVGA_CAP_GBOBJECTS && !refuse_dma) { dev_priv->has_mob = true; + dev_priv->bdev.man[VMW_PL_MOB].func = &vmw_gmrid_manager_func; + dev_priv->bdev.man[VMW_PL_MOB].available_caching = TTM_PL_FLAG_CACHED; + dev_priv->bdev.man[VMW_PL_MOB].default_caching = TTM_PL_FLAG_CACHED; + /* TODO: This is most likely not correct */ + dev_priv->bdev.man[VMW_PL_MOB].use_tt = true; if (ttm_bo_init_mm(&dev_priv->bdev, VMW_PL_MOB, VMW_PL_MOB) != 0) { DRM_INFO("No MOB memory available. " |