All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Airlie <airlied@gmail.com>
To: dri-devel@lists.freedesktop.org
Cc: bskeggs@redhat.com, christian.koenig@amd.com
Subject: [PATCH 3/4] drm/ttm: drop size from resource manager base class.
Date: Fri,  7 Aug 2020 09:34:58 +1000	[thread overview]
Message-ID: <20200806233459.4057784-4-airlied@gmail.com> (raw)
In-Reply-To: <20200806233459.4057784-1-airlied@gmail.com>

From: Dave Airlie <airlied@redhat.com>

This is a bit more involved that it looked, the range manager
needs accessors adding and amdgpu needs a bit of a refactor.
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c   | 21 ++++++++-----------
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c       |  5 +++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c    | 13 ++++++------
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c       |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h       | 12 +++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c  | 16 ++++++--------
 drivers/gpu/drm/nouveau/nouveau_ttm.c         |  5 ++---
 drivers/gpu/drm/radeon/radeon_gem.c           |  2 +-
 drivers/gpu/drm/radeon/radeon_ttm.c           |  3 +--
 drivers/gpu/drm/ttm/ttm_bo.c                  |  7 ++-----
 drivers/gpu/drm/ttm/ttm_range_manager.c       | 21 +++++++++++++++++--
 drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_thp.c           |  9 ++++----
 include/drm/ttm/ttm_bo_api.h                  |  4 +---
 include/drm/ttm/ttm_bo_driver.h               | 20 ++++++++++++++++--
 15 files changed, 87 insertions(+), 55 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
index 010518148ef8..b769b43b2fbc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
@@ -24,11 +24,6 @@
 
 #include "amdgpu.h"
 
-static inline struct amdgpu_gtt_mgr *to_gtt_mgr(struct ttm_resource_manager *man)
-{
-	return container_of(man, struct amdgpu_gtt_mgr, manager);
-}
-
 struct amdgpu_gtt_node {
 	struct drm_mm_node node;
 	struct ttm_buffer_object *tbo;
@@ -48,8 +43,9 @@ static ssize_t amdgpu_mem_info_gtt_total_show(struct device *dev,
 	struct drm_device *ddev = dev_get_drvdata(dev);
 	struct amdgpu_device *adev = ddev->dev_private;
 	struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
-	return snprintf(buf, PAGE_SIZE, "%llu\n",
-			man->size * PAGE_SIZE);
+	struct amdgpu_gtt_mgr *gtt_mgr = to_gtt_mgr(man);
+	return snprintf(buf, PAGE_SIZE, "%lu\n",
+			gtt_mgr->size * PAGE_SIZE);
 }
 
 /**
@@ -96,13 +92,14 @@ int amdgpu_gtt_mgr_init(struct amdgpu_device *adev, uint64_t gtt_size)
 	man->available_caching = TTM_PL_MASK_CACHING;
 	man->default_caching = TTM_PL_FLAG_CACHED;
 
-	ttm_resource_manager_init(man, gtt_size >> PAGE_SHIFT);
+	mgr->size = gtt_size >> PAGE_SHIFT;
+	ttm_resource_manager_init(man);
 
 	start = AMDGPU_GTT_MAX_TRANSFER_SIZE * AMDGPU_GTT_NUM_TRANSFER_WINDOWS;
 	size = (adev->gmc.gart_size >> PAGE_SHIFT) - start;
 	drm_mm_init(&mgr->mm, start, size);
 	spin_lock_init(&mgr->lock);
-	atomic64_set(&mgr->available, gtt_size >> PAGE_SHIFT);
+	atomic64_set(&mgr->available, mgr->size);
 
 	ret = device_create_file(adev->dev, &dev_attr_mem_info_gtt_total);
 	if (ret) {
@@ -264,7 +261,7 @@ static void amdgpu_gtt_mgr_del(struct ttm_resource_manager *man,
 uint64_t amdgpu_gtt_mgr_usage(struct ttm_resource_manager *man)
 {
 	struct amdgpu_gtt_mgr *mgr = to_gtt_mgr(man);
-	s64 result = man->size - atomic64_read(&mgr->available);
+	s64 result = mgr->size - atomic64_read(&mgr->available);
 
 	return (result > 0 ? result : 0) * PAGE_SIZE;
 }
@@ -305,8 +302,8 @@ static void amdgpu_gtt_mgr_debug(struct ttm_resource_manager *man,
 	drm_mm_print(&mgr->mm, printer);
 	spin_unlock(&mgr->lock);
 
-	drm_printf(printer, "man size:%llu pages, gtt available:%lld pages, usage:%lluMB\n",
-		   man->size, (u64)atomic64_read(&mgr->available),
+	drm_printf(printer, "man size:%lu pages, gtt available:%lld pages, usage:%lluMB\n",
+		   mgr->size, (u64)atomic64_read(&mgr->available),
 		   amdgpu_gtt_mgr_usage(man) >> 20);
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index fff9c013f337..732e4004777e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -608,7 +608,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
 			min(adev->gmc.visible_vram_size -
 			    atomic64_read(&adev->visible_pin_size),
 			    vram_gtt.vram_size);
-		vram_gtt.gtt_size = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT)->size;
+		vram_gtt.gtt_size = to_gtt_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
 		vram_gtt.gtt_size *= PAGE_SIZE;
 		vram_gtt.gtt_size -= atomic64_read(&adev->gart_pin_size);
 		return copy_to_user(out, &vram_gtt,
@@ -620,6 +620,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
 			ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
 		struct ttm_resource_manager *gtt_man =
 			ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
+		struct amdgpu_gtt_mgr *gtt_mgr = to_gtt_mgr(gtt_man);
 		memset(&mem, 0, sizeof(mem));
 		mem.vram.total_heap_size = adev->gmc.real_vram_size;
 		mem.vram.usable_heap_size = adev->gmc.real_vram_size -
@@ -640,7 +641,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
 		mem.cpu_accessible_vram.max_allocation =
 			mem.cpu_accessible_vram.usable_heap_size * 3 / 4;
 
-		mem.gtt.total_heap_size = gtt_man->size;
+		mem.gtt.total_heap_size = gtt_mgr->size;
 		mem.gtt.total_heap_size *= PAGE_SIZE;
 		mem.gtt.usable_heap_size = mem.gtt.total_heap_size -
 			atomic64_read(&adev->gart_pin_size);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index 43f4966331dd..33957d829197 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -442,25 +442,24 @@ void amdgpu_bo_free_kernel(struct amdgpu_bo **bo, u64 *gpu_addr,
 static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
 					  unsigned long size, u32 domain)
 {
-	struct ttm_resource_manager *man = NULL;
-
+	unsigned long mgr_size = 0;
 	/*
 	 * If GTT is part of requested domains the check must succeed to
 	 * allow fall back to GTT
 	 */
 	if (domain & AMDGPU_GEM_DOMAIN_GTT) {
-		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
+		mgr_size = to_gtt_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
 
-		if (size < (man->size << PAGE_SHIFT))
+		if (size < (mgr_size << PAGE_SHIFT))
 			return true;
 		else
 			goto fail;
 	}
 
 	if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
-		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
+		mgr_size = to_vram_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
 
-		if (size < (man->size << PAGE_SHIFT))
+		if (size < (mgr_size << PAGE_SHIFT))
 			return true;
 		else
 			goto fail;
@@ -472,7 +471,7 @@ static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
 
 fail:
 	DRM_DEBUG("BO size %lu > total memory in domain: %llu\n", size,
-		  man->size << PAGE_SHIFT);
+		  mgr_size << PAGE_SHIFT);
 	return false;
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 28557839f132..ca312ef8c2f8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -2045,7 +2045,7 @@ void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev, bool enable)
 		size = adev->gmc.real_vram_size;
 	else
 		size = adev->gmc.visible_vram_size;
