* [PATCH 02/11] drm/amdgpu: Optimize amdgpu_gfx_ras_late_init/amdgpu_gfx_ras_fini function code
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 5:56 ` [PATCH 03/11] drm/amdgpu: Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini " yipechai
` (9 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
Optimize amdgpu_gfx_ras_late_init/amdgpu_gfx_ras_fini function code.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 42 +++----------------------
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 6 ++++
2 files changed, 11 insertions(+), 37 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
index 43004822ec6f..fe392108b5c2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
@@ -625,26 +625,9 @@ int amdgpu_get_gfx_off_status(struct amdgpu_device *adev, uint32_t *value)
int amdgpu_gfx_ras_late_init(struct amdgpu_device *adev, void *ras_info)
{
int r;
- struct ras_fs_if fs_info = {
- .sysfs_name = "gfx_err_count",
- };
- struct ras_ih_if ih_info = {
- .cb = amdgpu_gfx_process_ras_data_cb,
- };
-
- if (!adev->gfx.ras_if) {
- adev->gfx.ras_if = kmalloc(sizeof(struct ras_common_if), GFP_KERNEL);
- if (!adev->gfx.ras_if)
- return -ENOMEM;
- adev->gfx.ras_if->block = AMDGPU_RAS_BLOCK__GFX;
- adev->gfx.ras_if->type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
- adev->gfx.ras_if->sub_block_index = 0;
- }
- fs_info.head = ih_info.head = *adev->gfx.ras_if;
- r = amdgpu_ras_late_init(adev, adev->gfx.ras_if,
- &fs_info, &ih_info);
+ r = amdgpu_ras_block_late_init(adev, adev->gfx.ras_if);
if (r)
- goto free;
+ return r;
if (amdgpu_ras_is_supported(adev, adev->gfx.ras_if->block)) {
if (!amdgpu_persistent_edc_harvesting_supported(adev))
@@ -653,34 +636,19 @@ int amdgpu_gfx_ras_late_init(struct amdgpu_device *adev, void *ras_info)
r = amdgpu_irq_get(adev, &adev->gfx.cp_ecc_error_irq, 0);
if (r)
goto late_fini;
- } else {
- /* free gfx ras_if if ras is not supported */
- r = 0;
- goto free;
}
return 0;
late_fini:
- amdgpu_ras_late_fini(adev, adev->gfx.ras_if, &ih_info);
-free:
- kfree(adev->gfx.ras_if);
- adev->gfx.ras_if = NULL;
+ amdgpu_ras_block_late_fini(adev, adev->gfx.ras_if);
return r;
}
void amdgpu_gfx_ras_fini(struct amdgpu_device *adev)
{
if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__GFX) &&
- adev->gfx.ras_if) {
- struct ras_common_if *ras_if = adev->gfx.ras_if;
- struct ras_ih_if ih_info = {
- .head = *ras_if,
- .cb = amdgpu_gfx_process_ras_data_cb,
- };
-
- amdgpu_ras_late_fini(adev, ras_if, &ih_info);
- kfree(ras_if);
- }
+ adev->gfx.ras_if)
+ amdgpu_ras_block_late_fini(adev, adev->gfx.ras_if);
}
int amdgpu_gfx_process_ras_data_cb(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index 0a291d2e5f91..0c3b3972c04e 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -2200,6 +2200,8 @@ static int gfx_v9_0_gpu_early_init(struct amdgpu_device *adev)
strcpy(adev->gfx.ras->ras_block.ras_comm.name, "gfx");
adev->gfx.ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__GFX;
+ adev->gfx.ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
+ adev->gfx.ras_if = &adev->gfx.ras->ras_block.ras_comm;
/* If not define special ras_late_init function, use gfx default ras_late_init */
if (!adev->gfx.ras->ras_block.ras_late_init)
@@ -2208,6 +2210,10 @@ static int gfx_v9_0_gpu_early_init(struct amdgpu_device *adev)
/* If not define special ras_fini function, use gfx default ras_fini */
if (!adev->gfx.ras->ras_block.ras_fini)
adev->gfx.ras->ras_block.ras_fini = amdgpu_gfx_ras_fini;
+
+ /* If not defined special ras_cb function, use default ras_cb */
+ if (!adev->gfx.ras->ras_block.ras_cb)
+ adev->gfx.ras->ras_block.ras_cb = amdgpu_gfx_process_ras_data_cb;
}
adev->gfx.config.gb_addr_config = gb_addr_config;
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 03/11] drm/amdgpu: Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
2022-02-09 5:56 ` [PATCH 02/11] drm/amdgpu: Optimize amdgpu_gfx_ras_late_init/amdgpu_gfx_ras_fini function code yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 8:54 ` Zhou1, Tao
2022-02-09 5:56 ` [PATCH 04/11] drm/amdgpu: Optimize amdgpu_mca_ras_late_init/amdgpu_mca_ras_fini " yipechai
` (8 subsequent siblings)
10 siblings, 1 reply; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c | 37 ++-----------------------
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 1 +
drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c | 1 +
3 files changed, 5 insertions(+), 34 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
index 518966a26130..21a5f884dd2a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
@@ -26,43 +26,12 @@
int amdgpu_hdp_ras_late_init(struct amdgpu_device *adev, void *ras_info)
{
- int r;
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
- struct ras_fs_if fs_info = {
- .sysfs_name = "hdp_err_count",
- };
-
- if (!adev->hdp.ras_if) {
- adev->hdp.ras_if = kmalloc(sizeof(struct ras_common_if), GFP_KERNEL);
- if (!adev->hdp.ras_if)
- return -ENOMEM;
- adev->hdp.ras_if->block = AMDGPU_RAS_BLOCK__HDP;
- adev->hdp.ras_if->type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
- adev->hdp.ras_if->sub_block_index = 0;
- }
- ih_info.head = fs_info.head = *adev->hdp.ras_if;
- r = amdgpu_ras_late_init(adev, adev->hdp.ras_if,
- &fs_info, &ih_info);
- if (r || !amdgpu_ras_is_supported(adev, adev->hdp.ras_if->block)) {
- kfree(adev->hdp.ras_if);
- adev->hdp.ras_if = NULL;
- }
-
- return r;
+ return amdgpu_ras_block_late_init(adev, adev->hdp.ras_if);
}
void amdgpu_hdp_ras_fini(struct amdgpu_device *adev)
{
if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__HDP) &&
- adev->hdp.ras_if) {
- struct ras_common_if *ras_if = adev->hdp.ras_if;
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
-
- amdgpu_ras_late_fini(adev, ras_if, &ih_info);
- kfree(ras_if);
- }
+ adev->hdp.ras_if)
+ amdgpu_ras_block_late_fini(adev, adev->hdp.ras_if);
}
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index af873c99d5e4..b12fe6703f02 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -1302,6 +1302,7 @@ static void gmc_v9_0_set_hdp_ras_funcs(struct amdgpu_device *adev)
{
adev->hdp.ras = &hdp_v4_0_ras;
amdgpu_ras_register_ras_block(adev, &adev->hdp.ras->ras_block);
+ adev->hdp.ras_if = &adev->hdp.ras->ras_block.ras_comm;
}
static void gmc_v9_0_set_mca_funcs(struct amdgpu_device *adev)
diff --git a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
index 503c292b321e..a9ed4232cdeb 100644
--- a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
@@ -160,6 +160,7 @@ struct amdgpu_hdp_ras hdp_v4_0_ras = {
.ras_comm = {
.name = "hdp",
.block = AMDGPU_RAS_BLOCK__HDP,
+ .type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
},
.hw_ops = &hdp_v4_0_ras_hw_ops,
.ras_late_init = amdgpu_hdp_ras_late_init,
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* RE: [PATCH 03/11] drm/amdgpu: Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
2022-02-09 5:56 ` [PATCH 03/11] drm/amdgpu: Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini " yipechai
@ 2022-02-09 8:54 ` Zhou1, Tao
2022-02-10 2:58 ` Chai, Thomas
0 siblings, 1 reply; 15+ messages in thread
From: Zhou1, Tao @ 2022-02-09 8:54 UTC (permalink / raw)
To: Chai, Thomas, amd-gfx; +Cc: Clements, John, Zhang, Hawking
[AMD Official Use Only]
> -----Original Message-----
> From: Chai, Thomas <YiPeng.Chai@amd.com>
> Sent: Wednesday, February 9, 2022 1:57 PM
> To: amd-gfx@lists.freedesktop.org
> Cc: Chai, Thomas <YiPeng.Chai@amd.com>; Zhang, Hawking
> <Hawking.Zhang@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Clements,
> John <John.Clements@amd.com>; Chai, Thomas <YiPeng.Chai@amd.com>
> Subject: [PATCH 03/11] drm/amdgpu: Optimize
> amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
>
> Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code.
>
> Signed-off-by: yipechai <YiPeng.Chai@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c | 37 ++-----------------------
> drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 1 +
> drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c | 1 +
> 3 files changed, 5 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> index 518966a26130..21a5f884dd2a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> @@ -26,43 +26,12 @@
>
> int amdgpu_hdp_ras_late_init(struct amdgpu_device *adev, void *ras_info) {
> - int r;
> - struct ras_ih_if ih_info = {
> - .cb = NULL,
> - };
> - struct ras_fs_if fs_info = {
> - .sysfs_name = "hdp_err_count",
> - };
> -
> - if (!adev->hdp.ras_if) {
> - adev->hdp.ras_if = kmalloc(sizeof(struct ras_common_if),
> GFP_KERNEL);
> - if (!adev->hdp.ras_if)
> - return -ENOMEM;
> - adev->hdp.ras_if->block = AMDGPU_RAS_BLOCK__HDP;
> - adev->hdp.ras_if->type =
> AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
> - adev->hdp.ras_if->sub_block_index = 0;
> - }
> - ih_info.head = fs_info.head = *adev->hdp.ras_if;
> - r = amdgpu_ras_late_init(adev, adev->hdp.ras_if,
> - &fs_info, &ih_info);
> - if (r || !amdgpu_ras_is_supported(adev, adev->hdp.ras_if->block)) {
> - kfree(adev->hdp.ras_if);
> - adev->hdp.ras_if = NULL;
> - }
> -
> - return r;
> + return amdgpu_ras_block_late_init(adev, adev->hdp.ras_if);
> }
>
> void amdgpu_hdp_ras_fini(struct amdgpu_device *adev) {
> if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__HDP) &&
> - adev->hdp.ras_if) {
> - struct ras_common_if *ras_if = adev->hdp.ras_if;
> - struct ras_ih_if ih_info = {
> - .cb = NULL,
> - };
> -
> - amdgpu_ras_late_fini(adev, ras_if, &ih_info);
> - kfree(ras_if);
> - }
> + adev->hdp.ras_if)
> + amdgpu_ras_block_late_fini(adev, adev->hdp.ras_if);
> }
[Tao]: Since hdp_ras_late_init/fini are simple wrapper, can we remove them and call amdgpu_ras_block_late_init/fini directly?
The same comment to other blocks.
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> index af873c99d5e4..b12fe6703f02 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> @@ -1302,6 +1302,7 @@ static void gmc_v9_0_set_hdp_ras_funcs(struct
> amdgpu_device *adev) {
> adev->hdp.ras = &hdp_v4_0_ras;
> amdgpu_ras_register_ras_block(adev, &adev->hdp.ras->ras_block);
> + adev->hdp.ras_if = &adev->hdp.ras->ras_block.ras_comm;
> }
>
> static void gmc_v9_0_set_mca_funcs(struct amdgpu_device *adev) diff --git
> a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> index 503c292b321e..a9ed4232cdeb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> @@ -160,6 +160,7 @@ struct amdgpu_hdp_ras hdp_v4_0_ras = {
> .ras_comm = {
> .name = "hdp",
> .block = AMDGPU_RAS_BLOCK__HDP,
> + .type =
> AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
> },
> .hw_ops = &hdp_v4_0_ras_hw_ops,
> .ras_late_init = amdgpu_hdp_ras_late_init,
> --
> 2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: [PATCH 03/11] drm/amdgpu: Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
2022-02-09 8:54 ` Zhou1, Tao
@ 2022-02-10 2:58 ` Chai, Thomas
2022-02-10 6:27 ` Zhou1, Tao
0 siblings, 1 reply; 15+ messages in thread
From: Chai, Thomas @ 2022-02-10 2:58 UTC (permalink / raw)
To: Zhou1, Tao, amd-gfx; +Cc: Clements, John, Zhang, Hawking
[AMD Official Use Only]
-----Original Message-----
From: Zhou1, Tao <Tao.Zhou1@amd.com>
Sent: Wednesday, February 9, 2022 4:54 PM
To: Chai, Thomas <YiPeng.Chai@amd.com>; amd-gfx@lists.freedesktop.org
Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Clements, John <John.Clements@amd.com>
Subject: RE: [PATCH 03/11] drm/amdgpu: Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
[AMD Official Use Only]
> -----Original Message-----
> From: Chai, Thomas <YiPeng.Chai@amd.com>
> Sent: Wednesday, February 9, 2022 1:57 PM
> To: amd-gfx@lists.freedesktop.org
> Cc: Chai, Thomas <YiPeng.Chai@amd.com>; Zhang, Hawking
> <Hawking.Zhang@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Clements,
> John <John.Clements@amd.com>; Chai, Thomas <YiPeng.Chai@amd.com>
> Subject: [PATCH 03/11] drm/amdgpu: Optimize
> amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
>
> Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code.
>
> Signed-off-by: yipechai <YiPeng.Chai@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c | 37 ++-----------------------
> drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 1 +
> drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c | 1 +
> 3 files changed, 5 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> index 518966a26130..21a5f884dd2a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> @@ -26,43 +26,12 @@
>
> int amdgpu_hdp_ras_late_init(struct amdgpu_device *adev, void *ras_info) {
> - int r;
> - struct ras_ih_if ih_info = {
> - .cb = NULL,
> - };
> - struct ras_fs_if fs_info = {
> - .sysfs_name = "hdp_err_count",
> - };
> -
> - if (!adev->hdp.ras_if) {
> - adev->hdp.ras_if = kmalloc(sizeof(struct ras_common_if),
> GFP_KERNEL);
> - if (!adev->hdp.ras_if)
> - return -ENOMEM;
> - adev->hdp.ras_if->block = AMDGPU_RAS_BLOCK__HDP;
> - adev->hdp.ras_if->type =
> AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
> - adev->hdp.ras_if->sub_block_index = 0;
> - }
> - ih_info.head = fs_info.head = *adev->hdp.ras_if;
> - r = amdgpu_ras_late_init(adev, adev->hdp.ras_if,
> - &fs_info, &ih_info);
> - if (r || !amdgpu_ras_is_supported(adev, adev->hdp.ras_if->block)) {
> - kfree(adev->hdp.ras_if);
> - adev->hdp.ras_if = NULL;
> - }
> -
> - return r;
> + return amdgpu_ras_block_late_init(adev, adev->hdp.ras_if);
> }
>
> void amdgpu_hdp_ras_fini(struct amdgpu_device *adev) {
> if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__HDP) &&
> - adev->hdp.ras_if) {
> - struct ras_common_if *ras_if = adev->hdp.ras_if;
> - struct ras_ih_if ih_info = {
> - .cb = NULL,
> - };
> -
> - amdgpu_ras_late_fini(adev, ras_if, &ih_info);
> - kfree(ras_if);
> - }
> + adev->hdp.ras_if)
> + amdgpu_ras_block_late_fini(adev, adev->hdp.ras_if);
> }
>[Tao]: Since hdp_ras_late_init/fini are simple wrapper, can we remove them and call amdgpu_ras_block_late_init/fini directly?
>The same comment to other blocks.
[Thomas] Compared with amdgpu_ras_block_late_init/fin, hdp_ras_late_init/fini have different function interface parameters.
But can do it as a new ticket later.
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> index af873c99d5e4..b12fe6703f02 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> @@ -1302,6 +1302,7 @@ static void gmc_v9_0_set_hdp_ras_funcs(struct
> amdgpu_device *adev) {
> adev->hdp.ras = &hdp_v4_0_ras;
> amdgpu_ras_register_ras_block(adev, &adev->hdp.ras->ras_block);
> + adev->hdp.ras_if = &adev->hdp.ras->ras_block.ras_comm;
> }
>
> static void gmc_v9_0_set_mca_funcs(struct amdgpu_device *adev) diff
> --git a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> index 503c292b321e..a9ed4232cdeb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> @@ -160,6 +160,7 @@ struct amdgpu_hdp_ras hdp_v4_0_ras = {
> .ras_comm = {
> .name = "hdp",
> .block = AMDGPU_RAS_BLOCK__HDP,
> + .type =
> AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
> },
> .hw_ops = &hdp_v4_0_ras_hw_ops,
> .ras_late_init = amdgpu_hdp_ras_late_init,
> --
> 2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: [PATCH 03/11] drm/amdgpu: Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
2022-02-10 2:58 ` Chai, Thomas
@ 2022-02-10 6:27 ` Zhou1, Tao
0 siblings, 0 replies; 15+ messages in thread
From: Zhou1, Tao @ 2022-02-10 6:27 UTC (permalink / raw)
To: Chai, Thomas, amd-gfx; +Cc: Clements, John, Zhang, Hawking
[AMD Official Use Only]
OK, if there is further refinement, the series is:
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
> -----Original Message-----
> From: Chai, Thomas <YiPeng.Chai@amd.com>
> Sent: Thursday, February 10, 2022 10:59 AM
> To: Zhou1, Tao <Tao.Zhou1@amd.com>; amd-gfx@lists.freedesktop.org
> Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Clements, John
> <John.Clements@amd.com>
> Subject: RE: [PATCH 03/11] drm/amdgpu: Optimize
> amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
>
> [AMD Official Use Only]
>
>
>
> -----Original Message-----
> From: Zhou1, Tao <Tao.Zhou1@amd.com>
> Sent: Wednesday, February 9, 2022 4:54 PM
> To: Chai, Thomas <YiPeng.Chai@amd.com>; amd-gfx@lists.freedesktop.org
> Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Clements, John
> <John.Clements@amd.com>
> Subject: RE: [PATCH 03/11] drm/amdgpu: Optimize
> amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
>
> [AMD Official Use Only]
>
>
>
> > -----Original Message-----
> > From: Chai, Thomas <YiPeng.Chai@amd.com>
> > Sent: Wednesday, February 9, 2022 1:57 PM
> > To: amd-gfx@lists.freedesktop.org
> > Cc: Chai, Thomas <YiPeng.Chai@amd.com>; Zhang, Hawking
> > <Hawking.Zhang@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Clements,
> > John <John.Clements@amd.com>; Chai, Thomas <YiPeng.Chai@amd.com>
> > Subject: [PATCH 03/11] drm/amdgpu: Optimize
> > amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code
> >
> > Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini function code.
> >
> > Signed-off-by: yipechai <YiPeng.Chai@amd.com>
> > ---
> > drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c | 37 ++-----------------------
> > drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 1 +
> > drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c | 1 +
> > 3 files changed, 5 insertions(+), 34 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> > b/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> > index 518966a26130..21a5f884dd2a 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.c
> > @@ -26,43 +26,12 @@
> >
> > int amdgpu_hdp_ras_late_init(struct amdgpu_device *adev, void *ras_info) {
> > - int r;
> > - struct ras_ih_if ih_info = {
> > - .cb = NULL,
> > - };
> > - struct ras_fs_if fs_info = {
> > - .sysfs_name = "hdp_err_count",
> > - };
> > -
> > - if (!adev->hdp.ras_if) {
> > - adev->hdp.ras_if = kmalloc(sizeof(struct ras_common_if),
> > GFP_KERNEL);
> > - if (!adev->hdp.ras_if)
> > - return -ENOMEM;
> > - adev->hdp.ras_if->block = AMDGPU_RAS_BLOCK__HDP;
> > - adev->hdp.ras_if->type =
> > AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
> > - adev->hdp.ras_if->sub_block_index = 0;
> > - }
> > - ih_info.head = fs_info.head = *adev->hdp.ras_if;
> > - r = amdgpu_ras_late_init(adev, adev->hdp.ras_if,
> > - &fs_info, &ih_info);
> > - if (r || !amdgpu_ras_is_supported(adev, adev->hdp.ras_if->block)) {
> > - kfree(adev->hdp.ras_if);
> > - adev->hdp.ras_if = NULL;
> > - }
> > -
> > - return r;
> > + return amdgpu_ras_block_late_init(adev, adev->hdp.ras_if);
> > }
> >
> > void amdgpu_hdp_ras_fini(struct amdgpu_device *adev) {
> > if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__HDP) &&
> > - adev->hdp.ras_if) {
> > - struct ras_common_if *ras_if = adev->hdp.ras_if;
> > - struct ras_ih_if ih_info = {
> > - .cb = NULL,
> > - };
> > -
> > - amdgpu_ras_late_fini(adev, ras_if, &ih_info);
> > - kfree(ras_if);
> > - }
> > + adev->hdp.ras_if)
> > + amdgpu_ras_block_late_fini(adev, adev->hdp.ras_if);
> > }
> >[Tao]: Since hdp_ras_late_init/fini are simple wrapper, can we remove them
> and call amdgpu_ras_block_late_init/fini directly?
> >The same comment to other blocks.
>
> [Thomas] Compared with amdgpu_ras_block_late_init/fin,
> hdp_ras_late_init/fini have different function interface parameters.
> But can do it as a new ticket later.
>
> > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> > b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> > index af873c99d5e4..b12fe6703f02 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> > @@ -1302,6 +1302,7 @@ static void gmc_v9_0_set_hdp_ras_funcs(struct
> > amdgpu_device *adev) {
> > adev->hdp.ras = &hdp_v4_0_ras;
> > amdgpu_ras_register_ras_block(adev, &adev->hdp.ras->ras_block);
> > + adev->hdp.ras_if = &adev->hdp.ras->ras_block.ras_comm;
> > }
> >
> > static void gmc_v9_0_set_mca_funcs(struct amdgpu_device *adev) diff
> > --git a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> > b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> > index 503c292b321e..a9ed4232cdeb 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> > @@ -160,6 +160,7 @@ struct amdgpu_hdp_ras hdp_v4_0_ras = {
> > .ras_comm = {
> > .name = "hdp",
> > .block = AMDGPU_RAS_BLOCK__HDP,
> > + .type =
> > AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
> > },
> > .hw_ops = &hdp_v4_0_ras_hw_ops,
> > .ras_late_init = amdgpu_hdp_ras_late_init,
> > --
> > 2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 04/11] drm/amdgpu: Optimize amdgpu_mca_ras_late_init/amdgpu_mca_ras_fini function code
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
2022-02-09 5:56 ` [PATCH 02/11] drm/amdgpu: Optimize amdgpu_gfx_ras_late_init/amdgpu_gfx_ras_fini function code yipechai
2022-02-09 5:56 ` [PATCH 03/11] drm/amdgpu: Optimize amdgpu_hdp_ras_late_init/amdgpu_hdp_ras_fini " yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 5:56 ` [PATCH 05/11] drm/amdgpu: Optimize amdgpu_mmhub_ras_late_init/amdgpu_mmhub_ras_fini " yipechai
` (7 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
Optimize amdgpu_mca_ras_late_init/amdgpu_mca_ras_fini function code.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c | 41 ++-----------------------
drivers/gpu/drm/amd/amdgpu/mca_v3_0.c | 6 ++++
2 files changed, 8 insertions(+), 39 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
index ad057d6b2c77..1c77fe7e9e68 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
@@ -74,48 +74,11 @@ void amdgpu_mca_query_ras_error_count(struct amdgpu_device *adev,
int amdgpu_mca_ras_late_init(struct amdgpu_device *adev,
struct amdgpu_mca_ras *mca_dev)
{
- char sysfs_name[32] = {0};
- int r;
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
- struct ras_fs_if fs_info= {
- .sysfs_name = sysfs_name,
- };
-
- snprintf(sysfs_name, sizeof(sysfs_name), "%s_err_count",
- mca_dev->ras->ras_block.ras_comm.name);
-
- if (!mca_dev->ras_if) {
- mca_dev->ras_if = kmalloc(sizeof(struct ras_common_if), GFP_KERNEL);
- if (!mca_dev->ras_if)
- return -ENOMEM;
- mca_dev->ras_if->block = mca_dev->ras->ras_block.ras_comm.block;
- mca_dev->ras_if->sub_block_index = mca_dev->ras->ras_block.ras_comm.sub_block_index;
- mca_dev->ras_if->type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
- }
- ih_info.head = fs_info.head = *mca_dev->ras_if;
- r = amdgpu_ras_late_init(adev, mca_dev->ras_if,
- &fs_info, &ih_info);
- if (r || !amdgpu_ras_is_supported(adev, mca_dev->ras_if->block)) {
- kfree(mca_dev->ras_if);
- mca_dev->ras_if = NULL;
- }
-
- return r;
+ return amdgpu_ras_block_late_init(adev, mca_dev->ras_if);
}
void amdgpu_mca_ras_fini(struct amdgpu_device *adev,
struct amdgpu_mca_ras *mca_dev)
{
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
-
- if (!mca_dev->ras_if)
- return;
-
- amdgpu_ras_late_fini(adev, mca_dev->ras_if, &ih_info);
- kfree(mca_dev->ras_if);
- mca_dev->ras_if = NULL;
+ amdgpu_ras_block_late_fini(adev, mca_dev->ras_if);
}
\ No newline at end of file
diff --git a/drivers/gpu/drm/amd/amdgpu/mca_v3_0.c b/drivers/gpu/drm/amd/amdgpu/mca_v3_0.c
index 386416378a82..a307f336f7ab 100644
--- a/drivers/gpu/drm/amd/amdgpu/mca_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/mca_v3_0.c
@@ -71,6 +71,7 @@ struct amdgpu_mca_ras_block mca_v3_0_mp0_ras = {
.ras_comm = {
.block = AMDGPU_RAS_BLOCK__MCA,
.sub_block_index = AMDGPU_RAS_MCA_BLOCK__MP0,
+ .type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
.name = "mp0",
},
.hw_ops = &mca_v3_0_mp0_hw_ops,
@@ -108,6 +109,7 @@ struct amdgpu_mca_ras_block mca_v3_0_mp1_ras = {
.ras_comm = {
.block = AMDGPU_RAS_BLOCK__MCA,
.sub_block_index = AMDGPU_RAS_MCA_BLOCK__MP1,
+ .type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
.name = "mp1",
},
.hw_ops = &mca_v3_0_mp1_hw_ops,
@@ -145,6 +147,7 @@ struct amdgpu_mca_ras_block mca_v3_0_mpio_ras = {
.ras_comm = {
.block = AMDGPU_RAS_BLOCK__MCA,
.sub_block_index = AMDGPU_RAS_MCA_BLOCK__MPIO,
+ .type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
.name = "mpio",
},
.hw_ops = &mca_v3_0_mpio_hw_ops,
@@ -165,6 +168,9 @@ static void mca_v3_0_init(struct amdgpu_device *adev)
amdgpu_ras_register_ras_block(adev, &mca->mp0.ras->ras_block);
amdgpu_ras_register_ras_block(adev, &mca->mp1.ras->ras_block);
amdgpu_ras_register_ras_block(adev, &mca->mpio.ras->ras_block);
+ mca->mp0.ras_if = &mca_v3_0_mp0_ras.ras_block.ras_comm;
+ mca->mp1.ras_if = &mca_v3_0_mp1_ras.ras_block.ras_comm;
+ mca->mpio.ras_if = &mca_v3_0_mpio_ras.ras_block.ras_comm;
}
const struct amdgpu_mca_funcs mca_v3_0_funcs = {
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 05/11] drm/amdgpu: Optimize amdgpu_mmhub_ras_late_init/amdgpu_mmhub_ras_fini function code
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
` (2 preceding siblings ...)
2022-02-09 5:56 ` [PATCH 04/11] drm/amdgpu: Optimize amdgpu_mca_ras_late_init/amdgpu_mca_ras_fini " yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 5:56 ` [PATCH 06/11] drm/amdgpu: Optimize amdgpu_nbio_ras_late_init/amdgpu_nbio_ras_fini " yipechai
` (6 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
Optimize amdgpu_mmhub_ras_late_init/amdgpu_mmhub_ras_fini function code.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c | 37 ++---------------------
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 2 ++
2 files changed, 5 insertions(+), 34 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c
index f9b5472a75d7..2bdb4d8b7955 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c
@@ -26,43 +26,12 @@
int amdgpu_mmhub_ras_late_init(struct amdgpu_device *adev, void *ras_info)
{
- int r;
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
- struct ras_fs_if fs_info = {
- .sysfs_name = "mmhub_err_count",
- };
-
- if (!adev->mmhub.ras_if) {
- adev->mmhub.ras_if = kmalloc(sizeof(struct ras_common_if), GFP_KERNEL);
- if (!adev->mmhub.ras_if)
- return -ENOMEM;
- adev->mmhub.ras_if->block = AMDGPU_RAS_BLOCK__MMHUB;
- adev->mmhub.ras_if->type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
- adev->mmhub.ras_if->sub_block_index = 0;
- }
- ih_info.head = fs_info.head = *adev->mmhub.ras_if;
- r = amdgpu_ras_late_init(adev, adev->mmhub.ras_if,
- &fs_info, &ih_info);
- if (r || !amdgpu_ras_is_supported(adev, adev->mmhub.ras_if->block)) {
- kfree(adev->mmhub.ras_if);
- adev->mmhub.ras_if = NULL;
- }
-
- return r;
+ return amdgpu_ras_block_late_init(adev, adev->mmhub.ras_if);
}
void amdgpu_mmhub_ras_fini(struct amdgpu_device *adev)
{
if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__MMHUB) &&
- adev->mmhub.ras_if) {
- struct ras_common_if *ras_if = adev->mmhub.ras_if;
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
-
- amdgpu_ras_late_fini(adev, ras_if, &ih_info);
- kfree(ras_if);
- }
+ adev->mmhub.ras_if)
+ amdgpu_ras_block_late_fini(adev, adev->mmhub.ras_if);
}
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index b12fe6703f02..15958fd45f64 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -1282,6 +1282,8 @@ static void gmc_v9_0_set_mmhub_ras_funcs(struct amdgpu_device *adev)
strcpy(adev->mmhub.ras->ras_block.ras_comm.name, "mmhub");
adev->mmhub.ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__MMHUB;
+ adev->mmhub.ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
+ adev->mmhub.ras_if = &adev->mmhub.ras->ras_block.ras_comm;
/* If don't define special ras_late_init function, use default ras_late_init */
if (!adev->mmhub.ras->ras_block.ras_late_init)
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 06/11] drm/amdgpu: Optimize amdgpu_nbio_ras_late_init/amdgpu_nbio_ras_fini function code
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
` (3 preceding siblings ...)
2022-02-09 5:56 ` [PATCH 05/11] drm/amdgpu: Optimize amdgpu_mmhub_ras_late_init/amdgpu_mmhub_ras_fini " yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 5:56 ` [PATCH 07/11] drm/amdgpu: Optimize amdgpu_sdma_ras_late_init/amdgpu_sdma_ras_fini " yipechai
` (5 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
Optimize amdgpu_nbio_ras_late_init/amdgpu_nbio_ras_fini function code.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c | 40 +++---------------------
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 1 +
drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 1 +
3 files changed, 7 insertions(+), 35 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c
index 6ace2e390e77..89e61fdd3580 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c
@@ -25,26 +25,9 @@
int amdgpu_nbio_ras_late_init(struct amdgpu_device *adev, void *ras_info)
{
int r;
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
- struct ras_fs_if fs_info = {
- .sysfs_name = "pcie_bif_err_count",
- };
-
- if (!adev->nbio.ras_if) {
- adev->nbio.ras_if = kmalloc(sizeof(struct ras_common_if), GFP_KERNEL);
- if (!adev->nbio.ras_if)
- return -ENOMEM;
- adev->nbio.ras_if->block = AMDGPU_RAS_BLOCK__PCIE_BIF;
- adev->nbio.ras_if->type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
- adev->nbio.ras_if->sub_block_index = 0;
- }
- ih_info.head = fs_info.head = *adev->nbio.ras_if;
- r = amdgpu_ras_late_init(adev, adev->nbio.ras_if,
- &fs_info, &ih_info);
+ r = amdgpu_ras_block_late_init(adev, adev->nbio.ras_if);
if (r)
- goto free;
+ return r;
if (amdgpu_ras_is_supported(adev, adev->nbio.ras_if->block)) {
r = amdgpu_irq_get(adev, &adev->nbio.ras_controller_irq, 0);
@@ -53,30 +36,17 @@ int amdgpu_nbio_ras_late_init(struct amdgpu_device *adev, void *ras_info)
r = amdgpu_irq_get(adev, &adev->nbio.ras_err_event_athub_irq, 0);
if (r)
goto late_fini;
- } else {
- r = 0;
- goto free;
}
return 0;
late_fini:
- amdgpu_ras_late_fini(adev, adev->nbio.ras_if, &ih_info);
-free:
- kfree(adev->nbio.ras_if);
- adev->nbio.ras_if = NULL;
+ amdgpu_ras_block_late_fini(adev, adev->nbio.ras_if);
return r;
}
void amdgpu_nbio_ras_fini(struct amdgpu_device *adev)
{
if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__PCIE_BIF) &&
- adev->nbio.ras_if) {
- struct ras_common_if *ras_if = adev->nbio.ras_if;
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
-
- amdgpu_ras_late_fini(adev, ras_if, &ih_info);
- kfree(ras_if);
- }
+ adev->nbio.ras_if)
+ amdgpu_ras_block_late_fini(adev, adev->nbio.ras_if);
}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index b7aed19db7e9..8a76a4e07659 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -2301,6 +2301,7 @@ int amdgpu_ras_init(struct amdgpu_device *adev)
if (!adev->gmc.xgmi.connected_to_cpu) {
adev->nbio.ras = &nbio_v7_4_ras;
amdgpu_ras_register_ras_block(adev, &adev->nbio.ras->ras_block);
+ adev->nbio.ras_if = &adev->nbio.ras->ras_block.ras_comm;
}
break;
default:
diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
index c7cca87f1647..14768570c298 100644
--- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
@@ -667,6 +667,7 @@ struct amdgpu_nbio_ras nbio_v7_4_ras = {
.ras_comm = {
.name = "pcie_bif",
.block = AMDGPU_RAS_BLOCK__PCIE_BIF,
+ .type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
},
.hw_ops = &nbio_v7_4_ras_hw_ops,
.ras_late_init = amdgpu_nbio_ras_late_init,
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 07/11] drm/amdgpu: Optimize amdgpu_sdma_ras_late_init/amdgpu_sdma_ras_fini function code
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
` (4 preceding siblings ...)
2022-02-09 5:56 ` [PATCH 06/11] drm/amdgpu: Optimize amdgpu_nbio_ras_late_init/amdgpu_nbio_ras_fini " yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 5:56 ` [PATCH 08/11] drm/amdgpu: Optimize amdgpu_umc_ras_late_init/amdgpu_umc_ras_fini " yipechai
` (4 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
Optimize amdgpu_sdma_ras_late_init/amdgpu_sdma_ras_fini function code.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 46 +++---------------------
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 12 ++++---
2 files changed, 13 insertions(+), 45 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c
index 65debb65a5df..242a7b4dcad9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c
@@ -90,28 +90,10 @@ int amdgpu_sdma_ras_late_init(struct amdgpu_device *adev,
void *ras_ih_info)
{
int r, i;
- struct ras_ih_if *ih_info = (struct ras_ih_if *)ras_ih_info;
- struct ras_fs_if fs_info = {
- .sysfs_name = "sdma_err_count",
- };
-
- if (!ih_info)
- return -EINVAL;
- if (!adev->sdma.ras_if) {
- adev->sdma.ras_if = kmalloc(sizeof(struct ras_common_if), GFP_KERNEL);
- if (!adev->sdma.ras_if)
- return -ENOMEM;
- adev->sdma.ras_if->block = AMDGPU_RAS_BLOCK__SDMA;
- adev->sdma.ras_if->type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
- adev->sdma.ras_if->sub_block_index = 0;
- }
- fs_info.head = ih_info->head = *adev->sdma.ras_if;
-
- r = amdgpu_ras_late_init(adev, adev->sdma.ras_if,
- &fs_info, ih_info);
+ r = amdgpu_ras_block_late_init(adev, adev->sdma.ras_if);
if (r)
- goto free;
+ return r;
if (amdgpu_ras_is_supported(adev, adev->sdma.ras_if->block)) {
for (i = 0; i < adev->sdma.num_instances; i++) {
@@ -120,38 +102,20 @@ int amdgpu_sdma_ras_late_init(struct amdgpu_device *adev,
if (r)
goto late_fini;
}
- } else {
- r = 0;
- goto free;
}
return 0;
late_fini:
- amdgpu_ras_late_fini(adev, adev->sdma.ras_if, ih_info);
-free:
- kfree(adev->sdma.ras_if);
- adev->sdma.ras_if = NULL;
+ amdgpu_ras_block_late_fini(adev, adev->sdma.ras_if);
return r;
}
void amdgpu_sdma_ras_fini(struct amdgpu_device *adev)
{
if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__SDMA) &&
- adev->sdma.ras_if) {
- struct ras_common_if *ras_if = adev->sdma.ras_if;
- struct ras_ih_if ih_info = {
- .head = *ras_if,
- /* the cb member will not be used by
- * amdgpu_ras_interrupt_remove_handler, init it only
- * to cheat the check in ras_late_fini
- */
- .cb = amdgpu_sdma_process_ras_data_cb,
- };
-
- amdgpu_ras_late_fini(adev, ras_if, &ih_info);
- kfree(ras_if);
- }
+ adev->sdma.ras_if)
+ amdgpu_ras_block_late_fini(adev, adev->sdma.ras_if);
}
int amdgpu_sdma_process_ras_data_cb(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index 8b0a8587dd36..82a31dfa8c21 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -1885,9 +1885,6 @@ static int sdma_v4_0_process_ras_data_cb(struct amdgpu_device *adev,
static int sdma_v4_0_late_init(void *handle)
{
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
- struct ras_ih_if ih_info = {
- .cb = sdma_v4_0_process_ras_data_cb,
- };
sdma_v4_0_setup_ulv(adev);
@@ -1898,7 +1895,7 @@ static int sdma_v4_0_late_init(void *handle)
}
if (adev->sdma.ras && adev->sdma.ras->ras_block.ras_late_init)
- return adev->sdma.ras->ras_block.ras_late_init(adev, &ih_info);
+ return adev->sdma.ras->ras_block.ras_late_init(adev, NULL);
else
return 0;
}
@@ -2794,6 +2791,7 @@ const struct amdgpu_ras_block_hw_ops sdma_v4_0_ras_hw_ops = {
static struct amdgpu_sdma_ras sdma_v4_0_ras = {
.ras_block = {
.hw_ops = &sdma_v4_0_ras_hw_ops,
+ .ras_cb = sdma_v4_0_process_ras_data_cb,
},
};
@@ -2816,6 +2814,8 @@ static void sdma_v4_0_set_ras_funcs(struct amdgpu_device *adev)
strcpy(adev->sdma.ras->ras_block.ras_comm.name, "sdma");
adev->sdma.ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__SDMA;
+ adev->sdma.ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
+ adev->sdma.ras_if = &adev->sdma.ras->ras_block.ras_comm;
/* If don't define special ras_late_init function, use default ras_late_init */
if (!adev->sdma.ras->ras_block.ras_late_init)
@@ -2824,6 +2824,10 @@ static void sdma_v4_0_set_ras_funcs(struct amdgpu_device *adev)
/* If don't define special ras_fini function, use default ras_fini */
if (!adev->sdma.ras->ras_block.ras_fini)
adev->sdma.ras->ras_block.ras_fini = amdgpu_sdma_ras_fini;
+
+ /* If not defined special ras_cb function, use default ras_cb */
+ if (!adev->sdma.ras->ras_block.ras_cb)
+ adev->sdma.ras->ras_block.ras_cb = amdgpu_sdma_process_ras_data_cb;
}
}
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 08/11] drm/amdgpu: Optimize amdgpu_umc_ras_late_init/amdgpu_umc_ras_fini function code
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
` (5 preceding siblings ...)
2022-02-09 5:56 ` [PATCH 07/11] drm/amdgpu: Optimize amdgpu_sdma_ras_late_init/amdgpu_sdma_ras_fini " yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 5:56 ` [PATCH 09/11] drm/amdgpu: Optimize amdgpu_xgmi_ras_late_init/amdgpu_xgmi_ras_fini " yipechai
` (3 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
Optimize amdgpu_umc_ras_late_init/amdgpu_umc_ras_fini function code.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | 44 ++++---------------------
drivers/gpu/drm/amd/amdgpu/amdgpu_umc.h | 4 +++
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 6 ++++
3 files changed, 16 insertions(+), 38 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c
index ff7805beda38..9f1406e1a48a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c
@@ -129,7 +129,7 @@ int amdgpu_umc_poison_handler(struct amdgpu_device *adev,
return ret;
}
-static int amdgpu_umc_process_ras_data_cb(struct amdgpu_device *adev,
+int amdgpu_umc_process_ras_data_cb(struct amdgpu_device *adev,
void *ras_error_status,
struct amdgpu_iv_entry *entry)
{
@@ -139,36 +139,15 @@ static int amdgpu_umc_process_ras_data_cb(struct amdgpu_device *adev,
int amdgpu_umc_ras_late_init(struct amdgpu_device *adev, void *ras_info)
{
int r;
- struct ras_fs_if fs_info = {
- .sysfs_name = "umc_err_count",
- };
- struct ras_ih_if ih_info = {
- .cb = amdgpu_umc_process_ras_data_cb,
- };
- if (!adev->umc.ras_if) {
- adev->umc.ras_if =
- kmalloc(sizeof(struct ras_common_if), GFP_KERNEL);
- if (!adev->umc.ras_if)
- return -ENOMEM;
- adev->umc.ras_if->block = AMDGPU_RAS_BLOCK__UMC;
- adev->umc.ras_if->type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
- adev->umc.ras_if->sub_block_index = 0;
- }
- ih_info.head = fs_info.head = *adev->umc.ras_if;
-
- r = amdgpu_ras_late_init(adev, adev->umc.ras_if,
- &fs_info, &ih_info);
+ r = amdgpu_ras_block_late_init(adev, adev->umc.ras_if);
if (r)
- goto free;
+ return r;
if (amdgpu_ras_is_supported(adev, adev->umc.ras_if->block)) {
r = amdgpu_irq_get(adev, &adev->gmc.ecc_irq, 0);
if (r)
goto late_fini;
- } else {
- r = 0;
- goto free;
}
/* ras init of specific umc version */
@@ -179,26 +158,15 @@ int amdgpu_umc_ras_late_init(struct amdgpu_device *adev, void *ras_info)
return 0;
late_fini:
- amdgpu_ras_late_fini(adev, adev->umc.ras_if, &ih_info);
-free:
- kfree(adev->umc.ras_if);
- adev->umc.ras_if = NULL;
+ amdgpu_ras_block_late_fini(adev, adev->umc.ras_if);
return r;
}
void amdgpu_umc_ras_fini(struct amdgpu_device *adev)
{
if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__UMC) &&
- adev->umc.ras_if) {
- struct ras_common_if *ras_if = adev->umc.ras_if;
- struct ras_ih_if ih_info = {
- .head = *ras_if,
- .cb = amdgpu_umc_process_ras_data_cb,
- };
-
- amdgpu_ras_late_fini(adev, ras_if, &ih_info);
- kfree(ras_if);
- }
+ adev->umc.ras_if)
+ amdgpu_ras_block_late_fini(adev, adev->umc.ras_if);
}
int amdgpu_umc_process_ecc_irq(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.h
index 4db0526d0be4..ec15b3640399 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.h
@@ -85,4 +85,8 @@ void amdgpu_umc_fill_error_record(struct ras_err_data *err_data,
uint64_t retired_page,
uint32_t channel_index,
uint32_t umc_inst);
+
+int amdgpu_umc_process_ras_data_cb(struct amdgpu_device *adev,
+ void *ras_error_status,
+ struct amdgpu_iv_entry *entry);
#endif
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index 15958fd45f64..94095b965e2c 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -1234,6 +1234,8 @@ static void gmc_v9_0_set_umc_funcs(struct amdgpu_device *adev)
strcpy(adev->umc.ras->ras_block.ras_comm.name, "umc");
adev->umc.ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__UMC;
+ adev->umc.ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
+ adev->umc.ras_if = &adev->umc.ras->ras_block.ras_comm;
/* If don't define special ras_late_init function, use default ras_late_init */
if (!adev->umc.ras->ras_block.ras_late_init)
@@ -1242,6 +1244,10 @@ static void gmc_v9_0_set_umc_funcs(struct amdgpu_device *adev)
/* If don't define special ras_fini function, use default ras_fini */
if (!adev->umc.ras->ras_block.ras_fini)
adev->umc.ras->ras_block.ras_fini = amdgpu_umc_ras_fini;
+
+ /* If not defined special ras_cb function, use default ras_cb */
+ if (!adev->umc.ras->ras_block.ras_cb)
+ adev->umc.ras->ras_block.ras_cb = amdgpu_umc_process_ras_data_cb;
}
}
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 09/11] drm/amdgpu: Optimize amdgpu_xgmi_ras_late_init/amdgpu_xgmi_ras_fini function code
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
` (6 preceding siblings ...)
2022-02-09 5:56 ` [PATCH 08/11] drm/amdgpu: Optimize amdgpu_umc_ras_late_init/amdgpu_umc_ras_fini " yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 5:56 ` [PATCH 10/11] drm/amdgpu: Optimize operating sysfs and interrupt function interface in amdgpu_ras.c yipechai
` (2 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
Optimize amdgpu_xgmi_ras_late_init/amdgpu_xgmi_ras_fini function code.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 1 +
drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 40 +++---------------------
2 files changed, 6 insertions(+), 35 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
index d426de48d299..956cc994ca7d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
@@ -441,6 +441,7 @@ int amdgpu_gmc_ras_early_init(struct amdgpu_device *adev)
if (!adev->gmc.xgmi.connected_to_cpu) {
adev->gmc.xgmi.ras = &xgmi_ras;
amdgpu_ras_register_ras_block(adev, &adev->gmc.xgmi.ras->ras_block);
+ adev->gmc.xgmi.ras_if = &adev->gmc.xgmi.ras->ras_block.ras_comm;
}
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
index 15707af89212..a785b1e088cd 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
@@ -734,51 +734,20 @@ int amdgpu_xgmi_remove_device(struct amdgpu_device *adev)
static int amdgpu_xgmi_ras_late_init(struct amdgpu_device *adev, void *ras_info)
{
- int r;
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
- struct ras_fs_if fs_info = {
- .sysfs_name = "xgmi_wafl_err_count",
- };
-
if (!adev->gmc.xgmi.supported ||
adev->gmc.xgmi.num_physical_nodes == 0)
return 0;
adev->gmc.xgmi.ras->ras_block.hw_ops->reset_ras_error_count(adev);
- if (!adev->gmc.xgmi.ras_if) {
- adev->gmc.xgmi.ras_if = kmalloc(sizeof(struct ras_common_if), GFP_KERNEL);
- if (!adev->gmc.xgmi.ras_if)
- return -ENOMEM;
- adev->gmc.xgmi.ras_if->block = AMDGPU_RAS_BLOCK__XGMI_WAFL;
- adev->gmc.xgmi.ras_if->type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
- adev->gmc.xgmi.ras_if->sub_block_index = 0;
- }
- ih_info.head = fs_info.head = *adev->gmc.xgmi.ras_if;
- r = amdgpu_ras_late_init(adev, adev->gmc.xgmi.ras_if,
- &fs_info, &ih_info);
- if (r || !amdgpu_ras_is_supported(adev, adev->gmc.xgmi.ras_if->block)) {
- kfree(adev->gmc.xgmi.ras_if);
- adev->gmc.xgmi.ras_if = NULL;
- }
-
- return r;
+ return amdgpu_ras_block_late_init(adev, adev->gmc.xgmi.ras_if);
}
static void amdgpu_xgmi_ras_fini(struct amdgpu_device *adev)
{
if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__XGMI_WAFL) &&
- adev->gmc.xgmi.ras_if) {
- struct ras_common_if *ras_if = adev->gmc.xgmi.ras_if;
- struct ras_ih_if ih_info = {
- .cb = NULL,
- };
-
- amdgpu_ras_late_fini(adev, ras_if, &ih_info);
- kfree(ras_if);
- }
+ adev->gmc.xgmi.ras_if)
+ amdgpu_ras_block_late_fini(adev, adev->gmc.xgmi.ras_if);
}
uint64_t amdgpu_xgmi_get_relative_phy_addr(struct amdgpu_device *adev,
@@ -982,8 +951,9 @@ struct amdgpu_ras_block_hw_ops xgmi_ras_hw_ops = {
struct amdgpu_xgmi_ras xgmi_ras = {
.ras_block = {
.ras_comm = {
- .name = "xgmi",
+ .name = "xgmi_wafl",
.block = AMDGPU_RAS_BLOCK__XGMI_WAFL,
+ .type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE,
},
.hw_ops = &xgmi_ras_hw_ops,
.ras_late_init = amdgpu_xgmi_ras_late_init,
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 10/11] drm/amdgpu: Optimize operating sysfs and interrupt function interface in amdgpu_ras.c
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
` (7 preceding siblings ...)
2022-02-09 5:56 ` [PATCH 09/11] drm/amdgpu: Optimize amdgpu_xgmi_ras_late_init/amdgpu_xgmi_ras_fini " yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 5:56 ` [PATCH 11/11] drm/amdgpu: Merge amdgpu_ras_late_init/amdgpu_ras_late_fini to amdgpu_ras_block_late_init/amdgpu_ras_block_late_fini yipechai
2022-02-09 8:54 ` [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block Zhou1, Tao
10 siblings, 0 replies; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
In order to reduce redundant struct conversion, modify
operating sysfs and interrupt function interface parameters.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 37 ++++++++++++-------------
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 6 ++--
2 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index 8a76a4e07659..9f8f596663ab 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -1276,18 +1276,17 @@ static int amdgpu_ras_sysfs_remove_feature_node(struct amdgpu_device *adev)
}
int amdgpu_ras_sysfs_create(struct amdgpu_device *adev,
- struct ras_fs_if *head)
+ struct ras_common_if *head)
{
- struct ras_manager *obj = amdgpu_ras_find_obj(adev, &head->head);
+ struct ras_manager *obj = amdgpu_ras_find_obj(adev, head);
if (!obj || obj->attr_inuse)
return -EINVAL;
get_obj(obj);
- memcpy(obj->fs_data.sysfs_name,
- head->sysfs_name,
- sizeof(obj->fs_data.sysfs_name));
+ snprintf(obj->fs_data.sysfs_name, sizeof(obj->fs_data.sysfs_name),
+ "%s_err_count", head->name);
obj->sysfs_attr = (struct device_attribute){
.attr = {
@@ -1594,9 +1593,9 @@ int amdgpu_ras_interrupt_dispatch(struct amdgpu_device *adev,
}
int amdgpu_ras_interrupt_remove_handler(struct amdgpu_device *adev,
- struct ras_ih_if *info)
+ struct ras_common_if *head)
{
- struct ras_manager *obj = amdgpu_ras_find_obj(adev, &info->head);
+ struct ras_manager *obj = amdgpu_ras_find_obj(adev, head);
struct ras_ih_data *data;
if (!obj)
@@ -1616,24 +1615,27 @@ int amdgpu_ras_interrupt_remove_handler(struct amdgpu_device *adev,
}
int amdgpu_ras_interrupt_add_handler(struct amdgpu_device *adev,
- struct ras_ih_if *info)
+ struct ras_common_if *head)
{
- struct ras_manager *obj = amdgpu_ras_find_obj(adev, &info->head);
+ struct ras_manager *obj = amdgpu_ras_find_obj(adev, head);
struct ras_ih_data *data;
+ struct amdgpu_ras_block_object *ras_obj;
if (!obj) {
/* in case we registe the IH before enable ras feature */
- obj = amdgpu_ras_create_obj(adev, &info->head);
+ obj = amdgpu_ras_create_obj(adev, head);
if (!obj)
return -EINVAL;
} else
get_obj(obj);
+ ras_obj = container_of(head, struct amdgpu_ras_block_object, ras_comm);
+
data = &obj->ih_data;
/* add the callback.etc */
*data = (struct ras_ih_data) {
.inuse = 0,
- .cb = info->cb,
+ .cb = ras_obj->ras_cb,
.element_size = sizeof(struct amdgpu_iv_entry),
.rptr = 0,
.wptr = 0,
@@ -1662,10 +1664,7 @@ static int amdgpu_ras_interrupt_remove_all(struct amdgpu_device *adev)
struct ras_manager *obj, *tmp;
list_for_each_entry_safe(obj, tmp, &con->head, node) {
- struct ras_ih_if info = {
- .head = obj->head,
- };
- amdgpu_ras_interrupt_remove_handler(adev, &info);
+ amdgpu_ras_interrupt_remove_handler(adev, &obj->head);
}
return 0;
@@ -2431,12 +2430,12 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev,
return 0;
if (ih_info->cb) {
- r = amdgpu_ras_interrupt_add_handler(adev, ih_info);
+ r = amdgpu_ras_interrupt_add_handler(adev, ras_block);
if (r)
goto interrupt;
}
- r = amdgpu_ras_sysfs_create(adev, fs_info);
+ r = amdgpu_ras_sysfs_create(adev, ras_block);
if (r)
goto sysfs;
@@ -2452,7 +2451,7 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev,
amdgpu_ras_sysfs_remove(adev, ras_block);
sysfs:
if (ih_info->cb)
- amdgpu_ras_interrupt_remove_handler(adev, ih_info);
+ amdgpu_ras_interrupt_remove_handler(adev, ras_block);
interrupt:
amdgpu_ras_feature_enable(adev, ras_block, 0);
return r;
@@ -2485,7 +2484,7 @@ void amdgpu_ras_late_fini(struct amdgpu_device *adev,
amdgpu_ras_sysfs_remove(adev, ras_block);
if (ih_info->cb)
- amdgpu_ras_interrupt_remove_handler(adev, ih_info);
+ amdgpu_ras_interrupt_remove_handler(adev, &ih_info->head);
}
void amdgpu_ras_block_late_fini(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
index 8b94b556baf6..ae8741ac526f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
@@ -619,7 +619,7 @@ int amdgpu_ras_feature_enable_on_boot(struct amdgpu_device *adev,
struct ras_common_if *head, bool enable);
int amdgpu_ras_sysfs_create(struct amdgpu_device *adev,
- struct ras_fs_if *head);
+ struct ras_common_if *head);
int amdgpu_ras_sysfs_remove(struct amdgpu_device *adev,
struct ras_common_if *head);
@@ -636,10 +636,10 @@ int amdgpu_ras_error_inject(struct amdgpu_device *adev,
struct ras_inject_if *info);
int amdgpu_ras_interrupt_add_handler(struct amdgpu_device *adev,
- struct ras_ih_if *info);
+ struct ras_common_if *head);
int amdgpu_ras_interrupt_remove_handler(struct amdgpu_device *adev,
- struct ras_ih_if *info);
+ struct ras_common_if *head);
int amdgpu_ras_interrupt_dispatch(struct amdgpu_device *adev,
struct ras_dispatch_if *info);
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 11/11] drm/amdgpu: Merge amdgpu_ras_late_init/amdgpu_ras_late_fini to amdgpu_ras_block_late_init/amdgpu_ras_block_late_fini
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
` (8 preceding siblings ...)
2022-02-09 5:56 ` [PATCH 10/11] drm/amdgpu: Optimize operating sysfs and interrupt function interface in amdgpu_ras.c yipechai
@ 2022-02-09 5:56 ` yipechai
2022-02-09 8:54 ` [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block Zhou1, Tao
10 siblings, 0 replies; 15+ messages in thread
From: yipechai @ 2022-02-09 5:56 UTC (permalink / raw)
To: amd-gfx; +Cc: Tao.Zhou1, Hawking.Zhang, John.Clements, yipechai, yipechai
1. Merge amdgpu_ras_late_init to
amdgpu_ras_block_late_init.
2. Remove amdgpu_ras_late_init since no ras block
calls amdgpu_ras_late_init.
3. Merge amdgpu_ras_late_fini to
amdgpu_ras_block_late_fini.
4. Remove amdgpu_ras_late_fini since no ras block
calls amdgpu_ras_late_fini.
Signed-off-by: yipechai <YiPeng.Chai@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 53 +++++--------------------
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 8 ----
2 files changed, 11 insertions(+), 50 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index 9f8f596663ab..1aff88fcea76 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -2397,11 +2397,10 @@ bool amdgpu_ras_is_poison_mode_supported(struct amdgpu_device *adev)
}
/* helper function to handle common stuff in ip late init phase */
-int amdgpu_ras_late_init(struct amdgpu_device *adev,
- struct ras_common_if *ras_block,
- struct ras_fs_if *fs_info,
- struct ras_ih_if *ih_info)
+int amdgpu_ras_block_late_init(struct amdgpu_device *adev,
+ struct ras_common_if *ras_block)
{
+ struct amdgpu_ras_block_object *ras_obj;
struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
unsigned long ue_count, ce_count;
int r;
@@ -2429,7 +2428,8 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev,
if (adev->in_suspend || amdgpu_in_reset(adev))
return 0;
- if (ih_info->cb) {
+ ras_obj = container_of(ras_block, struct amdgpu_ras_block_object, ras_comm);
+ if (ras_obj->ras_cb) {
r = amdgpu_ras_interrupt_add_handler(adev, ras_block);
if (r)
goto interrupt;
@@ -2450,57 +2450,26 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev,
cleanup:
amdgpu_ras_sysfs_remove(adev, ras_block);
sysfs:
- if (ih_info->cb)
+ if (ras_obj->ras_cb)
amdgpu_ras_interrupt_remove_handler(adev, ras_block);
interrupt:
amdgpu_ras_feature_enable(adev, ras_block, 0);
return r;
}
-int amdgpu_ras_block_late_init(struct amdgpu_device *adev,
- struct ras_common_if *ras_block)
-{
- char sysfs_name[32];
- struct ras_ih_if ih_info;
- struct ras_fs_if fs_info;
- struct amdgpu_ras_block_object *obj;
-
- obj = container_of(ras_block, struct amdgpu_ras_block_object, ras_comm);
- ih_info.cb = obj->ras_cb;
- ih_info.head = *ras_block;
- snprintf(sysfs_name, sizeof(sysfs_name), "%s_err_count", ras_block->name);
- fs_info.sysfs_name = (const char *)sysfs_name;
- fs_info.head = *ras_block;
- return amdgpu_ras_late_init(adev, ras_block, &fs_info, &ih_info);
-}
-
/* helper function to remove ras fs node and interrupt handler */
-void amdgpu_ras_late_fini(struct amdgpu_device *adev,
- struct ras_common_if *ras_block,
- struct ras_ih_if *ih_info)
-{
- if (!ras_block || !ih_info)
- return;
-
- amdgpu_ras_sysfs_remove(adev, ras_block);
- if (ih_info->cb)
- amdgpu_ras_interrupt_remove_handler(adev, &ih_info->head);
-}
-
void amdgpu_ras_block_late_fini(struct amdgpu_device *adev,
struct ras_common_if *ras_block)
{
- struct ras_ih_if ih_info;
- struct amdgpu_ras_block_object *obj;
-
+ struct amdgpu_ras_block_object *ras_obj;
if (!ras_block)
return;
- obj = container_of(ras_block, struct amdgpu_ras_block_object, ras_comm);
- ih_info.head = *ras_block;
- ih_info.cb = obj->ras_cb;
+ amdgpu_ras_sysfs_remove(adev, ras_block);
- amdgpu_ras_late_fini(adev, ras_block, &ih_info);
+ ras_obj = container_of(ras_block, struct amdgpu_ras_block_object, ras_comm);
+ if (ras_obj->ras_cb)
+ amdgpu_ras_interrupt_remove_handler(adev, ras_block);
}
/* do some init work after IP late init as dependence.
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
index ae8741ac526f..5de567c6a8f7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
@@ -597,18 +597,10 @@ amdgpu_ras_error_to_ta(enum amdgpu_ras_error_type error) {
int amdgpu_ras_init(struct amdgpu_device *adev);
int amdgpu_ras_fini(struct amdgpu_device *adev);
int amdgpu_ras_pre_fini(struct amdgpu_device *adev);
-int amdgpu_ras_late_init(struct amdgpu_device *adev,
- struct ras_common_if *ras_block,
- struct ras_fs_if *fs_info,
- struct ras_ih_if *ih_info);
int amdgpu_ras_block_late_init(struct amdgpu_device *adev,
struct ras_common_if *ras_block);
-void amdgpu_ras_late_fini(struct amdgpu_device *adev,
- struct ras_common_if *ras_block,
- struct ras_ih_if *ih_info);
-
void amdgpu_ras_block_late_fini(struct amdgpu_device *adev,
struct ras_common_if *ras_block);
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* RE: [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block
2022-02-09 5:56 [PATCH 01/11] drm/amdgpu: Optimize xxx_ras_late_init/xxx_ras_late_fini for each ras block yipechai
` (9 preceding siblings ...)
2022-02-09 5:56 ` [PATCH 11/11] drm/amdgpu: Merge amdgpu_ras_late_init/amdgpu_ras_late_fini to amdgpu_ras_block_late_init/amdgpu_ras_block_late_fini yipechai
@ 2022-02-09 8:54 ` Zhou1, Tao
10 siblings, 0 replies; 15+ messages in thread
From: Zhou1, Tao @ 2022-02-09 8:54 UTC (permalink / raw)
To: Chai, Thomas, amd-gfx; +Cc: Clements, John, Zhang, Hawking
[AMD Official Use Only]
> -----Original Message-----
> From: Chai, Thomas <YiPeng.Chai@amd.com>
> Sent: Wednesday, February 9, 2022 1:57 PM
> To: amd-gfx@lists.freedesktop.org
> Cc: Chai, Thomas <YiPeng.Chai@amd.com>; Zhang, Hawking
> <Hawking.Zhang@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Clements,
> John <John.Clements@amd.com>; Chai, Thomas <YiPeng.Chai@amd.com>
> Subject: [PATCH 01/11] drm/amdgpu: Optimize
> xxx_ras_late_init/xxx_ras_late_fini for each ras block
>
> 1. Define amdgpu_ras_block_late_init to create sysfs nodes
> and interrupt handles.
> 2. Define amdgpu_ras_block_late_fini to remove sysfs nodes
> and interrupt handles.
> 3. Replace ras block variable members in struct
> amdgpu_ras_block_object with struct ras_common_if, which
> can makes it easy to associate each ras block instance
[Tao]: makes -> make
> with each ras block functional interface.
> 4. Add .ras_cb to struct amdgpu_ras_block_object.
> 5. Change each ras block to fit for the changement of struct
> amdgpu_ras_block_object.
>
> Signed-off-by: yipechai <YiPeng.Chai@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c | 7 +++--
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 35
> +++++++++++++++++++++++- drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h |
> 15 ++++++---- drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 6 ++--
> drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 4 +--
> drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 4 +--
> drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 8 +++---
> drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c | 6 ++--
> drivers/gpu/drm/amd/amdgpu/mca_v3_0.c | 28 +++++++++++--------
> drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 6 ++--
> drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 4 +--
> 11 files changed, 86 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
> index 52a60c2316a2..ad057d6b2c77 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
> @@ -83,14 +83,15 @@ int amdgpu_mca_ras_late_init(struct amdgpu_device
> *adev,
> .sysfs_name = sysfs_name,
> };
>
> - snprintf(sysfs_name, sizeof(sysfs_name), "%s_err_count", mca_dev-
> >ras->ras_block.name);
> + snprintf(sysfs_name, sizeof(sysfs_name), "%s_err_count",
> + mca_dev->ras->ras_block.ras_comm.name);
>
> if (!mca_dev->ras_if) {
> mca_dev->ras_if = kmalloc(sizeof(struct ras_common_if),
> GFP_KERNEL);
> if (!mca_dev->ras_if)
> return -ENOMEM;
> - mca_dev->ras_if->block = mca_dev->ras->ras_block.block;
> - mca_dev->ras_if->sub_block_index = mca_dev->ras-
> >ras_block.sub_block_index;
> + mca_dev->ras_if->block = mca_dev->ras-
> >ras_block.ras_comm.block;
> + mca_dev->ras_if->sub_block_index =
> +mca_dev->ras->ras_block.ras_comm.sub_block_index;
> mca_dev->ras_if->type =
> AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE;
> }
> ih_info.head = fs_info.head = *mca_dev->ras_if; diff --git
> a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> index 5934326b9db3..b7aed19db7e9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> @@ -877,7 +877,7 @@ static int amdgpu_ras_block_match_default(struct
> amdgpu_ras_block_object *block_
> if (!block_obj)
> return -EINVAL;
>
> - if (block_obj->block == block)
> + if (block_obj->ras_comm.block == block)
> return 0;
>
> return -EINVAL;
> @@ -2457,6 +2457,23 @@ int amdgpu_ras_late_init(struct amdgpu_device
> *adev,
> return r;
> }
>
> +int amdgpu_ras_block_late_init(struct amdgpu_device *adev,
> + struct ras_common_if *ras_block)
> +{
> + char sysfs_name[32];
> + struct ras_ih_if ih_info;
> + struct ras_fs_if fs_info;
> + struct amdgpu_ras_block_object *obj;
> +
> + obj = container_of(ras_block, struct amdgpu_ras_block_object,
> ras_comm);
> + ih_info.cb = obj->ras_cb;
> + ih_info.head = *ras_block;
> + snprintf(sysfs_name, sizeof(sysfs_name), "%s_err_count", ras_block-
> >name);
> + fs_info.sysfs_name = (const char *)sysfs_name;
> + fs_info.head = *ras_block;
> + return amdgpu_ras_late_init(adev, ras_block, &fs_info, &ih_info); }
> +
> /* helper function to remove ras fs node and interrupt handler */ void
> amdgpu_ras_late_fini(struct amdgpu_device *adev,
> struct ras_common_if *ras_block,
> @@ -2470,6 +2487,22 @@ void amdgpu_ras_late_fini(struct amdgpu_device
> *adev,
> amdgpu_ras_interrupt_remove_handler(adev, ih_info); }
>
> +void amdgpu_ras_block_late_fini(struct amdgpu_device *adev,
> + struct ras_common_if *ras_block)
> +{
> + struct ras_ih_if ih_info;
> + struct amdgpu_ras_block_object *obj;
> +
> + if (!ras_block)
> + return;
> +
> + obj = container_of(ras_block, struct amdgpu_ras_block_object,
> ras_comm);
> + ih_info.head = *ras_block;
> + ih_info.cb = obj->ras_cb;
> +
> + amdgpu_ras_late_fini(adev, ras_block, &ih_info); }
> +
> /* do some init work after IP late init as dependence.
> * and it runs in resume/gpu reset/booting up cases.
> */
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> index a55743b12d57..8b94b556baf6 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> @@ -486,17 +486,13 @@ struct ras_debug_if { };
>
> struct amdgpu_ras_block_object {
> - /* block name */
> - char name[32];
> -
> - enum amdgpu_ras_block block;
> -
> - uint32_t sub_block_index;
> + struct ras_common_if ras_comm;
>
> int (*ras_block_match)(struct amdgpu_ras_block_object *block_obj,
> enum amdgpu_ras_block block, uint32_t
> sub_block_index);
> int (*ras_late_init)(struct amdgpu_device *adev, void *ras_info);
> void (*ras_fini)(struct amdgpu_device *adev);
> + ras_ih_cb ras_cb;
> const struct amdgpu_ras_block_hw_ops *hw_ops; };
>
> @@ -605,10 +601,17 @@ int amdgpu_ras_late_init(struct amdgpu_device
> *adev,
> struct ras_common_if *ras_block,
> struct ras_fs_if *fs_info,
> struct ras_ih_if *ih_info);
> +
> +int amdgpu_ras_block_late_init(struct amdgpu_device *adev,
> + struct ras_common_if *ras_block);
> +
> void amdgpu_ras_late_fini(struct amdgpu_device *adev,
> struct ras_common_if *ras_block,
> struct ras_ih_if *ih_info);
>
> +void amdgpu_ras_block_late_fini(struct amdgpu_device *adev,
> + struct ras_common_if *ras_block);
> +
> int amdgpu_ras_feature_enable(struct amdgpu_device *adev,
> struct ras_common_if *head, bool enable);
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> index 5929d6f528c9..15707af89212 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> @@ -981,8 +981,10 @@ struct amdgpu_ras_block_hw_ops xgmi_ras_hw_ops
> = {
>
> struct amdgpu_xgmi_ras xgmi_ras = {
> .ras_block = {
> - .name = "xgmi",
> - .block = AMDGPU_RAS_BLOCK__XGMI_WAFL,
> + .ras_comm = {
> + .name = "xgmi",
> + .block = AMDGPU_RAS_BLOCK__XGMI_WAFL,
> + },
> .hw_ops = &xgmi_ras_hw_ops,
> .ras_late_init = amdgpu_xgmi_ras_late_init,
> .ras_fini = amdgpu_xgmi_ras_fini,
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> index ca7b886c6ce6..0a291d2e5f91 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> @@ -2198,8 +2198,8 @@ static int gfx_v9_0_gpu_early_init(struct
> amdgpu_device *adev)
> return err;
> }
>
> - strcpy(adev->gfx.ras->ras_block.name,"gfx");
> - adev->gfx.ras->ras_block.block = AMDGPU_RAS_BLOCK__GFX;
> + strcpy(adev->gfx.ras->ras_block.ras_comm.name, "gfx");
> + adev->gfx.ras->ras_block.ras_comm.block =
> AMDGPU_RAS_BLOCK__GFX;
>
> /* If not define special ras_late_init function, use gfx default
> ras_late_init */
> if (!adev->gfx.ras->ras_block.ras_late_init)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> index bddaf2417344..2a362c570346 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> @@ -672,8 +672,8 @@ static void gmc_v10_0_set_umc_funcs(struct
> amdgpu_device *adev)
> if (adev->umc.ras) {
> amdgpu_ras_register_ras_block(adev, &adev->umc.ras-
> >ras_block);
>
> - strcpy(adev->umc.ras->ras_block.name, "umc");
> - adev->umc.ras->ras_block.block =
> AMDGPU_RAS_BLOCK__UMC;
> + strcpy(adev->umc.ras->ras_block.ras_comm.name, "umc");
> + adev->umc.ras->ras_block.ras_comm.block =
> AMDGPU_RAS_BLOCK__UMC;
>
> /* If don't define special ras_late_init function, use default
> ras_late_init */
> if (!adev->umc.ras->ras_block.ras_late_init)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> index 4595027a8c63..af873c99d5e4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> @@ -1232,8 +1232,8 @@ static void gmc_v9_0_set_umc_funcs(struct
> amdgpu_device *adev)
> if (adev->umc.ras) {
> amdgpu_ras_register_ras_block(adev, &adev->umc.ras-
> >ras_block);
>
> - strcpy(adev->umc.ras->ras_block.name, "umc");
> - adev->umc.ras->ras_block.block =
> AMDGPU_RAS_BLOCK__UMC;
> + strcpy(adev->umc.ras->ras_block.ras_comm.name, "umc");
> + adev->umc.ras->ras_block.ras_comm.block =
> AMDGPU_RAS_BLOCK__UMC;
>
> /* If don't define special ras_late_init function, use default
> ras_late_init */
> if (!adev->umc.ras->ras_block.ras_late_init)
> @@ -1280,8 +1280,8 @@ static void gmc_v9_0_set_mmhub_ras_funcs(struct
> amdgpu_device *adev)
> if (adev->mmhub.ras) {
> amdgpu_ras_register_ras_block(adev, &adev->mmhub.ras-
> >ras_block);
>
> - strcpy(adev->mmhub.ras->ras_block.name,"mmhub");
> - adev->mmhub.ras->ras_block.block =
> AMDGPU_RAS_BLOCK__MMHUB;
> + strcpy(adev->mmhub.ras->ras_block.ras_comm.name,
> "mmhub");
> + adev->mmhub.ras->ras_block.ras_comm.block =
> AMDGPU_RAS_BLOCK__MMHUB;
>
> /* If don't define special ras_late_init function, use default
> ras_late_init */
> if (!adev->mmhub.ras->ras_block.ras_late_init)
> diff --git a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> index 6b41fcbf4875..503c292b321e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
> @@ -157,8 +157,10 @@ struct amdgpu_ras_block_hw_ops
> hdp_v4_0_ras_hw_ops = {
>
> struct amdgpu_hdp_ras hdp_v4_0_ras = {
> .ras_block = {
> - .name = "hdp",
> - .block = AMDGPU_RAS_BLOCK__HDP,
> + .ras_comm = {
> + .name = "hdp",
> + .block = AMDGPU_RAS_BLOCK__HDP,
> + },
> .hw_ops = &hdp_v4_0_ras_hw_ops,
> .ras_late_init = amdgpu_hdp_ras_late_init,
> .ras_fini = amdgpu_hdp_ras_fini,
> diff --git a/drivers/gpu/drm/amd/amdgpu/mca_v3_0.c
> b/drivers/gpu/drm/amd/amdgpu/mca_v3_0.c
> index 68565262af9c..386416378a82 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mca_v3_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mca_v3_0.c
> @@ -53,8 +53,8 @@ static int mca_v3_0_ras_block_match(struct
> amdgpu_ras_block_object *block_obj,
> if (!block_obj)
> return -EINVAL;
>
> - if ((block_obj->block == block) &&
> - (block_obj->sub_block_index == sub_block_index)) {
> + if ((block_obj->ras_comm.block == block) &&
> + (block_obj->ras_comm.sub_block_index == sub_block_index)) {
> return 0;
> }
>
> @@ -68,9 +68,11 @@ const struct amdgpu_ras_block_hw_ops
> mca_v3_0_mp0_hw_ops = {
>
> struct amdgpu_mca_ras_block mca_v3_0_mp0_ras = {
> .ras_block = {
> - .block = AMDGPU_RAS_BLOCK__MCA,
> - .sub_block_index = AMDGPU_RAS_MCA_BLOCK__MP0,
> - .name = "mp0",
> + .ras_comm = {
> + .block = AMDGPU_RAS_BLOCK__MCA,
> + .sub_block_index = AMDGPU_RAS_MCA_BLOCK__MP0,
> + .name = "mp0",
> + },
> .hw_ops = &mca_v3_0_mp0_hw_ops,
> .ras_block_match = mca_v3_0_ras_block_match,
> .ras_late_init = mca_v3_0_mp0_ras_late_init, @@ -103,9
> +105,11 @@ const struct amdgpu_ras_block_hw_ops mca_v3_0_mp1_hw_ops
> = {
>
> struct amdgpu_mca_ras_block mca_v3_0_mp1_ras = {
> .ras_block = {
> - .block = AMDGPU_RAS_BLOCK__MCA,
> - .sub_block_index = AMDGPU_RAS_MCA_BLOCK__MP1,
> - .name = "mp1",
> + .ras_comm = {
> + .block = AMDGPU_RAS_BLOCK__MCA,
> + .sub_block_index = AMDGPU_RAS_MCA_BLOCK__MP1,
> + .name = "mp1",
> + },
> .hw_ops = &mca_v3_0_mp1_hw_ops,
> .ras_block_match = mca_v3_0_ras_block_match,
> .ras_late_init = mca_v3_0_mp1_ras_late_init, @@ -138,9
> +142,11 @@ const struct amdgpu_ras_block_hw_ops mca_v3_0_mpio_hw_ops
> = {
>
> struct amdgpu_mca_ras_block mca_v3_0_mpio_ras = {
> .ras_block = {
> - .block = AMDGPU_RAS_BLOCK__MCA,
> - .sub_block_index = AMDGPU_RAS_MCA_BLOCK__MPIO,
> - .name = "mpio",
> + .ras_comm = {
> + .block = AMDGPU_RAS_BLOCK__MCA,
> + .sub_block_index =
> AMDGPU_RAS_MCA_BLOCK__MPIO,
> + .name = "mpio",
> + },
> .hw_ops = &mca_v3_0_mpio_hw_ops,
> .ras_block_match = mca_v3_0_ras_block_match,
> .ras_late_init = mca_v3_0_mpio_ras_late_init, diff --git
> a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
> b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
> index 39974b449341..c7cca87f1647 100644
> --- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
> +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
> @@ -664,8 +664,10 @@ const struct amdgpu_ras_block_hw_ops
> nbio_v7_4_ras_hw_ops = {
>
> struct amdgpu_nbio_ras nbio_v7_4_ras = {
> .ras_block = {
> - .name = "pcie_bif",
> - .block = AMDGPU_RAS_BLOCK__PCIE_BIF,
> + .ras_comm = {
> + .name = "pcie_bif",
> + .block = AMDGPU_RAS_BLOCK__PCIE_BIF,
> + },
> .hw_ops = &nbio_v7_4_ras_hw_ops,
> .ras_late_init = amdgpu_nbio_ras_late_init,
> .ras_fini = amdgpu_nbio_ras_fini,
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> index 06a7ceda4c87..8b0a8587dd36 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> @@ -2814,8 +2814,8 @@ static void sdma_v4_0_set_ras_funcs(struct
> amdgpu_device *adev)
> if (adev->sdma.ras) {
> amdgpu_ras_register_ras_block(adev, &adev->sdma.ras-
> >ras_block);
>
> - strcpy(adev->sdma.ras->ras_block.name, "sdma");
> - adev->sdma.ras->ras_block.block =
> AMDGPU_RAS_BLOCK__SDMA;
> + strcpy(adev->sdma.ras->ras_block.ras_comm.name, "sdma");
> + adev->sdma.ras->ras_block.ras_comm.block =
> AMDGPU_RAS_BLOCK__SDMA;
>
> /* If don't define special ras_late_init function, use default
> ras_late_init */
> if (!adev->sdma.ras->ras_block.ras_late_init)
> --
> 2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread