All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] RLC kernel code update for unified RLC function
@ 2018-10-10 11:42 likun Gao
       [not found] ` <1539171776-8157-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: likun Gao @ 2018-10-10 11:42 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Likun Gao

From: Likun Gao <Likun.Gao@amd.com>

Hi all,

Code modified about RLC will be operated to improve the resuability of RLC's
code, and this process will operated with two steps:

STEP1(completed):
- Unify RLC's function into the structure amdgpu_rlc_funcs and use structure
  pointer to call RLC functions.
- The modified of the step have completed, and the related code change have
  patched in the following patches.

Please help to review.

STEP2(underway):
- Will modified the code to unify the RLC function for each version of GFX to
  improve the resuability of RLC's function code.

Regards,
Likun

Likun Gao (5):
  drm/amdgpu/rlc: unify rlc function into structure
  drm/amdgpu/rlc: gfx_v6 change the method to call rlc function
  drm/amdgpu/rlc: gfx_v7 change the method to call rlc function
  drm/amdgpu/rlc: gfx_v8 change the method to call rlc function
  drm/amdgpu/rlc: gfx_v9 change the method to call rlc function

 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h |  6 ++++++
 drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c   | 28 +++++++++++++++++++---------
 drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c   | 30 ++++++++++++++++++------------
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c   | 28 +++++++++++++++++-----------
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c   | 30 ++++++++++++++++++------------
 5 files changed, 78 insertions(+), 44 deletions(-)

-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/5] drm/amdgpu/rlc: unify rlc function into structure
       [not found] ` <1539171776-8157-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
@ 2018-10-10 11:42   ` likun Gao
       [not found]     ` <1539171776-8157-2-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
  2018-10-10 11:42   ` [PATCH 2/5] drm/amdgpu/rlc: gfx_v6 change the method to call rlc function likun Gao
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: likun Gao @ 2018-10-10 11:42 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Likun Gao

From: Likun Gao <Likun.Gao@amd.com>

Put function rlc_init,rlc_fini,rlc_resume,rlc_stop,rlc_start into structure
amdgpu_rlc_funcs.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
index b61b5c1..bb7b1ad 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
@@ -41,6 +41,12 @@
 struct amdgpu_rlc_funcs {
 	void (*enter_safe_mode)(struct amdgpu_device *adev);
 	void (*exit_safe_mode)(struct amdgpu_device *adev);
+	int  (*rlc_init)(struct amdgpu_device *adev);
+	void (*rlc_fini)(struct amdgpu_device *adev);
+	int  (*rlc_resume)(struct amdgpu_device *adev);
+	void (*rlc_stop)(struct amdgpu_device *adev);
+	void (*rlc_reset)(struct amdgpu_device *adev);
+	void (*rlc_start)(struct amdgpu_device *adev);
 };
 
 struct amdgpu_rlc {
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/5] drm/amdgpu/rlc: gfx_v6 change the method to call rlc function
       [not found] ` <1539171776-8157-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
  2018-10-10 11:42   ` [PATCH 1/5] drm/amdgpu/rlc: unify rlc function into structure likun Gao
@ 2018-10-10 11:42   ` likun Gao
       [not found]     ` <1539171776-8157-3-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
  2018-10-10 11:42   ` [PATCH 3/5] drm/amdgpu/rlc: gfx_v7 " likun Gao
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: likun Gao @ 2018-10-10 11:42 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Likun Gao

From: Likun Gao <Likun.Gao@amd.com>

Use struct pointer to call rlc function.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
index d76eb27..9b5523d 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
@@ -2403,7 +2403,7 @@ static int gfx_v6_0_rlc_init(struct amdgpu_device *adev)
 		if (r) {
 			dev_warn(adev->dev, "(%d) create RLC sr bo failed\n",
 				 r);
-			gfx_v6_0_rlc_fini(adev);
+			adev->gfx.rlc.funcs->rlc_fini(adev);
 			return r;
 		}
 
@@ -2428,7 +2428,7 @@ static int gfx_v6_0_rlc_init(struct amdgpu_device *adev)
 					      (void **)&adev->gfx.rlc.cs_ptr);
 		if (r) {
 			dev_warn(adev->dev, "(%d) create RLC c bo failed\n", r);
-			gfx_v6_0_rlc_fini(adev);
+			adev->gfx.rlc.funcs->rlc_fini(adev);
 			return r;
 		}
 
