[PATCH] drm/ttm: revert "make TT creation purely optional v3"
Christian König
ckoenig.leichtzumerken at gmail.com
Tue Aug 11 12:53:53 UTC 2020
Am 11.08.20 um 14:52 schrieb Christian König:
> Am 11.08.20 um 11:24 schrieb Christian König:
>> This reverts commit 2ddef17678bc2ea1d20517dd2b4ed4aa967ffa8b.
>>
>> As it turned out VMWGFX needs a much wider audit to fix this.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
>
> Dare to give me an rb for this? I already tested on amdgpu and it
> should be fixing the VMWGFX problems we currently have.
Ups, that was your old AMD address :)
So once more with feeling,
Christian.
>
> Thanks,
> Christian.
>
>> ---
>> drivers/gpu/drm/ttm/ttm_bo.c | 19 ++++++++++++++++---
>> drivers/gpu/drm/ttm/ttm_bo_util.c | 7 ++-----
>> drivers/gpu/drm/ttm/ttm_bo_vm.c | 5 -----
>> drivers/gpu/drm/ttm/ttm_tt.c | 1 +
>> 4 files changed, 19 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
>> index ad09329b62d3..42386bda32fe 100644
>> --- a/drivers/gpu/drm/ttm/ttm_bo.c
>> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
>> @@ -656,7 +656,7 @@ static int ttm_bo_evict(struct ttm_buffer_object
>> *bo,
>> ttm_bo_wait(bo, false, false);
>> ttm_bo_cleanup_memtype_use(bo);
>> - return 0;
>> + return ttm_tt_create(bo, false);
>> }
>> evict_mem = bo->mem;
>> @@ -1191,8 +1191,13 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
>> /*
>> * Remove the backing store if no placement is given.
>> */
>> - if (!placement->num_placement && !placement->num_busy_placement)
>> - return ttm_bo_pipeline_gutting(bo);
>> + if (!placement->num_placement && !placement->num_busy_placement) {
>> + ret = ttm_bo_pipeline_gutting(bo);
>> + if (ret)
>> + return ret;
>> +
>> + return ttm_tt_create(bo, false);
>> + }
>> /*
>> * Check whether we need to move buffer.
>> @@ -1209,6 +1214,14 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
>> ttm_flag_masked(&bo->mem.placement, new_flags,
>> ~TTM_PL_MASK_MEMTYPE);
>> }
>> + /*
>> + * We might need to add a TTM.
>> + */
>> + if (bo->mem.mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) {
>> + ret = ttm_tt_create(bo, true);
>> + if (ret)
>> + return ret;
>> + }
>> return 0;
>> }
>> EXPORT_SYMBOL(ttm_bo_validate);
>> diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c
>> b/drivers/gpu/drm/ttm/ttm_bo_util.c
>> index 496158acd5b9..76376dc71f25 100644
>> --- a/drivers/gpu/drm/ttm/ttm_bo_util.c
>> +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
>> @@ -531,15 +531,12 @@ static int ttm_bo_kmap_ttm(struct
>> ttm_buffer_object *bo,
>> .interruptible = false,
>> .no_wait_gpu = false
>> };
>> - struct ttm_tt *ttm;
>> + struct ttm_tt *ttm = bo->ttm;
>> pgprot_t prot;
>> int ret;
>> - ret = ttm_tt_create(bo, true);
>> - if (ret)
>> - return ret;
>> + BUG_ON(!ttm);
>> - ttm = bo->ttm;
>> ret = ttm_tt_populate(ttm, &ctx);
>> if (ret)
>> return ret;
>> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> index ba2e8bd198ad..e90c5c806645 100644
>> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> @@ -347,11 +347,6 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct
>> vm_fault *vmf,
>> };
>> - if (ttm_tt_create(bo, true)) {
>> - ret = VM_FAULT_OOM;
>> - goto out_io_unlock;
>> - }
>> -
>> ttm = bo->ttm;
>> if (ttm_tt_populate(bo->ttm, &ctx)) {
>> ret = VM_FAULT_OOM;
>> diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c
>> index bdd6169cef13..05c9147ac6d3 100644
>> --- a/drivers/gpu/drm/ttm/ttm_tt.c
>> +++ b/drivers/gpu/drm/ttm/ttm_tt.c
>> @@ -70,6 +70,7 @@ int ttm_tt_create(struct ttm_buffer_object *bo,
>> bool zero_alloc)
>> page_flags |= TTM_PAGE_FLAG_SG;
>> break;
>> default:
>> + bo->ttm = NULL;
>> pr_err("Illegal buffer object type\n");
>> return -EINVAL;
>> }
>
More information about the dri-devel
mailing list