Commit 71163271 authored by Piotr Piórkowski's avatar Piotr Piórkowski Committed by Michal Wajdeczko
Browse files

drm/xe: Move VRAM manager to struct xe_vram_region



VRAM manager is related directly to struct xe_vram_region so it
should be inside this structure.
Let's move the VRAM to struct xe_vram_region.

v2:
 - remove xe_vram_region pointer from xe_ttm_vram_mgr
 - stop use dynamic alloaction for xe_ttm_vram_mgr in xe_vram_region
 - rename struct xe_ttm_vram_mgr vram_mgr to ttm
v3:
 - fix "'ttm' not described in 'xe_vram_region'"

Signed-off-by: default avatarPiotr Piórkowski <piotr.piorkowski@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250210081511.906452-3-piotr.piorkowski@intel.com
parent fc3a50c1
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -147,10 +147,13 @@ static struct xe_vram_region *res_to_mem_region(struct ttm_resource *res)
{
	struct xe_device *xe = ttm_to_xe_device(res->bo->bdev);
	struct ttm_resource_manager *mgr;
	struct xe_ttm_vram_mgr *vram_mgr;

	xe_assert(xe, resource_is_vram(res));
	mgr = ttm_manager_type(&xe->ttm, res->mem_type);
	return to_xe_ttm_vram_mgr(mgr)->vram;
	vram_mgr = to_xe_ttm_vram_mgr(mgr);

	return container_of(vram_mgr, struct xe_vram_region, ttm);
}

static void try_add_system(struct xe_device *xe, struct xe_bo *bo,
@@ -179,12 +182,15 @@ static void add_vram(struct xe_device *xe, struct xe_bo *bo,
		     struct ttm_place *places, u32 bo_flags, u32 mem_type, u32 *c)
{
	struct ttm_place place = { .mem_type = mem_type };
	struct ttm_resource_manager *mgr = ttm_manager_type(&xe->ttm, mem_type);
	struct xe_ttm_vram_mgr *vram_mgr = to_xe_ttm_vram_mgr(mgr);

	struct xe_vram_region *vram;
	u64 io_size;

	xe_assert(xe, *c < ARRAY_SIZE(bo->placements));

	vram = to_xe_ttm_vram_mgr(ttm_manager_type(&xe->ttm, mem_type))->vram;
	vram = container_of(vram_mgr, struct xe_vram_region, ttm);
	xe_assert(xe, vram && vram->usable_size);
	io_size = vram->io_size;

+3 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include "xe_sriov_types.h"
#include "xe_step_types.h"
#include "xe_survivability_mode_types.h"
#include "xe_ttm_vram_mgr_types.h"

#if IS_ENABLED(CONFIG_DRM_XE_DEBUG)
#define TEST_VM_OPS_ERROR
@@ -105,6 +106,8 @@ struct xe_vram_region {
	resource_size_t actual_physical_size;
	/** @mapping: pointer to VRAM mappable space */
	void __iomem *mapping;
	/** @ttm: VRAM TTM manager */
	struct xe_ttm_vram_mgr ttm;
};

/**
@@ -199,9 +202,6 @@ struct xe_tile {
		 */
		struct xe_vram_region vram;

		/** @mem.vram_mgr: VRAM TTM manager */
		struct xe_ttm_vram_mgr *vram_mgr;

		/** @mem.ggtt: Global graphics translation table */
		struct xe_ggtt *ggtt;

+1 −1
Original line number Diff line number Diff line
@@ -1564,7 +1564,7 @@ static u64 pf_query_free_lmem(struct xe_gt *gt)
{
	struct xe_tile *tile = gt->tile;

	return xe_ttm_vram_get_avail(&tile->mem.vram_mgr->manager);
	return xe_ttm_vram_get_avail(&tile->mem.vram.ttm.manager);
}

static u64 pf_query_max_lmem(struct xe_gt *gt)
+1 −5
Original line number Diff line number Diff line
@@ -94,10 +94,6 @@ static int xe_tile_alloc(struct xe_tile *tile)
		return -ENOMEM;
	tile->mem.ggtt->tile = tile;

	tile->mem.vram_mgr = drmm_kzalloc(drm, sizeof(*tile->mem.vram_mgr), GFP_KERNEL);
	if (!tile->mem.vram_mgr)
		return -ENOMEM;

	return 0;
}

@@ -139,7 +135,7 @@ static int tile_ttm_mgr_init(struct xe_tile *tile)
	int err;

	if (tile->mem.vram.usable_size) {
		err = xe_ttm_vram_mgr_init(tile, tile->mem.vram_mgr);
		err = xe_ttm_vram_mgr_init(tile, &tile->mem.vram.ttm);
		if (err)
			return err;
		xe->info.mem_region_mask |= BIT(tile->id) << 1;
+0 −1
Original line number Diff line number Diff line
@@ -342,7 +342,6 @@ int xe_ttm_vram_mgr_init(struct xe_tile *tile, struct xe_ttm_vram_mgr *mgr)
	struct xe_device *xe = tile_to_xe(tile);
	struct xe_vram_region *vram = &tile->mem.vram;

	mgr->vram = vram;
	return __xe_ttm_vram_mgr_init(xe, mgr, XE_PL_VRAM0 + tile->id,
				      vram->usable_size, vram->io_size,
				      PAGE_SIZE);
Loading