aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4551-drm-amdgpu-disentangle-runtime-pm-and-vga_switcheroo.patch
diff options
context:
space:
mode:
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.patch76
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
+