diff --git a/usr.sbin/bhyve/acpi.c b/usr.sbin/bhyve/acpi.c --- a/usr.sbin/bhyve/acpi.c +++ b/usr.sbin/bhyve/acpi.c @@ -732,8 +732,10 @@ dsdt_line("/*"); dsdt_line(" * bhyve DSDT template"); dsdt_line(" */"); - dsdt_line("DefinitionBlock (\"bhyve_dsdt.aml\", \"DSDT\", 2," - "\"BHYVE \", \"BVDSDT \", 0x00000001)"); + dsdt_line("DefinitionBlock (\"bhyve_dsdt.aml\", \"%s\", 0x%02x," + "\"%s\", \"%s\", 0x%08x)", + ACPI_SIG_DSDT, BASL_REVISION_DSDT, BASL_OEM_ID, + BASL_OEM_TABLE_ID_DSDT, BASL_OEM_REVISION_DSDT); dsdt_line("{"); dsdt_line(" Name (_S5, Package ()"); dsdt_line(" {"); @@ -952,6 +954,14 @@ return (err); } +static int +build_dsdt(struct vmctx *const ctx) +{ + BASL_EXEC(basl_compile(ctx, basl_fwrite_dsdt, DSDT_OFFSET)); + + return (0); +} + int acpi_build(struct vmctx *ctx, int ncpu) { @@ -993,7 +1003,7 @@ BASL_EXEC(basl_compile(ctx, basl_fwrite_hpet, HPET_OFFSET)); BASL_EXEC(basl_compile(ctx, basl_fwrite_mcfg, MCFG_OFFSET)); BASL_EXEC(basl_compile(ctx, basl_fwrite_facs, FACS_OFFSET)); - BASL_EXEC(basl_compile(ctx, basl_fwrite_dsdt, DSDT_OFFSET)); + BASL_EXEC(build_dsdt(ctx)); BASL_EXEC(basl_finish()); diff --git a/usr.sbin/bhyve/basl.h b/usr.sbin/bhyve/basl.h --- a/usr.sbin/bhyve/basl.h +++ b/usr.sbin/bhyve/basl.h @@ -18,6 +18,14 @@ #define BHYVE_ACPI_BASE 0xf2400 +#define BASL_REVISION_DSDT 2 + +#define BASL_OEM_ID "BHYVE " + +#define BASL_OEM_TABLE_ID_DSDT "BVDSDT " + +#define BASL_OEM_REVISION_DSDT 1 + #define BASL_COMPILER_ID "BASL" #define BASL_COMPILER_REVISION 20220504