aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3616-drm-amdgpu-don-t-use-MM-idle_work-for-SRIOV-v2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3616-drm-amdgpu-don-t-use-MM-idle_work-for-SRIOV-v2.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3616-drm-amdgpu-don-t-use-MM-idle_work-for-SRIOV-v2.patch92
1 files changed, 92 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3616-drm-amdgpu-don-t-use-MM-idle_work-for-SRIOV-v2.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3616-drm-amdgpu-don-t-use-MM-idle_work-for-SRIOV-v2.patch
new file mode 100644
index 00000000..94870c17
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3616-drm-amdgpu-don-t-use-MM-idle_work-for-SRIOV-v2.patch
@@ -0,0 +1,92 @@
+From 07625a961637a4cecf7e1419a7661057df78eb2c Mon Sep 17 00:00:00 2001
+From: Monk Liu <Monk.Liu@amd.com>
+Date: Fri, 19 Jan 2018 20:29:17 +0800
+Subject: [PATCH 3616/4131] drm/amdgpu: don't use MM idle_work for SRIOV(v2)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+SRIOV doesn't give VF cg/pg feature so the MM's idle_work
+is skipped for SR-IOV
+
+v2:
+remove superfluous changes
+since idle_work is not scheduled for SR-IOV so the condition
+check for SR-IOV inside idle_work also can be dropped
+
+v3:
+drop the SRIOV check in amdgpu_vce/uvd_suspend
+
+Change-Id: I6dd7ea48d23b0fee74ecb9e93b53bfe36b0e8164
+Signed-off-by: Monk Liu <Monk.Liu@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 9 ++++-----
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 6 ++----
+ 2 files changed, 6 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+index 2019e12..893daeb14 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+@@ -1117,9 +1117,6 @@ static void amdgpu_uvd_idle_work_handler(struct work_struct *work)
+ container_of(work, struct amdgpu_device, uvd.idle_work.work);
+ unsigned fences = amdgpu_fence_count_emitted(&adev->uvd.ring);
+
+- if (amdgpu_sriov_vf(adev))
+- return;
+-
+ if (fences == 0) {
+ if (adev->pm.dpm_enabled) {
+ amdgpu_dpm_enable_uvd(adev, false);
+@@ -1139,11 +1136,12 @@ static void amdgpu_uvd_idle_work_handler(struct work_struct *work)
+ void amdgpu_uvd_ring_begin_use(struct amdgpu_ring *ring)
+ {
+ struct amdgpu_device *adev = ring->adev;
+- bool set_clocks = !cancel_delayed_work_sync(&adev->uvd.idle_work);
++ bool set_clocks;
+
+ if (amdgpu_sriov_vf(adev))
+ return;
+
++ set_clocks = !cancel_delayed_work_sync(&adev->uvd.idle_work);
+ if (set_clocks) {
+ if (adev->pm.dpm_enabled) {
+ amdgpu_dpm_enable_uvd(adev, true);
+@@ -1159,7 +1157,8 @@ void amdgpu_uvd_ring_begin_use(struct amdgpu_ring *ring)
+
+ void amdgpu_uvd_ring_end_use(struct amdgpu_ring *ring)
+ {
+- schedule_delayed_work(&ring->adev->uvd.idle_work, UVD_IDLE_TIMEOUT);
++ if (!amdgpu_sriov_vf(ring->adev))
++ schedule_delayed_work(&ring->adev->uvd.idle_work, UVD_IDLE_TIMEOUT);
+ }
+
+ /**
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+index fc5dcb2..c034b63 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+@@ -300,9 +300,6 @@ static void amdgpu_vce_idle_work_handler(struct work_struct *work)
+ container_of(work, struct amdgpu_device, vce.idle_work.work);
+ unsigned i, count = 0;
+
+- if (amdgpu_sriov_vf(adev))
+- return;
+-
+ for (i = 0; i < adev->vce.num_rings; i++)
+ count += amdgpu_fence_count_emitted(&adev->vce.ring[i]);
+
+@@ -362,7 +359,8 @@ void amdgpu_vce_ring_begin_use(struct amdgpu_ring *ring)
+ */
+ void amdgpu_vce_ring_end_use(struct amdgpu_ring *ring)
+ {
+- schedule_delayed_work(&ring->adev->vce.idle_work, VCE_IDLE_TIMEOUT);
++ if (!amdgpu_sriov_vf(ring->adev))
++ schedule_delayed_work(&ring->adev->vce.idle_work, VCE_IDLE_TIMEOUT);
+ }
+
+ /**
+--
+2.7.4
+