diff options
author | Felix Held <felix-coreboot@felixheld.de> | 2021-05-28 16:11:43 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2021-06-08 18:22:01 +0000 |
commit | fba479267b0294f3d6cf43bf751ffd3dc300cf25 (patch) | |
tree | db3f73ad63514b14fff7af255edc26570b3dcf91 /src/acpi | |
parent | 24b1c54226d5a676547c5b0203dd5787fa5a1143 (diff) |
acpi: rework BERT ACPI table generation logic
Check if the ACPI_BERT Kconfig option is selected and only then try to
generate the BERT table. Also remove the acpi_is_boot_error_src_present
weak function from the ACPI global compilation unit and use the return
value of acpi_soc_get_bert_region to determine if there is a valid BERT
region with logged errors.
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I2a281f5f636010ba3b2e7e097e9cf53683022aea
Reviewed-on: https://review.coreboot.org/c/coreboot/+/55054
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com>
Diffstat (limited to 'src/acpi')
-rw-r--r-- | src/acpi/acpi.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index 2326169928..d7d7d3de24 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -1560,11 +1560,6 @@ unsigned long acpi_create_lpi_desc_ncst(acpi_lpi_desc_ncst_t *lpi_desc, uint16_t } /* BERT helpers */ -bool __weak acpi_is_boot_error_src_present(void) -{ - return false; -} - __weak enum cb_err acpi_soc_get_bert_region(void **region, size_t *length) { return CB_ERR; @@ -1813,18 +1808,19 @@ unsigned long write_acpi_tables(unsigned long start) current = acpi_align_current(current); - if (acpi_is_boot_error_src_present()) { + if (CONFIG(ACPI_BERT)) { void *region; size_t size; - printk(BIOS_DEBUG, "ACPI: * BERT\n"); bert = (acpi_bert_t *) current; - acpi_soc_get_bert_region(®ion, &size); - acpi_write_bert(bert, (uintptr_t)region, size); - if (bert->header.length >= sizeof(acpi_bert_t)) { - current += bert->header.length; - acpi_add_table(rsdp, bert); + if (acpi_soc_get_bert_region(®ion, &size) == CB_SUCCESS) { + printk(BIOS_DEBUG, "ACPI: * BERT\n"); + acpi_write_bert(bert, (uintptr_t)region, size); + if (bert->header.length >= sizeof(acpi_bert_t)) { + current += bert->header.length; + acpi_add_table(rsdp, bert); + } + current = acpi_align_current(current); } - current = acpi_align_current(current); } printk(BIOS_DEBUG, "current = %lx\n", current); |