RE: [PATCH] drm/amdgpu: SRIOV flr_work should take write_lock

2021-07-06 Thread Liu, Monk
[AMD Official Use Only]

Reviewed-by: Mon Liu 

Thanks 

--
Monk Liu | Cloud-GPU Core team
--

-Original Message-
From: Jingwen Chen  
Sent: Thursday, July 1, 2021 6:13 PM
To: amd-gfx@lists.freedesktop.org
Cc: Liu, Monk ; Chen, Horace 
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 
> ---
>  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(>reset_sem))
> + if (!down_write_trylock(>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(>in_gpu_reset, 0);
> - up_read(>reset_sem);
> + up_write(>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(>reset_sem))
> + if (!down_write_trylock(>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(>in_gpu_reset, 0);
> - up_read(>reset_sem);
> + up_write(>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


[PATCH] drm/amdgpu: SRIOV flr_work should take write_lock

2021-07-01 Thread Jingwen Chen
[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 
---
 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(>reset_sem))
+   if (!down_write_trylock(>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(>in_gpu_reset, 0);
-   up_read(>reset_sem);
+   up_write(>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(>reset_sem))
+   if (!down_write_trylock(>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(>in_gpu_reset, 0);
-   up_read(>reset_sem);
+   up_write(>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