Add the amdgpu_aca_get_bank_count/amdgpu_aca_clear_bank_count interface

Signed-off-by: Ce Sun <cesun...@amd.com>
Signed-off-by: Xiang Liu <xiang....@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c | 14 ++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_aca.h |  3 +++
 2 files changed, 17 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c
index 090bf6cf1b91..92c2370831b3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c
@@ -480,6 +480,8 @@ static int aca_banks_update(struct amdgpu_device *adev, 
enum aca_smu_type type,
                goto err_release_banks;
        }
 
+       atomic64_add(banks.nr_banks, &aca->bank_count);
+
        ret = aca_dispatch_banks(&aca->mgr, &banks, type,
                                 handler, data);
        if (ret)
@@ -766,6 +768,7 @@ int amdgpu_aca_init(struct amdgpu_device *adev)
        int ret;
 
        atomic_set(&aca->ue_update_flag, 0);
+       atomic64_set(&aca->bank_count, 0);
 
        ret = aca_manager_init(&aca->mgr);
        if (ret)
@@ -781,6 +784,7 @@ void amdgpu_aca_fini(struct amdgpu_device *adev)
        aca_manager_fini(&aca->mgr);
 
        atomic_set(&aca->ue_update_flag, 0);
+       atomic64_set(&aca->bank_count, 0);
 }
 
 int amdgpu_aca_reset(struct amdgpu_device *adev)
@@ -788,6 +792,7 @@ int amdgpu_aca_reset(struct amdgpu_device *adev)
        struct amdgpu_aca *aca = &adev->aca;
 
        atomic_set(&aca->ue_update_flag, 0);
+       atomic64_set(&aca->bank_count, 0);
 
        return 0;
 }
@@ -865,6 +870,15 @@ int amdgpu_aca_smu_set_debug_mode(struct amdgpu_device 
*adev, bool en)
        return smu_funcs->set_debug_mode(adev, en);
 }
 
+size_t amdgpu_aca_get_bank_count(struct amdgpu_device *adev)
+{
+       return atomic64_read(&adev->aca.bank_count);
+}
+
+void amdgpu_aca_clear_bank_count(struct amdgpu_device *adev)
+{
+       atomic64_set(&aca->bank_count, 0);
+}
 #if defined(CONFIG_DEBUG_FS)
 static int amdgpu_aca_smu_debug_mode_set(void *data, u64 val)
 {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.h
index 38c88897e1ec..e9acfbf57a44 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.h
@@ -202,6 +202,7 @@ struct amdgpu_aca {
        const struct aca_smu_funcs *smu_funcs;
        atomic_t ue_update_flag;
        bool is_enabled;
+       atomic64_t bank_count;
 };
 
 struct aca_info {
@@ -225,6 +226,8 @@ void amdgpu_aca_remove_handle(struct aca_handle *handle);
 int amdgpu_aca_get_error_data(struct amdgpu_device *adev, struct aca_handle 
*handle,
                              enum aca_error_type type, struct ras_err_data 
*err_data,
                              struct ras_query_context *qctx);
+size_t amdgpu_aca_get_bank_count(struct amdgpu_device *adev);
+void amdgpu_aca_clear_bank_count(struct amdgpu_device *adev);
 int amdgpu_aca_smu_set_debug_mode(struct amdgpu_device *adev, bool en);
 void amdgpu_aca_smu_debugfs_init(struct amdgpu_device *adev, struct dentry 
*root);
 int aca_error_cache_log_bank_error(struct aca_handle *handle, struct 
aca_bank_info *info,
-- 
2.34.1

Reply via email to