diff options
Diffstat (limited to 'meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5071-drm-amdgpu-Add-amdgpu_gfx_off_ctrl-function.patch')
-rw-r--r-- | meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5071-drm-amdgpu-Add-amdgpu_gfx_off_ctrl-function.patch | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5071-drm-amdgpu-Add-amdgpu_gfx_off_ctrl-function.patch b/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5071-drm-amdgpu-Add-amdgpu_gfx_off_ctrl-function.patch deleted file mode 100644 index cc4fdec4..00000000 --- a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5071-drm-amdgpu-Add-amdgpu_gfx_off_ctrl-function.patch +++ /dev/null @@ -1,114 +0,0 @@ -From ae46fd8a5981824155d3ddde3b1457cca60a9af8 Mon Sep 17 00:00:00 2001 -From: Rex Zhu <Rex.Zhu@amd.com> -Date: Mon, 30 Jul 2018 16:59:09 +0800 -Subject: [PATCH 5071/5725] drm/amdgpu: Add amdgpu_gfx_off_ctrl function - -v2: - 1. drop the special handling for the hw IP - suggested by hawking and Christian. - 2. refine the variable name suggested by Flora. - -This funciton as the entry of gfx off feature. -we arbitrat gfx off feature enable/disable in this -function. - -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 | 5 +++++ - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 ++ - drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 36 ++++++++++++++++++++++++++++++ - 3 files changed, 43 insertions(+) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -index a6bde13..d13ddd2 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -@@ -973,6 +973,10 @@ struct amdgpu_gfx { - /* NGG */ - struct amdgpu_ngg ngg; - -+ /* gfx off */ -+ 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 */ - /* pipe reservation */ - struct mutex pipe_reserve_mutex; - DECLARE_BITMAP (pipe_reserve_bitmap, AMDGPU_MAX_COMPUTE_QUEUES); -@@ -1841,6 +1845,7 @@ void amdgpu_device_program_register_sequence(struct amdgpu_device *adev, - const u32 array_size); - - bool amdgpu_device_is_px(struct drm_device *dev); -+void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable); - /* atpx handler */ - #if defined(CONFIG_VGA_SWITCHEROO) - void amdgpu_register_atpx_handler(void); -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -index 4bc4c4a..dd34f4c 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -@@ -2416,6 +2416,7 @@ int amdgpu_device_init(struct amdgpu_device *adev, - mutex_init(&adev->gfx.gpu_clock_mutex); - mutex_init(&adev->srbm_mutex); - mutex_init(&adev->gfx.pipe_reserve_mutex); -+ mutex_init(&adev->gfx.gfx_off_mutex); - mutex_init(&adev->grbm_idx_mutex); - mutex_init(&adev->mn_lock); - mutex_init(&adev->virt.vf_errors.lock); -@@ -2443,6 +2444,7 @@ int amdgpu_device_init(struct amdgpu_device *adev, - INIT_DELAYED_WORK(&adev->late_init_work, - amdgpu_device_ip_late_init_func_handler); - -+ adev->gfx.gfx_off_req_count = 1; - adev->pm.ac_power = power_supply_is_system_supplied() > 0 ? true : false; - - /* Registers mapping */ -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c -index 3116e4d..fe87ffd 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c -@@ -340,3 +340,39 @@ void amdgpu_gfx_compute_mqd_sw_fini(struct amdgpu_device *adev) - &ring->mqd_gpu_addr, - &ring->mqd_ptr); - } -+ -+/* amdgpu_gfx_off_ctrl - Handle gfx off feature enable/disable -+ * -+ * @adev: amdgpu_device pointer -+ * @bool enable true: enable gfx off feature, false: disable gfx off feature -+ * -+ * 1. gfx off feature will be enabled by gfx ip after gfx cg gp enabled. -+ * 2. other client can send request to disable gfx off feature, the request should be honored. -+ * 3. other client can cancel their request of disable gfx off feature -+ * 4. other client should not send request to enable gfx off feature before disable gfx off feature. -+ */ -+ -+void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable) -+{ -+ if (!(adev->powerplay.pp_feature & PP_GFXOFF_MASK)) -+ return; -+ -+ if (!adev->powerplay.pp_funcs->set_powergating_by_smu) -+ return; -+ -+ mutex_lock(&adev->gfx.gfx_off_mutex); -+ -+ if (!enable) -+ adev->gfx.gfx_off_req_count++; -+ else if (adev->gfx.gfx_off_req_count > 0) -+ 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; -+ } 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 - |