@@ -2549,8 +2549,8 @@ static int gfx_v6_0_rlc_resume(struct amdgpu_device *adev)
 	if (!adev->gfx.rlc_fw)
 		return -EINVAL;
 
-	gfx_v6_0_rlc_stop(adev);
-	gfx_v6_0_rlc_reset(adev);
+	adev->gfx.rlc.funcs->rlc_stop(adev);
+	adev->gfx.rlc.funcs->rlc_reset(adev);
 	gfx_v6_0_init_pg(adev);
 	gfx_v6_0_init_cg(adev);
 
@@ -2578,7 +2578,7 @@ static int gfx_v6_0_rlc_resume(struct amdgpu_device *adev)
 	WREG32(mmRLC_UCODE_ADDR, 0);
 
 	gfx_v6_0_enable_lbpw(adev, gfx_v6_0_lbpw_supported(adev));
-	gfx_v6_0_rlc_start(adev);
+	adev->gfx.rlc.funcs->rlc_start(adev);
 
 	return 0;
 }
@@ -3075,6 +3075,15 @@ static const struct amdgpu_gfx_funcs gfx_v6_0_gfx_funcs = {
 	.select_me_pipe_q = &gfx_v6_0_select_me_pipe_q
 };
 
+static const struct amdgpu_rlc_funcs gfx_v6_0_rlc_funcs = {
+	.rlc_init = gfx_v6_0_rlc_init,
+	.rlc_fini = gfx_v6_0_rlc_fini,
+	.rlc_resume = gfx_v6_0_rlc_resume,
+	.rlc_stop = gfx_v6_0_rlc_stop,
+	.rlc_reset = gfx_v6_0_rlc_reset,
+	.rlc_start = gfx_v6_0_rlc_start
+};
+
 static int gfx_v6_0_early_init(void *handle)
 {
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
@@ -3082,6 +3091,7 @@ static int gfx_v6_0_early_init(void *handle)
 	adev->gfx.num_gfx_rings = GFX6_NUM_GFX_RINGS;
 	adev->gfx.num_compute_rings = GFX6_NUM_COMPUTE_RINGS;
 	adev->gfx.funcs = &gfx_v6_0_gfx_funcs;
+	adev->gfx.rlc.funcs = &gfx_v6_0_rlc_funcs;
 	gfx_v6_0_set_ring_funcs(adev);
 	gfx_v6_0_set_irq_funcs(adev);
 
@@ -3114,7 +3124,7 @@ static int gfx_v6_0_sw_init(void *handle)
 		return r;
 	}
 
-	r = gfx_v6_0_rlc_init(adev);
+	r = adev->gfx.rlc.funcs->rlc_init(adev);
 	if (r) {
 		DRM_ERROR("Failed to init rlc BOs!\n");
 		return r;
@@ -3165,7 +3175,7 @@ static int gfx_v6_0_sw_fini(void *handle)
 	for (i = 0; i < adev->gfx.num_compute_rings; i++)
 		amdgpu_ring_fini(&adev->gfx.compute_ring[i]);
 
-	gfx_v6_0_rlc_fini(adev);
+	adev->gfx.rlc.funcs->rlc_fini(adev);
 
 	return 0;
 }
@@ -3177,7 +3187,7 @@ static int gfx_v6_0_hw_init(void *handle)
 
 	gfx_v6_0_constants_init(adev);
 
-	r = gfx_v6_0_rlc_resume(adev);
+	r = adev->gfx.rlc.funcs->rlc_resume(adev);
 	if (r)
 		return r;
 
@@ -3195,7 +3205,7 @@ static int gfx_v6_0_hw_fini(void *handle)
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
 	gfx_v6_0_cp_enable(adev, false);
-	gfx_v6_0_rlc_stop(adev);
+	adev->gfx.rlc.funcs->rlc_stop(adev);
 	gfx_v6_0_fini_pg(adev);
 
 	return 0;
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/5] drm/amdgpu/rlc: gfx_v7 change the method to call rlc function
       [not found] ` <1539171776-8157-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
  2018-10-10 11:42   ` [PATCH 1/5] drm/amdgpu/rlc: unify rlc function into structure likun Gao
  2018-10-10 11:42   ` [PATCH 2/5] drm/amdgpu/rlc: gfx_v6 change the method to call rlc function likun Gao
@ 2018-10-10 11:42   ` likun Gao
  2018-10-10 11:42   ` [PATCH 4/5] drm/amdgpu/rlc: gfx_v8 " likun Gao
  2018-10-10 11:42   ` [PATCH 5/5] drm/amdgpu/rlc: gfx_v9 " likun Gao
  4 siblings, 0 replies; 8+ messages in thread
