Commit d79025c7 authored by Christian König's avatar Christian König

drm/ttm: always initialize the full ttm_resource v2

Init all fields in ttm_resource_alloc() when we create a new resource.

v2: use place->mem_type instead of res->mem_type
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210430092508.60710-2-christian.koenig@amd.com
parent b072b9cd
...@@ -1018,8 +1018,6 @@ int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo) ...@@ -1018,8 +1018,6 @@ int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo)
} else { } else {
/* allocate GART space */ /* allocate GART space */
tmp = bo->mem;
tmp.mm_node = NULL;
placement.num_placement = 1; placement.num_placement = 1;
placement.placement = &placements; placement.placement = &placements;
placement.num_busy_placement = 1; placement.num_busy_placement = 1;
......
...@@ -507,11 +507,6 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, ...@@ -507,11 +507,6 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo,
return ttm_tt_create(bo, false); return ttm_tt_create(bo, false);
} }
evict_mem = bo->mem;
evict_mem.mm_node = NULL;
evict_mem.bus.offset = 0;
evict_mem.bus.addr = NULL;
ret = ttm_bo_mem_space(bo, &placement, &evict_mem, ctx); ret = ttm_bo_mem_space(bo, &placement, &evict_mem, ctx);
if (ret) { if (ret) {
if (ret != -ERESTARTSYS) { if (ret != -ERESTARTSYS) {
...@@ -867,12 +862,8 @@ static int ttm_bo_bounce_temp_buffer(struct ttm_buffer_object *bo, ...@@ -867,12 +862,8 @@ static int ttm_bo_bounce_temp_buffer(struct ttm_buffer_object *bo,
struct ttm_place *hop) struct ttm_place *hop)
{ {
struct ttm_placement hop_placement; struct ttm_placement hop_placement;
struct ttm_resource hop_mem;
int ret; int ret;
struct ttm_resource hop_mem = *mem;
hop_mem.mm_node = NULL;
hop_mem.mem_type = TTM_PL_SYSTEM;
hop_mem.placement = 0;
hop_placement.num_placement = hop_placement.num_busy_placement = 1; hop_placement.num_placement = hop_placement.num_busy_placement = 1;
hop_placement.placement = hop_placement.busy_placement = hop; hop_placement.placement = hop_placement.busy_placement = hop;
...@@ -894,19 +885,14 @@ static int ttm_bo_move_buffer(struct ttm_buffer_object *bo, ...@@ -894,19 +885,14 @@ static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
struct ttm_placement *placement, struct ttm_placement *placement,
struct ttm_operation_ctx *ctx) struct ttm_operation_ctx *ctx)
{ {
int ret = 0;
struct ttm_place hop; struct ttm_place hop;
struct ttm_resource mem; struct ttm_resource mem;
int ret;
dma_resv_assert_held(bo->base.resv); dma_resv_assert_held(bo->base.resv);
memset(&hop, 0, sizeof(hop)); memset(&hop, 0, sizeof(hop));
mem.num_pages = PAGE_ALIGN(bo->base.size) >> PAGE_SHIFT;
mem.bus.offset = 0;
mem.bus.addr = NULL;
mem.mm_node = NULL;
/* /*
* Determine where to move the buffer. * Determine where to move the buffer.
* *
...@@ -1027,6 +1013,7 @@ int ttm_bo_init_reserved(struct ttm_device *bdev, ...@@ -1027,6 +1013,7 @@ int ttm_bo_init_reserved(struct ttm_device *bdev,
struct dma_resv *resv, struct dma_resv *resv,
void (*destroy) (struct ttm_buffer_object *)) void (*destroy) (struct ttm_buffer_object *))
{ {
static const struct ttm_place sys_mem = { .mem_type = TTM_PL_SYSTEM };
bool locked; bool locked;
int ret = 0; int ret = 0;
...@@ -1038,13 +1025,8 @@ int ttm_bo_init_reserved(struct ttm_device *bdev, ...@@ -1038,13 +1025,8 @@ int ttm_bo_init_reserved(struct ttm_device *bdev,
bo->bdev = bdev; bo->bdev = bdev;
bo->type = type; bo->type = type;
bo->page_alignment = page_alignment; bo->page_alignment = page_alignment;
bo->mem.mem_type = TTM_PL_SYSTEM; ttm_resource_alloc(bo, &sys_mem, &bo->mem);
bo->mem.num_pages = PAGE_ALIGN(size) >> PAGE_SHIFT;
bo->mem.mm_node = NULL;
bo->mem.bus.offset = 0;
bo->mem.bus.addr = NULL;
bo->moving = NULL; bo->moving = NULL;
bo->mem.placement = 0;
bo->pin_count = 0; bo->pin_count = 0;
bo->sg = sg; bo->sg = sg;
if (resv) { if (resv) {
......
...@@ -664,6 +664,7 @@ EXPORT_SYMBOL(ttm_bo_move_accel_cleanup); ...@@ -664,6 +664,7 @@ EXPORT_SYMBOL(ttm_bo_move_accel_cleanup);
int ttm_bo_pipeline_gutting(struct ttm_buffer_object *bo) int ttm_bo_pipeline_gutting(struct ttm_buffer_object *bo)
{ {
static const struct ttm_place sys_mem = { .mem_type = TTM_PL_SYSTEM };
struct ttm_buffer_object *ghost; struct ttm_buffer_object *ghost;
int ret; int ret;
...@@ -676,8 +677,7 @@ int ttm_bo_pipeline_gutting(struct ttm_buffer_object *bo) ...@@ -676,8 +677,7 @@ int ttm_bo_pipeline_gutting(struct ttm_buffer_object *bo)
if (ret) if (ret)
ttm_bo_wait(bo, false, false); ttm_bo_wait(bo, false, false);
memset(&bo->mem, 0, sizeof(bo->mem)); ttm_resource_alloc(bo, &sys_mem, &bo->mem);
bo->mem.mem_type = TTM_PL_SYSTEM;
bo->ttm = NULL; bo->ttm = NULL;
dma_resv_unlock(&ghost->base._resv); dma_resv_unlock(&ghost->base._resv);
......
...@@ -30,9 +30,18 @@ int ttm_resource_alloc(struct ttm_buffer_object *bo, ...@@ -30,9 +30,18 @@ int ttm_resource_alloc(struct ttm_buffer_object *bo,
struct ttm_resource *res) struct ttm_resource *res)
{ {
struct ttm_resource_manager *man = struct ttm_resource_manager *man =
ttm_manager_type(bo->bdev, res->mem_type); ttm_manager_type(bo->bdev, place->mem_type);
res->mm_node = NULL; res->mm_node = NULL;
res->start = 0;
res->num_pages = PFN_UP(bo->base.size);
res->mem_type = place->mem_type;
res->placement = place->flags;
res->bus.addr = NULL;
res->bus.offset = 0;
res->bus.is_iomem = false;
res->bus.caching = ttm_cached;
return man->func->alloc(man, bo, place, res); return man->func->alloc(man, bo, place, res);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment