summaryrefslogtreecommitdiff
path: root/src/soc/intel
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel')
-rw-r--r--src/soc/intel/common/block/acpi/acpi_bert.c44
1 files changed, 23 insertions, 21 deletions
diff --git a/src/soc/intel/common/block/acpi/acpi_bert.c b/src/soc/intel/common/block/acpi/acpi_bert.c
index 168f3294b6..d35c6c01aa 100644
--- a/src/soc/intel/common/block/acpi/acpi_bert.c
+++ b/src/soc/intel/common/block/acpi/acpi_bert.c
@@ -7,6 +7,25 @@
#include <intelblocks/acpi.h>
#include <intelblocks/crashlog.h>
+static bool boot_error_src_present(void)
+{
+ if (!CONFIG(SOC_INTEL_CRASHLOG)) {
+ printk(BIOS_DEBUG, "Crashlog disabled.\n");
+ return false;
+ }
+
+ if (!discover_crashlog()) {
+ printk(BIOS_SPEW, "Crashlog discovery result: crashlog not found\n");
+ return false;
+ }
+
+ collect_pmc_and_cpu_crashlog_from_srams();
+
+ /* Discovery tables sizes can be larger than the actual valid collected data */
+ u32 crashlog_size = cl_get_total_data_size();
+
+ return (crashlog_size > 0);
+}
enum cb_err acpi_soc_get_bert_region(void **region, size_t *length)
{
@@ -14,6 +33,10 @@ enum cb_err acpi_soc_get_bert_region(void **region, size_t *length)
size_t cpu_record_size, pmc_record_size;
void *cl_data = NULL;
+ if (!boot_error_src_present()) {
+ return CB_ERR;
+ }
+
if (!cl_get_total_data_size()) {
printk(BIOS_ERR, "Error: No crashlog record present\n");
return CB_ERR;
@@ -71,24 +94,3 @@ enum cb_err acpi_soc_get_bert_region(void **region, size_t *length)
return CB_SUCCESS;
}
-
-bool acpi_is_boot_error_src_present(void)
-{
-
- if (!CONFIG(SOC_INTEL_CRASHLOG)) {
- printk(BIOS_DEBUG, "Crashlog disabled.\n");
- return false;
- }
-
- if (!discover_crashlog()) {
- printk(BIOS_SPEW, "Crashlog discovery result: crashlog not found\n");
- return false;
- }
-
- collect_pmc_and_cpu_crashlog_from_srams();
-
- /* Discovery tables sizes can be larger than the actual valid collected data */
- u32 crashlog_size = cl_get_total_data_size();
-
- return (crashlog_size > 0);
-}