Commit 949899cb authored by Yang Wang's avatar Yang Wang Committed by Alex Deucher

drm/amdgpu: add new api to save error count into aca cache

add new api to save error count into aca cache.
Signed-off-by: default avatarYang Wang <kevinyang.wang@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent abc3b5d2
...@@ -274,25 +274,25 @@ static struct aca_bank_error *get_bank_error(struct aca_error *aerr, struct aca_ ...@@ -274,25 +274,25 @@ static struct aca_bank_error *get_bank_error(struct aca_error *aerr, struct aca_
return new_bank_error(aerr, info); return new_bank_error(aerr, info);
} }
static int aca_log_errors(struct aca_handle *handle, enum aca_error_type type, int aca_error_cache_log_bank_error(struct aca_handle *handle, struct aca_bank_info *info,
struct aca_bank_report *report) enum aca_error_type type, u64 count)
{ {
struct aca_error_cache *error_cache = &handle->error_cache; struct aca_error_cache *error_cache = &handle->error_cache;
struct aca_bank_error *bank_error; struct aca_bank_error *bank_error;
struct aca_error *aerr; struct aca_error *aerr;
if (!handle || !report) if (!handle || !info || type >= ACA_ERROR_TYPE_COUNT)
return -EINVAL; return -EINVAL;
if (!report->count[type]) if (!count)
return 0; return 0;
aerr = &error_cache->errors[type]; aerr = &error_cache->errors[type];
bank_error = get_bank_error(aerr, &report->info); bank_error = get_bank_error(aerr, info);
if (!bank_error) if (!bank_error)
return -ENOMEM; return -ENOMEM;
bank_error->count[type] += report->count[type]; bank_error->count += count;
return 0; return 0;
} }
...@@ -317,31 +317,12 @@ static int handler_aca_log_bank_error(struct aca_handle *handle, struct aca_bank ...@@ -317,31 +317,12 @@ static int handler_aca_log_bank_error(struct aca_handle *handle, struct aca_bank
enum aca_smu_type smu_type, void *data) enum aca_smu_type smu_type, void *data)
{ {
struct aca_bank_report report; struct aca_bank_report report;
enum aca_error_type type;
int ret; int ret;
switch (smu_type) {
case ACA_SMU_TYPE_UE:
type = ACA_ERROR_TYPE_UE;
break;
case ACA_SMU_TYPE_CE:
type = ACA_ERROR_TYPE_CE;
break;
default:
return -EINVAL;
}
ret = aca_generate_bank_report(handle, bank, smu_type, &report); ret = aca_generate_bank_report(handle, bank, smu_type, &report);
if (ret) if (ret)
return ret; return ret;
if (!report.count[type])
return 0;
ret = aca_log_errors(handle, type, &report);
if (ret)
return ret;
return 0; return 0;
} }
...@@ -440,7 +421,7 @@ static int aca_log_aca_error_data(struct aca_bank_error *bank_error, enum aca_er ...@@ -440,7 +421,7 @@ static int aca_log_aca_error_data(struct aca_bank_error *bank_error, enum aca_er
if (type >= ACA_ERROR_TYPE_COUNT) if (type >= ACA_ERROR_TYPE_COUNT)
return -EINVAL; return -EINVAL;
count = bank_error->count[type]; count = bank_error->count;
if (!count) if (!count)
return 0; return 0;
......
...@@ -130,7 +130,7 @@ struct aca_bank_report { ...@@ -130,7 +130,7 @@ struct aca_bank_report {
struct aca_bank_error { struct aca_bank_error {
struct list_head node; struct list_head node;
struct aca_bank_info info; struct aca_bank_info info;
u64 count[ACA_ERROR_TYPE_COUNT]; u64 count;
}; };
struct aca_error { struct aca_error {
...@@ -206,4 +206,6 @@ int amdgpu_aca_get_error_data(struct amdgpu_device *adev, struct aca_handle *han ...@@ -206,4 +206,6 @@ int amdgpu_aca_get_error_data(struct amdgpu_device *adev, struct aca_handle *han
enum aca_error_type type, void *data); enum aca_error_type type, void *data);
int amdgpu_aca_smu_set_debug_mode(struct amdgpu_device *adev, bool en); 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); 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,
enum aca_error_type type, u64 count);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment