[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 >