<div dir="ltr"><div>I'm OK with that.</div><div><br></div><div>Marek<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 13, 2023 at 12:56 PM Alex Deucher <<a href="mailto:alexdeucher@gmail.com">alexdeucher@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Thu, Apr 13, 2023 at 11:54 AM Christian König<br>
<<a href="mailto:ckoenig.leichtzumerken@gmail.com" target="_blank">ckoenig.leichtzumerken@gmail.com</a>> wrote:<br>
><br>
> Am 13.04.23 um 14:26 schrieb Alex Deucher:<br>
> > On Thu, Apr 13, 2023 at 7:32 AM Christian König<br>
> > <<a href="mailto:ckoenig.leichtzumerken@gmail.com" target="_blank">ckoenig.leichtzumerken@gmail.com</a>> wrote:<br>
> >> Ok, then we have a problem.<br>
> >><br>
> >> Alex what do you think?<br>
> > If you program it to 0, FW skips the GDS backup I think so UMD's can<br>
> > decide whether they want to use it or not, depending on whether they<br>
> > use GDS.<br>
><br>
> Yeah, but when Mesa isn't using it we have a hard way justifying to<br>
> upstream that because it isn't tested at all.<br>
<br>
Well, the interface would still get used, it's just that mesa would<br>
likely only ever pass 0 for the virtual address.  It's just a<br>
passthrough to the packet.  If we discover we need it at some point,<br>
it would be nice to not have to add a new interface to add it.<br>
<br>
Alex<br>
<br>
><br>
> Christian.<br>
><br>
> ><br>
> > Alex<br>
> ><br>
> ><br>
> >> Christian.<br>
> >><br>
> >> Am 13.04.23 um 11:21 schrieb Marek Olšák:<br>
> >><br>
> >> That's not why it was removed. It was removed because userspace doesn't use GDS memory and gds_va is always going to be 0.<br>
> >><br>
> >> Firmware shouldn't use it because using it would increase preemption latency.<br>
> >><br>
> >> Marek<br>
> >><br>
> >> On Sun, Apr 9, 2023, 11:21 Christian König <<a href="mailto:ckoenig.leichtzumerken@gmail.com" target="_blank">ckoenig.leichtzumerken@gmail.com</a>> wrote:<br>
> >>> We removed the GDS information because they were unnecessary. The GDS size was already part of the device info before we added the shadow info.<br>
> >>><br>
> >>> But as far as I know the firmware needs valid VAs for all three buffers or won't work correctly.<br>
> >>><br>
> >>> Christian.<br>
> >>><br>
> >>> Am 06.04.23 um 17:01 schrieb Marek Olšák:<br>
> >>><br>
> >>> There is no GDS shadowing info in the device info uapi, so userspace can't create any GDS buffer and thus can't have any GDS va. It's a uapi issue, not what firmware wants to do.<br>
> >>><br>
> >>> Marek<br>
> >>><br>
> >>> On Thu, Apr 6, 2023 at 6:31 AM Christian König <<a href="mailto:ckoenig.leichtzumerken@gmail.com" target="_blank">ckoenig.leichtzumerken@gmail.com</a>> wrote:<br>
> >>>> That's what I thought as well, but Mitch/Hans insisted on that.<br>
> >>>><br>
> >>>> We should probably double check internally.<br>
> >>>><br>
> >>>> Christian.<br>
> >>>><br>
> >>>> Am 06.04.23 um 11:43 schrieb Marek Olšák:<br>
> >>>><br>
> >>>> GDS memory isn't used on gfx11. Only GDS OA is used.<br>
> >>>><br>
> >>>> Marek<br>
> >>>><br>
> >>>> On Thu, Apr 6, 2023 at 5:09 AM Christian König <<a href="mailto:christian.koenig@amd.com" target="_blank">christian.koenig@amd.com</a>> wrote:<br>
> >>>>> Why that?<br>
> >>>>><br>
> >>>>> This is the save buffer for GDS, not the old style GDS BOs.<br>
> >>>>><br>
> >>>>> Christian.<br>
> >>>>><br>
> >>>>> Am 06.04.23 um 09:36 schrieb Marek Olšák:<br>
> >>>>><br>
> >>>>> gds_va is unnecessary.<br>
> >>>>><br>
> >>>>> Marek<br>
> >>>>><br>
> >>>>> On Thu, Mar 30, 2023 at 3:18 PM Alex Deucher <<a href="mailto:alexander.deucher@amd.com" target="_blank">alexander.deucher@amd.com</a>> wrote:<br>
> >>>>>> For GFX11, the UMD needs to allocate some shadow buffers<br>
> >>>>>> to be used for preemption.  The UMD allocates the buffers<br>
> >>>>>> and passes the GPU virtual address to the kernel since the<br>
> >>>>>> kernel will program the packet that specified these<br>
> >>>>>> addresses as part of its IB submission frame.<br>
> >>>>>><br>
> >>>>>> v2: UMD passes shadow init to tell kernel when to initialize<br>
> >>>>>>      the shadow<br>
> >>>>>><br>
> >>>>>> Reviewed-by: Christian König <<a href="mailto:christian.koenig@amd.com" target="_blank">christian.koenig@amd.com</a>><br>
> >>>>>> Signed-off-by: Alex Deucher <<a href="mailto:alexander.deucher@amd.com" target="_blank">alexander.deucher@amd.com</a>><br>
> >>>>>> ---<br>
> >>>>>>   include/uapi/drm/amdgpu_drm.h | 10 ++++++++++<br>
> >>>>>>   1 file changed, 10 insertions(+)<br>
> >>>>>><br>
> >>>>>> diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h<br>
> >>>>>> index b6eb90df5d05..3d9474af6566 100644<br>
> >>>>>> --- a/include/uapi/drm/amdgpu_drm.h<br>
> >>>>>> +++ b/include/uapi/drm/amdgpu_drm.h<br>
> >>>>>> @@ -592,6 +592,7 @@ struct drm_amdgpu_gem_va {<br>
> >>>>>>   #define AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES 0x07<br>
> >>>>>>   #define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT    0x08<br>
> >>>>>>   #define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL  0x09<br>
> >>>>>> +#define AMDGPU_CHUNK_ID_CP_GFX_SHADOW   0x0a<br>
> >>>>>><br>
> >>>>>>   struct drm_amdgpu_cs_chunk {<br>
> >>>>>>          __u32           chunk_id;<br>
> >>>>>> @@ -708,6 +709,15 @@ struct drm_amdgpu_cs_chunk_data {<br>
> >>>>>>          };<br>
> >>>>>>   };<br>
> >>>>>><br>
> >>>>>> +#define AMDGPU_CS_CHUNK_CP_GFX_SHADOW_FLAGS_INIT_SHADOW         0x1<br>
> >>>>>> +<br>
> >>>>>> +struct drm_amdgpu_cs_chunk_cp_gfx_shadow {<br>
> >>>>>> +       __u64 shadow_va;<br>
> >>>>>> +       __u64 csa_va;<br>
> >>>>>> +       __u64 gds_va;<br>
> >>>>>> +       __u64 flags;<br>
> >>>>>> +};<br>
> >>>>>> +<br>
> >>>>>>   /*<br>
> >>>>>>    *  Query h/w info: Flag that this is integrated (a.h.a. fusion) GPU<br>
> >>>>>>    *<br>
> >>>>>> --<br>
> >>>>>> 2.39.2<br>
> >>>>>><br>
><br>
</blockquote></div>