aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1451-drm-amdgpu-Reduce-poll-interval-for-checking-SWS-HQD.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1451-drm-amdgpu-Reduce-poll-interval-for-checking-SWS-HQD.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1451-drm-amdgpu-Reduce-poll-interval-for-checking-SWS-HQD.patch130
1 files changed, 0 insertions, 130 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1451-drm-amdgpu-Reduce-poll-interval-for-checking-SWS-HQD.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1451-drm-amdgpu-Reduce-poll-interval-for-checking-SWS-HQD.patch
deleted file mode 100644
index c9cdb366..00000000
--- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1451-drm-amdgpu-Reduce-poll-interval-for-checking-SWS-HQD.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 47555739e6f33ebf0c6030910f416060b6ee1963 Mon Sep 17 00:00:00 2001
-From: Yong Zhao <yong.zhao@amd.com>
-Date: Tue, 24 May 2016 11:34:06 -0400
-Subject: [PATCH 1451/4131] drm/amdgpu: Reduce poll interval for checking SWS
- HQD dequeue operation
-
-The previous 20ms poll interval is a bit too large and may result in low
-performance if certain benchmark applications are badly written,
-in which queues are created/destroyed at a high frequency.
-
-Change-Id: I049b2ab3ab7688a133de1a797a0275b519d64349
-Signed-off-by: Yong Zhao <yong.zhao@amd.com>
-
- Conflicts:
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 17 +++++++----------
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 14 ++++++--------
- 2 files changed, 13 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-index 1e8ff65..d48a859 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-@@ -536,8 +536,8 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
- {
- struct amdgpu_device *adev = get_amdgpu_device(kgd);
- uint32_t temp;
-- int timeout = utimeout;
- enum hqd_dequeue_request_type type;
-+ unsigned long end_jiffies = (utimeout * HZ / 1000) + jiffies;
-
- acquire_queue(kgd, pipe_id, queue_id);
- WREG32(mmCP_HQD_PQ_DOORBELL_CONTROL, 0);
-@@ -560,14 +560,12 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
- temp = RREG32(mmCP_HQD_ACTIVE);
- if (!(temp & CP_HQD_ACTIVE__ACTIVE_MASK))
- break;
-- if (timeout <= 0) {
-- pr_err("kfd: cp queue preemption time out (%dms)\n",
-- temp);
-+ if (time_after(jiffies, end_jiffies)) {
-+ pr_err("kfd: cp queue preemption time out\n");
- release_queue(kgd);
- return -ETIME;
- }
-- msleep(20);
-- timeout -= 20;
-+ usleep_range(500, 1000);
- }
-
- release_queue(kgd);
-@@ -581,7 +579,7 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
- struct cik_sdma_rlc_registers *m;
- uint32_t sdma_base_addr;
- uint32_t temp;
-- int timeout = utimeout;
-+ unsigned long end_jiffies = (utimeout * HZ / 1000) + jiffies;
-
- m = get_sdma_mqd(mqd);
- sdma_base_addr = get_sdma_base_addr(m);
-@@ -594,10 +592,9 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
- temp = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
- if (temp & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
- break;
-- if (timeout <= 0)
-+ if (time_after(jiffies, end_jiffies))
- return -ETIME;
-- msleep(20);
-- timeout -= 20;
-+ usleep_range(500, 1000);
- }
-
- WREG32(sdma_base_addr + mmSDMA0_RLC0_DOORBELL, 0);
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-index f20498b..81ff833 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-@@ -562,8 +562,8 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
- {
- struct amdgpu_device *adev = get_amdgpu_device(kgd);
- uint32_t temp;
-- int timeout = utimeout;
- enum hqd_dequeue_request_type type;
-+ unsigned long end_jiffies = (utimeout * HZ / 1000) + jiffies;
-
- acquire_queue(kgd, pipe_id, queue_id);
-
-@@ -585,13 +585,12 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
- temp = RREG32(mmCP_HQD_ACTIVE);
- if (!(temp & CP_HQD_ACTIVE__ACTIVE_MASK))
- break;
-- if (timeout <= 0) {
-+ if (time_after(jiffies, end_jiffies)) {
- pr_err("kfd: cp queue preemption time out.\n");
- release_queue(kgd);
- return -ETIME;
- }
-- msleep(20);
-- timeout -= 20;
-+ usleep_range(500, 1000);
- }
-
- release_queue(kgd);
-@@ -605,7 +604,7 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
- struct vi_sdma_mqd *m;
- uint32_t sdma_base_addr;
- uint32_t temp;
-- int timeout = utimeout;
-+ unsigned long end_jiffies = (utimeout * HZ / 1000) + jiffies;
-
- m = get_sdma_mqd(mqd);
- sdma_base_addr = get_sdma_base_addr(m);
-@@ -618,10 +617,9 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
- temp = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
- if (temp & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
- break;
-- if (timeout <= 0)
-+ if (time_after(jiffies, end_jiffies))
- return -ETIME;
-- msleep(20);
-- timeout -= 20;
-+ usleep_range(500, 1000);
- }
-
- WREG32(sdma_base_addr + mmSDMA0_RLC0_DOORBELL, 0);
---
-2.7.4
-