diff mbox series

[SRU,I] drm/amdkfd: fix boot failure when iommu is disabled in Picasso.

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

Commit Message

Kelsey Skunberg Jan. 7, 2022, 12:13 a.m. UTC
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(-)

Comments

Kleber Sacilotto de Souza Jan. 7, 2022, 10:38 a.m. UTC | #1
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;
>
Thadeu Lima de Souza Cascardo Jan. 7, 2022, 10:45 a.m. UTC | #2
Acked-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Kleber Sacilotto de Souza Jan. 11, 2022, 12:08 p.m. UTC | #3
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 mbox series

Patch

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;