diff options
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.patch | 130 |
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 - |