git: 4e46ab0ebe96 - main - bhyve: allow adding FwCfg items to ACPI tables
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 12 Jun 2023 11:04:44 UTC
The branch main has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=4e46ab0ebe96b56d4fa7ea7df4a81cd533109f07 commit 4e46ab0ebe96b56d4fa7ea7df4a81cd533109f07 Author: Corvin Köhne <corvink@FreeBSD.org> AuthorDate: 2022-07-22 08:58:01 +0000 Commit: Corvin Köhne <corvink@FreeBSD.org> CommitDate: 2023-06-12 11:04:26 +0000 bhyve: allow adding FwCfg items to ACPI tables A TPM has an event log. Therefore, qemu adds a FwCfg item and adds it to an ACPI table. We like to use the same OVMF driver as qemu, so we should do the same. This commit adds the ability to basl to do it. Reviewed by: markj MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D40451 --- usr.sbin/bhyve/basl.c | 17 +++++++++++++++++ usr.sbin/bhyve/basl.h | 3 +++ 2 files changed, 20 insertions(+) diff --git a/usr.sbin/bhyve/basl.c b/usr.sbin/bhyve/basl.c index 348174c6520d..90cb608aecc6 100644 --- a/usr.sbin/bhyve/basl.c +++ b/usr.sbin/bhyve/basl.c @@ -490,6 +490,23 @@ basl_table_append_content(struct basl_table *table, void *data, uint32_t len) len - sizeof(ACPI_TABLE_HEADER))); } +int +basl_table_append_fwcfg(struct basl_table *const table, + const uint8_t *fwcfg_name, const uint32_t alignment, const uint8_t size) +{ + assert(table != NULL); + assert(fwcfg_name != NULL); + assert(size <= sizeof(uint64_t)); + + BASL_EXEC(qemu_loader_alloc(basl_loader, fwcfg_name, alignment, + QEMU_LOADER_ALLOC_HIGH)); + BASL_EXEC(qemu_loader_add_pointer(basl_loader, table->fwcfg_name, + fwcfg_name, table->len, size)); + BASL_EXEC(basl_table_append_int(table, 0, size)); + + return (0); +} + int basl_table_append_gas(struct basl_table *const table, const uint8_t space_id, const uint8_t bit_width, const uint8_t bit_offset, diff --git a/usr.sbin/bhyve/basl.h b/usr.sbin/bhyve/basl.h index 4d9ab4c589a8..e12173b701a2 100644 --- a/usr.sbin/bhyve/basl.h +++ b/usr.sbin/bhyve/basl.h @@ -82,6 +82,9 @@ int basl_table_append_checksum(struct basl_table *table, uint32_t start, /* Add an ACPI_TABLE_* to basl without its header. */ int basl_table_append_content(struct basl_table *table, void *data, uint32_t len); +int basl_table_append_fwcfg(struct basl_table *table, + const uint8_t *fwcfg_name, uint32_t alignment, + uint8_t size); int basl_table_append_gas(struct basl_table *table, uint8_t space_id, uint8_t bit_width, uint8_t bit_offset, uint8_t access_width, uint64_t address);