[SWDEV-530385] Update aca-decode with parsing fixes (#435)

*Update aca-decode to #4cd539d that fixes some errors in parsing cper files for afid extraction
*Without this fix, we get garbage value for some cper input files relating GFX_poison_cpers

Signed-off-by: Oosman Saeed <oossaeed@amd.com>
Этот коммит содержится в:
Saeed, Oosman
2025-06-04 18:49:05 -05:00
коммит произвёл GitHub
родитель e2692ab533
Коммит 2c3fa591b5
10 изменённых файлов: 399 добавлений и 18 удалений
+71
Просмотреть файл
@@ -0,0 +1,71 @@
#include "aca_decode.h"
int decode_afid(const uint64_t *register_array, size_t array_len, uint32_t flag, uint16_t hw_revision)
{
if (!register_array)
{
return -1;
}
aca_raw_data_t raw_data;
if (array_len == 4) // 32 bytes
{
raw_data.aca_status = register_array[0];
raw_data.aca_addr = register_array[1];
raw_data.aca_ipid = register_array[2];
raw_data.aca_synd = register_array[3];
}
else if (array_len == 16) // 128 bytes
{
raw_data.aca_status = register_array[1];
raw_data.aca_addr = register_array[2];
raw_data.aca_ipid = register_array[5];
raw_data.aca_synd = register_array[6];
}
else
{
return -1; // Unsupported size
}
raw_data.flags = flag;
raw_data.hw_revision = hw_revision;
aca_error_info_t error_info = aca_decode(&raw_data);
return error_info.afid;
}
aca_error_info_t decode_error_info(const uint64_t *register_array, size_t array_len, uint32_t flag, uint16_t hw_revision)
{
aca_raw_data_t raw_data = {0};
aca_error_info_t error_info = {0};
if (!register_array)
{
return error_info;
} if (array_len == 4) // 32 bytes
{
raw_data.aca_status = register_array[0];
raw_data.aca_addr = register_array[1];
raw_data.aca_ipid = register_array[2];
raw_data.aca_synd = register_array[3];
}
else if (array_len == 16) // 128 bytes
{
raw_data.aca_status = register_array[1];
raw_data.aca_addr = register_array[2];
raw_data.aca_ipid = register_array[5];
raw_data.aca_synd = register_array[6];
}
else
{
return error_info; // Return zero-initialized structure for unsupported size
}
raw_data.flags = flag;
raw_data.hw_revision = hw_revision;
return aca_decode(&raw_data);
}