diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4551-drm-amdgpu-disentangle-runtime-pm-and-vga_switcheroo.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4551-drm-amdgpu-disentangle-runtime-pm-and-vga_switcheroo.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4551-drm-amdgpu-disentangle-runtime-pm-and-vga_switcheroo.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4551-drm-amdgpu-disentangle-runtime-pm-and-vga_switcheroo.patch new file mode 100644 index 00000000..c9248ca9 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4551-drm-amdgpu-disentangle-runtime-pm-and-vga_switcheroo.patch @@ -0,0 +1,76 @@ +From a249a5a0231132509a586738be1e179f53737913 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexander.deucher@amd.com> +Date: Fri, 4 Oct 2019 13:25:37 -0500 +Subject: [PATCH 4551/4736] drm/amdgpu: disentangle runtime pm and + vga_switcheroo + +Originally we only supported runtime pm on PX/HG laptops +so vga_switcheroo and runtime pm are sort of entangled. + +Attempt to logically separate them. + +Change-Id: Ie7cfe18f55e79557018f004ffbb5ce66822c3efe +Reviewed-by: Evan Quan <evan.quan@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Rahul Kumar <rahul.kumar1@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index ebdf775ab9b0..62d088a4840b 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -2749,7 +2749,7 @@ int amdgpu_device_init(struct amdgpu_device *adev, + uint32_t flags) + { + int r, i; +- bool runtime = false; ++ bool boco = false; + u32 max_MBps; + + adev->shutdown = false; +@@ -2920,11 +2920,13 @@ int amdgpu_device_init(struct amdgpu_device *adev, + vga_client_register(adev->pdev, adev, NULL, amdgpu_device_vga_set_decode); + + if (amdgpu_device_supports_boco(ddev)) +- runtime = true; +- if (!pci_is_thunderbolt_attached(adev->pdev)) ++ boco = true; ++ if (amdgpu_has_atpx() && ++ (amdgpu_is_atpx_hybrid() || ++ amdgpu_has_atpx_dgpu_power_cntl())) + vga_switcheroo_register_client(adev->pdev, +- &amdgpu_switcheroo_ops, runtime); +- if (runtime) ++ &amdgpu_switcheroo_ops, boco); ++ if (boco) + vga_switcheroo_init_domain_pm_ops(adev->dev, &adev->vga_pm_domain); + + if (amdgpu_emu_mode == 1) { +@@ -3115,7 +3117,7 @@ int amdgpu_device_init(struct amdgpu_device *adev, + + failed: + amdgpu_vf_error_trans_all(adev); +- if (runtime) ++ if (boco) + vga_switcheroo_fini_domain_pm_ops(adev->dev); + + return r; +@@ -3164,9 +3166,11 @@ void amdgpu_device_fini(struct amdgpu_device *adev) + + kfree(adev->bios); + adev->bios = NULL; +- if (!pci_is_thunderbolt_attached(adev->pdev)) ++ if (amdgpu_has_atpx() && ++ (amdgpu_is_atpx_hybrid() || ++ amdgpu_has_atpx_dgpu_power_cntl())) + vga_switcheroo_unregister_client(adev->pdev); +- if (adev->flags & AMD_IS_PX) ++ if (amdgpu_device_supports_boco(adev->ddev)) + vga_switcheroo_fini_domain_pm_ops(adev->dev); + vga_client_register(adev->pdev, NULL, NULL, NULL); + if (adev->rio_mem) +-- +2.17.1 + |