* [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.