diff options
Diffstat (limited to 'meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5072-drm-amdgpu-Put-enable-gfx-off-feature-to-a-delay-thr.patch')
-rw-r--r-- | meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5072-drm-amdgpu-Put-enable-gfx-off-feature-to-a-delay-thr.patch | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5072-drm-amdgpu-Put-enable-gfx-off-feature-to-a-delay-thr.patch b/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5072-drm-amdgpu-Put-enable-gfx-off-feature-to-a-delay-thr.patch deleted file mode 100644 index 9d25c1bf..00000000 --- a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5072-drm-amdgpu-Put-enable-gfx-off-feature-to-a-delay-thr.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 1f373ae040b85197c04af1bab3bb0ac496099c63 Mon Sep 17 00:00:00 2001 -From: Rex Zhu <Rex.Zhu@amd.com> -Date: Fri, 27 Jul 2018 21:06:30 +0800 -Subject: [PATCH 5072/5725] drm/amdgpu: Put enable gfx off feature to a delay - thread - -delay to enable gfx off feature to avoid gfx on/off frequently -suggested by Alex and Evan. - -Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> -Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> -Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++ - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 15 +++++++++++++++ - drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 8 ++++++-- - 3 files changed, 23 insertions(+), 2 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -index d13ddd2..2098e0f 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -@@ -977,6 +977,8 @@ struct amdgpu_gfx { - bool gfx_off_state; /* true: enabled, false: disabled */ - struct mutex gfx_off_mutex; - uint32_t gfx_off_req_count; /* default 1, enable gfx off: dec 1, disable gfx off: add 1 */ -+ struct delayed_work gfx_off_delay_work; -+ - /* pipe reservation */ - struct mutex pipe_reserve_mutex; - DECLARE_BITMAP (pipe_reserve_bitmap, AMDGPU_MAX_COMPUTE_QUEUES); -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -index dd34f4c..aa9cc45 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -@@ -1974,6 +1974,19 @@ static void amdgpu_device_ip_late_init_func_handler(struct work_struct *work) - DRM_ERROR("ib ring test failed (%d).\n", r); - } - -+static void amdgpu_device_delay_enable_gfx_off(struct work_struct *work) -+{ -+ struct amdgpu_device *adev = -+ container_of(work, struct amdgpu_device, gfx.gfx_off_delay_work.work); -+ -+ mutex_lock(&adev->gfx.gfx_off_mutex); -+ if (!adev->gfx.gfx_off_state && !adev->gfx.gfx_off_req_count) { -+ if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, true)) -+ adev->gfx.gfx_off_state = true; -+ } -+ mutex_unlock(&adev->gfx.gfx_off_mutex); -+} -+ - /** - * amdgpu_device_ip_suspend_phase1 - run suspend for hardware IPs (phase 1) - * -@@ -2443,6 +2456,8 @@ int amdgpu_device_init(struct amdgpu_device *adev, - - INIT_DELAYED_WORK(&adev->late_init_work, - amdgpu_device_ip_late_init_func_handler); -+ INIT_DELAYED_WORK(&adev->gfx.gfx_off_delay_work, -+ amdgpu_device_delay_enable_gfx_off); - - adev->gfx.gfx_off_req_count = 1; - adev->pm.ac_power = power_supply_is_system_supplied() > 0 ? true : false; -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c -index fe87ffd..3fe6527 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c -@@ -26,6 +26,9 @@ - #include "amdgpu.h" - #include "amdgpu_gfx.h" - -+/* 0.5 second timeout */ -+#define GFX_OFF_DELAY_ENABLE msecs_to_jiffies(500) -+ - /* - * GPU scratch registers helpers function. - */ -@@ -360,6 +363,7 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable) - if (!adev->powerplay.pp_funcs->set_powergating_by_smu) - return; - -+ - mutex_lock(&adev->gfx.gfx_off_mutex); - - if (!enable) -@@ -368,11 +372,11 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable) - adev->gfx.gfx_off_req_count--; - - if (enable && !adev->gfx.gfx_off_state && !adev->gfx.gfx_off_req_count) { -- if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, true)) -- adev->gfx.gfx_off_state = true; -+ schedule_delayed_work(&adev->gfx.gfx_off_delay_work, GFX_OFF_DELAY_ENABLE); - } else if (!enable && adev->gfx.gfx_off_state) { - if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, false)) - adev->gfx.gfx_off_state = false; - } -+ - mutex_unlock(&adev->gfx.gfx_off_mutex); - } --- -2.7.4 - |