[PATCH 3/3] drm/amdkfd: use existing VM helper for PD and PT validation in SVM
Felix Kuehling
felix.kuehling at amd.com
Wed Jun 8 13:40:05 UTC 2022
Am 2022-06-07 um 22:21 schrieb Lang Yu:
> On 06/07/ , Felix Kuehling wrote:
>> Am 2022-06-07 um 05:59 schrieb Lang Yu:
>>> This will remove some redundant codes.
>>>
>>> Signed-off-by: Lang Yu <Lang.Yu at amd.com>
>> The redundancy is quite small, and amdgpu_amdkfd_gpuvm_validate_pt_pd_bos
>> and amdgpu_amdkfd_bo_validate are quite a bit more complex and handle more
>> different cases. Someone changing those functions in the future may not
>> realize the effect that may have on the SVM code.
>>
>> I'd prefer to keep the svm_range_bo_validate function in kfd_svm.c to make
>> the code easier to understand and maintain. If anything, I'd move it closer
>> to where its used, because it's only used in one place.
> Thanks for your comments. I got it. By the way,
> is it necessary to update vm->pd_phys_addr here?
> I noticed that vm->pd_phys_addr is updated in
> vm_validate_pt_pd_bos()? Thanks!
It's not needed here. The only time we need to update this is, when we
re-enable queues after a PD eviction. This is handled by the PD
validation in amdgpu_amdkfd_gpuvm_restore_process_bos ->
process_validate_vms -> vm_validate_pt_pd_bos.
Regards,
Felix
>
> Regards,
> Lang
>
>> Regards,
>> Felix
>>
>>
>>> ---
>>> drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 13 +------------
>>> 1 file changed, 1 insertion(+), 12 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
>>> index d6fc00d51c8c..03e07d1d1d1a 100644
>>> --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
>>> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
>>> @@ -625,15 +625,6 @@ svm_range_get_pdd_by_adev(struct svm_range *prange, struct amdgpu_device *adev)
>>> return kfd_process_device_from_gpuidx(p, gpu_idx);
>>> }
>>> -static int svm_range_bo_validate(void *param, struct amdgpu_bo *bo)
>>> -{
>>> - struct ttm_operation_ctx ctx = { false, false };
>>> -
>>> - amdgpu_bo_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_VRAM);
>>> -
>>> - return ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
>>> -}
>>> -
>>> static int
>>> svm_range_check_attr(struct kfd_process *p,
>>> uint32_t nattr, struct kfd_ioctl_svm_attribute *attrs)
>>> @@ -1428,9 +1419,7 @@ static int svm_range_reserve_bos(struct svm_validate_context *ctx)
>>> goto unreserve_out;
>>> }
>>> - r = amdgpu_vm_validate_pt_bos(pdd->dev->adev,
>>> - drm_priv_to_vm(pdd->drm_priv),
>>> - svm_range_bo_validate, NULL);
>>> + r = amdgpu_amdkfd_gpuvm_validate_pt_pd_bos(drm_priv_to_vm(pdd->drm_priv));
>>> if (r) {
>>> pr_debug("failed %d validate pt bos\n", r);
>>> goto unreserve_out;
More information about the amd-gfx
mailing list