[AMD Official Use Only] Reviewed-by: Mon Liu <monk.liu@xxxxxxx> Thanks ------------------------------------------ Monk Liu | Cloud-GPU Core team ------------------------------------------ -----Original Message----- From: Jingwen Chen <Jingwen.Chen2@xxxxxxx> Sent: Thursday, July 1, 2021 6:13 PM To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx Cc: Liu, Monk <Monk.Liu@xxxxxxx>; Chen, Horace <Horace.Chen@xxxxxxx> Subject: Re: [PATCH] drm/amdgpu: SRIOV flr_work should take write_lock ping.. On Thu Jul 01, 2021 at 10:22:57AM +0800, Jingwen Chen wrote: > [Why] > If flr_work takes read_lock, then other threads who takes read_lock > can access hardware when host is doing vf flr. > > [How] > flr_work should take write_lock to avoid this case. > > Signed-off-by: Jingwen Chen <Jingwen.Chen2@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c > b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c > index 3ee481557fc9..ff2307d7ee0f 100644 > --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c > +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c > @@ -252,7 +252,7 @@ static void xgpu_ai_mailbox_flr_work(struct work_struct *work) > * otherwise the mailbox msg will be ruined/reseted by > * the VF FLR. > */ > - if (!down_read_trylock(&adev->reset_sem)) > + if (!down_write_trylock(&adev->reset_sem)) > return; > > amdgpu_virt_fini_data_exchange(adev); > @@ -268,7 +268,7 @@ static void xgpu_ai_mailbox_flr_work(struct > work_struct *work) > > flr_done: > atomic_set(&adev->in_gpu_reset, 0); > - up_read(&adev->reset_sem); > + up_write(&adev->reset_sem); > > /* Trigger recovery for world switch failure if no TDR */ > if (amdgpu_device_should_recover_gpu(adev) > diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c > b/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c > index 48e588d3c409..9f7aac435d69 100644 > --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c > +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c > @@ -273,7 +273,7 @@ static void xgpu_nv_mailbox_flr_work(struct work_struct *work) > * otherwise the mailbox msg will be ruined/reseted by > * the VF FLR. > */ > - if (!down_read_trylock(&adev->reset_sem)) > + if (!down_write_trylock(&adev->reset_sem)) > return; > > amdgpu_virt_fini_data_exchange(adev); > @@ -289,7 +289,7 @@ static void xgpu_nv_mailbox_flr_work(struct > work_struct *work) > > flr_done: > atomic_set(&adev->in_gpu_reset, 0); > - up_read(&adev->reset_sem); > + up_write(&adev->reset_sem); > > /* Trigger recovery for world switch failure if no TDR */ > if (amdgpu_device_should_recover_gpu(adev) > -- > 2.25.1 > Best Regards, JingWen Chen _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx