From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Mammedov Subject: Re: [PATCH v14 8/9] hw/arm/virt: Add RAS platform version for migration Date: Thu, 28 Dec 2017 15:58:32 +0100 Message-ID: <20171228155832.05a9966b@igors-macbook-pro.local> References: <1514440458-10515-1-git-send-email-gengdongjiu@huawei.com> <1514440458-10515-9-git-send-email-gengdongjiu@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: , , , , , , , , , , , , , , , To: Dongjiu Geng Return-path: Received: from mx1.redhat.com ([209.132.183.28]:46796 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753131AbdL1O6p (ORCPT ); Thu, 28 Dec 2017 09:58:45 -0500 In-Reply-To: <1514440458-10515-9-git-send-email-gengdongjiu@huawei.com> Sender: kvm-owner@vger.kernel.org List-ID: On Thu, 28 Dec 2017 13:54:17 +0800 Dongjiu Geng wrote: > Support this feature since version 2.10, disable it by > default in the old version. patch should go before acpi tables are actually added, otherwise it might break bisectability. > > Signed-off-by: Dongjiu Geng > --- > Address Shannon's comments to add platform version in [1]. > > [1]: https://lkml.org/lkml/2017/8/25/821 > > Signed-off-by: Dongjiu Geng > --- > hw/arm/virt-acpi-build.c | 14 +++++++++----- > hw/arm/virt.c | 4 ++++ > include/hw/arm/virt.h | 1 + > 3 files changed, 14 insertions(+), 5 deletions(-) > > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c > index 06c14b3..b6974ef 100644 > --- a/hw/arm/virt-acpi-build.c > +++ b/hw/arm/virt-acpi-build.c > @@ -801,10 +801,11 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables) > acpi_add_table(table_offsets, tables_blob); > build_spcr(tables_blob, tables->linker, vms); > > - acpi_add_table(table_offsets, tables_blob); > - build_hardware_error_table(tables->hardware_errors, tables->linker); > - build_apei_ghes(tables_blob, tables->hardware_errors, tables->linker); > - > + if (!vmc->no_ras) { it's better to avoid no_foo, use something like vmc->has_ras instead > + acpi_add_table(table_offsets, tables_blob); > + build_hardware_error_table(tables->hardware_errors, tables->linker); > + build_apei_ghes(tables_blob, tables->hardware_errors, tables->linker); > + } > > if (nb_numa_nodes > 0) { > acpi_add_table(table_offsets, tables_blob); > @@ -891,6 +892,7 @@ static const VMStateDescription vmstate_virt_acpi_build = { > > void virt_acpi_setup(VirtMachineState *vms) > { > + VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms); > AcpiBuildTables tables; > AcpiBuildState *build_state; > > @@ -922,7 +924,9 @@ void virt_acpi_setup(VirtMachineState *vms) > fw_cfg_add_file(vms->fw_cfg, ACPI_BUILD_TPMLOG_FILE, tables.tcpalog->data, > acpi_data_len(tables.tcpalog)); > > - ghes_add_fw_cfg(vms->fw_cfg, tables.hardware_errors); > + if (!vmc->no_ras) { > + ghes_add_fw_cfg(vms->fw_cfg, tables.hardware_errors); > + } > > build_state->rsdp_mr = acpi_add_rom_blob(build_state, tables.rsdp, > ACPI_BUILD_RSDP_FILE, 0); > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 68495c2..ab79988 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1732,8 +1732,12 @@ static void virt_2_9_instance_init(Object *obj) > > static void virt_machine_2_9_options(MachineClass *mc) > { > + VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc)); > + > virt_machine_2_10_options(mc); > SET_MACHINE_COMPAT(mc, VIRT_COMPAT_2_9); > + /* memory recovery feature was introduced with 2.10 */ > + vmc->no_ras = true; > } > DEFINE_VIRT_MACHINE(2, 9) > > diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h > index 33b0ff3..8fbd664 100644 > --- a/include/hw/arm/virt.h > +++ b/include/hw/arm/virt.h > @@ -84,6 +84,7 @@ typedef struct { > bool disallow_affinity_adjustment; > bool no_its; > bool no_pmu; > + bool no_ras; > bool claim_edge_triggered_timers; > } VirtMachineClass; >