On 9/17/26 00:55, Timur Kristóf wrote:
> Use the same helper for GMC v12.1 that is used by other
> GMC IP block versions.
> 
> No functional changes intended. Just code cleanup.
> 
> Signed-off-by: Timur Kristóf <[email protected]>

Acked-by: Christian König <[email protected]>

> ---
>  drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c | 45 ++++----------------------
>  1 file changed, 7 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c 
> b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c
> index 3349e8bc1c20..cfc46f912d47 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c
> @@ -131,7 +131,7 @@ static int gmc_v12_1_process_interrupt(struct 
> amdgpu_device *adev,
>       struct amdgpu_vmhub *hub;
>       uint32_t cam_index = 0;
>       const char *hub_name;
> -     int ret, xcc_id = 0;
> +     int xcc_id = 0;
>       uint32_t status = 0, status_hi = 0;
>       const char *die_name;
>       char die_name_buf[32];
> @@ -164,44 +164,13 @@ static int gmc_v12_1_process_interrupt(struct 
> amdgpu_device *adev,
>       hub = &adev->vmhub[vmhub];
>  
>       if (retry_fault) {
> -             if (adev->irq.retry_cam_enabled) {
> -                     /* Delegate it to a different ring if the hardware 
> hasn't
> -                      * already done it.
> -                      */
> -                     if (entry->ih == &adev->irq.ih) {
> -                             amdgpu_irq_delegate(adev, entry, 8);
> -                             return 1;
> -                     }
> -
> -                     cam_index = entry->src_data[3] & 0x3ff;
> -
> -                     ret = amdgpu_vm_handle_fault(adev, entry->pasid, 
> entry->vmid, node_id,
> -                                                     addr, entry->timestamp, 
> write_fault);
> -                     WDOORBELL32(adev->irq.retry_cam_doorbell_index, 
> cam_index);
> -                     if (ret)
> -                             return 1;
> -             } else {
> -                     /* Process it onyl if it's the first fault for this 
> address */
> -                     if (entry->ih != &adev->irq.ih_soft &&
> -                             amdgpu_gmc_filter_faults(adev, entry->ih, addr, 
> entry->pasid,
> -                                                      entry->timestamp))
> -                             return 1;
> -
> -                     /* Delegate it to a different ring if the hardware 
> hasn't
> -                      * already done it.
> -                      */
> -                     if (entry->ih == &adev->irq.ih) {
> -                             amdgpu_irq_delegate(adev, entry, 8);
> -                             return 1;
> -                     }
> +             cam_index = entry->src_data[3] & 0x3ff;
>  
> -                     /* Try to handle the recoverable page faults by filling 
> page
> -                      * tables
> -                      */
> -                     if (amdgpu_vm_handle_fault(adev, entry->pasid, 
> entry->vmid, node_id,
> -                                                addr, entry->timestamp, 
> write_fault))
> -                             return 1;
> -             }
> +             int ret = amdgpu_gmc_handle_retry_fault(adev, entry, addr, 
> cam_index, node_id,
> +                                                     write_fault);
> +             /* Returning 1 here also prevents sending the IV to the KFD */
> +             if (ret == 1)
> +                     return 1;
>       }
>  
>       if (kgd2kfd_vmfault_fast_path(adev, entry, retry_fault))

Reply via email to