From: likun Gao @ 2018-10-10 11:42 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Likun Gao

From: Likun Gao <Likun.Gao@amd.com>

Use struct pointer to call rlc function.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 30 ++++++++++++++++++------------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index 0e72bc0..8826f59 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -3314,7 +3314,7 @@ static int gfx_v7_0_rlc_init(struct amdgpu_device *adev)
 					      (void **)&adev->gfx.rlc.sr_ptr);
 		if (r) {
 			dev_warn(adev->dev, "(%d) create, pin or map of RLC sr bo failed\n", r);
-			gfx_v7_0_rlc_fini(adev);
+			adev->gfx.rlc.funcs->rlc_fini(adev);
 			return r;
 		}
 
@@ -3337,7 +3337,7 @@ static int gfx_v7_0_rlc_init(struct amdgpu_device *adev)
 					      (void **)&adev->gfx.rlc.cs_ptr);
 		if (r) {
 			dev_warn(adev->dev, "(%d) create RLC c bo failed\n", r);
-			gfx_v7_0_rlc_fini(adev);
+			adev->gfx.rlc.funcs->rlc_fini(adev);
 			return r;
 		}
 
@@ -3357,7 +3357,7 @@ static int gfx_v7_0_rlc_init(struct amdgpu_device *adev)
 					      (void **)&adev->gfx.rlc.cp_table_ptr);
 		if (r) {
 			dev_warn(adev->dev, "(%d) create RLC cp table bo failed\n", r);
-			gfx_v7_0_rlc_fini(adev);
+			adev->gfx.rlc.funcs->rlc_fini(adev);
 			return r;
 		}
 
@@ -3545,13 +3545,13 @@ static int gfx_v7_0_rlc_resume(struct amdgpu_device *adev)
 	adev->gfx.rlc_feature_version = le32_to_cpu(
 					hdr->ucode_feature_version);
 
-	gfx_v7_0_rlc_stop(adev);
+	adev->gfx.rlc.funcs->rlc_stop(adev);
 
 	/* disable CG */
 	tmp = RREG32(mmRLC_CGCG_CGLS_CTRL) & 0xfffffffc;
 	WREG32(mmRLC_CGCG_CGLS_CTRL, tmp);
 
-	gfx_v7_0_rlc_reset(adev);
+	adev->gfx.rlc.funcs->rlc_reset(adev);
 
 	gfx_v7_0_init_pg(adev);
 
@@ -3582,7 +3582,7 @@ static int gfx_v7_0_rlc_resume(struct amdgpu_device *adev)
 	if (adev->asic_type == CHIP_BONAIRE)
 		WREG32(mmRLC_DRIVER_CPDMA_STATUS, 0);
 
-	gfx_v7_0_rlc_start(adev);
+	adev->gfx.rlc.funcs->rlc_start(adev);
 
 	return 0;
 }
@@ -4289,7 +4289,13 @@ static const struct amdgpu_gfx_funcs gfx_v7_0_gfx_funcs = {
 
 static const struct amdgpu_rlc_funcs gfx_v7_0_rlc_funcs = {
 	.enter_safe_mode = gfx_v7_0_enter_rlc_safe_mode,
-	.exit_safe_mode = gfx_v7_0_exit_rlc_safe_mode
+	.exit_safe_mode = gfx_v7_0_exit_rlc_safe_mode,
+	.rlc_init = gfx_v7_0_rlc_init,
+	.rlc_fini = gfx_v7_0_rlc_fini,
+	.rlc_resume = gfx_v7_0_rlc_resume,
+	.rlc_stop = gfx_v7_0_rlc_stop,
+	.rlc_reset = gfx_v7_0_rlc_reset,
+	.rlc_start = gfx_v7_0_rlc_start
 };
 
 static int gfx_v7_0_early_init(void *handle)
@@ -4540,7 +4546,7 @@ static int gfx_v7_0_sw_init(void *handle)
 		return r;
 	}
 
