When QEMU is used the device model of Xen HVM domain and vNVDIMM devices are present, enable building ACPI tables related to vNVDIMM.
Signed-off-by: Haozhong Zhang <haozhong.zh...@intel.com> --- Cc: Stefano Stabellini <sstabell...@kernel.org> Cc: Anthony Perard <anthony.per...@citrix.com> Cc: "Michael S. Tsirkin" <m...@redhat.com> Cc: Paolo Bonzini <pbonz...@redhat.com> Cc: Richard Henderson <r...@twiddle.net> Cc: Eduardo Habkost <ehabk...@redhat.com> --- hw/i386/xen/xen-hvm.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index a7e99bd438..33447fc482 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -1236,6 +1236,11 @@ static void xen_wakeup_notifier(Notifier *notifier, void *data) xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_ACPI_S_STATE, 0); } +static bool xen_dm_acpi_build_enabled(PCMachineState *pcms) +{ + return pcms->acpi_nvdimm_state.is_enabled; +} + static void xen_fw_cfg_init(PCMachineState *pcms) { FWCfgState *fw_cfg = fw_cfg_init_io(FW_CFG_IO_BASE); @@ -1392,8 +1397,7 @@ void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory) xen_be_register_common(); xen_read_physmap(state); - /* Disable ACPI build because Xen handles it */ - pcms->acpi_build_enabled = false; + pcms->acpi_build_enabled = xen_dm_acpi_build_enabled(pcms);; if (pcms->acpi_build_enabled) { xen_fw_cfg_init(pcms); } @@ -1486,6 +1490,11 @@ void xen_acpi_build(AcpiBuildTables *tables, GArray *table_offsets, return; } + if (pcms->acpi_nvdimm_state.is_enabled) { + nvdimm_build_acpi(table_offsets, tables_blob, tables->linker, + &pcms->acpi_nvdimm_state, machine->ram_slots); + } + /* * QEMU RSDP and RSDT are only used by hvmloader to enumerate * QEMU-built tables. HVM domains still use Xen-built RSDP and RSDT. -- 2.15.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel