diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4281-drm-amdgpu-Move-amdgpu_ras_recovery_init-to-after-SM.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4281-drm-amdgpu-Move-amdgpu_ras_recovery_init-to-after-SM.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4281-drm-amdgpu-Move-amdgpu_ras_recovery_init-to-after-SM.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4281-drm-amdgpu-Move-amdgpu_ras_recovery_init-to-after-SM.patch new file mode 100644 index 00000000..7299f949 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4281-drm-amdgpu-Move-amdgpu_ras_recovery_init-to-after-SM.patch @@ -0,0 +1,68 @@ +From 4247199656c3a7e8b1bed2c1318166bd60636da5 Mon Sep 17 00:00:00 2001 +From: Andrey Grodzovsky <andrey.grodzovsky@amd.com> +Date: Fri, 18 Oct 2019 16:15:04 -0400 +Subject: [PATCH 4281/4736] drm/amdgpu: Move amdgpu_ras_recovery_init to after + SMU ready. + +For Arcturus the I2C traffic is done through SMU tables and so +we must postpone RAS recovery init to after they are ready +which is in amdgpu_device_ip_hw_init_phase2. + +Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +reviewed-by: Evan Quan <evan.quan@amd.com> +Reviewed-by: Guchun Chen <guchun.chen@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 13 +++++++++++++ + drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 11 ----------- + 2 files changed, 13 insertions(+), 11 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index 634b581f96b8..e30e4f8f7df3 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -1877,6 +1877,19 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) + if (r) + goto init_failed; + ++ /* ++ * retired pages will be loaded from eeprom and reserved here, ++ * it should be called after amdgpu_device_ip_hw_init_phase2 since ++ * for some ASICs the RAS EEPROM code relies on SMU fully functioning ++ * for I2C communication which only true at this point. ++ * recovery_init may fail, but it can free all resources allocated by ++ * itself and its failure should not stop amdgpu init process. ++ * ++ * Note: theoretically, this should be called before all vram allocations ++ * to protect retired page from abusing ++ */ ++ amdgpu_ras_recovery_init(adev); ++ + if (adev->gmc.xgmi.num_physical_nodes > 1) + amdgpu_xgmi_add_device(adev); + amdgpu_amdkfd_device_init(adev); +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +index 968595138b32..8bdc1eec496e 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +@@ -2115,17 +2115,6 @@ int amdgpu_ttm_init(struct amdgpu_device *adev) + adev->gmc.visible_vram_size); + #endif + +- /* +- * retired pages will be loaded from eeprom and reserved here, +- * it should be called after ttm init since new bo may be created, +- * recovery_init may fail, but it can free all resources allocated by +- * itself and its failure should not stop amdgpu init process. +- * +- * Note: theoretically, this should be called before all vram allocations +- * to protect retired page from abusing +- */ +- amdgpu_ras_recovery_init(adev); +- + /* + *The reserved vram for firmware must be pinned to the specified + *place on the VRAM, so reserve it early. +-- +2.17.1 + |