x86/acpi: Add BERT table

Create a structure for the Boot Error Record Table, and a generic
table generator function.

BUG=b:65446699
TEST=inspect BERT region, and dmesg, on full patch stack.  Use test
     data plus a failing Grunt system.

Change-Id: Ibeef4347678598f9f967797202a4ae6b25ee5538
Signed-off-by: Marshall Dawson <marshalldawson3rd@gmail.com>
Reviewed-on: https://review.coreboot.org/28472
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
Marshall Dawson
2018-09-04 13:45:26 -06:00
committed by Martin Roth
parent 44705c6e5e
commit 1d8d369dad
2 changed files with 29 additions and 0 deletions

View File

@@ -958,6 +958,27 @@ void acpi_write_hest(acpi_hest_t *hest,
header->checksum = acpi_checksum((void *)hest, header->length);
}
/* ACPI 3.0b */
void acpi_write_bert(acpi_bert_t *bert, uintptr_t region, size_t length)
{
acpi_header_t *header = &(bert->header);
memset(bert, 0, sizeof(acpi_bert_t));
memcpy(header->signature, "BERT", 4);
memcpy(header->oem_id, OEM_ID, 6);
memcpy(header->oem_table_id, ACPI_TABLE_CREATOR, 8);
memcpy(header->asl_compiler_id, ASLC, 4);
header->length += sizeof(acpi_bert_t);
header->revision = get_acpi_table_revision(BERT);
bert->error_region = region;
bert->region_length = length;
/* Calculate checksums. */
header->checksum = acpi_checksum((void *)bert, header->length);
}
#if IS_ENABLED(CONFIG_COMMON_FADT)
void acpi_create_fadt(acpi_fadt_t *fadt, acpi_facs_t *facs, void *dsdt)
{