diff --git a/usr.sbin/bhyve/acpi_device.h b/usr.sbin/bhyve/acpi_device.h --- a/usr.sbin/bhyve/acpi_device.h +++ b/usr.sbin/bhyve/acpi_device.h @@ -21,6 +21,7 @@ const char *hid; int (*build_table)(const struct acpi_device *dev); + int (*write_dsdt)(const struct acpi_device *dev); }; /** diff --git a/usr.sbin/bhyve/acpi_device.c b/usr.sbin/bhyve/acpi_device.c --- a/usr.sbin/bhyve/acpi_device.c +++ b/usr.sbin/bhyve/acpi_device.c @@ -191,6 +191,11 @@ BASL_EXEC(acpi_device_write_dsdt_crs(dev)); dsdt_unindent(4); dsdt_line(" })"); + if (dev->emul->write_dsdt != NULL) { + dsdt_indent(3); + BASL_EXEC(dev->emul->write_dsdt(dev)); + dsdt_unindent(3); + } dsdt_line(" }"); dsdt_line(" }");