diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2612-drm-amdgpu-fix-MGPU-fan-boost-enablement-for-XGMI-re.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2612-drm-amdgpu-fix-MGPU-fan-boost-enablement-for-XGMI-re.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2612-drm-amdgpu-fix-MGPU-fan-boost-enablement-for-XGMI-re.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2612-drm-amdgpu-fix-MGPU-fan-boost-enablement-for-XGMI-re.patch new file mode 100644 index 00000000..f7f77dd9 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2612-drm-amdgpu-fix-MGPU-fan-boost-enablement-for-XGMI-re.patch @@ -0,0 +1,89 @@ +From 03fdb2300c61cce4a1b619c925d6f384fc278866 Mon Sep 17 00:00:00 2001 +From: Evan Quan <evan.quan@amd.com> +Date: Wed, 26 Jun 2019 10:53:39 +0800 +Subject: [PATCH 2612/2940] drm/amdgpu: fix MGPU fan boost enablement for XGMI + reset + +MGPU fan boost feature should not be enabled until all the +devices from the same hive are all back from reset. + +Change-Id: I03a69434ff28f4eac209bd91320dde8a238a33cf +Signed-off-by: Evan Quan <evan.quan@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 ++++ + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 13 +++++++++++++ + drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 4 ++-- + 3 files changed, 19 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index 8e55e1c94317..57a8614f715d 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -1255,6 +1255,10 @@ int amdgpu_dm_display_resume(struct amdgpu_device *adev ); + static inline int amdgpu_dm_display_resume(struct amdgpu_device *adev) { return 0; } + #endif + ++ ++void amdgpu_register_gpu_instance(struct amdgpu_device *adev); ++void amdgpu_unregister_gpu_instance(struct amdgpu_device *adev); ++ + #include "amdgpu_object.h" + + /* used by df_v3_6.c and amdgpu_pmu.c */ +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index cb59eec5ece3..6a87bafbe2f2 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -3559,6 +3559,12 @@ static int amdgpu_do_asic_reset(struct amdgpu_hive_info *hive, + if (vram_lost) + amdgpu_device_fill_reset_magic(tmp_adev); + ++ /* ++ * Add this ASIC as tracked as reset was already ++ * complete successfully. ++ */ ++ amdgpu_register_gpu_instance(tmp_adev); ++ + r = amdgpu_device_ip_late_init(tmp_adev); + if (r) + goto out; +@@ -3693,6 +3699,13 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev, + device_list_handle = &device_list; + } + ++ /* ++ * Mark these ASICs to be reseted as untracked first ++ * And add them back after reset completed ++ */ ++ list_for_each_entry(tmp_adev, device_list_handle, gmc.xgmi.head) ++ amdgpu_unregister_gpu_instance(tmp_adev); ++ + /* block all schedulers and reset given job's ring */ + list_for_each_entry(tmp_adev, device_list_handle, gmc.xgmi.head) { + for (i = 0; i < AMDGPU_MAX_RINGS; ++i) { +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +index d39fbd00917e..c21b7d5d9c28 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +@@ -41,7 +41,7 @@ + #include "amdgpu_display.h" + #include "amdgpu_ras.h" + +-static void amdgpu_unregister_gpu_instance(struct amdgpu_device *adev) ++void amdgpu_unregister_gpu_instance(struct amdgpu_device *adev) + { + struct amdgpu_gpu_instance *gpu_instance; + int i; +@@ -102,7 +102,7 @@ void amdgpu_driver_unload_kms(struct drm_device *dev) + dev->dev_private = NULL; + } + +-static void amdgpu_register_gpu_instance(struct amdgpu_device *adev) ++void amdgpu_register_gpu_instance(struct amdgpu_device *adev) + { + struct amdgpu_gpu_instance *gpu_instance; + +-- +2.17.1 + |