summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/acpi/acpi.c7
-rw-r--r--src/include/acpi/acpi.h2
-rw-r--r--src/soc/intel/common/block/acpi/acpi_bert.c15
3 files changed, 14 insertions, 10 deletions
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c
index 185825bb5f..2326169928 100644
--- a/src/acpi/acpi.c
+++ b/src/acpi/acpi.c
@@ -1565,7 +1565,10 @@ bool __weak acpi_is_boot_error_src_present(void)
return false;
}
-__weak void acpi_soc_fill_bert(void **region, size_t *length) {}
+__weak enum cb_err acpi_soc_get_bert_region(void **region, size_t *length)
+{
+ return CB_ERR;
+}
unsigned long __weak fw_cfg_acpi_tables(unsigned long start)
{
@@ -1815,7 +1818,7 @@ unsigned long write_acpi_tables(unsigned long start)
size_t size;
printk(BIOS_DEBUG, "ACPI: * BERT\n");
bert = (acpi_bert_t *) current;
- acpi_soc_fill_bert(&region, &size);
+ acpi_soc_get_bert_region(&region, &size);
acpi_write_bert(bert, (uintptr_t)region, size);
if (bert->header.length >= sizeof(acpi_bert_t)) {
current += bert->header.length;
diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h
index dd00c405db..7b0a7757bf 100644
--- a/src/include/acpi/acpi.h
+++ b/src/include/acpi/acpi.h
@@ -1342,7 +1342,7 @@ unsigned long acpi_create_lpi_desc_ncst(acpi_lpi_desc_ncst_t *lpi_desc, uint16_t
/* For crashlog. */
bool acpi_is_boot_error_src_present(void);
-void acpi_soc_fill_bert(void **region, size_t *length);
+enum cb_err acpi_soc_get_bert_region(void **region, size_t *length);
/* For ACPI S3 support. */
void __noreturn acpi_resume(void *wake_vec);
diff --git a/src/soc/intel/common/block/acpi/acpi_bert.c b/src/soc/intel/common/block/acpi/acpi_bert.c
index f94026d9bc..168f3294b6 100644
--- a/src/soc/intel/common/block/acpi/acpi_bert.c
+++ b/src/soc/intel/common/block/acpi/acpi_bert.c
@@ -8,7 +8,7 @@
#include <intelblocks/crashlog.h>
-void acpi_soc_fill_bert(void **region, size_t *length)
+enum cb_err acpi_soc_get_bert_region(void **region, size_t *length)
{
acpi_generic_error_status_t *status = NULL;
size_t cpu_record_size, pmc_record_size;
@@ -16,19 +16,19 @@ void acpi_soc_fill_bert(void **region, size_t *length)
if (!cl_get_total_data_size()) {
printk(BIOS_ERR, "Error: No crashlog record present\n");
- return;
+ return CB_ERR;
}
status = bert_new_event(&CPER_SEC_FW_ERR_REC_REF_GUID);
if (!status) {
printk(BIOS_ERR, "Error: unable to allocate GSB\n");
- return;
+ return CB_ERR;
}
if (cl_get_total_data_size() > bert_storage_remaining()) {
printk(BIOS_ERR, "Error: Crashlog entry would exceed "
"available region\n");
- return;
+ return CB_ERR;
}
cpu_record_size = cl_get_cpu_record_size();
@@ -38,7 +38,7 @@ void acpi_soc_fill_bert(void **region, size_t *length)
printk(BIOS_ERR, "Error: Crashlog CPU entry(size %lu) "
"would exceed available region\n",
cpu_record_size);
- return;
+ return CB_ERR;
}
printk(BIOS_DEBUG, "cl_data %p, cpu_record_size %lu\n",
cl_data, cpu_record_size);
@@ -51,7 +51,7 @@ void acpi_soc_fill_bert(void **region, size_t *length)
if (cpu_record_size && !bert_append_fw_err(status)) {
printk(BIOS_ERR, "Error: Crashlog PMC entry would "
"exceed available region\n");
- return;
+ return CB_ERR;
}
cl_data = new_cper_fw_error_crashlog(status, pmc_record_size);
@@ -59,7 +59,7 @@ void acpi_soc_fill_bert(void **region, size_t *length)
printk(BIOS_ERR, "Error: Crashlog PMC entry(size %lu) "
"would exceed available region\n",
pmc_record_size);
- return;
+ return CB_ERR;
}
printk(BIOS_DEBUG, "cl_data %p, pmc_record_size %lu\n",
cl_data, pmc_record_size);
@@ -69,6 +69,7 @@ void acpi_soc_fill_bert(void **region, size_t *length)
*length = status->raw_data_length;
*region = (void *)status;
+ return CB_SUCCESS;
}
bool acpi_is_boot_error_src_present(void)