On 1/19/26 06:27, Liang, Prike wrote:
> [Public]
> 
> In order to avoid being blocked by the lock issue on some older GFX, I will 
> push the patch to amd-staging-drm-next.
> If you have any concerns, please let me know.

I only had a coding style comment on the patch and also gave my rb with that as 
well.

So if you haven't pushed it yet please fix what I've pointed out. Otherwise it 
is not much of an issue.

Regards,
Christian.

> 
> Regards,
>       Prike
> 
>> -----Original Message-----
>> From: amd-gfx <[email protected]> On Behalf Of Liang, 
>> Prike
>> Sent: Monday, January 19, 2026 9:58 AM
>> To: Timur Kristóf <[email protected]>; [email protected];
>> Deucher, Alexander <[email protected]>; Koenig, Christian
>> <[email protected]>; Limonciello, Mario <[email protected]>;
>> Dan Carpenter <[email protected]>
>> Subject: RE: [PATCH] drm/amdgpu: Fix validating flush_gpu_tlb_pasid()
>>
>> [Public]
>>
>> Thank you for the fix. Could you please add the following the tags?
>>
>> | Reported-by: kernel test robot <[email protected]>
>> | Reported-by: Dan Carpenter <[email protected]>
>> | Closes: https://lore.kernel.org/r/[email protected]/
>>
>> Reviewed-by: Prike Liang <[email protected]>
>>
>> Regards,
>>       Prike
>>
>>> -----Original Message-----
>>> From: Timur Kristóf <[email protected]>
>>> Sent: Sunday, January 18, 2026 8:58 PM
>>> To: [email protected]; Deucher, Alexander
>>> <[email protected]>; Koenig, Christian
>>> <[email protected]>; Liang, Prike <[email protected]>;
>>> Limonciello, Mario <[email protected]>
>>> Cc: Timur Kristóf <[email protected]>
>>> Subject: [PATCH] drm/amdgpu: Fix validating flush_gpu_tlb_pasid()
>>>
>>> When a function holds a lock and we return without unlocking it, it
>>> deadlocks the kernel. We should always unlock before returning.
>>>
>>> This commit fixes suspend/resume on SI.
>>> Tested on two Tahiti GPUs: FirePro W9000 and R9 280X.
>>>
>>> Fixes: bc2dea30038a ("drm/amdgpu: validate the flush_gpu_tlb_pasid()")
>>> Signed-off-by: Timur Kristóf <[email protected]>
>>> ---
>>>  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 5 ++---
>>>  1 file changed, 2 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
>>> index 0e67fa4338ff..4fa24be1bf45 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
>>> @@ -769,7 +769,7 @@ int amdgpu_gmc_flush_gpu_tlb_pasid(struct
>>> amdgpu_device *adev, uint16_t pasid,
>>>       struct amdgpu_ring *ring = &adev->gfx.kiq[inst].ring;
>>>       struct amdgpu_kiq *kiq = &adev->gfx.kiq[inst];
>>>       unsigned int ndw;
>>> -     int r, cnt = 0;
>>> +     int r = 0, cnt = 0;
>>>       uint32_t seq;
>>>
>>>       /*
>>> @@ -782,7 +782,7 @@ int amdgpu_gmc_flush_gpu_tlb_pasid(struct
>>> amdgpu_device *adev, uint16_t pasid,
>>>       if (!adev->gmc.flush_pasid_uses_kiq || !ring->sched.ready) {
>>>
>>>               if (!adev->gmc.gmc_funcs->flush_gpu_tlb_pasid)
>>> -                     return 0;
>>> +                     goto error_unlock_reset;
>>>
>>>               if (adev->gmc.flush_tlb_needs_extra_type_2)
>>>                       adev->gmc.gmc_funcs->flush_gpu_tlb_pasid(adev,
>>> pasid, @@ -797,7 +797,6 @@ int amdgpu_gmc_flush_gpu_tlb_pasid(struct
>>> amdgpu_device *adev, uint16_t pasid,
>>>               adev->gmc.gmc_funcs->flush_gpu_tlb_pasid(adev, pasid,
>>>                                                        flush_type, all_hub,
>>>                                                        inst);
>>> -             r = 0;
>>>       } else {
>>>               /* 2 dwords flush + 8 dwords fence */
>>>               ndw = kiq->pmf->invalidate_tlbs_size + 8;
>>> --
>>> 2.52.0
> 

Reply via email to