[Intel-xe] [PATCH 1/2] drm/xe: Enable atomics on smem

Nirmoy Das nirmoy.das at linux.intel.com
Thu Jul 27 13:05:32 UTC 2023


On 7/27/2023 2:33 AM, Welty, Brian wrote:
>
> On 7/26/2023 12:42 AM, Nirmoy Das wrote:
>> Atomics works on smem as well on supported platforms so
>> set AE PTE bit on smem as well if XE_VMA_ATOMIC_PTE_BIT
>> flag is set.
>>
>> v2: Remove platform check(Lucas)
>>
>> Signed-off-by: Nirmoy Das <nirmoy.das at intel.com>
>> ---
>>   drivers/gpu/drm/xe/xe_pt.c | 7 ++++---
>>   1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
>> index d4660520ac2c..3bd6dd048305 100644
>> --- a/drivers/gpu/drm/xe/xe_pt.c
>> +++ b/drivers/gpu/drm/xe/xe_pt.c
>> @@ -768,10 +768,11 @@ xe_pt_stage_bind(struct xe_tile *tile, struct 
>> xe_vma *vma,
>
> Why only changing this function and change is not also needed in 
> xe_pte_encode() ?

I didn't see userspace vmas are passed through xe_pte_encode() so I was 
avoiding that. Also xe_pte_encode() is always being

called with NULL vma.

>
>
>>       struct xe_pt *pt = xe_vma_vm(vma)->pt_root[tile->id];
>>       int ret;
>
> You need a xe_walk.default_pte = 0 upfront with way code is structured 
> now....

thanks, I have to fix that.

>
>
>> +    if (vma && vma->gpuva.flags & XE_VMA_ATOMIC_PTE_BIT)
>> +        xe_walk.default_pte = XE_USM_PPGTT_PTE_AE;
>> +
>
> How is this supposed to be enable on non-PVC platform?
> Meaning when is XE_VMA_ATOMIC_PTE_BIT set in the xe_vma.gpuva.flags ?
> Are you wanting it to be controlled by the xe_vm_madvise ioctl?


I am looking for opinions here but  this is how I see it as there is a 
vm_madvise option for device atomics  but I might be wrong.

One option is to enable AE for all vmas depending if platform supports 
and and  umd can use vm_madvise option to check if the platfrom

supports it or not.

Hi Joonas, what is your thought on this?

> At least on i915, those were intended to only be used on platforms 
> with pagefault support as the intent was just to influence migration 
> policy.
>
>
> I think this breaks PVC?  We do still want AE bit clear on PVC when 
> backing store is !vram. 

Thanks, I didn't know that.

Regards,

Nirmoy

> I don't see how you can do this right way
> here without a platform check.   Possibly you could restore the code 
> below.   And then the new code above is only executed on platforms 
> without VRAM.   Not sure.
>
>
>>       if (is_vram) {
>> -        xe_walk.default_pte = XE_PPGTT_PTE_LM;
>> -        if (vma && vma->gpuva.flags & XE_VMA_ATOMIC_PTE_BIT)
>> -            xe_walk.default_pte |= XE_USM_PPGTT_PTE_AE;
>> +        xe_walk.default_pte |= XE_PPGTT_PTE_LM;
>>           xe_walk.dma_offset = vram_region_gpu_offset(bo->ttm.resource);
>>           xe_walk.cache = XE_CACHE_WB;
>>       } else {


More information about the Intel-xe mailing list