-	man->size = size >> PAGE_SHIFT;
+	to_vram_mgr(man)->size = size >> PAGE_SHIFT;
 	adev->mman.buffer_funcs_enabled = enable;
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
index 4a6d92f27b6e..5636ef2b1707 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
@@ -47,15 +47,27 @@ struct amdgpu_vram_mgr {
 	spinlock_t lock;
 	atomic64_t usage;
 	atomic64_t vis_usage;
+	unsigned long size;
 };
 
+static inline struct amdgpu_vram_mgr *to_vram_mgr(struct ttm_resource_manager *man)
+{
+	return container_of(man, struct amdgpu_vram_mgr, manager);
+}
+
 struct amdgpu_gtt_mgr {
 	struct ttm_resource_manager manager;
 	struct drm_mm mm;
 	spinlock_t lock;
 	atomic64_t available;
+	unsigned long size;
 };
 
+static inline struct amdgpu_gtt_mgr *to_gtt_mgr(struct ttm_resource_manager *man)
+{
+	return container_of(man, struct amdgpu_gtt_mgr, manager);
+}
+
 struct amdgpu_mman {
 	struct ttm_bo_device		bdev;
 	bool				mem_global_referenced;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
index 7882efd275d1..d4aa2aa49b4f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
@@ -28,11 +28,6 @@
 #include "amdgpu_atomfirmware.h"
 #include "atom.h"
 
-static inline struct amdgpu_vram_mgr *to_vram_mgr(struct ttm_resource_manager *man)
-{
-	return container_of(man, struct amdgpu_vram_mgr, manager);
-}
-
 static inline struct amdgpu_device *to_amdgpu_device(struct amdgpu_vram_mgr *mgr)
 {
 	return container_of(mgr, struct amdgpu_device, mman.vram_mgr);
@@ -180,11 +175,12 @@ int amdgpu_vram_mgr_init(struct amdgpu_device *adev)
 	man->available_caching = TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC;
 	man->default_caching = TTM_PL_FLAG_WC;
 
-	ttm_resource_manager_init(man, adev->gmc.real_vram_size >> PAGE_SHIFT);
+	ttm_resource_manager_init(man);
 
 	man->func = &amdgpu_vram_mgr_func;
 
-	drm_mm_init(&mgr->mm, 0, man->size);
+	mgr->size = adev->gmc.real_vram_size >> PAGE_SHIFT;
+	drm_mm_init(&mgr->mm, 0, mgr->size);
 	spin_lock_init(&mgr->lock);
 
 	/* Add the two VRAM-related sysfs files */
@@ -325,7 +321,7 @@ static int amdgpu_vram_mgr_new(struct ttm_resource_manager *man,
 
 	lpfn = place->lpfn;
 	if (!lpfn)
-		lpfn = man->size;
+		lpfn = mgr->size;
 
 	max_bytes = adev->gmc.mc_vram_size;
 	if (tbo->type != ttm_bo_type_kernel)
@@ -600,8 +596,8 @@ static void amdgpu_vram_mgr_debug(struct ttm_resource_manager *man,
 	drm_mm_print(&mgr->mm, printer);
 	spin_unlock(&mgr->lock);
 
-	drm_printf(printer, "man size:%llu pages, ram usage:%lluMB, vis usage:%lluMB\n",
-		   man->size, amdgpu_vram_mgr_usage(man) >> 20,
+	drm_printf(printer, "man size:%lu pages, ram usage:%lluMB, vis usage:%lluMB\n",
+		   mgr->size, amdgpu_vram_mgr_usage(man) >> 20,
 		   amdgpu_vram_mgr_vis_usage(man) >> 20);
 }
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
index e6a30865a00b..93685a376a50 100644
--- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
@@ -175,8 +175,7 @@ nouveau_ttm_init_vram(struct nouveau_drm *drm)
 		man->func = &nouveau_vram_manager;
 		man->use_io_reserve_lru = true;
 
-		ttm_resource_manager_init(man,
-					  drm->gem.vram_available >> PAGE_SHIFT);
+		ttm_resource_manager_init(man);
 		ttm_set_driver_manager(&drm->ttm.bdev, TTM_PL_VRAM, man);
 		ttm_resource_manager_set_used(man, true);
 		return 0;
@@ -237,7 +236,7 @@ nouveau_ttm_init_gtt(struct nouveau_drm *drm)
 	man->available_caching = available_caching;
 	man->default_caching = default_caching;
 	man->use_tt = true;
-	ttm_resource_manager_init(man, size_pages);
+	ttm_resource_manager_init(man);
 	ttm_set_driver_manager(&drm->ttm.bdev, TTM_PL_TT, man);
 	ttm_resource_manager_set_used(man, true);
 	return 0;
diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
index 7f5dfe04789e..00258d158cfe 100644
--- a/drivers/gpu/drm/radeon/radeon_gem.c
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
@@ -228,7 +228,7 @@ int radeon_gem_info_ioctl(struct drm_device *dev, void *data,
 
 	man = ttm_manager_type(&rdev->mman.bdev, TTM_PL_VRAM);
 
-	args->vram_size = (u64)man->size << PAGE_SHIFT;
+	args->vram_size = (u64)ttm_range_man_size(man) << PAGE_SHIFT;
 	args->vram_visible = rdev->mc.visible_vram_size;
 	args->vram_visible -= rdev->vram_pin_size;
 	args->gart_size = rdev->mc.gtt_size;
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 3355b69b13d1..e41ec62ff944 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -843,9 +843,8 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size)
 	if (!rdev->mman.initialized)
 		return;
 
-	man = ttm_manager_type(&rdev->mman.bdev, TTM_PL_VRAM);
 	/* this just adjusts TTM size idea, which sets lpfn to the correct value */
-	man->size = size >> PAGE_SHIFT;
+	ttm_range_man_adjust_size(man, size >> PAGE_SHIFT);
 }
 
 static vm_fault_t radeon_ttm_fault(struct vm_fault *vmf)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index ad09329b62d3..cf8176bce4f6 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -82,7 +82,6 @@ void ttm_resource_manager_debug(struct ttm_resource_manager *man,
 {
 	drm_printf(p, "    use_type: %d\n", man->use_type);
 	drm_printf(p, "    use_tt: %d\n", man->use_tt);
-	drm_printf(p, "    size: %llu\n", man->size);
 	drm_printf(p, "    available_caching: 0x%08X\n", man->available_caching);
 	drm_printf(p, "    default_caching: 0x%08X\n", man->default_caching);
 	if (man->func && man->func->debug)
@@ -1468,8 +1467,7 @@ int ttm_bo_evict_mm(struct ttm_bo_device *bdev, unsigned mem_type)
 }
 EXPORT_SYMBOL(ttm_bo_evict_mm);
 
-void ttm_resource_manager_init(struct ttm_resource_manager *man,
-			       unsigned long p_size)
+void ttm_resource_manager_init(struct ttm_resource_manager *man)
 {
 	unsigned i;
 
@@ -1477,7 +1475,6 @@ void ttm_resource_manager_init(struct ttm_resource_manager *man,
 	mutex_init(&man->io_reserve_mutex);
 	spin_lock_init(&man->move_lock);
 	INIT_LIST_HEAD(&man->io_reserve_lru);
-	man->size = p_size;
 
 	for (i = 0; i < TTM_MAX_BO_PRIORITY; ++i)
 		INIT_LIST_HEAD(&man->lru[i]);
@@ -1590,7 +1587,7 @@ static void ttm_bo_init_sysman(struct ttm_bo_device *bdev)
 	man->available_caching = TTM_PL_MASK_CACHING;
 	man->default_caching = TTM_PL_FLAG_CACHED;
 
-	ttm_resource_manager_init(man, 0);
+	ttm_resource_manager_init(man);
 	ttm_set_driver_manager(bdev, TTM_PL_SYSTEM, man);
 	ttm_resource_manager_set_used(man, true);
 }
diff --git a/drivers/gpu/drm/ttm/ttm_range_manager.c b/drivers/gpu/drm/ttm/ttm_range_manager.c
index 274a05ca13d3..0dc4b17cc3dc 100644
--- a/drivers/gpu/drm/ttm/ttm_range_manager.c
+++ b/drivers/gpu/drm/ttm/ttm_range_manager.c
@@ -47,6 +47,7 @@ struct ttm_range_manager {
 	struct ttm_resource_manager manager;
 	struct drm_mm mm;
 	spinlock_t lock;
+	uint64_t size;
 };
 
 static inline struct ttm_range_manager *to_range_manager(struct ttm_resource_manager *man)
@@ -68,7 +69,7 @@ static int ttm_range_man_get_node(struct ttm_resource_manager *man,
 
 	lpfn = place->lpfn;
 	if (!lpfn)
-		lpfn = man->size;
+		lpfn = rman->size;
 
 	node = kzalloc(sizeof(*node), GFP_KERNEL);
 	if (!node)
@@ -133,8 +134,9 @@ int ttm_range_man_init(struct ttm_bo_device *bdev,
 
 	man->func = &ttm_range_manager_func;
 
-	ttm_resource_manager_init(man, p_size);
+	ttm_resource_manager_init(man);
 
+	rman->size = p_size;
 	drm_mm_init(&rman->mm, 0, p_size);
 	spin_lock_init(&rman->lock);
 
@@ -185,3 +187,18 @@ static const struct ttm_resource_manager_func ttm_range_manager_func = {
 	.put_node = ttm_range_man_put_node,
 	.debug = ttm_range_man_debug
 };
+
+void ttm_range_man_adjust_size(struct ttm_resource_manager *man,
+			       unsigned long size)
+{
+	struct ttm_range_manager *rman = to_range_manager(man);
+	rman->size = size;
+}
+EXPORT_SYMBOL(ttm_range_man_adjust_size);
+
+unsigned long ttm_range_man_size(struct ttm_resource_manager *man)
+{
+	struct ttm_range_manager *rman = to_range_manager(man);
+	return rman->size;
+}
+EXPORT_SYMBOL(ttm_range_man_size);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
index 3fea7a6c7cfa..a7a2deae2277 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
@@ -116,7 +116,7 @@ int vmw_gmrid_man_init(struct vmw_private *dev_priv, int type)
 	man->default_caching = TTM_PL_FLAG_CACHED;
 	/* TODO: This is most likely not correct */
 	man->use_tt = true;
-	ttm_resource_manager_init(man, 0);
+	ttm_resource_manager_init(man);
 	spin_lock_init(&gman->lock);
 	gman->used_gmr_pages = 0;
 	ida_init(&gman->gmr_ida);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c b/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c
index f594e2e6ab7e..74cdee48b191 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c
@@ -19,6 +19,7 @@ struct vmw_thp_manager {
 	struct ttm_resource_manager manager;
 	struct drm_mm mm;
 	spinlock_t lock;
+	uint64_t size;
 };
 
 static struct vmw_thp_manager *to_thp_manager(struct ttm_resource_manager *man)
@@ -63,7 +64,7 @@ static int vmw_thp_get_node(struct ttm_resource_manager *man,
 
 	lpfn = place->lpfn;
 	if (!lpfn)
-		lpfn = man->size;
+		lpfn = rman->size;
 
 	mode = DRM_MM_INSERT_BEST;
 	if (place->flags & TTM_PL_FLAG_TOPDOWN)
@@ -134,10 +135,10 @@ int vmw_thp_init(struct vmw_private *dev_priv)
 	man->available_caching = TTM_PL_FLAG_CACHED;
 	man->default_caching = TTM_PL_FLAG_CACHED;
 
-	ttm_resource_manager_init(man,
-				  dev_priv->vram_size >> PAGE_SHIFT);
+	ttm_resource_manager_init(man);
 
-	drm_mm_init(&rman->mm, 0, man->size);
+	rman->size = dev_priv->vram_size >> PAGE_SHIFT;
+	drm_mm_init(&rman->mm, 0, rman->size);
 	spin_lock_init(&rman->lock);
 
 	ttm_set_driver_manager(&dev_priv->bdev, TTM_PL_VRAM, &rman->manager);
diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h
index 770ad2195875..e4bf93482b59 100644
--- a/include/drm/ttm/ttm_bo_api.h
+++ b/include/drm/ttm/ttm_bo_api.h
@@ -537,12 +537,10 @@ int ttm_bo_create(struct ttm_bo_device *bdev, unsigned long size,
  * ttm_resource_manager_init
  *
  * @man: memory manager object to init
- * @p_size: size managed area in pages.
  *
  * Initialise core parts of a manager object.
  */
-void ttm_resource_manager_init(struct ttm_resource_manager *man,
-			       unsigned long p_size);
+void ttm_resource_manager_init(struct ttm_resource_manager *man);
 
 /**
  * ttm_bo_evict_mm
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
index eb1c3312e175..c719b4aa3793 100644
--- a/include/drm/ttm/ttm_bo_driver.h
+++ b/include/drm/ttm/ttm_bo_driver.h
@@ -116,7 +116,6 @@ struct ttm_resource_manager_func {
  * managed by this memory type.
  * @gpu_offset: If used, the GPU offset of the first managed page of
  * fixed memory or the first managed location in an aperture.
- * @size: Size of the managed region.
  * @available_caching: A mask of available caching types, TTM_PL_FLAG_XX,
  * as defined in ttm_placement_common.h
  * @default_caching: The default caching policy used for a buffer object
@@ -142,7 +141,6 @@ struct ttm_resource_manager {
 	 */
 	bool use_type;
 	bool use_tt;
-	uint64_t size;
 	uint32_t available_caching;
 	uint32_t default_caching;
 	const struct ttm_resource_manager_func *func;
@@ -883,4 +881,22 @@ int ttm_range_man_fini(struct ttm_bo_device *bdev,
 void ttm_resource_manager_debug(struct ttm_resource_manager *man,
 				struct drm_printer *p);
 
+/**
+ * ttm_range_man_adjust_size
+ *
+ * @man: manager to adjust size for
+ * @p_size: new size.
+ */
+void ttm_range_man_adjust_size(struct ttm_resource_manager *man,
+			       unsigned long p_size);
+
+/**
+ * ttm_range_man_size
+ *
+ * @man: manager to get size for
+ * Returns:
+ * size of range manager.
+ */
+unsigned long ttm_range_man_size(struct ttm_resource_manager *man);
+
 #endif
-- 
2.27.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2020-08-06 23:35 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-06 23:34 further small ttm cleanups Dave Airlie
2020-08-06 23:34 ` [PATCH 1/4] drm/amdgpu/ttm: move vram/gtt mgr allocations to mman Dave Airlie
2020-08-07  9:17   ` Christian König
2020-08-06 23:34 ` [PATCH 2/4] drm/amdgpu/ttm: drop the adev link from vram mgr Dave Airlie
2020-08-07  9:18   ` Christian König
2020-08-06 23:34 ` Dave Airlie [this message]
2020-08-07  3:50   ` [PATCH 3/4] drm/ttm: drop size from resource manager base class kernel test robot
2020-08-07  3:50     ` kernel test robot
2020-08-07  4:46   ` kernel test robot
2020-08-07  4:46     ` kernel test robot
2020-08-07  7:17   ` kernel test robot
2020-08-07  7:17     ` kernel test robot
2020-08-07  9:22   ` Christian König
2020-08-06 23:34 ` [PATCH 4/4] drm/ttm/nouveau: move io_lru storage into driver Dave Airlie
2020-08-07 12:22   ` Christian König
2020-08-09  4:34   ` [drm/ttm/nouveau] c36a1cfe1b: BUG:kernel_NULL_pointer_dereference, address kernel test robot
2020-08-09  4:34     ` [drm/ttm/nouveau] c36a1cfe1b: BUG:kernel_NULL_pointer_dereference,address kernel test robot
2020-08-09  4:34     ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200806233459.4057784-4-airlied@gmail.com \
    --to=airlied@gmail.com \
    --cc=bskeggs@redhat.com \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.