RE: [PATCH] drm/amdkfd: Don't drain ih1 for APU

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[AMD Official Use Only - AMD Internal Distribution Only]

Thanks. Will send V2.

-----Original Message-----
From: Alex Deucher <alexdeucher@xxxxxxxxx>
Sent: Tuesday, August 27, 2024 9:08 PM
To: Zhang, Yifan <Yifan1.Zhang@xxxxxxx>
Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; Kuehling, Felix <Felix.Kuehling@xxxxxxx>; Yang, Philip <Philip.Yang@xxxxxxx>; Chen, Xiaogang <Xiaogang.Chen@xxxxxxx>
Subject: Re: [PATCH] drm/amdkfd: Don't drain ih1 for APU

On Tue, Aug 27, 2024 at 3:26 AM Yifan Zhang <yifan1.zhang@xxxxxxx> wrote:
>
> ih1 is not initialized for APUs. Don't drain it or NULL pointer error
> will be triggered.
>
> Fixes: 490fc21fe97c (drm/amdkfd: Change kfd/svm page fault drain
> handling)
> Signed-off-by: Yifan Zhang <yifan1.zhang@xxxxxxx>
> ---
>  drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> index b44dec90969f..1d08978955c7 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> @@ -2458,11 +2458,13 @@ svm_range_unmap_from_cpu(struct mm_struct *mm, struct svm_range *prange,
>                 adev = pdd->dev->adev;
>
>                 /* Check and drain ih1 ring if cam not available */
> -               ih = &adev->irq.ih1;
> -               checkpoint_wptr = amdgpu_ih_get_wptr(adev, ih);
> -               if (ih->rptr != checkpoint_wptr) {
> -                       svms->checkpoint_ts[i] = amdgpu_ih_decode_iv_ts(adev, ih, checkpoint_wptr, -1);
> -                       continue;
> +               if (!(adev->flags & AMD_IS_APU)) {

Would be better to check if the ih1 ring is valid rather than checking for APUs.  E.g.,

if (adev->irq.ih1.ring_size)

Alex

> +                       ih = &adev->irq.ih1;
> +                       checkpoint_wptr = amdgpu_ih_get_wptr(adev, ih);
> +                       if (ih->rptr != checkpoint_wptr) {
> +                               svms->checkpoint_ts[i] = amdgpu_ih_decode_iv_ts(adev, ih, checkpoint_wptr, -1);
> +                               continue;
> +                       }
>                 }
>
>                 /* check if dev->irq.ih_soft is not empty */
> --
> 2.37.3
>




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux