[PATCH] drm/amdgpu: fix clear_all and replace handling in the VM (v2)

zhoucm1 zhoucm1 at amd.com
Tue Jun 5 08:20:31 UTC 2018



On 2018年06月05日 16:14, Christian König wrote:
> Am 05.06.2018 um 10:09 schrieb Junwei Zhang:
>> From: Christian König <ckoenig.leichtzumerken at gmail.com>
>>
>> (comments: I cannot receive amdgfx mail recently and reply the mail 
>> directly,
>> so send it out with my update v2, tested with Unigine Heaven, 
>> glmark2, gputest,
>> some cases from vulkan PRT test)
>>
>> v2: store bo_va as well
>>
>> We need to put the lose ends on the invalid list because it is possible
>> that we need to split up huge pages for them.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
>> Signed-off-by: Junwei Zhang <Jerry.Zhang at amd.com>
>
> Good catch that assigning the bo_va is also missing. David can you 
> take a look and give a review?
Feel free add my RB on it, it looks very good.

Regards,
David Zhou
>
> Since I'm a co-author I can't do it myself.
>
> Thanks,
> Christian.
>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 ++++--
>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> index 850cd66..cc9d486 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> @@ -2172,7 +2172,8 @@ int amdgpu_vm_bo_clear_mappings(struct 
>> amdgpu_device *adev,
>>               before->last = saddr - 1;
>>               before->offset = tmp->offset;
>>               before->flags = tmp->flags;
>> -            list_add(&before->list, &tmp->list);
>> +            before->bo_va = tmp->bo_va;
>> +            list_add(&before->list, &tmp->bo_va->invalids);
>>           }
>>             /* Remember mapping split at the end */
>> @@ -2182,7 +2183,8 @@ int amdgpu_vm_bo_clear_mappings(struct 
>> amdgpu_device *adev,
>>               after->offset = tmp->offset;
>>               after->offset += after->start - tmp->start;
>>               after->flags = tmp->flags;
>> -            list_add(&after->list, &tmp->list);
>> +            after->bo_va = tmp->bo_va;
>> +            list_add(&after->list, &tmp->bo_va->invalids);
>>           }
>>             list_del(&tmp->list);
>



More information about the amd-gfx mailing list