* [PATCH] drm/amdgpu: SRIOV flr_work should take write_lock @ 2021-07-01 2:22 Jingwen Chen [not found] ` <20210701101233.wlskqc2kjzwhiudv@wayne-build> 0 siblings, 1 reply; 2+ messages in thread From: Jingwen Chen @ 2021-07-01 2:22 UTC (permalink / raw) To: amd-gfx; +Cc: horace.chen, Jingwen Chen, monk.liu [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@amd.com> --- 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 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 2+ messages in thread
[parent not found: <20210701101233.wlskqc2kjzwhiudv@wayne-build>]
* RE: [PATCH] drm/amdgpu: SRIOV flr_work should take write_lock [not found] ` <20210701101233.wlskqc2kjzwhiudv@wayne-build> @ 2021-07-06 7:37 ` Liu, Monk 0 siblings, 0 replies; 2+ messages in thread From: Liu, Monk @ 2021-07-06 7:37 UTC (permalink / raw) To: Chen, JingWen, amd-gfx; +Cc: Chen, Horace [AMD Official Use Only] Reviewed-by: Mon Liu <monk.liu@amd.com> Thanks ------------------------------------------ Monk Liu | Cloud-GPU Core team ------------------------------------------ -----Original Message----- From: Jingwen Chen <Jingwen.Chen2@amd.com> Sent: Thursday, July 1, 2021 6:13 PM To: amd-gfx@lists.freedesktop.org Cc: Liu, Monk <Monk.Liu@amd.com>; Chen, Horace <Horace.Chen@amd.com> 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@amd.com> > --- > 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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-07-06 7:37 UTC | newest] Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-07-01 2:22 [PATCH] drm/amdgpu: SRIOV flr_work should take write_lock Jingwen Chen [not found] ` <20210701101233.wlskqc2kjzwhiudv@wayne-build> 2021-07-06 7:37 ` Liu, Monk
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.