aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1707-drm-amdgpu-Correct-the-irq-types-num-of-sdma.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1707-drm-amdgpu-Correct-the-irq-types-num-of-sdma.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1707-drm-amdgpu-Correct-the-irq-types-num-of-sdma.patch254
1 files changed, 254 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1707-drm-amdgpu-Correct-the-irq-types-num-of-sdma.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1707-drm-amdgpu-Correct-the-irq-types-num-of-sdma.patch
new file mode 100644
index 00000000..14e75b84
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1707-drm-amdgpu-Correct-the-irq-types-num-of-sdma.patch
@@ -0,0 +1,254 @@
+From d20e7571617d37381ce70f3892b11b2aad3fbb85 Mon Sep 17 00:00:00 2001
+From: Emily Deng <Emily.Deng@amd.com>
+Date: Thu, 28 Mar 2019 17:29:10 +0800
+Subject: [PATCH 1707/2940] drm/amdgpu: Correct the irq types' num of sdma
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fix the issue about TDR-2 will have "fallback timer expired on ring sdma1".
+It is because the wrong number of irq types setting.
+
+Signed-off-by: Emily Deng <Emily.Deng@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h | 7 ++-----
+ drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 8 ++++----
+ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 8 ++++----
+ drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 8 ++++----
+ drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 25 ++++++++++++------------
+ drivers/gpu/drm/amd/amdgpu/si_dma.c | 8 ++++----
+ 6 files changed, 30 insertions(+), 34 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h
+index e988c3f09ecc..b0d81aa9557e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h
+@@ -28,11 +28,8 @@
+ #define AMDGPU_MAX_SDMA_INSTANCES 2
+
+ enum amdgpu_sdma_irq {
+- AMDGPU_SDMA_IRQ_TRAP0 = 0,
+- AMDGPU_SDMA_IRQ_TRAP1,
+- AMDGPU_SDMA_IRQ_ECC0,
+- AMDGPU_SDMA_IRQ_ECC1,
+-
++ AMDGPU_SDMA_IRQ_INSTANCE0 = 0,
++ AMDGPU_SDMA_IRQ_INSTANCE1,
+ AMDGPU_SDMA_IRQ_LAST
+ };
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+index 7842116aea95..978ad9045ff7 100644
+--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
++++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+@@ -977,8 +977,8 @@ static int cik_sdma_sw_init(void *handle)
+ r = amdgpu_ring_init(adev, ring, 1024,
+ &adev->sdma.trap_irq,
+ (i == 0) ?
+- AMDGPU_SDMA_IRQ_TRAP0 :
+- AMDGPU_SDMA_IRQ_TRAP1);
++ AMDGPU_SDMA_IRQ_INSTANCE0 :
++ AMDGPU_SDMA_IRQ_INSTANCE1);
+ if (r)
+ return r;
+ }
+@@ -1114,7 +1114,7 @@ static int cik_sdma_set_trap_irq_state(struct amdgpu_device *adev,
+ u32 sdma_cntl;
+
+ switch (type) {
+- case AMDGPU_SDMA_IRQ_TRAP0:
++ case AMDGPU_SDMA_IRQ_INSTANCE0:
+ switch (state) {
+ case AMDGPU_IRQ_STATE_DISABLE:
+ sdma_cntl = RREG32(mmSDMA0_CNTL + SDMA0_REGISTER_OFFSET);
+@@ -1130,7 +1130,7 @@ static int cik_sdma_set_trap_irq_state(struct amdgpu_device *adev,
+ break;
+ }
+ break;
+- case AMDGPU_SDMA_IRQ_TRAP1:
++ case AMDGPU_SDMA_IRQ_INSTANCE1:
+ switch (state) {
+ case AMDGPU_IRQ_STATE_DISABLE:
+ sdma_cntl = RREG32(mmSDMA0_CNTL + SDMA1_REGISTER_OFFSET);
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+index e9dfc55a7809..112acd8eff83 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+@@ -870,8 +870,8 @@ static int sdma_v2_4_sw_init(void *handle)
+ r = amdgpu_ring_init(adev, ring, 1024,
+ &adev->sdma.trap_irq,
+ (i == 0) ?
+- AMDGPU_SDMA_IRQ_TRAP0 :
+- AMDGPU_SDMA_IRQ_TRAP1);
++ AMDGPU_SDMA_IRQ_INSTANCE0 :
++ AMDGPU_SDMA_IRQ_INSTANCE1);
+ if (r)
+ return r;
+ }
+@@ -1006,7 +1006,7 @@ static int sdma_v2_4_set_trap_irq_state(struct amdgpu_device *adev,
+ u32 sdma_cntl;
+
+ switch (type) {
+- case AMDGPU_SDMA_IRQ_TRAP0:
++ case AMDGPU_SDMA_IRQ_INSTANCE0:
+ switch (state) {
+ case AMDGPU_IRQ_STATE_DISABLE:
+ sdma_cntl = RREG32(mmSDMA0_CNTL + SDMA0_REGISTER_OFFSET);
+@@ -1022,7 +1022,7 @@ static int sdma_v2_4_set_trap_irq_state(struct amdgpu_device *adev,
+ break;
+ }
+ break;
+- case AMDGPU_SDMA_IRQ_TRAP1:
++ case AMDGPU_SDMA_IRQ_INSTANCE1:
+ switch (state) {
+ case AMDGPU_IRQ_STATE_DISABLE:
+ sdma_cntl = RREG32(mmSDMA0_CNTL + SDMA1_REGISTER_OFFSET);
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+index d3c8a4b16db0..fd6f6e15f271 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+@@ -1154,8 +1154,8 @@ static int sdma_v3_0_sw_init(void *handle)
+ r = amdgpu_ring_init(adev, ring, 1024,
+ &adev->sdma.trap_irq,
+ (i == 0) ?
+- AMDGPU_SDMA_IRQ_TRAP0 :
+- AMDGPU_SDMA_IRQ_TRAP1);
++ AMDGPU_SDMA_IRQ_INSTANCE0 :
++ AMDGPU_SDMA_IRQ_INSTANCE1);
+ if (r)
+ return r;
+ }
+@@ -1340,7 +1340,7 @@ static int sdma_v3_0_set_trap_irq_state(struct amdgpu_device *adev,
+ u32 sdma_cntl;
+
+ switch (type) {
+- case AMDGPU_SDMA_IRQ_TRAP0:
++ case AMDGPU_SDMA_IRQ_INSTANCE0:
+ switch (state) {
+ case AMDGPU_IRQ_STATE_DISABLE:
+ sdma_cntl = RREG32(mmSDMA0_CNTL + SDMA0_REGISTER_OFFSET);
+@@ -1356,7 +1356,7 @@ static int sdma_v3_0_set_trap_irq_state(struct amdgpu_device *adev,
+ break;
+ }
+ break;
+- case AMDGPU_SDMA_IRQ_TRAP1:
++ case AMDGPU_SDMA_IRQ_INSTANCE1:
+ switch (state) {
+ case AMDGPU_IRQ_STATE_DISABLE:
+ sdma_cntl = RREG32(mmSDMA0_CNTL + SDMA1_REGISTER_OFFSET);
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+index 59ba47dc5692..1fa8087c5a7e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+@@ -1553,13 +1553,13 @@ static int sdma_v4_0_late_init(void *handle)
+ if (r)
+ goto sysfs;
+ resume:
+- r = amdgpu_irq_get(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_ECC0);
++ r = amdgpu_irq_get(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_INSTANCE0);
+ if (r)
+ goto irq;
+
+- r = amdgpu_irq_get(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_ECC1);
++ r = amdgpu_irq_get(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_INSTANCE1);
+ if (r) {
+- amdgpu_irq_put(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_ECC0);
++ amdgpu_irq_put(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_INSTANCE0);
+ goto irq;
+ }
+
+@@ -1623,8 +1623,8 @@ static int sdma_v4_0_sw_init(void *handle)
+ r = amdgpu_ring_init(adev, ring, 1024,
+ &adev->sdma.trap_irq,
+ (i == 0) ?
+- AMDGPU_SDMA_IRQ_TRAP0 :
+- AMDGPU_SDMA_IRQ_TRAP1);
++ AMDGPU_SDMA_IRQ_INSTANCE0 :
++ AMDGPU_SDMA_IRQ_INSTANCE1);
+ if (r)
+ return r;
+
+@@ -1643,8 +1643,8 @@ static int sdma_v4_0_sw_init(void *handle)
+ r = amdgpu_ring_init(adev, ring, 1024,
+ &adev->sdma.trap_irq,
+ (i == 0) ?
+- AMDGPU_SDMA_IRQ_TRAP0 :
+- AMDGPU_SDMA_IRQ_TRAP1);
++ AMDGPU_SDMA_IRQ_INSTANCE0 :
++ AMDGPU_SDMA_IRQ_INSTANCE1);
+ if (r)
+ return r;
+ }
+@@ -1711,8 +1711,8 @@ static int sdma_v4_0_hw_fini(void *handle)
+ if (amdgpu_sriov_vf(adev))
+ return 0;
+
+- amdgpu_irq_put(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_ECC0);
+- amdgpu_irq_put(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_ECC1);
++ amdgpu_irq_put(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_INSTANCE0);
++ amdgpu_irq_put(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_INSTANCE1);
+
+ sdma_v4_0_ctx_switch_enable(adev, false);
+ sdma_v4_0_enable(adev, false);
+@@ -1782,13 +1782,12 @@ static int sdma_v4_0_set_trap_irq_state(struct amdgpu_device *adev,
+ unsigned type,
+ enum amdgpu_interrupt_state state)
+ {
+- unsigned int instance = (type == AMDGPU_SDMA_IRQ_TRAP0) ? 0 : 1;
+ u32 sdma_cntl;
+
+- sdma_cntl = RREG32_SDMA(instance, mmSDMA0_CNTL);
++ sdma_cntl = RREG32_SDMA(type, mmSDMA0_CNTL);
+ sdma_cntl = REG_SET_FIELD(sdma_cntl, SDMA0_CNTL, TRAP_ENABLE,
+ state == AMDGPU_IRQ_STATE_ENABLE ? 1 : 0);
+- WREG32_SDMA(instance, mmSDMA0_CNTL, sdma_cntl);
++ WREG32_SDMA(type, mmSDMA0_CNTL, sdma_cntl);
+
+ return 0;
+ }
+@@ -1908,7 +1907,7 @@ static int sdma_v4_0_set_ecc_irq_state(struct amdgpu_device *adev,
+ {
+ u32 sdma_edc_config;
+
+- u32 reg_offset = (type == AMDGPU_SDMA_IRQ_ECC0) ?
++ u32 reg_offset = (type == AMDGPU_SDMA_IRQ_INSTANCE0) ?
+ sdma_v4_0_get_reg_offset(adev, 0, mmSDMA0_EDC_CONFIG) :
+ sdma_v4_0_get_reg_offset(adev, 1, mmSDMA0_EDC_CONFIG);
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/si_dma.c b/drivers/gpu/drm/amd/amdgpu/si_dma.c
+index f15f196684ba..3eeefd40dae0 100644
+--- a/drivers/gpu/drm/amd/amdgpu/si_dma.c
++++ b/drivers/gpu/drm/amd/amdgpu/si_dma.c
+@@ -503,8 +503,8 @@ static int si_dma_sw_init(void *handle)
+ r = amdgpu_ring_init(adev, ring, 1024,
+ &adev->sdma.trap_irq,
+ (i == 0) ?
+- AMDGPU_SDMA_IRQ_TRAP0 :
+- AMDGPU_SDMA_IRQ_TRAP1);
++ AMDGPU_SDMA_IRQ_INSTANCE0 :
++ AMDGPU_SDMA_IRQ_INSTANCE1);
+ if (r)
+ return r;
+ }
+@@ -591,7 +591,7 @@ static int si_dma_set_trap_irq_state(struct amdgpu_device *adev,
+ u32 sdma_cntl;
+
+ switch (type) {
+- case AMDGPU_SDMA_IRQ_TRAP0:
++ case AMDGPU_SDMA_IRQ_INSTANCE0:
+ switch (state) {
+ case AMDGPU_IRQ_STATE_DISABLE:
+ sdma_cntl = RREG32(DMA_CNTL + DMA0_REGISTER_OFFSET);
+@@ -607,7 +607,7 @@ static int si_dma_set_trap_irq_state(struct amdgpu_device *adev,
+ break;
+ }
+ break;
+- case AMDGPU_SDMA_IRQ_TRAP1:
++ case AMDGPU_SDMA_IRQ_INSTANCE1:
+ switch (state) {
+ case AMDGPU_IRQ_STATE_DISABLE:
+ sdma_cntl = RREG32(DMA_CNTL + DMA1_REGISTER_OFFSET);
+--
+2.17.1
+