[PATCH 2/2] drm/amdgpu: skip vm entries checking while in sriov vf

Felix Kuehling felix.kuehling at amd.com
Thu Oct 11 19:45:30 UTC 2018


On 2018-10-11 08:32 AM, Christian König wrote:
> Am 11.10.2018 um 14:09 schrieb Frank.Min:
>> vm page table would be allocated while in amdgpu_vm_init
>> by amdgpu_allocate_static_csa for sriov, so the checking
>> here would be skipped.
>
> NAK, that checking is actually correct and points out that this
> doesn't work correctly.
>
> Fix the function to be able to handle the case when there are already
> mappings in the VM.

KFD and the Thunk assume that they own the entire address space. If
something is already mapped, KFD and the Thunk would not be aware of it.

amdgpu_allocate_static_csa runs during driver initialization, before
there are any VMs. Looks like amdgpu_map_static_csa is the more
important function here, which currently runs in amdgpu_driver_open_kms.

Could amdgpu_map_static_csa be delayed to the first time user mode maps
memory into the VM through GEM APIs? That way it would allow turning a
VM into a compute VM that hasn't been used for any GEM memory mappings.

Regards,
  Felix

>
> Christian.
>
>>
>> Change-Id: Id30b86ad15ae509aeed9ed8ab60c259c88af3df5
>> Signed-off-by: Frank.Min <Frank.Min at amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 9 +++++----
>>   1 file changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> index 6904d79..6066f87 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> @@ -3100,11 +3100,12 @@ int amdgpu_vm_make_compute(struct
>> amdgpu_device *adev, struct amdgpu_vm *vm, uns
>>           return r;
>>         /* Sanity checks */
>> -    if (!RB_EMPTY_ROOT(&vm->va.rb_root) || vm->root.entries) {
>> -        r = -EINVAL;
>> -        goto unreserve_bo;
>> +    if (!amdgpu_sriov_vf(adev)) {
>> +        if (!RB_EMPTY_ROOT(&vm->va.rb_root) || vm->root.entries) {
>> +            r = -EINVAL;
>> +            goto unreserve_bo;
>> +        }
>>       }
>> -
>>       if (pasid) {
>>           unsigned long flags;
>>   
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx



More information about the amd-gfx mailing list