-	r = gfx_v7_0_rlc_init(adev);
+	r = adev->gfx.rlc.funcs->rlc_init(adev);
 	if (r) {
 		DRM_ERROR("Failed to init rlc BOs!\n");
 		return r;
@@ -4604,7 +4610,7 @@ static int gfx_v7_0_sw_fini(void *handle)
 		amdgpu_ring_fini(&adev->gfx.compute_ring[i]);
 
 	gfx_v7_0_cp_compute_fini(adev);
-	gfx_v7_0_rlc_fini(adev);
+	adev->gfx.rlc.funcs->rlc_fini(adev);
 	gfx_v7_0_mec_fini(adev);
 	amdgpu_bo_free_kernel(&adev->gfx.rlc.clear_state_obj,
 				&adev->gfx.rlc.clear_state_gpu_addr,
@@ -4627,7 +4633,7 @@ static int gfx_v7_0_hw_init(void *handle)
 	gfx_v7_0_constants_init(adev);
 
 	/* init rlc */
-	r = gfx_v7_0_rlc_resume(adev);
+	r = adev->gfx.rlc.funcs->rlc_resume(adev);
 	if (r)
 		return r;
 
@@ -4645,7 +4651,7 @@ static int gfx_v7_0_hw_fini(void *handle)
 	amdgpu_irq_put(adev, &adev->gfx.priv_reg_irq, 0);
 	amdgpu_irq_put(adev, &adev->gfx.priv_inst_irq, 0);
 	gfx_v7_0_cp_enable(adev, false);
-	gfx_v7_0_rlc_stop(adev);
+	adev->gfx.rlc.funcs->rlc_stop(adev);
 	gfx_v7_0_fini_pg(adev);
 
 	return 0;
@@ -4730,7 +4736,7 @@ static int gfx_v7_0_soft_reset(void *handle)
 		gfx_v7_0_update_cg(adev, false);
 
 		/* stop the rlc */
-		gfx_v7_0_rlc_stop(adev);
+		adev->gfx.rlc.funcs->rlc_stop(adev);
 
 		/* Disable GFX parsing/prefetching */
 		WREG32(mmCP_ME_CNTL, CP_ME_CNTL__ME_HALT_MASK | CP_ME_CNTL__PFP_HALT_MASK | CP_ME_CNTL__CE_HALT_MASK);
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/5] drm/amdgpu/rlc: gfx_v8 change the method to call rlc function
       [not found] ` <1539171776-8157-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
                     ` (2 preceding siblings ...)
  2018-10-10 11:42   ` [PATCH 3/5] drm/amdgpu/rlc: gfx_v7 " likun Gao
@ 2018-10-10 11:42   ` likun Gao
  2018-10-10 11:42   ` [PATCH 5/5] drm/amdgpu/rlc: gfx_v9 " likun Gao
  4 siblings, 0 replies; 8+ messages in thread
From: likun Gao @ 2018-10-10 11:42 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Likun Gao

From: Likun Gao <Likun.Gao@amd.com>

Use struct pointer to call rlc function.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 8439f9a..7735545 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -1391,7 +1391,7 @@ static int gfx_v8_0_rlc_init(struct amdgpu_device *adev)
 					      (void **)&adev->gfx.rlc.cs_ptr);
 		if (r) {
 			dev_warn(adev->dev, "(%d) create RLC c bo failed\n", r);
-			gfx_v8_0_rlc_fini(adev);
+			adev->gfx.rlc.funcs->rlc_fini(adev);
 			return r;
 		}
 
@@ -2088,7 +2088,7 @@ static int gfx_v8_0_sw_init(void *handle)
 		return r;
 	}
 
-	r = gfx_v8_0_rlc_init(adev);
+	r = adev->gfx.rlc.funcs->rlc_init(adev);
 	if (r) {
 		DRM_ERROR("Failed to init rlc BOs!\n");
 		return r;
@@ -2181,7 +2181,7 @@ static int gfx_v8_0_sw_fini(void *handle)
 	amdgpu_gfx_kiq_fini(adev);
 
 	gfx_v8_0_mec_fini(adev);
-	gfx_v8_0_rlc_fini(adev);
+	adev->gfx.rlc.funcs->rlc_fini(adev);
 	amdgpu_bo_free_kernel(&adev->gfx.rlc.clear_state_obj,
 				&adev->gfx.rlc.clear_state_gpu_addr,
 				(void **)&adev->gfx.rlc.cs_ptr);
@@ -4177,8 +4177,8 @@ static int gfx_v8_0_rlc_resume(struct amdgpu_device *adev)
 {
 	int r;
 
-	gfx_v8_0_rlc_stop(adev);
-	gfx_v8_0_rlc_reset(adev);
+	adev->gfx.rlc.funcs->rlc_stop(adev);
+	adev->gfx.rlc.funcs->rlc_reset(adev);
 	gfx_v8_0_init_pg(adev);
 
 	if (adev->powerplay.pp_funcs->load_firmware) {
@@ -4189,7 +4189,7 @@ static int gfx_v8_0_rlc_resume(struct amdgpu_device *adev)
 		}
 	}
 
-	gfx_v8_0_rlc_start(adev);
+	adev->gfx.rlc.funcs->rlc_start(adev);
 
 	return 0;
 }
@@ -4876,7 +4876,7 @@ static int gfx_v8_0_hw_init(void *handle)
 	gfx_v8_0_init_golden_registers(adev);
 	gfx_v8_0_constants_init(adev);
 
-	r = gfx_v8_0_rlc_resume(adev);
+	r = adev->gfx.rlc.funcs->rlc_resume(adev);
 	if (r)
 		return r;
 
@@ -4988,7 +4988,7 @@ static int gfx_v8_0_hw_fini(void *handle)
 	else
 		pr_err("cp is busy, skip halt cp\n");
 	if (!gfx_v8_0_wait_for_rlc_idle(adev))
-		gfx_v8_0_rlc_stop(adev);
+		adev->gfx.rlc.funcs->rlc_stop(adev);
 	else
 		pr_err("rlc is busy, skip halt rlc\n");
 	adev->gfx.rlc.funcs->exit_safe_mode(adev);
@@ -5080,7 +5080,7 @@ static int gfx_v8_0_pre_soft_reset(void *handle)
 	srbm_soft_reset = adev->gfx.srbm_soft_reset;
 
 	/* stop the rlc */
-	gfx_v8_0_rlc_stop(adev);
+	adev->gfx.rlc.funcs->rlc_stop(adev);
 
 	if (REG_GET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET, SOFT_RESET_CP) ||
 	    REG_GET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET, SOFT_RESET_GFX))
@@ -5206,7 +5206,7 @@ static int gfx_v8_0_post_soft_reset(void *handle)
 	    REG_GET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET, SOFT_RESET_GFX))
 		gfx_v8_0_cp_gfx_resume(adev);
 
-	gfx_v8_0_rlc_start(adev);
+	adev->gfx.rlc.funcs->rlc_start(adev);
 
 	return 0;
 }
@@ -5663,7 +5663,13 @@ static void iceland_exit_rlc_safe_mode(struct amdgpu_device *adev)
 
 static const struct amdgpu_rlc_funcs iceland_rlc_funcs = {
 	.enter_safe_mode = iceland_enter_rlc_safe_mode,
-	.exit_safe_mode = iceland_exit_rlc_safe_mode
+	.exit_safe_mode = iceland_exit_rlc_safe_mode,
+	.rlc_init = gfx_v8_0_rlc_init,
+	.rlc_fini = gfx_v8_0_rlc_fini,
+	.rlc_resume = gfx_v8_0_rlc_resume,
+	.rlc_stop = gfx_v8_0_rlc_stop,
+	.rlc_reset = gfx_v8_0_rlc_reset,
+	.rlc_start = gfx_v8_0_rlc_start
 };
 
 static void gfx_v8_0_update_medium_grain_clock_gating(struct amdgpu_device *adev,
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 5/5] drm/amdgpu/rlc: gfx_v9 change the method to call rlc function
       [not found] ` <1539171776-8157-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
                     ` (3 preceding siblings ...)
  2018-10-10 11:42   ` [PATCH 4/5] drm/amdgpu/rlc: gfx_v8 " likun Gao
@ 2018-10-10 11:42   ` likun Gao
  4 siblings, 0 replies; 8+ messages in thread
From: likun Gao @ 2018-10-10 11:42 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Likun Gao

From: Likun Gao <Likun.Gao@amd.com>

Use struct pointer to call rlc function.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 30 ++++++++++++++++++------------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index d6b5069..16798f7 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -1152,7 +1152,7 @@ static int gfx_v9_0_rlc_init(struct amdgpu_device *adev)
 		if (r) {
 			dev_err(adev->dev, "(%d) failed to create rlc csb bo\n",
 				r);
-			gfx_v9_0_rlc_fini(adev);
+			adev->gfx.rlc.funcs->rlc_fini(adev);
 			return r;
 		}
 		/* set up the cs buffer */
@@ -1174,7 +1174,7 @@ static int gfx_v9_0_rlc_init(struct amdgpu_device *adev)
 		if (r) {
 			dev_err(adev->dev,
 				"(%d) failed to create cp table bo\n", r);
-			gfx_v9_0_rlc_fini(adev);
+			adev->gfx.rlc.funcs->rlc_fini(adev);
 			return r;
 		}
 
@@ -1738,7 +1738,7 @@ static int gfx_v9_0_sw_init(void *handle)
 		return r;
 	}
 
-	r = gfx_v9_0_rlc_init(adev);
+	r = adev->gfx.rlc.funcs->rlc_init(adev);
 	if (r) {
 		DRM_ERROR("Failed to init rlc BOs!\n");
 		return r;
@@ -2488,12 +2488,12 @@ static int gfx_v9_0_rlc_resume(struct amdgpu_device *adev)
 		return 0;
 	}
 
-	gfx_v9_0_rlc_stop(adev);
+	adev->gfx.rlc.funcs->rlc_stop(adev);
 
 	/* disable CG */
 	WREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL, 0);
 
-	gfx_v9_0_rlc_reset(adev);
+	adev->gfx.rlc.funcs->rlc_reset(adev);
 
 	gfx_v9_0_init_pg(adev);
 
@@ -2512,7 +2512,7 @@ static int gfx_v9_0_rlc_resume(struct amdgpu_device *adev)
 			gfx_v9_0_enable_lbpw(adev, false);
 	}
 
-	gfx_v9_0_rlc_start(adev);
+	adev->gfx.rlc.funcs->rlc_start(adev);
 
 	return 0;
 }
@@ -3343,7 +3343,7 @@ static int gfx_v9_0_hw_init(void *handle)
 	if (r)
 		return r;
 
-	r = gfx_v9_0_rlc_resume(adev);
+	r = adev->gfx.rlc.funcs->rlc_resume(adev);
 	if (r)
 		return r;
 
@@ -3423,7 +3423,7 @@ static int gfx_v9_0_hw_fini(void *handle)
 	}
 
 	gfx_v9_0_cp_enable(adev, false);
-	gfx_v9_0_rlc_stop(adev);
+	adev->gfx.rlc.funcs->rlc_stop(adev);
 
 	gfx_v9_0_csb_vram_unpin(adev);
 
@@ -3498,7 +3498,7 @@ static int gfx_v9_0_soft_reset(void *handle)
 
 	if (grbm_soft_reset) {
 		/* stop the rlc */
-		gfx_v9_0_rlc_stop(adev);
+		adev->gfx.rlc.funcs->rlc_stop(adev);
 
 		/* Disable GFX parsing/prefetching */
 		gfx_v9_0_cp_gfx_enable(adev, false);
@@ -3654,7 +3654,7 @@ static void gfx_v9_0_exit_rlc_safe_mode(struct amdgpu_device *adev)
 static void gfx_v9_0_update_gfx_cg_power_gating(struct amdgpu_device *adev,
 						bool enable)
 {
-	gfx_v9_0_enter_rlc_safe_mode(adev);
+	adev->gfx.rlc.funcs->enter_safe_mode(adev);
 
 	if ((adev->pg_flags & AMD_PG_SUPPORT_GFX_PG) && enable) {
 		gfx_v9_0_enable_gfx_cg_power_gating(adev, true);
@@ -3665,7 +3665,7 @@ static void gfx_v9_0_update_gfx_cg_power_gating(struct amdgpu_device *adev,
 		gfx_v9_0_enable_gfx_pipeline_powergating(adev, false);
 	}
 
-	gfx_v9_0_exit_rlc_safe_mode(adev);
+	adev->gfx.rlc.funcs->exit_safe_mode(adev);
 }
 
 static void gfx_v9_0_update_gfx_mg_power_gating(struct amdgpu_device *adev,
@@ -3881,7 +3881,13 @@ static int gfx_v9_0_update_gfx_clock_gating(struct amdgpu_device *adev,
 
 static const struct amdgpu_rlc_funcs gfx_v9_0_rlc_funcs = {
 	.enter_safe_mode = gfx_v9_0_enter_rlc_safe_mode,
-	.exit_safe_mode = gfx_v9_0_exit_rlc_safe_mode
+	.exit_safe_mode = gfx_v9_0_exit_rlc_safe_mode,
+	.rlc_init = gfx_v9_0_rlc_init,
+	.rlc_fini = gfx_v9_0_rlc_fini,
+	.rlc_resume = gfx_v9_0_rlc_resume,
+	.rlc_stop = gfx_v9_0_rlc_stop,
+	.rlc_reset = gfx_v9_0_rlc_reset,
+	.rlc_start = gfx_v9_0_rlc_start
 };
 
 static int gfx_v9_0_set_powergating_state(void *handle,
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/5] drm/amdgpu/rlc: unify rlc function into structure
       [not found]     ` <1539171776-8157-2-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
@ 2018-10-10 12:04       ` Christian König
  0 siblings, 0 replies; 8+ messages in thread
From: Christian König @ 2018-10-10 12:04 UTC (permalink / raw)
  To: likun Gao, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Am 10.10.2018 um 13:42 schrieb likun Gao:
> From: Likun Gao <Likun.Gao@amd.com>
>
> Put function rlc_init,rlc_fini,rlc_resume,rlc_stop,rlc_start into structure
> amdgpu_rlc_funcs.
>
> Signed-off-by: Likun Gao <Likun.Gao@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 6 ++++++
>   1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
> index b61b5c1..bb7b1ad 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
> @@ -41,6 +41,12 @@
>   struct amdgpu_rlc_funcs {
>   	void (*enter_safe_mode)(struct amdgpu_device *adev);
>   	void (*exit_safe_mode)(struct amdgpu_device *adev);
> +	int  (*rlc_init)(struct amdgpu_device *adev);
> +	void (*rlc_fini)(struct amdgpu_device *adev);
> +	int  (*rlc_resume)(struct amdgpu_device *adev);
> +	void (*rlc_stop)(struct amdgpu_device *adev);
> +	void (*rlc_reset)(struct amdgpu_device *adev);
> +	void (*rlc_start)(struct amdgpu_device *adev);

Please drop the rlc_ prefix to all those members. The structure name 
already denotes it as rlc functions.

Christian.

>   };
>   
>   struct amdgpu_rlc {

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/5] drm/amdgpu/rlc: gfx_v6 change the method to call rlc function
       [not found]     ` <1539171776-8157-3-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
@ 2018-10-10 12:05       ` Christian König
  0 siblings, 0 replies; 8+ messages in thread
From: Christian König @ 2018-10-10 12:05 UTC (permalink / raw)
  To: likun Gao, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Am 10.10.2018 um 13:42 schrieb likun Gao:
> From: Likun Gao <Likun.Gao@amd.com>
>
> Use struct pointer to call rlc function.

When you do this please do the next step as well and separate our the 
RLC functions into another file.

Otherwise I don't see the point in actually doing the change.

Christian.

>
> Signed-off-by: Likun Gao <Likun.Gao@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 28 +++++++++++++++++++---------
>   1 file changed, 19 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
> index d76eb27..9b5523d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
> @@ -2403,7 +2403,7 @@ static int gfx_v6_0_rlc_init(struct amdgpu_device *adev)
>   		if (r) {
>   			dev_warn(adev->dev, "(%d) create RLC sr bo failed\n",
>   				 r);
> -			gfx_v6_0_rlc_fini(adev);
> +			adev->gfx.rlc.funcs->rlc_fini(adev);
>   			return r;
>   		}
>   
> @@ -2428,7 +2428,7 @@ static int gfx_v6_0_rlc_init(struct amdgpu_device *adev)
>   					      (void **)&adev->gfx.rlc.cs_ptr);
>   		if (r) {
>   			dev_warn(adev->dev, "(%d) create RLC c bo failed\n", r);
> -			gfx_v6_0_rlc_fini(adev);
> +			adev->gfx.rlc.funcs->rlc_fini(adev);
>   			return r;
>   		}
>   
> @@ -2549,8 +2549,8 @@ static int gfx_v6_0_rlc_resume(struct amdgpu_device *adev)
>   	if (!adev->gfx.rlc_fw)
>   		return -EINVAL;
>   
> -	gfx_v6_0_rlc_stop(adev);
> -	gfx_v6_0_rlc_reset(adev);
> +	adev->gfx.rlc.funcs->rlc_stop(adev);
> +	adev->gfx.rlc.funcs->rlc_reset(adev);
>   	gfx_v6_0_init_pg(adev);
>   	gfx_v6_0_init_cg(adev);
>   
> @@ -2578,7 +2578,7 @@ static int gfx_v6_0_rlc_resume(struct amdgpu_device *adev)
>   	WREG32(mmRLC_UCODE_ADDR, 0);
>   
>   	gfx_v6_0_enable_lbpw(adev, gfx_v6_0_lbpw_supported(adev));
> -	gfx_v6_0_rlc_start(adev);
> +	adev->gfx.rlc.funcs->rlc_start(adev);
>   
>   	return 0;
>   }
> @@ -3075,6 +3075,15 @@ static const struct amdgpu_gfx_funcs gfx_v6_0_gfx_funcs = {
>   	.select_me_pipe_q = &gfx_v6_0_select_me_pipe_q
>   };
>   
> +static const struct amdgpu_rlc_funcs gfx_v6_0_rlc_funcs = {
> +	.rlc_init = gfx_v6_0_rlc_init,
> +	.rlc_fini = gfx_v6_0_rlc_fini,
> +	.rlc_resume = gfx_v6_0_rlc_resume,
> +	.rlc_stop = gfx_v6_0_rlc_stop,
> +	.rlc_reset = gfx_v6_0_rlc_reset,
> +	.rlc_start = gfx_v6_0_rlc_start
> +};
> +
>   static int gfx_v6_0_early_init(void *handle)
>   {
>   	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> @@ -3082,6 +3091,7 @@ static int gfx_v6_0_early_init(void *handle)
>   	adev->gfx.num_gfx_rings = GFX6_NUM_GFX_RINGS;
>   	adev->gfx.num_compute_rings = GFX6_NUM_COMPUTE_RINGS;
>   	adev->gfx.funcs = &gfx_v6_0_gfx_funcs;
> +	adev->gfx.rlc.funcs = &gfx_v6_0_rlc_funcs;
>   	gfx_v6_0_set_ring_funcs(adev);
>   	gfx_v6_0_set_irq_funcs(adev);
>   
> @@ -3114,7 +3124,7 @@ static int gfx_v6_0_sw_init(void *handle)
>   		return r;
>   	}
>   
> -	r = gfx_v6_0_rlc_init(adev);
> +	r = adev->gfx.rlc.funcs->rlc_init(adev);
>   	if (r) {
>   		DRM_ERROR("Failed to init rlc BOs!\n");
>   		return r;
> @@ -3165,7 +3175,7 @@ static int gfx_v6_0_sw_fini(void *handle)
>   	for (i = 0; i < adev->gfx.num_compute_rings; i++)
>   		amdgpu_ring_fini(&adev->gfx.compute_ring[i]);
>   
> -	gfx_v6_0_rlc_fini(adev);
> +	adev->gfx.rlc.funcs->rlc_fini(adev);
>   
>   	return 0;
>   }
> @@ -3177,7 +3187,7 @@ static int gfx_v6_0_hw_init(void *handle)
>   
>   	gfx_v6_0_constants_init(adev);
>   
> -	r = gfx_v6_0_rlc_resume(adev);
> +	r = adev->gfx.rlc.funcs->rlc_resume(adev);
>   	if (r)
>   		return r;
>   
> @@ -3195,7 +3205,7 @@ static int gfx_v6_0_hw_fini(void *handle)
>   	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
>   
>   	gfx_v6_0_cp_enable(adev, false);
> -	gfx_v6_0_rlc_stop(adev);
> +	adev->gfx.rlc.funcs->rlc_stop(adev);
>   	gfx_v6_0_fini_pg(adev);
>   
>   	return 0;

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-10-10 12:05 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-10 11:42 [PATCH 0/5] RLC kernel code update for unified RLC function likun Gao
     [not found] ` <1539171776-8157-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
2018-10-10 11:42   ` [PATCH 1/5] drm/amdgpu/rlc: unify rlc function into structure likun Gao
     [not found]     ` <1539171776-8157-2-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
2018-10-10 12:04       ` Christian König
2018-10-10 11:42   ` [PATCH 2/5] drm/amdgpu/rlc: gfx_v6 change the method to call rlc function likun Gao
     [not found]     ` <1539171776-8157-3-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
2018-10-10 12:05       ` Christian König
2018-10-10 11:42   ` [PATCH 3/5] drm/amdgpu/rlc: gfx_v7 " likun Gao
2018-10-10 11:42   ` [PATCH 4/5] drm/amdgpu/rlc: gfx_v8 " likun Gao
2018-10-10 11:42   ` [PATCH 5/5] drm/amdgpu/rlc: gfx_v9 " likun Gao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.