From patchwork Wed Mar 11 17:20:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184411 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp873090ile; Wed, 11 Mar 2020 10:24:58 -0700 (PDT) X-Google-Smtp-Source: ADFU+vt/Abrm60KOVQdCsM3WgdmjVd4cKgj4/rT2yJg32psARXd3z5AcVpLVpRkzKXwWsPTTF7oC X-Received: by 2002:a05:620a:55b:: with SMTP id o27mr2181336qko.291.1583947498064; Wed, 11 Mar 2020 10:24:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947498; cv=none; d=google.com; s=arc-20160816; b=E2cOwqKfJ2nd+3RXdspWZDnO5rPSwAnOkAVrzOkHmv9z0c4cR/3LPCA8pZdfIu4VAg Yjfr2xy/VIpqBjqzZ0OV+SSrp02UuTn3VnjZU9udSteh841nEo5aZko11xBIybYdXqMd eb1m2gDxTcOJ2OahQw8k7hjELXVdb/apeJJCBbf9GUZh3Oc/x+rEIU+Ayq7fQQ1moMp0 MvdoaQNNglTDtodxWNaf5ZE36cDG5L4OjUQY8BXmgOqtn4LPudpUuOz+DPpQYz1wMvfV +6eA87hg08lUDTlTxgDWYIQJ5MjwBZIAvqf77k0/klBdg0gAwF4fr95mMDmnHNuTltso UFEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=IrZ3juTJjhKOHh+8QdnWcI2Vi61j1C4xGfE1L8PWVO8=; b=TL5Fp2GN8zGo4aO7UzdnSYlwxoMBBf2qzwUP4co/mzSjvFZjg8Z2g1Ryp2hh6sZpvN wjqqJHt73gnBqwTe/IaWRnYyYyS+XmxhpztJCsrB8ufxw6QwOT7SGAa85HMRvcPHvigs DYnvPoCfu1KKF5+KtVN/Sy8eT5pN1/yiFYeD8YZct2eukmJ+Kh18+qjkiJYLbeVO3yNh ZDco4ygdaAyfr0H+skevqaOdpoukrfkOqAOnyE0b9f98zCuWpS+vK+dLDpXcJQMmYGv/ JSITar69byTC9iPNLg3HbBe1ERFW7Cdto0CkAYCIOwlmm1ha/Jw5jQDInZKY1FaByE1L r4Yg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id m2si1325071qka.225.2020.03.11.10.24.58 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:24:58 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56240 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC56H-0005FF-IY for patch@linaro.org; Wed, 11 Mar 2020 13:24:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57980) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC54z-0001or-Q7 for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC54y-0003ai-Dn for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:37 -0400 Received: from szxga06-in.huawei.com ([45.249.212.32]:35150 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC54v-0003RM-QM; Wed, 11 Mar 2020 13:23:34 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 7F7603546F68F1E5A408; Thu, 12 Mar 2020 01:23:24 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:17 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 01/10] acpi: Use macro for table-loader file name Date: Wed, 11 Mar 2020 17:20:05 +0000 Message-ID: <20200311172014.33052-2-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.32 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Use macro for "etc/table-loader" and move it to the header file similar to ACPI_BUILD_TABLE_FILE/ACPI_BUILD_RSDP_FILE etc. Signed-off-by: Shameer Kolothum --- hw/arm/virt-acpi-build.c | 2 +- hw/i386/acpi-build.c | 2 +- include/hw/acpi/aml-build.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) -- 2.17.1 Reviewed-by: Igor Mammedov diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index fb4b166f82..c13710b727 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -929,7 +929,7 @@ void virt_acpi_setup(VirtMachineState *vms) build_state->linker_mr = acpi_add_rom_blob(virt_acpi_build_update, build_state, - tables.linker->cmd_blob, "etc/table-loader", 0); + tables.linker->cmd_blob, ACPI_BUILD_LOADER_FILE, 0); fw_cfg_add_file(vms->fw_cfg, ACPI_BUILD_TPMLOG_FILE, tables.tcpalog->data, acpi_data_len(tables.tcpalog)); diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 9a19c14e66..80f05d728d 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -3043,7 +3043,7 @@ void acpi_setup(void) build_state->linker_mr = acpi_add_rom_blob(acpi_build_update, build_state, - tables.linker->cmd_blob, "etc/table-loader", 0); + tables.linker->cmd_blob, ACPI_BUILD_LOADER_FILE, 0); fw_cfg_add_file(x86ms->fw_cfg, ACPI_BUILD_TPMLOG_FILE, tables.tcpalog->data, acpi_data_len(tables.tcpalog)); diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h index de4a406568..0f4ed53d7f 100644 --- a/include/hw/acpi/aml-build.h +++ b/include/hw/acpi/aml-build.h @@ -13,6 +13,7 @@ #define ACPI_BUILD_TABLE_FILE "etc/acpi/tables" #define ACPI_BUILD_RSDP_FILE "etc/acpi/rsdp" #define ACPI_BUILD_TPMLOG_FILE "etc/tpm/log" +#define ACPI_BUILD_LOADER_FILE "etc/table-loader" #define AML_NOTIFY_METHOD "NTFY" From patchwork Wed Mar 11 17:20:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184413 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp873547ile; Wed, 11 Mar 2020 10:25:26 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuP46M6GSROpdqLbFB6YlYXS8n0BMx6gkk5bzw9AdXaObcnNDXMghzHFbKM9MOyzUD81Aao X-Received: by 2002:ad4:524c:: with SMTP id s12mr3893072qvq.138.1583947526307; Wed, 11 Mar 2020 10:25:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947526; cv=none; d=google.com; s=arc-20160816; b=YN9QJQn8F+aQEHdUn9aIkrMV3fx4EHqbATqIHVN7nHF4ayfDLM8/HXDtUgSU6s2xq+ U/IbZ2IdmWyKUiS8Ss0idh30q9ED4oUAGt7/gskVIDMk4bPR6/yvWAl7a1GWz/79E+TN qelxLC76mpQ7C2LuUUxaaGVR95edWnaqH08+wkSKgyXncyYQxbGCnH9uPQwU453TXU/u mM53roib9hEXlOHw/qcvOrC7BfO9IiwsLoKU+lMRXzhdn+FVzb+c/xJwc9qXQZIGYzEo tu1Oi6fkWkK05/GP4slIn/Asleiq5MF0+QPU0txibxACf1BtsQFhMjyQWCJTYp4As1JZ vHfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=IMCjR605yqFyvgHLHbbD4LOI2AFvTmkbxPJnXOMXKek=; b=Wt533Rz7f954w0tWeybcYqRg6ldXJM414Aj3VdXBMpqJI8eR+3JSFih/6PRGy0MFgf EMym89CaNzOafE3X5N/9foRoEUkcAjmtvEWPKwB1KfoZ4Wfwktd4TmoPqDfLU+KolKx7 d3XK3hvQrX2gcYpOnneNiluwVggQEkc6ciWNPrg+rUovb+rAMyanpD94O/A5Gt/GEL46 +DvV3yskpxyHNqGxFuJGuOsvd27Tu4eiASqeyhrsBsmhezUd63ansytPWAoZNbnBz+0K FjyHpXuLTMidggP8AldB41Op3P6JbDOIeRc0iU1uGlIxvGCcLG0RrJv2SHPFOrDYl3hx I7FA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d18si1189202qvo.25.2020.03.11.10.25.25 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:25:26 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56252 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC56j-0006sA-G2 for patch@linaro.org; Wed, 11 Mar 2020 13:25:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57997) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC550-0001p3-PB for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC54z-0003bD-5j for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:38 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:3197 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC54v-0003Tj-U4; Wed, 11 Mar 2020 13:23:34 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 907E0EED1A18A9D8ED9C; Thu, 12 Mar 2020 01:23:29 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:21 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 02/10] fw_cfg: Migrate ACPI table mr sizes separately Date: Wed, 11 Mar 2020 17:20:06 +0000 Message-ID: <20200311172014.33052-3-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.190 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Any sub-page size update to ACPI table MRs will be lost during migration, as we use aligned size in ram_load_precopy() -> qemu_ram_resize() path. This will result in inconsistency in sizes between source and destination. In order to avoid this, save and restore them separately during migration. Suggested-by: David Hildenbrand Signed-off-by: Shameer Kolothum --- Please find the discussion here, https://patchwork.kernel.org/patch/11339591/ --- hw/core/machine.c | 1 + hw/nvram/fw_cfg.c | 86 ++++++++++++++++++++++++++++++++++++++- include/hw/nvram/fw_cfg.h | 6 +++ 3 files changed, 92 insertions(+), 1 deletion(-) -- 2.17.1 Acked-by: David Hildenbrand diff --git a/hw/core/machine.c b/hw/core/machine.c index 9e8c06036f..6d960bd47f 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -39,6 +39,7 @@ GlobalProperty hw_compat_4_2[] = { { "usb-redir", "suppress-remote-wake", "off" }, { "qxl", "revision", "4" }, { "qxl-vga", "revision", "4" }, + { "fw_cfg", "acpi-mr-restore", "false" }, }; const size_t hw_compat_4_2_len = G_N_ELEMENTS(hw_compat_4_2); diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 179b302f01..36d1e32f83 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -39,6 +39,7 @@ #include "qemu/config-file.h" #include "qemu/cutils.h" #include "qapi/error.h" +#include "hw/acpi/aml-build.h" #define FW_CFG_FILE_SLOTS_DFLT 0x20 @@ -610,6 +611,50 @@ bool fw_cfg_dma_enabled(void *opaque) return s->dma_enabled; } +static bool fw_cfg_acpi_mr_restore(void *opaque) +{ + FWCfgState *s = opaque; + return s->acpi_mr_restore; +} + +static void fw_cfg_update_mr(FWCfgState *s, uint16_t key, size_t size) +{ + MemoryRegion *mr; + ram_addr_t offset; + int arch = !!(key & FW_CFG_ARCH_LOCAL); + void *ptr; + + key &= FW_CFG_ENTRY_MASK; + assert(key < fw_cfg_max_entry(s)); + + ptr = s->entries[arch][key].data; + mr = memory_region_from_host(ptr, &offset); + + memory_region_ram_resize(mr, size, &error_abort); +} + +static int fw_cfg_acpi_mr_restore_post_load(void *opaque, int version_id) +{ + FWCfgState *s = opaque; + int i, index; + + assert(s->files); + + index = be32_to_cpu(s->files->count); + + for (i = 0; i < index; i++) { + if (!strcmp(s->files->f[i].name, ACPI_BUILD_TABLE_FILE)) { + fw_cfg_update_mr(s, FW_CFG_FILE_FIRST + i, s->table_mr_size); + } else if (!strcmp(s->files->f[i].name, ACPI_BUILD_LOADER_FILE)) { + fw_cfg_update_mr(s, FW_CFG_FILE_FIRST + i, s->linker_mr_size); + } else if (!strcmp(s->files->f[i].name, ACPI_BUILD_RSDP_FILE)) { + fw_cfg_update_mr(s, FW_CFG_FILE_FIRST + i, s->rsdp_mr_size); + } + } + + return 0; +} + static const VMStateDescription vmstate_fw_cfg_dma = { .name = "fw_cfg/dma", .needed = fw_cfg_dma_enabled, @@ -619,6 +664,20 @@ static const VMStateDescription vmstate_fw_cfg_dma = { }, }; +static const VMStateDescription vmstate_fw_cfg_acpi_mr = { + .name = "fw_cfg/acpi_mr", + .version_id = 1, + .minimum_version_id = 1, + .needed = fw_cfg_acpi_mr_restore, + .post_load = fw_cfg_acpi_mr_restore_post_load, + .fields = (VMStateField[]) { + VMSTATE_UINT64(table_mr_size, FWCfgState), + VMSTATE_UINT64(linker_mr_size, FWCfgState), + VMSTATE_UINT64(rsdp_mr_size, FWCfgState), + VMSTATE_END_OF_LIST() + }, +}; + static const VMStateDescription vmstate_fw_cfg = { .name = "fw_cfg", .version_id = 2, @@ -631,6 +690,7 @@ static const VMStateDescription vmstate_fw_cfg = { }, .subsections = (const VMStateDescription*[]) { &vmstate_fw_cfg_dma, + &vmstate_fw_cfg_acpi_mr, NULL, } }; @@ -815,6 +875,23 @@ static struct { #define FW_CFG_ORDER_OVERRIDE_LAST 200 }; +/* + * Any sub-page size update to these table MRs will be lost during migration, + * as we use aligned size in ram_load_precopy() -> qemu_ram_resize() path. + * In order to avoid the inconsistency in sizes save them seperately and + * migrate over in vmstate post_load(). + */ +static void fw_cfg_acpi_mr_save(FWCfgState *s, const char *filename, size_t len) +{ + if (!strcmp(filename, ACPI_BUILD_TABLE_FILE)) { + s->table_mr_size = len; + } else if (!strcmp(filename, ACPI_BUILD_LOADER_FILE)) { + s->linker_mr_size = len; + } else if (!strcmp(filename, ACPI_BUILD_RSDP_FILE)) { + s->rsdp_mr_size = len; + } +} + static int get_fw_cfg_order(FWCfgState *s, const char *name) { int i; @@ -914,6 +991,7 @@ void fw_cfg_add_file_callback(FWCfgState *s, const char *filename, trace_fw_cfg_add_file(s, index, s->files->f[index].name, len); s->files->count = cpu_to_be32(count+1); + fw_cfg_acpi_mr_save(s, filename, len); } void fw_cfg_add_file(FWCfgState *s, const char *filename, @@ -937,6 +1015,7 @@ void *fw_cfg_modify_file(FWCfgState *s, const char *filename, ptr = fw_cfg_modify_bytes_read(s, FW_CFG_FILE_FIRST + i, data, len); s->files->f[i].size = cpu_to_be32(len); + fw_cfg_acpi_mr_save(s, filename, len); return ptr; } } @@ -973,7 +1052,10 @@ static void fw_cfg_machine_ready(struct Notifier *n, void *data) qemu_register_reset(fw_cfg_machine_reset, s); } - +static Property fw_cfg_properties[] = { + DEFINE_PROP_BOOL("acpi-mr-restore", FWCfgState, acpi_mr_restore, true), + DEFINE_PROP_END_OF_LIST(), +}; static void fw_cfg_common_realize(DeviceState *dev, Error **errp) { @@ -1097,6 +1179,8 @@ static void fw_cfg_class_init(ObjectClass *klass, void *data) dc->reset = fw_cfg_reset; dc->vmsd = &vmstate_fw_cfg; + + device_class_set_props(dc, fw_cfg_properties); } static const TypeInfo fw_cfg_info = { diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h index b5291eefad..457fee7425 100644 --- a/include/hw/nvram/fw_cfg.h +++ b/include/hw/nvram/fw_cfg.h @@ -53,6 +53,12 @@ struct FWCfgState { dma_addr_t dma_addr; AddressSpace *dma_as; MemoryRegion dma_iomem; + + /* restore during migration */ + bool acpi_mr_restore; + size_t table_mr_size; + size_t linker_mr_size; + size_t rsdp_mr_size; }; struct FWCfgIoState { From patchwork Wed Mar 11 17:20:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184410 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp872443ile; Wed, 11 Mar 2020 10:24:12 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvQr+7HZpJskw0eOWohqVRD+jg5sTucjUrTzo1yE0u17x8iI7bw5zDP1dUIDQZyq++deX6q X-Received: by 2002:a05:6214:946:: with SMTP id dn6mr3663431qvb.154.1583947451918; Wed, 11 Mar 2020 10:24:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947451; cv=none; d=google.com; s=arc-20160816; b=aY7rK90NVnUqkVUdMAYP37UjSKxCrBw73/IvLYVyKoFoUlvTXF5YP7Z0f3ObyBfpQj RysCp7MIITFjJJDuBtvZQqrHnJKeOBGLaZE+aNQkle2AXlvkFnlomC6GZeB+g2i37FIB 0/0ZlIwQob3XKrxCqF9ie4i7oqJOsAOYTs9nQYLPpaUia+UR8YJyrcGDWlGo3iquHTHS nGav1EFrB7+JnROwF88jgoz2kbtKKqy47TbGEXBp8R0qv/mbwmn3+rVUBUTbCYWg5gw8 9W7SiyngAowb5U07+ecP9g/0mMcyrusw7ajzWssd52ym1pL1r4GHnN+pN3zO635nO0oP 9I2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=9c4IQBvzRkufAwdC9dSxucGO0wye5J6f1toNwDioFWU=; b=WMtUwqt1WTV02huDSVWpAES4TPvuqcr4oG8XmHpKBpQfg3DQkn0vVhUPw19qqTnnbc zAQgtVkqtBjTCatTZgtjME6wrB7/AmL5Zchp/x/iyN/B+aouwx4B6n9824WzxMgFGHUN 2hwdI7GeUW8CsKhWghtxKyqVq1njdd0d9mZcFi3xbCSmLn5JbZHGYidDsnsGCENw6KFU Rl3CjFy/kY+cNDmqVd18qipZis19AJ9Re/xyMtFj0OpAdMdn2Dgmv+krWyFV8++QJDfd YMo5wuK6pYVec1PU+nAY1m2hCtGACdi7hL47nNnm8LV6je455fbApzndu6J60zuVIakt 8eyw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id bt4si1247000qvb.101.2020.03.11.10.24.11 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:24:11 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56220 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC55X-0002eE-FK for patch@linaro.org; Wed, 11 Mar 2020 13:24:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58063) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC555-0001wh-2G for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC553-0003mz-S8 for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:42 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:3277 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC550-0003Zv-CB; Wed, 11 Mar 2020 13:23:38 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id B1DB18F36637FA53CF75; Thu, 12 Mar 2020 01:23:34 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:24 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 03/10] exec: Fix for qemu_ram_resize() callback Date: Wed, 11 Mar 2020 17:20:07 +0000 Message-ID: <20200311172014.33052-4-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.191 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: David Hildenbrand Summarizing the issue: 1. Memory regions contain ram blocks with a different size, if the size is not properly aligned. While memory regions can have an unaligned size, ram blocks can't. This is true when creating resizable memory region with an unaligned size. 2. When resizing a ram block/memory region, the size of the memory region is set to the aligned size. The callback is called with the aligned size. The unaligned piece is lost. Because of the above, if ACPI blob length modifications happens after the initial virt_acpi_build() call, and the changed blob length is within the PAGE size boundary, then the revised size is not seen by the firmware on Guest reboot. Hence make sure callback is called if memory region size is changed, irrespective of aligned or not. Signed-off-by: David Hildenbrand [Shameer: added commit log] Signed-off-by: Shameer Kolothum --- Please find the discussion here, https://patchwork.kernel.org/patch/11339591/ --- exec.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) -- 2.17.1 Reviewed-by: Igor Mammedov diff --git a/exec.c b/exec.c index 0cc500d53a..f8974cd303 100644 --- a/exec.c +++ b/exec.c @@ -2073,11 +2073,21 @@ static int memory_try_enable_merging(void *addr, size_t len) */ int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp) { + const ram_addr_t unaligned_size = newsize; + assert(block); newsize = HOST_PAGE_ALIGN(newsize); if (block->used_length == newsize) { + /* + * We don't have to resize the ram block (which only knows aligned + * sizes), however, we have to notify if the unaligned size changed. + */ + if (block->resized && unaligned_size != memory_region_size(block->mr)) { + block->resized(block->idstr, unaligned_size, block->host); + memory_region_set_size(block->mr, unaligned_size); + } return 0; } @@ -2101,9 +2111,9 @@ int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp) block->used_length = newsize; cpu_physical_memory_set_dirty_range(block->offset, block->used_length, DIRTY_CLIENTS_ALL); - memory_region_set_size(block->mr, newsize); + memory_region_set_size(block->mr, unaligned_size); if (block->resized) { - block->resized(block->idstr, newsize, block->host); + block->resized(block->idstr, unaligned_size, block->host); } return 0; } From patchwork Wed Mar 11 17:20:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184414 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp874694ile; Wed, 11 Mar 2020 10:26:37 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvGMgvQcg6g/BVJiS6hcWyCJ2ucmyLj81G9UilRiSYMfj4YCQrlCxf37ZN2KfxwUvVSZNvG X-Received: by 2002:ac8:47cc:: with SMTP id d12mr3589265qtr.256.1583947597589; Wed, 11 Mar 2020 10:26:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947597; cv=none; d=google.com; s=arc-20160816; b=GYtxKzDPkMhxiwpQQZx4ANGWww56yWL6FHH8tC/HyyreB4W7Be8zO0EMHYZnMIGeSr BcQBQ8acybPJxxMTIUdzTzKKyB7rgUzWUkC1sDKNDdE88MbcCvKPh38wzFU+QtAd9Fhx FHjFQhzNEhSIY2uJfKBvSfzw/4yrykocNUeJKLL1vhOuq8pe+Depjh5cMgTZqk4ZciMR gXK4rJs+6/pyFuSepX4oXw0VVf+UkHHR3+tuGDRHcRAwSKBDmsBS3mgwgJvonfer9hD6 85wc2ESKxrCpzFvAQ3vaft050Ovvw34Bc8ZcPFGrUz5I2qodhBqsbj0VSc8LWoMhmV6Q xgRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=TLQOMuQvR131k526VymG3Pw670w+Przb0a9NHrMpnGI=; b=Zc/wmdXvXeedNk6rMZQMW2ISTyxYf2NmFAkGrqJ0LKPc2YHb76NmcL9shN7rROffVT g6wAxoqgtVNAW3ealXR9AGjjJazj3aYp+xxBcJNYH5aUQoZHjNXJpmdkpRmpLkRaP3kw EBbIZjvCsGOtc0RzKMzIyb2FeIWYr5yCg6YyN+SyIEvxYoxky2d5QaIwssHD5GdyOlPb TG62TmxICgvPmzW6iYR0jdTRkgkjU2Qjleqm0siiW+bF+HU+tLcDP+OsNC9lpF3o8DR6 C31HnzQcwdTHDaflvtJMk/cI6tyxYA4bCml3dxwPLPOvKqyoWlLkejgjr2HqHJcyYhcS 7wNg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id c13si1285097qvq.27.2020.03.11.10.26.37 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:26:37 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56276 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC57t-0000Wx-3t for patch@linaro.org; Wed, 11 Mar 2020 13:26:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58060) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC554-0001wF-QJ for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC553-0003lq-Gf for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:42 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:3278 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC550-0003Zu-Cb; Wed, 11 Mar 2020 13:23:38 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id AB0E81B2F9C124E293E9; Thu, 12 Mar 2020 01:23:34 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:28 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 04/10] hw/acpi/nvdimm: Fix for NVDIMM incorrect DSM output buffer length Date: Wed, 11 Mar 2020 17:20:08 +0000 Message-ID: <20200311172014.33052-5-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.191 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" As per ACPI spec 6.3, Table 19-419 Object Conversion Rules, if the Buffer Field <= to the size of an Integer (in bits), it will be treated as an integer. Moreover, the integer size depends on DSDT tables revision number. If revision number is < 2, integer size is 32 bits, otherwise it is 64 bits. Current NVDIMM common DSM aml code (NCAL) uses CreateField() for creating DSM output buffer. This creates an issue in arm/virt platform where DSDT revision number is 2 and results in DSM buffer with a wrong size(8 bytes) gets returned when actual length is < 8 bytes. This causes guest kernel to report, "nfit ACPI0012:00: found a zero length table '0' parsing nfit" In order to fix this, aml code is now modified such that it builds the DSM output buffer in a byte by byte fashion when length is smaller than Integer size. Suggested-by: Igor Mammedov Signed-off-by: Shameer Kolothum --- v2 -> v3 - Using Integer size as 8 bytes instead of SizeOf(Integer) --- hw/acpi/nvdimm.c | 40 +++++++++++++++++++-- tests/qtest/bios-tables-test-allowed-diff.h | 2 ++ 2 files changed, 39 insertions(+), 3 deletions(-) -- 2.17.1 Reviewed-by: Igor Mammedov diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index 5219dd0e2e..213556f35d 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -938,6 +938,7 @@ static void nvdimm_build_common_dsm(Aml *dev) Aml *method, *ifctx, *function, *handle, *uuid, *dsm_mem, *elsectx2; Aml *elsectx, *unsupport, *unpatched, *expected_uuid, *uuid_invalid; Aml *pckg, *pckg_index, *pckg_buf, *field, *dsm_out_buf, *dsm_out_buf_size; + Aml *whilectx, *offset; uint8_t byte_list[1]; method = aml_method(NVDIMM_COMMON_DSM, 5, AML_SERIALIZED); @@ -1091,13 +1092,46 @@ static void nvdimm_build_common_dsm(Aml *dev) /* RLEN is not included in the payload returned to guest. */ aml_append(method, aml_subtract(aml_name(NVDIMM_DSM_OUT_BUF_SIZE), aml_int(4), dsm_out_buf_size)); + + /* + * As per ACPI spec 6.3, Table 19-419 Object Conversion Rules, if + * the Buffer Field <= to the size of an Integer (in bits), it will + * be treated as an integer. Moreover, the integer size depends on + * DSDT tables revision number. If revision number is < 2, integer + * size is 32 bits, otherwise it is 64 bits. + * Because of this CreateField() canot be used if RLEN < Integer Size. + * + * Also please note that APCI ASL operator SizeOf() doesn't support + * Integer and there isn't any other way to figure out the Integer + * size. Hence we assume 8 byte as Integer size and if RLEN < 8 bytes, + * build dsm_out_buf byte by byte. + */ + ifctx = aml_if(aml_lless(dsm_out_buf_size, aml_int(8))); + offset = aml_local(2); + aml_append(ifctx, aml_store(aml_int(0), offset)); + aml_append(ifctx, aml_name_decl("TBUF", aml_buffer(1, NULL))); + aml_append(ifctx, aml_store(aml_buffer(0, NULL), dsm_out_buf)); + + whilectx = aml_while(aml_lless(offset, dsm_out_buf_size)); + /* Copy 1 byte at offset from ODAT to temporary buffer(TBUF). */ + aml_append(whilectx, aml_store(aml_derefof(aml_index( + aml_name(NVDIMM_DSM_OUT_BUF), offset)), + aml_index(aml_name("TBUF"), aml_int(0)))); + aml_append(whilectx, aml_concatenate(dsm_out_buf, aml_name("TBUF"), + dsm_out_buf)); + aml_append(whilectx, aml_increment(offset)); + aml_append(ifctx, whilectx); + + aml_append(ifctx, aml_return(dsm_out_buf)); + aml_append(method, ifctx); + + /* If RLEN >= Integer size, just use CreateField() operator */ aml_append(method, aml_store(aml_shiftleft(dsm_out_buf_size, aml_int(3)), dsm_out_buf_size)); aml_append(method, aml_create_field(aml_name(NVDIMM_DSM_OUT_BUF), aml_int(0), dsm_out_buf_size, "OBUF")); - aml_append(method, aml_concatenate(aml_buffer(0, NULL), aml_name("OBUF"), - dsm_out_buf)); - aml_append(method, aml_return(dsm_out_buf)); + aml_append(method, aml_return(aml_name("OBUF"))); + aml_append(dev, method); } diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h index dfb8523c8b..eb8bae1407 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,3 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/pc/SSDT.dimmpxm", +"tests/data/acpi/q35/SSDT.dimmpxm", From patchwork Wed Mar 11 17:20:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184418 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp876701ile; Wed, 11 Mar 2020 10:28:55 -0700 (PDT) X-Google-Smtp-Source: ADFU+vtcWk5On8GFvRkPqjNGTqi8f7NjB4CrP/lWpJqfEBKePzz4Hwu1mE17fi1sgAQkaCOL4C9N X-Received: by 2002:a37:66c9:: with SMTP id a192mr3609616qkc.35.1583947734930; Wed, 11 Mar 2020 10:28:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947734; cv=none; d=google.com; s=arc-20160816; b=gQ9oQJbhbLCfxPJDzZ78AtRR/vIcXdRaszwrHohfjyNehs6kcPV7V64CcRKXFGc5dF Gsd8IlMwXdAO2EvVDh+u/hHAYcBj6V+Hygqtm6+lHPy3Pn6gW1hA2LmTomLcKDZ+T98y QS6Yc/mnY51hHi6ea2WXZl0Q8V4ZglDwM+zCwpSGO00uOaUq/1IJgm/BpP5bGQENvro3 dplO2jEqmrBrMnvEwy3u3sVv7eOt5t1cqCegOXPj5q8lLHdlvsCMQ3qG8QOJ6TdCuQ/e 9lY/vRH/VKMe4OUkbaUBXe2c7FPLpL00DM7g8j50EL830Y6rR0cecZQAH4IRU3uCnZxi bK1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=0NAVHm3jsJCUc2fKig/iNMSJBQRPZJnrN+svUsdRGks=; b=uFcbh/rt5CiOnWhdLYZv9w7Dss4y+HAxS4mNdLSgOD0lti0lBAb7SIrv4AOovO5VKY UUxZtZaFbu1ecZ/71qeI3/wCOQrdEydIBhgSsCuaJMDu9AMzPo3q326aIQ9FZkLCtmyx nrQJGSclt6lbdty74Itnjt2CDEO5vdNzNQpFrmC/I25+p2IPrOpgSgjE5+81rvhr741l NV8ccm6XbxDp3/T+wTlMrtEcj5jKn/JtTLzSQd4lQiRv30yy3VR5zRarBXj6yqqgPEit mOLjjxkCRwL42PU0F4c9HNlbEZndlLgnlEfJJwLD03/+LmOXpFb3CuRmOhgCEYOHpnMI 2rGg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id e13si750097qkl.376.2020.03.11.10.28.54 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:28:54 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56328 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC5A6-0004mw-Cs for patch@linaro.org; Wed, 11 Mar 2020 13:28:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58102) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC559-00029N-Kl for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC558-0003uM-4R for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:47 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:3198 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC554-0003hf-7x; Wed, 11 Mar 2020 13:23:42 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id B2E4CC8B1AC285E99037; Thu, 12 Mar 2020 01:23:39 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:31 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 05/10] nvdimm: Use configurable ACPI IO base and size Date: Wed, 11 Mar 2020 17:20:09 +0000 Message-ID: <20200311172014.33052-6-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.190 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Kwangwoo Lee This patch makes IO base and size configurable to create NPIO AML for ACPI NFIT. Since a different architecture like AArch64 does not use port-mapped IO, a configurable IO base is required to create correct mapping of ACPI IO address and size. Signed-off-by: Kwangwoo Lee Signed-off-by: Eric Auger Signed-off-by: Shameer Kolothum --- hw/acpi/nvdimm.c | 32 ++++++++++++++++++++++---------- hw/i386/acpi-build.c | 6 ++++++ hw/i386/acpi-build.h | 3 +++ hw/i386/pc_piix.c | 2 ++ hw/i386/pc_q35.c | 2 ++ include/hw/mem/nvdimm.h | 3 +++ 6 files changed, 38 insertions(+), 10 deletions(-) -- 2.17.1 Reviewed-by: Igor Mammedov diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index 213556f35d..fb99ad845a 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -900,11 +900,13 @@ void nvdimm_acpi_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev) } void nvdimm_init_acpi_state(NVDIMMState *state, MemoryRegion *io, + struct AcpiGenericAddress dsm_io, FWCfgState *fw_cfg, Object *owner) { + state->dsm_io = dsm_io; memory_region_init_io(&state->io_mr, owner, &nvdimm_dsm_ops, state, - "nvdimm-acpi-io", NVDIMM_ACPI_IO_LEN); - memory_region_add_subregion(io, NVDIMM_ACPI_IO_BASE, &state->io_mr); + "nvdimm-acpi-io", dsm_io.bit_width >> 3); + memory_region_add_subregion(io, dsm_io.address, &state->io_mr); state->dsm_mem = g_array_new(false, true /* clear */, 1); acpi_data_push(state->dsm_mem, sizeof(NvdimmDsmIn)); @@ -933,13 +935,15 @@ void nvdimm_init_acpi_state(NVDIMMState *state, MemoryRegion *io, #define NVDIMM_QEMU_RSVD_UUID "648B9CF2-CDA1-4312-8AD9-49C4AF32BD62" -static void nvdimm_build_common_dsm(Aml *dev) +static void nvdimm_build_common_dsm(Aml *dev, + NVDIMMState *nvdimm_state) { Aml *method, *ifctx, *function, *handle, *uuid, *dsm_mem, *elsectx2; Aml *elsectx, *unsupport, *unpatched, *expected_uuid, *uuid_invalid; Aml *pckg, *pckg_index, *pckg_buf, *field, *dsm_out_buf, *dsm_out_buf_size; Aml *whilectx, *offset; uint8_t byte_list[1]; + AmlRegionSpace rs; method = aml_method(NVDIMM_COMMON_DSM, 5, AML_SERIALIZED); uuid = aml_arg(0); @@ -950,9 +954,16 @@ static void nvdimm_build_common_dsm(Aml *dev) aml_append(method, aml_store(aml_name(NVDIMM_ACPI_MEM_ADDR), dsm_mem)); + if (nvdimm_state->dsm_io.space_id == AML_AS_SYSTEM_IO) { + rs = AML_SYSTEM_IO; + } else { + rs = AML_SYSTEM_MEMORY; + } + /* map DSM memory and IO into ACPI namespace. */ - aml_append(method, aml_operation_region(NVDIMM_DSM_IOPORT, AML_SYSTEM_IO, - aml_int(NVDIMM_ACPI_IO_BASE), NVDIMM_ACPI_IO_LEN)); + aml_append(method, aml_operation_region(NVDIMM_DSM_IOPORT, rs, + aml_int(nvdimm_state->dsm_io.address), + nvdimm_state->dsm_io.bit_width >> 3)); aml_append(method, aml_operation_region(NVDIMM_DSM_MEMORY, AML_SYSTEM_MEMORY, dsm_mem, sizeof(NvdimmDsmIn))); @@ -967,7 +978,7 @@ static void nvdimm_build_common_dsm(Aml *dev) field = aml_field(NVDIMM_DSM_IOPORT, AML_DWORD_ACC, AML_NOLOCK, AML_PRESERVE); aml_append(field, aml_named_field(NVDIMM_DSM_NOTIFY, - NVDIMM_ACPI_IO_LEN * BITS_PER_BYTE)); + nvdimm_state->dsm_io.bit_width)); aml_append(method, field); /* @@ -1268,7 +1279,8 @@ static void nvdimm_build_nvdimm_devices(Aml *root_dev, uint32_t ram_slots) } static void nvdimm_build_ssdt(GArray *table_offsets, GArray *table_data, - BIOSLinker *linker, GArray *dsm_dma_area, + BIOSLinker *linker, + NVDIMMState *nvdimm_state, uint32_t ram_slots) { Aml *ssdt, *sb_scope, *dev; @@ -1296,7 +1308,7 @@ static void nvdimm_build_ssdt(GArray *table_offsets, GArray *table_data, */ aml_append(dev, aml_name_decl("_HID", aml_string("ACPI0012"))); - nvdimm_build_common_dsm(dev); + nvdimm_build_common_dsm(dev, nvdimm_state); /* 0 is reserved for root device. */ nvdimm_build_device_dsm(dev, 0); @@ -1315,7 +1327,7 @@ static void nvdimm_build_ssdt(GArray *table_offsets, GArray *table_data, NVDIMM_ACPI_MEM_ADDR); bios_linker_loader_alloc(linker, - NVDIMM_DSM_MEM_FILE, dsm_dma_area, + NVDIMM_DSM_MEM_FILE, nvdimm_state->dsm_mem, sizeof(NvdimmDsmIn), false /* high memory */); bios_linker_loader_add_pointer(linker, ACPI_BUILD_TABLE_FILE, mem_addr_offset, sizeof(uint32_t), @@ -1337,7 +1349,7 @@ void nvdimm_build_acpi(GArray *table_offsets, GArray *table_data, return; } - nvdimm_build_ssdt(table_offsets, table_data, linker, state->dsm_mem, + nvdimm_build_ssdt(table_offsets, table_data, linker, state, ram_slots); device_list = nvdimm_get_device_list(); diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 80f05d728d..ed2b9af8d8 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -128,6 +128,12 @@ typedef struct FwCfgTPMConfig { static bool acpi_get_mcfg(AcpiMcfgInfo *mcfg); +const struct AcpiGenericAddress x86_nvdimm_acpi_dsmio = { + .space_id = AML_AS_SYSTEM_IO, + .address = NVDIMM_ACPI_IO_BASE, + .bit_width = NVDIMM_ACPI_IO_LEN << 3 +}; + static void init_common_fadt_data(MachineState *ms, Object *o, AcpiFadtData *data) { diff --git a/hw/i386/acpi-build.h b/hw/i386/acpi-build.h index 007332e51c..74df5fc612 100644 --- a/hw/i386/acpi-build.h +++ b/hw/i386/acpi-build.h @@ -1,6 +1,9 @@ #ifndef HW_I386_ACPI_BUILD_H #define HW_I386_ACPI_BUILD_H +#include "hw/acpi/acpi-defs.h" + +extern const struct AcpiGenericAddress x86_nvdimm_acpi_dsmio; void acpi_setup(void); diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index e2d98243bc..f0066d2394 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -61,6 +61,7 @@ #include "migration/misc.h" #include "sysemu/numa.h" #include "hw/mem/nvdimm.h" +#include "hw/i386/acpi-build.h" #define MAX_IDE_BUS 2 @@ -297,6 +298,7 @@ else { if (machine->nvdimms_state->is_enabled) { nvdimm_init_acpi_state(machine->nvdimms_state, system_io, + x86_nvdimm_acpi_dsmio, x86ms->fw_cfg, OBJECT(pcms)); } } diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index d37c425e22..d2806c1b29 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -54,6 +54,7 @@ #include "qemu/error-report.h" #include "sysemu/numa.h" #include "hw/mem/nvdimm.h" +#include "hw/i386/acpi-build.h" /* ICH9 AHCI has 6 ports */ #define MAX_SATA_PORTS 6 @@ -315,6 +316,7 @@ static void pc_q35_init(MachineState *machine) if (machine->nvdimms_state->is_enabled) { nvdimm_init_acpi_state(machine->nvdimms_state, system_io, + x86_nvdimm_acpi_dsmio, x86ms->fw_cfg, OBJECT(pcms)); } } diff --git a/include/hw/mem/nvdimm.h b/include/hw/mem/nvdimm.h index 4807ca615b..a3c08955e8 100644 --- a/include/hw/mem/nvdimm.h +++ b/include/hw/mem/nvdimm.h @@ -26,6 +26,7 @@ #include "hw/mem/pc-dimm.h" #include "hw/acpi/bios-linker-loader.h" #include "qemu/uuid.h" +#include "hw/acpi/aml-build.h" #define NVDIMM_DEBUG 0 #define nvdimm_debug(fmt, ...) \ @@ -147,10 +148,12 @@ struct NVDIMMState { */ int32_t persistence; char *persistence_string; + struct AcpiGenericAddress dsm_io; }; typedef struct NVDIMMState NVDIMMState; void nvdimm_init_acpi_state(NVDIMMState *state, MemoryRegion *io, + struct AcpiGenericAddress dsm_io, FWCfgState *fw_cfg, Object *owner); void nvdimm_build_acpi(GArray *table_offsets, GArray *table_data, BIOSLinker *linker, NVDIMMState *state, From patchwork Wed Mar 11 17:20:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184412 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp873310ile; Wed, 11 Mar 2020 10:25:12 -0700 (PDT) X-Google-Smtp-Source: ADFU+vtNs/ubV2RrCuzzeTMa+9OWu+2V5W4jgEOs4gOY9cUGJv4vMT8LBrImzE833ALoUBjwGP4H X-Received: by 2002:a37:ef10:: with SMTP id j16mr3548689qkk.200.1583947512531; Wed, 11 Mar 2020 10:25:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947512; cv=none; d=google.com; s=arc-20160816; b=HxPUxXTIg+mHIPb5hRTRTm1cL/4t7mRkjOBofWoiHgpFH+mSf6ggN+OU3Ahn+yeoxo RJwNzKROf5gkIVJmMTePm1FlFH3NogXwxmmRw+s+MhIzPLNpQQ30Ka69Nc2EhTDphBgq qBq5hsjDdjsYjvBwThclkuK28faYJWlDl/OO1MUcq/7t93D7UyoUG9UR/LhzCO7PVXWf FfReROfDObzCO4Nm/QAU4natljsviKJS3AwZFAV7uQXYauEhiwF5ZFl/sZsKQQaCa5kY dJawUF82VGgXJxoiz6y1g7T/gWLkfI6ZhITXV2E1D00TrjZyC1xqDYSt57zs94HAFLso zu8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=O2gsYX+dRSCeu2WGGDHmG2EGgCyTD7AXhL+FcSOBbco=; b=vqQAiD9IiB7Vrec8GFUscuSAs2tAUrspPyKtDKp/WQiE4WWEsZrDzMLNmG9jxXJmgo CmMuI70IjcJCNxPtdCjQDbN0uUZScP0roxQG1bySzE+tDUkQ3jcEs5ZoLuEPrmBcSF8B 2xC53s6ugqruS3ABjUPLIYAvsGpYo75Xhth5ClUyIeatzBeQZAXrYoDwcMXOAOhu/dty tWPULovesbLU5nKwtrBkSWZdpDUtoWlmsKoEzoIziWIbHAqIZ9coxOBJlaaZzNE1Ql/0 engjssAn7RaR1BB/aykP4cWTy+QWV5GgFl3N8/uzPCht8QGfQfbqQL2/WlEEchyUGUVl iZDA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 67si1262874qtg.124.2020.03.11.10.25.12 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:25:12 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56245 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC56W-00068A-3g for patch@linaro.org; Wed, 11 Mar 2020 13:25:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58130) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC55D-0002HP-8n for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC55B-00043D-V7 for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:51 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:3279 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC558-0003si-VD; Wed, 11 Mar 2020 13:23:47 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id BE2E998B9FD3E14039DF; Thu, 12 Mar 2020 01:23:44 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:35 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 06/10] hw/arm/virt: Add nvdimm hot-plug infrastructure Date: Wed, 11 Mar 2020 17:20:10 +0000 Message-ID: <20200311172014.33052-7-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.191 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Kwangwoo Lee This adds support to init nvdimm acpi state and build nvdimm acpi tables. Please note nvdimm_support is not yet enabled. Signed-off-by: Kwangwoo Lee Signed-off-by: Eric Auger Signed-off-by: Shameer Kolothum --- v2 -> v3 -Modified commit log. --- hw/arm/Kconfig | 1 + hw/arm/virt-acpi-build.c | 6 ++++++ hw/arm/virt.c | 19 +++++++++++++++++++ hw/mem/Kconfig | 2 +- include/hw/arm/virt.h | 1 + 5 files changed, 28 insertions(+), 1 deletion(-) -- 2.17.1 Reviewed-by: Igor Mammedov diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index bc54fd61f9..b023c0ecd5 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -25,6 +25,7 @@ config ARM_VIRT select DIMM select ACPI_MEMORY_HOTPLUG select ACPI_HW_REDUCED + select ACPI_NVDIMM config CHEETAH bool diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index c13710b727..b7d666b7a4 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -44,6 +44,7 @@ #include "hw/pci/pcie_host.h" #include "hw/pci/pci.h" #include "hw/arm/virt.h" +#include "hw/mem/nvdimm.h" #include "sysemu/numa.h" #include "sysemu/reset.h" #include "kvm_arm.h" @@ -826,6 +827,11 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables) } } + if (ms->nvdimms_state->is_enabled) { + nvdimm_build_acpi(table_offsets, tables_blob, tables->linker, + ms->nvdimms_state, ms->ram_slots); + } + if (its_class_name() && !vmc->no_its) { acpi_add_table(table_offsets, tables_blob); build_iort(tables_blob, tables->linker, vms); diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 32d865a488..18178553fa 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -148,6 +148,7 @@ static const MemMapEntry base_memmap[] = { [VIRT_SMMU] = { 0x09050000, 0x00020000 }, [VIRT_PCDIMM_ACPI] = { 0x09070000, MEMORY_HOTPLUG_IO_LEN }, [VIRT_ACPI_GED] = { 0x09080000, ACPI_GED_EVT_SEL_LEN }, + [VIRT_NVDIMM_ACPI] = { 0x09090000, NVDIMM_ACPI_IO_LEN}, [VIRT_MMIO] = { 0x0a000000, 0x00000200 }, /* ...repeating for a total of NUM_VIRTIO_TRANSPORTS, each of that size */ [VIRT_PLATFORM_BUS] = { 0x0c000000, 0x02000000 }, @@ -1784,6 +1785,18 @@ static void machvirt_init(MachineState *machine) create_platform_bus(vms); + if (machine->nvdimms_state->is_enabled) { + const struct AcpiGenericAddress arm_virt_nvdimm_acpi_dsmio = { + .space_id = AML_AS_SYSTEM_MEMORY, + .address = vms->memmap[VIRT_NVDIMM_ACPI].base, + .bit_width = NVDIMM_ACPI_IO_LEN << 3 + }; + + nvdimm_init_acpi_state(machine->nvdimms_state, sysmem, + arm_virt_nvdimm_acpi_dsmio, + vms->fw_cfg, OBJECT(vms)); + } + vms->bootinfo.ram_size = machine->ram_size; vms->bootinfo.nb_cpus = smp_cpus; vms->bootinfo.board_id = -1; @@ -1970,6 +1983,8 @@ static void virt_memory_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { VirtMachineState *vms = VIRT_MACHINE(hotplug_dev); + MachineState *ms = MACHINE(hotplug_dev); + bool is_nvdimm = object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM); Error *local_err = NULL; pc_dimm_plug(PC_DIMM(dev), MACHINE(vms), &local_err); @@ -1977,6 +1992,10 @@ static void virt_memory_plug(HotplugHandler *hotplug_dev, goto out; } + if (is_nvdimm) { + nvdimm_plug(ms->nvdimms_state); + } + hotplug_handler_plug(HOTPLUG_HANDLER(vms->acpi_dev), dev, &error_abort); diff --git a/hw/mem/Kconfig b/hw/mem/Kconfig index 2ad052a536..c27844900d 100644 --- a/hw/mem/Kconfig +++ b/hw/mem/Kconfig @@ -8,4 +8,4 @@ config MEM_DEVICE config NVDIMM bool default y - depends on (PC || PSERIES) + depends on (PC || PSERIES || ARM_VIRT) diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index 02f500cb8e..59588d18db 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -79,6 +79,7 @@ enum { VIRT_SECURE_MEM, VIRT_PCDIMM_ACPI, VIRT_ACPI_GED, + VIRT_NVDIMM_ACPI, VIRT_LOWMEMMAP_LAST, }; From patchwork Wed Mar 11 17:20:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184416 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp875471ile; Wed, 11 Mar 2020 10:27:25 -0700 (PDT) X-Google-Smtp-Source: ADFU+vtgXF+HBTqUNLQZ7ZLlBdVB+fWpzD3yQIEPYoHk90eitvJHPLGizfneZQiUbcrSRdpFCUyL X-Received: by 2002:ad4:51c3:: with SMTP id p3mr3697387qvq.97.1583947645628; Wed, 11 Mar 2020 10:27:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947645; cv=none; d=google.com; s=arc-20160816; b=GLfubkmCUAvhPM10Fz4lzxkUEMaYf0+RBPInX1OoZaPbnsO4vaVSlkrv2NQxQlCRTT OKuxuLVFX/25GeoaTEoyRwXMSUUx6WcTdYWRMIleG/OUqszmwVIHRS/mifZUtj4IHa4k 67OGmUuYoYeTJDRqCIAmhhleWGiFPKmQXlV3cu4YxbzKRVk2MRL36BHZRYrJD8wpowqm sQm7Ipi6fWtR5rWmfMcp791JEoMidLn0cW8U+ajWHneAhSbjY5mH02esbyoc6OsrIk+D 6EUfbvVANYpzRJVCo5om3a2CJQmxhQtZtogzw1OaohWeuNMg/ROz0LYpFfhx6cPouXO7 CghQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=SAmrOvYOfG5x+Bk0ifMF/0iGT86Irbte5lOQhAcc5LE=; b=npwuLM/5KLYOtZiIelxmVk8MMhApy7ruDrxDGVczcbyU4wXzniWynk4CEblRKRbH3j BM7kbgQSvmXV/4lPWyy/HE4i/tvBCFQC7HZUvk4ungp7l4GupQ+/ryOZ1j+lQknUFkj6 GcruErV1dCx3Yt2tYB8lT8Ve3iaIGBAHGDyrOwiuUbNxw+0c2lrEyxdBuhorkhhkGHc0 ECOeyjL6AdbOv2HCrbWKw1eNuPpym7f/pmoB1k5TWjPc2MKtD0mLuc6ssGw1VcaVvARm wcEmu+nyMu8ZeRKCN1TYoL3f8ASSLEmthQeXBnG4+74mx5VdTZ1PgisYzq+18IHAlH2j /cMw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id n7si1646777qtl.44.2020.03.11.10.27.25 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:27:25 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56306 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC58f-0001hG-2K for patch@linaro.org; Wed, 11 Mar 2020 13:27:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58181) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC55I-0002Wa-Se for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC55H-0004D8-EA for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:56 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:3281 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC55E-00043l-8L; Wed, 11 Mar 2020 13:23:52 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id D61AA2032573321C81E2; Thu, 12 Mar 2020 01:23:49 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:38 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 07/10] hw/arm/virt: Add nvdimm hotplug support Date: Wed, 11 Mar 2020 17:20:11 +0000 Message-ID: <20200311172014.33052-8-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.191 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This adds support for nvdimm hotplug events through GED and enables nvdimm for the arm/virt. Now Guests with ACPI can have both cold and hot plug of nvdimms. Hot removal functionality is not yet supported. Signed-off-by: Shameer Kolothum Reviewed-by: Igor Mammedov Reviewed-by: Eric Auger --- docs/specs/acpi_hw_reduced_hotplug.rst | 1 + hw/acpi/generic_event_device.c | 15 ++++++++++++++- hw/arm/virt.c | 16 +++++++++++----- include/hw/acpi/generic_event_device.h | 1 + 4 files changed, 27 insertions(+), 6 deletions(-) -- 2.17.1 diff --git a/docs/specs/acpi_hw_reduced_hotplug.rst b/docs/specs/acpi_hw_reduced_hotplug.rst index 911a98255b..e3abe975bf 100644 --- a/docs/specs/acpi_hw_reduced_hotplug.rst +++ b/docs/specs/acpi_hw_reduced_hotplug.rst @@ -63,6 +63,7 @@ GED IO interface (4 byte access) bits: 0: Memory hotplug event 1: System power down event + 2: NVDIMM hotplug event 2-31: Reserved **write_access:** diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c index 021ed2bf23..5d17f78a1e 100644 --- a/hw/acpi/generic_event_device.c +++ b/hw/acpi/generic_event_device.c @@ -16,6 +16,7 @@ #include "hw/acpi/generic_event_device.h" #include "hw/irq.h" #include "hw/mem/pc-dimm.h" +#include "hw/mem/nvdimm.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/error-report.h" @@ -23,6 +24,7 @@ static const uint32_t ged_supported_events[] = { ACPI_GED_MEM_HOTPLUG_EVT, ACPI_GED_PWR_DOWN_EVT, + ACPI_GED_NVDIMM_HOTPLUG_EVT, }; /* @@ -110,6 +112,11 @@ void build_ged_aml(Aml *table, const char *name, HotplugHandler *hotplug_dev, aml_notify(aml_name(ACPI_POWER_BUTTON_DEVICE), aml_int(0x80))); break; + case ACPI_GED_NVDIMM_HOTPLUG_EVT: + aml_append(if_ctx, + aml_notify(aml_name("\\_SB.NVDR"), + aml_int(0x80))); + break; default: /* * Please make sure all the events in ged_supported_events[] @@ -175,7 +182,11 @@ static void acpi_ged_device_plug_cb(HotplugHandler *hotplug_dev, AcpiGedState *s = ACPI_GED(hotplug_dev); if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { - acpi_memory_plug_cb(hotplug_dev, &s->memhp_state, dev, errp); + if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) { + nvdimm_acpi_plug_cb(hotplug_dev, dev); + } else { + acpi_memory_plug_cb(hotplug_dev, &s->memhp_state, dev, errp); + } } else { error_setg(errp, "virt: device plug request for unsupported device" " type: %s", object_get_typename(OBJECT(dev))); @@ -192,6 +203,8 @@ static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits ev) sel = ACPI_GED_MEM_HOTPLUG_EVT; } else if (ev & ACPI_POWER_DOWN_STATUS) { sel = ACPI_GED_PWR_DOWN_EVT; + } else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) { + sel = ACPI_GED_NVDIMM_HOTPLUG_EVT; } else { /* Unknown event. Return without generating interrupt. */ warn_report("GED: Unsupported event %d. No irq injected", ev); diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 18178553fa..f1546ec2e6 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -548,6 +548,10 @@ static inline DeviceState *create_acpi_ged(VirtMachineState *vms) event |= ACPI_GED_MEM_HOTPLUG_EVT; } + if (ms->nvdimms_state->is_enabled) { + event |= ACPI_GED_NVDIMM_HOTPLUG_EVT; + } + dev = qdev_create(NULL, TYPE_ACPI_GED); qdev_prop_set_uint32(dev, "ged-event", event); @@ -1963,19 +1967,20 @@ static void virt_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { VirtMachineState *vms = VIRT_MACHINE(hotplug_dev); + const MachineState *ms = MACHINE(hotplug_dev); const bool is_nvdimm = object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM); - if (is_nvdimm) { - error_setg(errp, "nvdimm is not yet supported"); - return; - } - if (!vms->acpi_dev) { error_setg(errp, "memory hotplug is not enabled: missing acpi-ged device"); return; } + if (is_nvdimm && !ms->nvdimms_state->is_enabled) { + error_setg(errp, "nvdimm is not enabled: add 'nvdimm=on' to '-M'"); + return; + } + pc_dimm_pre_plug(PC_DIMM(dev), MACHINE(hotplug_dev), NULL, errp); } @@ -2120,6 +2125,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) hc->plug = virt_machine_device_plug_cb; hc->unplug_request = virt_machine_device_unplug_request_cb; mc->numa_mem_supported = true; + mc->nvdimm_supported = true; mc->auto_enable_numa_with_memhp = true; mc->default_ram_id = "mach-virt.ram"; } diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/generic_event_device.h index d157eac088..9eb86ca4fd 100644 --- a/include/hw/acpi/generic_event_device.h +++ b/include/hw/acpi/generic_event_device.h @@ -82,6 +82,7 @@ */ #define ACPI_GED_MEM_HOTPLUG_EVT 0x1 #define ACPI_GED_PWR_DOWN_EVT 0x2 +#define ACPI_GED_NVDIMM_HOTPLUG_EVT 0x4 typedef struct GEDState { MemoryRegion io; From patchwork Wed Mar 11 17:20:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184417 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp876640ile; Wed, 11 Mar 2020 10:28:51 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvOGTxey8xhKTblsZmJPYInFVw9lcBBZ3FvnbpyiKafwvCCROl9utyJVJ6O0XgQQTcyBF3i X-Received: by 2002:a37:64c6:: with SMTP id y189mr3927381qkb.12.1583947730977; Wed, 11 Mar 2020 10:28:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947730; cv=none; d=google.com; s=arc-20160816; b=R5BLBsxFZcbCvoDYXptpQ7lm5Zmp3Zx6o7G1nJGfgZGaysyeJKS2g4Xkvue6kaL2bR fF42qw17CuqK/AiiEUv+VcHqBFL99ferUVMpne0dTycvF2oe5yx2mghBbKF1/gMT1yP5 xE5+VCh9XvYQFoR+H1uvOZbbk8+o5aLZCbMVSjTyLgWZ/AetqV///PlNKdNh0+AJq6I/ +P51D6DipK4968vQmoFfdRUY0o9OCzHAX2colKAHzhhQdkw+7hVBAclMox02JBG6+6aW GSuTdsj+u+LIv/HI9S9DitA3e10SW9JmUV0YtFaEDmWFnNZ89ui0ozm3hxB+GsjfrXV5 pY0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=pFiqul+UkrQQ3DByAbZpAxkwiDQLtuNRRR2ifAdFrtg=; b=eLEsI88l4WmVBBX4Xz+2BBcqn0HEnT1Nqjqo84hzDnmGIiXw+7m8PcHH9dl2eyn9qo pggsx5De7EWIcVE/UrddcCcujOnk/s6DKqMdYonqs729aHn7csH87/DN+Q8XV3KXBitF TiaxQu5GWmU04v3LNpcPCA5svAYNsbSLVzxSpN/NVNJQjHpL74FoDtrpq8fz7lEAtZKu Pks7CnOJWnNRerqqC7xTdSuxcyTqoAeozrupQjg9tx9R4Z5oG7uUyaXA7Uw7PyS4uG2p AjOT3/2sVmsN4+oIfN7NLp2+6BOgo/FOHCHMmfcvuH6bXuxzk7tV0/I4sArQKbsrPHoU Kr5A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id e11si1320676qth.287.2020.03.11.10.28.50 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:28:50 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56324 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC5A2-0004dZ-Gx for patch@linaro.org; Wed, 11 Mar 2020 13:28:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58170) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC55H-0002U0-Tf for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC55G-0004B8-Sl for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:23:55 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:3280 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC55E-00043Y-6L; Wed, 11 Mar 2020 13:23:52 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id CFA3D2A35C69E15F4093; Thu, 12 Mar 2020 01:23:49 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:42 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 08/10] tests: Update ACPI tables list for upcoming arm/virt test changes Date: Wed, 11 Mar 2020 17:20:12 +0000 Message-ID: <20200311172014.33052-9-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.191 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This is in preparation to update test_acpi_virt_tcg_memhp() with pc-dimm and nvdimm. Update the bios-tables-test-allowed-diff.h with the affected ACPI tables so that "make check" doesn't fail. Also add empty files for new tables required for new test. Signed-off-by: Shameer Kolothum --- tests/data/acpi/virt/NFIT.memhp | 0 tests/data/acpi/virt/SSDT.memhp | 0 tests/qtest/bios-tables-test-allowed-diff.h | 3 +++ 3 files changed, 3 insertions(+) create mode 100644 tests/data/acpi/virt/NFIT.memhp create mode 100644 tests/data/acpi/virt/SSDT.memhp -- 2.17.1 diff --git a/tests/data/acpi/virt/NFIT.memhp b/tests/data/acpi/virt/NFIT.memhp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/virt/SSDT.memhp b/tests/data/acpi/virt/SSDT.memhp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h index eb8bae1407..862c49e675 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,3 +1,6 @@ /* List of comma-separated changed AML files to ignore */ "tests/data/acpi/pc/SSDT.dimmpxm", "tests/data/acpi/q35/SSDT.dimmpxm", +"tests/data/acpi/virt/DSDT.memhp", +"tests/data/acpi/virt/SSDT.memhp", +"tests/data/acpi/virt/NFIT.memhp", From patchwork Wed Mar 11 17:20:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184419 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp876759ile; Wed, 11 Mar 2020 10:28:58 -0700 (PDT) X-Google-Smtp-Source: ADFU+vu66XMqXW6eamhyjyQQqNIGPbyW3TA1n13F+gicw+HsWB0Cb55pbWpQ4yy6Khp6QoFCIbQA X-Received: by 2002:ac8:607:: with SMTP id d7mr3649755qth.271.1583947738137; Wed, 11 Mar 2020 10:28:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947738; cv=none; d=google.com; s=arc-20160816; b=BtMIEa1bg7XV8RM2sOaWorit1pqokJCz/9g+seJj7EhxOiSCLBYhJ3Nm8ZyLwmQUs4 DRA06vevCht9nTchjqWn4+rDlNL8tjCC7ExWWQlo2jyzYvxmKM8sOEMGyRTN42s4/9yn 3kl81dd9IswlYiZNhvtHLk0x5sxkXoW9c3q+bAhSYCR+y+LuN4KDpwBAPV0B1JNY0KwZ svPV18f38SKKvV3vKYfwBzeln/5oAj5BUdu8py1k67GeEdjH/hQ6y7xTmZAqk4PM6exW 0uxFsekXMaxDUgTvOuxGRRjgXyZzC/4OnUpVa5WElVQ+ajAeLcuSfJOOhX+WGnmaCEv2 pzIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=KmhgtwNZmdIpd6XQMRSn3EI4DR5SZ1IokNMKuW9YChw=; b=IV0GemHeDWRLSyHKu1OCFQu3nkpyQbnXNv0KkJLW9CFCiWXXIlO9Q7pxlp9g4+m5Nt yqIqcUagLWVjhX6viVBpm60x9/yAJajQqJMHR7s4eIbogrpkGt5/8qzjSfZJteqmSQV3 jd8/Olf1Zrljdgrs7W/KIJIObva7Udy9fWnt4L56Nw2nS6lHWWTtIVIbnp9FtC66u7le kHhuokmu8mj+vyIKAtNQljFEJkx/hyUwRazCdwEvMeW6sRUY84G/PA2nKhjO/MWoHdxh BbJ/RBsgunmYGamgMWyLPsHrd1UN2uAYf+7woeIGsAv+cOXGI3DAdHwEDEQuIsjZ9fzj 7jrg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id z6si1401361qtc.90.2020.03.11.10.28.58 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:28:58 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56332 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC5A9-0004vp-J5 for patch@linaro.org; Wed, 11 Mar 2020 13:28:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58221) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC55P-0002mj-MB for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:24:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC55N-0004UO-Lf for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:24:02 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:52090 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC55K-0004D2-5b; Wed, 11 Mar 2020 13:23:59 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id E06B64BAE0408E864822; Thu, 12 Mar 2020 01:23:54 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:45 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 09/10] tests/bios-tables-test: Update arm/virt memhp test Date: Wed, 11 Mar 2020 17:20:13 +0000 Message-ID: <20200311172014.33052-10-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.35 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Since we now have both pc-dimm and nvdimm support, update test_acpi_virt_tcg_memhp() to include those. Signed-off-by: Shameer Kolothum --- v2 -> v3 -Moved addition of empty table files to the previous patch --- tests/qtest/bios-tables-test.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) -- 2.17.1 diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index 0a597bbacf..c9843829b3 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -927,12 +927,17 @@ static void test_acpi_virt_tcg_memhp(void) }; data.variant = ".memhp"; - test_acpi_one(" -cpu cortex-a57" + test_acpi_one(" -machine nvdimm=on" + " -cpu cortex-a57" " -m 256M,slots=3,maxmem=1G" " -object memory-backend-ram,id=ram0,size=128M" " -object memory-backend-ram,id=ram1,size=128M" " -numa node,memdev=ram0 -numa node,memdev=ram1" - " -numa dist,src=0,dst=1,val=21", + " -numa dist,src=0,dst=1,val=21" + " -object memory-backend-ram,id=ram2,size=128M" + " -object memory-backend-ram,id=nvm0,size=128M" + " -device pc-dimm,id=dimm0,memdev=ram2,node=0" + " -device nvdimm,id=dimm1,memdev=nvm0,node=1", &data); free_test_data(&data); From patchwork Wed Mar 11 17:20:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 184420 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp877754ile; Wed, 11 Mar 2020 10:30:05 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuSP4MYXuldw/0w09O/4YiORfoeruplD3czWYTLNP4zfEI8PT9YqqGGgMhecM8fiubt9zMW X-Received: by 2002:a37:4a16:: with SMTP id x22mr3926160qka.88.1583947804953; Wed, 11 Mar 2020 10:30:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583947804; cv=none; d=google.com; s=arc-20160816; b=D9RcobMZWjDILTcBAoMTnM5EXGbiZV8cJIIesOKH5EwJCJDlfNhXoF1rh+GX27XVgj zQlTDN1d76gtYOwujiCwM6LDnMUEc9vx/rfykofwTRVrNI/TbJLZaXU7ftehHQlzyII1 gHI8gkqK4jJOyn5FpVRlHyTYTJv+43SXwZu3zHMe9n41xElxEyxzuY27ktdQTkr1EMhg +dl1+DOAGN61MspBKmiEMerxXBXm0QH2nTkzgZGGix8PQWec9DxtyrwM1xxX2liGAIu+ ac2z1QLxHNFnPFkAOPOeVDZkpB3H9iFSbaKlscGQ/S6C4eU8obU43dAEwwIWuvVDiwVX IQoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:references :in-reply-to:message-id:date:subject:to:from; bh=7o9WDiqX1dbX7UGgU2+TtJdpdZKq9RQxF6zC0tzRatE=; b=Y8Ynr9L1y8wfSY+egeEYptY0MARDF8ao+dv2vpEsz1Owkv0OJpOEGvv5CdAMuBdAnY 5Vwh2RMClJBXq+W9ukUuK/GhD6JBC2AhDFqNgnVBqm1j3m9r+HhLLcnGzuFBDpThRwN1 R7Ld8HPsbHRWap/7Pz4eDvStklyzKVuEbn7BzVmQGL2vptSlyj3MOsW1Utic0WhlmKoa /zp1FoSIa0aF7Png1joPzgMXvQnXrnl0mb96kykDV3kq2TP7vlZsaUY6Hu4VbQrBbR8T FUxX9Qj2toh2m+opRMqn0HGrzfK0M295Eta3v/a1rDEq+HtyygdAT+aklA9fivXpQ3zC Y1+w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id m15si1380051qkm.268.2020.03.11.10.30.04 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 10:30:04 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56357 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC5BE-0006wV-Ds for patch@linaro.org; Wed, 11 Mar 2020 13:30:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58255) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jC55S-0002wH-QB for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:24:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jC55R-0004ZB-FW for qemu-devel@nongnu.org; Wed, 11 Mar 2020 13:24:06 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:3199 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jC55O-0004RS-Ge; Wed, 11 Mar 2020 13:24:02 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 00894C60DA5574D4BE24; Thu, 12 Mar 2020 01:24:00 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.487.0; Thu, 12 Mar 2020 01:23:48 +0800 From: Shameer Kolothum To: , , , Subject: [PATCH v3 10/10] tests/acpi: add expected tables for bios-tables-test Date: Wed, 11 Mar 2020 17:20:14 +0000 Message-ID: <20200311172014.33052-11-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> References: <20200311172014.33052-1-shameerali.kolothum.thodi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.249.212.190 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, xiaoguangrong.eric@gmail.com, david@redhat.com, mst@redhat.com, linuxarm@huawei.com, xuwei5@hisilicon.com, shannon.zhaosl@gmail.com, lersek@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Because of the following changes, the expeacted tables for bios-tables-test needs to be updated. 1. Changed NVDIM DSM output buffer AML code. 2. Updated arm/virt test_acpi_virt_tcg_memhp() to add pc-dimm/nvdimm Signed-off-by: Shameer Kolothum --- tests/data/acpi/pc/SSDT.dimmpxm | Bin 685 -> 734 bytes tests/data/acpi/q35/SSDT.dimmpxm | Bin 685 -> 734 bytes tests/data/acpi/virt/DSDT.memhp | Bin 6644 -> 6668 bytes tests/data/acpi/virt/NFIT.memhp | Bin 0 -> 224 bytes tests/data/acpi/virt/SSDT.memhp | Bin 0 -> 736 bytes tests/qtest/bios-tables-test-allowed-diff.h | 5 ----- 6 files changed, 5 deletions(-) -- 2.17.1 diff --git a/tests/data/acpi/pc/SSDT.dimmpxm b/tests/data/acpi/pc/SSDT.dimmpxm index 8ba0e67cb72daa81a65da4906d37a5e0f4af1fd4..ac55387d57e48adb99eb738a102308688a262fb8 100644 GIT binary patch delta 125 zcmZ3>dXJSWIM^lR9uortW7tG4X>Nb5nD}6)_~<4#t%(LAOunKU-FO)N7nn^=sUGbBa} TgA_0%`UAz6fQZcnjJAvbW$GgJ delta 76 zcmcb|x|WqIIM^j*EfWI+W57f%X>LFDnD}6)_~<5A^@#=|Og=&z-FO(~3Mv!1m>CkI dh5cO|Ll_eMokHD;1(_H?bo!F?%?lZA83Fei6ZHT9 diff --git a/tests/data/acpi/q35/SSDT.dimmpxm b/tests/data/acpi/q35/SSDT.dimmpxm index 2d5b721bcf9c398feb6d005761f898015042e8a4..98e6f0e3f3bb02dd419e36bdd1db9b94c728c406 100644 GIT binary patch delta 125 zcmZ3>dXJSWIM^lR9uortquWF-X>Nb5nD}6)_~<4#t%(LAOunKU-FO)N7nn^=sUGbBa} TgA_0%`UAz6fQZcnjJAvbUiu>C delta 76 zcmcb|x|WqIIM^j*EfWI+qr*flX>LFDnD}6)_~<5A^@#=|Og=&z-FO(~3Mv!1m>CkI dh5cO|Ll_eMokHD;1(_H?bo!F?%?lZA83FS;6XgH^ diff --git a/tests/data/acpi/virt/DSDT.memhp b/tests/data/acpi/virt/DSDT.memhp index c527ac4739af3df3c3e042bf91c412033a2b73c3..730e95a46d2cce0af011ffc051d7342beb8f1328 100644 GIT binary patch delta 66 zcmexj++)J!66_MfBgMeL^l>7WG*kP$jq2jB1F=Cg1XwVzFffCeAhF8JAJRT=DREfi z%xf&Mz2`Pir~{&ofdfQyG(dQa3da8 literal 0 HcmV?d00001 diff --git a/tests/data/acpi/virt/SSDT.memhp b/tests/data/acpi/virt/SSDT.memhp index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..db61d6733284c90153e0e2c1d6c2ac25c22b1d84 100644 GIT binary patch literal 736 zcmZWnJ&4m_7=F{1Ynryuv=ve6ky!_O6-025G-+(0NlTIzAqUNmw7s^&hj$JlLfadz zo*?wXEh3U083lL2&DF`tL2x*5cM%-K?@e*=T;7-Od*1JPpXcE-P1*XE0AOy_+fvgM z^q#D08a)F*{Xs{_tQJ#O0FU+9ezSw@vROEagI9HnmiQA&>UP6JQO~5}~Z64Mnvw zY+ErcAR}x9XE39S5im?~i@}LFCFj@yO3@`)kSxrd1o2Hog_0x3J#f(n8@M!%1lT2q z6Jm8#juK%h-|N%mEE@9&_-9pypc>!7*C8JuYZjQl__`2oA({8ccl~|O@$5xK?^Ua8 nUz82zqC>`BY*Tb6M!7_p|2F_GvB7H_Joz7