[PATCH] drm/amdkfd: Optimize svm range map to GPU with XNACK on

Felix Kuehling felix.kuehling at amd.com
Fri Apr 28 19:52:35 UTC 2023


On 2023-04-28 11:24, Philip Yang wrote:
>
> On 2023-04-27 12:35, Felix Kuehling wrote:
>>
>> On 2023-04-24 14:38, Philip Yang wrote:
>>> With XNACK on if svm_range_set_attr set the range access or
>>> access_in_place attribute, we don't call svm_range_validate_and_map to
>>> update GPU mapping. This avoids prefaulting the range pages on system
>>> memory if the range is not prefetch to VRAM and not mapped to GPUs.
>>>
>>> Signed-off-by: Philip Yang <Philip.Yang at amd.com>
>>> ---
>>>   drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 4 +++-
>>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c 
>>> b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
>>> index 129ef44f41e9..af7594b1b4c6 100644
>>> --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
>>> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
>>> @@ -734,7 +734,9 @@ svm_range_apply_attrs(struct kfd_process *p, 
>>> struct svm_range *prange,
>>>           case KFD_IOCTL_SVM_ATTR_ACCESS:
>>>           case KFD_IOCTL_SVM_ATTR_ACCESS_IN_PLACE:
>>>           case KFD_IOCTL_SVM_ATTR_NO_ACCESS:
>>> -            *update_mapping = true;
>>> +            if (!p->xnack_enabled)
>>> +                *update_mapping = true;
>>> +
>>
>> For NO_ACCESS we need to update the mapping to ensure that the PTEs 
>> are invalidated. For ACCESS or ACCESS_IN_PLACE we can leave it for a 
>> page fault.
>
> For NO_ACCESS, there is todo comment "TODO: unmap ranges from GPU that 
> lost access", this should be handled by another patch. This patch only 
> address that for XNACK ON, we can setup GPU mapping after page fault, 
> without prefaulting and mapping to GPU for ACCESS or ACCESS_IN_PLACE.

OK. Then you'll probably change the same code again in that follow-up 
patch. This patch is

Reviewed-by: Felix Kuehling <Felix.Kuehling at amd.com>


>
> Regards,
>
> Philip
>
>>
>> Regards,
>>   Felix
>>
>>
>>>               gpuidx = kfd_process_gpuidx_from_gpuid(p,
>>>                                      attrs[i].value);
>>>               if (attrs[i].type == KFD_IOCTL_SVM_ATTR_NO_ACCESS) {


More information about the amd-gfx mailing list