On Wed, 21 Jul 2021 11:16:42 -0500 Eric DeVolder <eric.devol...@oracle.com> wrote:
> On 7/20/21 8:19 AM, Igor Mammedov wrote: > > On Wed, 30 Jun 2021 15:07:19 -0400 > > Eric DeVolder <eric.devol...@oracle.com> wrote: > > > >> This change exposes ACPI ERST support for x86 guests. > >> > >> Signed-off-by: Eric DeVolder <eric.devol...@oracle.com> > > looks good to me, maybe move find_erst_dev() impl. here as well > > if it's the patch it's first used. > > I've followed your previous suggestion of mimicking find_vmgenid_dev(), which > declares it in its header file. I've done the same, find_erst_dev() is > declared in its header file and used in these files. it's fine doing like this but it would be easier to follow if this were part of [6/10], so that function is introduced and used in the same patch. > > > >> --- > >> hw/i386/acpi-build.c | 9 +++++++++ > >> hw/i386/acpi-microvm.c | 9 +++++++++ > >> 2 files changed, 18 insertions(+) > >> > >> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c > >> index de98750..d2026cc 100644 > >> --- a/hw/i386/acpi-build.c > >> +++ b/hw/i386/acpi-build.c > >> @@ -43,6 +43,7 @@ > >> #include "sysemu/tpm.h" > >> #include "hw/acpi/tpm.h" > >> #include "hw/acpi/vmgenid.h" > >> +#include "hw/acpi/erst.h" > >> #include "hw/boards.h" > >> #include "sysemu/tpm_backend.h" > >> #include "hw/rtc/mc146818rtc_regs.h" > >> @@ -2327,6 +2328,7 @@ void acpi_build(AcpiBuildTables *tables, > >> MachineState *machine) > >> GArray *tables_blob = tables->table_data; > >> AcpiSlicOem slic_oem = { .id = NULL, .table_id = NULL }; > >> Object *vmgenid_dev; > >> + Object *erst_dev; > >> char *oem_id; > >> char *oem_table_id; > >> > >> @@ -2388,6 +2390,13 @@ void acpi_build(AcpiBuildTables *tables, > >> MachineState *machine) > >> ACPI_DEVICE_IF(x86ms->acpi_dev), x86ms->oem_id, > >> x86ms->oem_table_id); > >> > >> + erst_dev = find_erst_dev(); > >> + if (erst_dev) { > >> + acpi_add_table(table_offsets, tables_blob); > >> + build_erst(tables_blob, tables->linker, erst_dev, > >> + x86ms->oem_id, x86ms->oem_table_id); > >> + } > >> + > >> vmgenid_dev = find_vmgenid_dev(); > >> if (vmgenid_dev) { > >> acpi_add_table(table_offsets, tables_blob); > >> diff --git a/hw/i386/acpi-microvm.c b/hw/i386/acpi-microvm.c > >> index ccd3303..0099b13 100644 > >> --- a/hw/i386/acpi-microvm.c > >> +++ b/hw/i386/acpi-microvm.c > >> @@ -30,6 +30,7 @@ > >> #include "hw/acpi/bios-linker-loader.h" > >> #include "hw/acpi/generic_event_device.h" > >> #include "hw/acpi/utils.h" > >> +#include "hw/acpi/erst.h" > >> #include "hw/boards.h" > >> #include "hw/i386/fw_cfg.h" > >> #include "hw/i386/microvm.h" > >> @@ -160,6 +161,7 @@ static void acpi_build_microvm(AcpiBuildTables *tables, > >> X86MachineState *x86ms = X86_MACHINE(mms); > >> GArray *table_offsets; > >> GArray *tables_blob = tables->table_data; > >> + Object *erst_dev; > >> unsigned dsdt, xsdt; > >> AcpiFadtData pmfadt = { > >> /* ACPI 5.0: 4.1 Hardware-Reduced ACPI */ > >> @@ -209,6 +211,13 @@ static void acpi_build_microvm(AcpiBuildTables > >> *tables, > >> ACPI_DEVICE_IF(x86ms->acpi_dev), x86ms->oem_id, > >> x86ms->oem_table_id); > >> > >> + erst_dev = find_erst_dev(); > >> + if (erst_dev) { > >> + acpi_add_table(table_offsets, tables_blob); > >> + build_erst(tables_blob, tables->linker, erst_dev, > >> + x86ms->oem_id, x86ms->oem_table_id); > >> + } > >> + > >> xsdt = tables_blob->len; > >> build_xsdt(tables_blob, tables->linker, table_offsets, x86ms->oem_id, > >> x86ms->oem_table_id); > > >