Message ID | 20220107001338.506215-1-kelsey.skunberg@canonical.com |
---|---|
State | New |
Headers | show |
Series | [SRU,I] drm/amdkfd: fix boot failure when iommu is disabled in Picasso. | expand |
On 07.01.22 01:13, Kelsey Skunberg wrote: > From: Yifan Zhang <yifan1.zhang@amd.com> > > BugLink: https://bugs.launchpad.net/bugs/1956401 > > When IOMMU disabled in sbios and kfd in iommuv2 path, iommuv2 > init will fail. But this failure should not block amdgpu driver init. > > Reported-by: youling <youling257@gmail.com> > Tested-by: youling <youling257@gmail.com> > Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com> > Reviewed-by: James Zhu <James.Zhu@amd.com> > Signed-off-by: Alex Deucher <alexander.deucher@amd.com> > (cherry picked from commit afd18180c07026f94a80ff024acef5f4159084a4) > Signed-off-by: Kelsey Skunberg <kelsey.skunberg@canonical.com> There is good evidence that this patch fixes the issue users are reporting. Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> Thanks > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 ---- > drivers/gpu/drm/amd/amdkfd/kfd_device.c | 3 +++ > 2 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 1a44e8c12b22..ade5bcce6136 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -2312,10 +2312,6 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) > if (!adev->gmc.xgmi.pending_reset) > amdgpu_amdkfd_device_init(adev); > > - r = amdgpu_amdkfd_resume_iommu(adev); > - if (r) > - goto init_failed; > - > amdgpu_fru_get_product_info(adev); > > init_failed: > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c > index e5be7da0bca3..cc491b427d8b 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c > @@ -814,6 +814,9 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, > > kfd_cwsr_init(kfd); > > + if(kgd2kfd_resume_iommu(kfd)) > + goto device_iommu_error; > + > if (kfd_resume(kfd)) > goto kfd_resume_error; >
Acked-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
On 07.01.22 01:13, Kelsey Skunberg wrote: > From: Yifan Zhang <yifan1.zhang@amd.com> > > BugLink: https://bugs.launchpad.net/bugs/1956401 > > When IOMMU disabled in sbios and kfd in iommuv2 path, iommuv2 > init will fail. But this failure should not block amdgpu driver init. > > Reported-by: youling <youling257@gmail.com> > Tested-by: youling <youling257@gmail.com> > Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com> > Reviewed-by: James Zhu <James.Zhu@amd.com> > Signed-off-by: Alex Deucher <alexander.deucher@amd.com> > (cherry picked from commit afd18180c07026f94a80ff024acef5f4159084a4) > Signed-off-by: Kelsey Skunberg <kelsey.skunberg@canonical.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 ---- > drivers/gpu/drm/amd/amdkfd/kfd_device.c | 3 +++ > 2 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 1a44e8c12b22..ade5bcce6136 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -2312,10 +2312,6 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) > if (!adev->gmc.xgmi.pending_reset) > amdgpu_amdkfd_device_init(adev); > > - r = amdgpu_amdkfd_resume_iommu(adev); > - if (r) > - goto init_failed; > - > amdgpu_fru_get_product_info(adev); > > init_failed: > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c > index e5be7da0bca3..cc491b427d8b 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c > @@ -814,6 +814,9 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, > > kfd_cwsr_init(kfd); > > + if(kgd2kfd_resume_iommu(kfd)) > + goto device_iommu_error; > + > if (kfd_resume(kfd)) > goto kfd_resume_error; > Applied to impish:linux, released with Ubuntu-5.13.0-25.26 (CRD release). Thanks, Kleber
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 1a44e8c12b22..ade5bcce6136 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -2312,10 +2312,6 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) if (!adev->gmc.xgmi.pending_reset) amdgpu_amdkfd_device_init(adev); - r = amdgpu_amdkfd_resume_iommu(adev); - if (r) - goto init_failed; - amdgpu_fru_get_product_info(adev); init_failed: diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c index e5be7da0bca3..cc491b427d8b 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c @@ -814,6 +814,9 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, kfd_cwsr_init(kfd); + if(kgd2kfd_resume_iommu(kfd)) + goto device_iommu_error; + if (kfd_resume(kfd)) goto kfd_resume_error;