From nobody Wed Feb 11 01:26:06 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1682446004; cv=none; d=zohomail.com; s=zohoarc; b=ONXM2IxIowKOWl1TwP6WQqdM+21bD7IQrMDLE8mV8eIxe2EpTSGePu06AJqIOAm6BKtdFGlcpLxxKehhGZoO+JFDSsW36VfJueeO4ievT9/7MLSImZfC2Qt8PE2C5rKvEwL1kxqrJ8+Bjn6g2n3SKBDlfKlZnOmwc0uqavtQohI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682446004; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=gvKzLqz4F3yaHXWfvdcfuuyAObt3ehw2kidxZA2rkdg=; b=K8cFuSHaD35t9Of/JPXmFXkuIK4Ca36DfFPOBV+5svp1e+cDKFgaSYK8Mwb743z0GVzluzemczgqHXrHIxsUh6k9yay6CcDLlEtqc/rLIfl6KTTxYEGTZN9Xa/va7N78vwPBjiFt8zQeCMTSHGBu4taoKWI0klSkDo9VzCJnysg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1682446004958745.6044365804369; Tue, 25 Apr 2023 11:06:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1prN36-00030S-Fu; Tue, 25 Apr 2023 14:05:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1prN35-00030E-L8 for qemu-devel@nongnu.org; Tue, 25 Apr 2023 14:05:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1prN33-0005QM-6r for qemu-devel@nongnu.org; Tue, 25 Apr 2023 14:05:55 -0400 Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-439-pBOCz_nbNCuM9CJpjqBL7g-1; Tue, 25 Apr 2023 14:05:51 -0400 Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-3ef4f29c9d1so15305371cf.0 for ; Tue, 25 Apr 2023 11:05:51 -0700 (PDT) Received: from x1n.redhat.com (bras-base-aurron9127w-grc-40-70-52-229-124.dsl.bell.ca. [70.52.229.124]) by smtp.gmail.com with ESMTPSA id b17-20020a05620a271100b0074e034915d4sm4552297qkp.73.2023.04.25.11.05.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Apr 2023 11:05:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682445952; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gvKzLqz4F3yaHXWfvdcfuuyAObt3ehw2kidxZA2rkdg=; b=cIP6yIcF2Te38CZR/48fXhHrHYB+z21rOAdSdTTUVE22qf16pmqjgQIR19Omop7K0G5fUN nMlD6c1tqG8fsirL6UPrdNvprgN0ldou6mCnv+lMB7GIAJSlY+YczMr73twFFjGJAvBsa/ 86ExkUugGU945M/ts9XnHxEdrUGWZcA= X-MC-Unique: pBOCz_nbNCuM9CJpjqBL7g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682445949; x=1685037949; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gvKzLqz4F3yaHXWfvdcfuuyAObt3ehw2kidxZA2rkdg=; b=f/FSALvpUM6Bb9tDl6NVk4PkZ8DYTT5bM4hd0geWu4RcsDQcLYisfOr86sSWz9Gjl4 BbouFcaHSiI5+TrdW0o+xa7c3GO6Z3y5gE0CQ/FkeatIQphuarHW4wE9KjiyYfiw7TeL 6x8oCWUwgeWwqHbIzIM2mMoYRZmB0w1jgBFovOHE0JPisYZGn92JMfiDEeWUJN2jYcKP 71EhpM8ObOJC86y0kMHdFVPFP96MDPjrDZUU77qCwbnsOMa3ZHpG9rKfBcYr2X1aEzY8 KUoZ7SQl1Krlug4CT1TTfFUg49XvlxGfSjMFgnFAFXlBgc8YW8SYZSFKill7UBE/T5h+ K7hg== X-Gm-Message-State: AAQBX9fXvB0L0e3hluofzBP6yh8A5LG13oaIAwACBnAPyOXj9NJpva0b hxWZVb/i1qF3Y+KjZ+PQKntsRNL7x5JyfZz8lwGrJ/OvH754FXpz4k44cYJLdDTtxqpYKU973bb NCR9JHA5bm9bfVR5JnMp9kr4qlMPsKAJhYTF7hseUx91rfKa+rhvkezNvwXPpedQU4aJ3Fkgc X-Received: by 2002:a05:622a:86:b0:3e2:be32:cb74 with SMTP id o6-20020a05622a008600b003e2be32cb74mr30314126qtw.3.1682445949129; Tue, 25 Apr 2023 11:05:49 -0700 (PDT) X-Google-Smtp-Source: AKy350aHjfdHmA+VdmF3/DjpWpdYcKAOhQPulrTuR8K/CbIugltcgxMaAUpn+v6DmeqQdVbuWvs8gQ== X-Received: by 2002:a05:622a:86:b0:3e2:be32:cb74 with SMTP id o6-20020a05622a008600b003e2be32cb74mr30314076qtw.3.1682445948667; Tue, 25 Apr 2023 11:05:48 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: peterx@redhat.com, Juan Quintela , Leonardo Bras Soares Passos Subject: [PATCH 1/2] migration/vmstate-dump: Dump array size too as "num" Date: Tue, 25 Apr 2023 14:05:43 -0400 Message-Id: <20230425180544.1815888-2-peterx@redhat.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230425180544.1815888-1-peterx@redhat.com> References: <20230425180544.1815888-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -22 X-Spam_score: -2.3 X-Spam_bar: -- X-Spam_report: (-2.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.171, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1682446007018100003 Content-Type: text/plain; charset="utf-8" For VMS_ARRAY typed vmsd fields, also dump the number of entries in the array in -vmstate-dump. Without such information, vmstate static checker can report false negatives of incompatible vmsd on VMS_ARRAY typed fields, when the src/dst do not have the same type of array defined. It's because in the checker we only check against size of fields within a VMSD field. One example: e1000e used to have a field defined as a boolean array with 5 entries, then removed it and replaced it with UNUSED (in 31e3f318c8b535): - VMSTATE_BOOL_ARRAY(core.eitr_intr_pending, E1000EState, - E1000E_MSIX_VEC_NUM), + VMSTATE_UNUSED(E1000E_MSIX_VEC_NUM), It's a legal replacement but vmstate static checker is not happy with it, because it checks only against the "size" field between the two fields (here one is BOOL_ARRAY, the other is UNUSED): For BOOL_ARRAY: { "field": "core.eitr_intr_pending", "version_id": 0, "field_exists": false, "size": 1 }, For UNUSED: { "field": "unused", "version_id": 0, "field_exists": false, "size": 5 }, It's not the script to blame because there's just not enough information dumped to show the total size of the entry for an array. Add it. Note that this will not break old vmstate checker because the field will just be ignored. Signed-off-by: Peter Xu Reviewed-by: Juan Quintela --- migration/savevm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/migration/savevm.c b/migration/savevm.c index 9671211339..550c38f0ef 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -536,6 +536,9 @@ static void dump_vmstate_vmsf(FILE *out_file, const VMS= tateField *field, field->version_id); fprintf(out_file, "%*s\"field_exists\": %s,\n", indent, "", field->field_exists ? "true" : "false"); + if (field->flags & VMS_ARRAY) { + fprintf(out_file, "%*s\"num\": %d,\n", indent, "", field->num); + } fprintf(out_file, "%*s\"size\": %zu", indent, "", field->size); if (field->vmsd !=3D NULL) { fprintf(out_file, ",\n"); --=20 2.39.1 From nobody Wed Feb 11 01:26:06 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1682446016; cv=none; d=zohomail.com; s=zohoarc; b=go1Q2W7ybxcxbrs7ZsbFqVwpcrEfWUtsl32Wb9Zk8WZQC5J4b+RO66r/mJqtBjn7IAe9LFB5OR++28Wh3c3ey4R4rQBzXPm8rkm1me0hqmFbazzcs/gi2yZjf8IiL0b4xcNWI0yHMyyetLCX10GTuAnklWLc1ZGM7pLXYx/ifpQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682446016; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kzI3s0+w7AnBCWRapIJORBuHVL45gQrLmySiZRhftEM=; b=mgXzdVbB8edzJGrurCT2m8pZColYYF3Mbfw68SqeoHH0hXADxPVrSphNqqQsKt6s+w5yVFfH6d395NpTgpGD3CKB73J+6xyoT41uZxxecOldebn2P/HUPTIWjyruvsPrF3yj12dlsxn4CfHmP/rripb4kiZOKhX3BLjeFCXOZj8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1682446016120708.5085876159997; Tue, 25 Apr 2023 11:06:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1prN3A-00031H-CU; Tue, 25 Apr 2023 14:06:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1prN36-00030T-OY for qemu-devel@nongnu.org; Tue, 25 Apr 2023 14:05:56 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1prN35-0005Qn-9D for qemu-devel@nongnu.org; Tue, 25 Apr 2023 14:05:56 -0400 Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-265-_zx_RI7XPGa8lZj_D69dfQ-1; Tue, 25 Apr 2023 14:05:52 -0400 Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-3ef3116d1dcso15673351cf.1 for ; Tue, 25 Apr 2023 11:05:52 -0700 (PDT) Received: from x1n.redhat.com (bras-base-aurron9127w-grc-40-70-52-229-124.dsl.bell.ca. [70.52.229.124]) by smtp.gmail.com with ESMTPSA id b17-20020a05620a271100b0074e034915d4sm4552297qkp.73.2023.04.25.11.05.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Apr 2023 11:05:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682445954; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kzI3s0+w7AnBCWRapIJORBuHVL45gQrLmySiZRhftEM=; b=dygD8sOPFBeNEJlYhDB30NCcqz7oITyBPAIOM2VjpGwTH78H87cAUqr7X5AA+tfBCwageV BDUstQUq8SaJ14r88iQr3528nuSHusXo3OylqNlYmpGBOgnOTFqtwVs4UXlqLddA3ykQFW Z6FVarr4FTVqioRE+t+WO2MDcb5A5W0= X-MC-Unique: _zx_RI7XPGa8lZj_D69dfQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682445952; x=1685037952; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kzI3s0+w7AnBCWRapIJORBuHVL45gQrLmySiZRhftEM=; b=L/dqi6NLbAQCoYTyk1oE0M4NHIyK12HRdqzinZA22Lx5UCVTKpj+LgTZWRDUbiO/SC Hl84KT4Abb6qvrfPjiYHfkD6q9LATbb80WQLDVn0Y5KhVbEHidsMeQfg3+5fgrvouMzn YkjQtknOByak5HkyUJEnjC769EK8/gQQhyV7D8CP4vDJu4VBKHtwgiIwV3wHCzc90d+7 rjAtJJNF7+viA2lnt9yc/D73WXHI0LRzvCDlOxOelO3uaKvdZYQL+4pIBclJT/4jEFcF Hnge9m76Wk8G/CQIIvJU40sOHXF/tFqdX5wofAUVnDq86ZPIGPRlk15D/JFSFuw/1jd1 zPgg== X-Gm-Message-State: AAQBX9fgvrHx/jWXkDvPJGbFDMjcyNdje6XIEfWd3FFTcaITP7M/4fTP nRR2vB/3rkNkJKTlfx51WqAo8nl87ZbfwfaTw+pJbTtmTzwEFBQBvGb4zECy7zWkguVqBZ/2n9A t0vxJbo6tmlpoTimkQOr4OjrEEZ/rNCn4+BUAsBla4VDyK1cs2Wz26FNqybQG5msto2/BMbGV X-Received: by 2002:ac8:5c49:0:b0:3ef:3912:ab3e with SMTP id j9-20020ac85c49000000b003ef3912ab3emr30965710qtj.2.1682445951768; Tue, 25 Apr 2023 11:05:51 -0700 (PDT) X-Google-Smtp-Source: AKy350asHXxZDKpo9tj0QQsDbtbXVrdzx6Lx3BztIr+k6cpHX/JjfHHBMSQNiERgO+zadPqqG7wK4A== X-Received: by 2002:ac8:5c49:0:b0:3ef:3912:ab3e with SMTP id j9-20020ac85c49000000b003ef3912ab3emr30965662qtj.2.1682445951360; Tue, 25 Apr 2023 11:05:51 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: peterx@redhat.com, Juan Quintela , Leonardo Bras Soares Passos Subject: [PATCH 2/2] vmstate-static-checker: Recognize "num" field Date: Tue, 25 Apr 2023 14:05:44 -0400 Message-Id: <20230425180544.1815888-3-peterx@redhat.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230425180544.1815888-1-peterx@redhat.com> References: <20230425180544.1815888-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -22 X-Spam_score: -2.3 X-Spam_bar: -- X-Spam_report: (-2.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.171, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1682446017675100001 Content-Type: text/plain; charset="utf-8" Recognize this field for VMS_ARRAY typed vmsd fields, then we can do proper size matching with previous patch. Note that this is compatible with old -dump-vmstate output, because when "num" is not there we'll still use the old "size" only. Signed-off-by: Peter Xu Reviewed-by: Juan Quintela --- scripts/vmstate-static-checker.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/scripts/vmstate-static-checker.py b/scripts/vmstate-static-che= cker.py index dfeee8231a..9c0e6b81f2 100755 --- a/scripts/vmstate-static-checker.py +++ b/scripts/vmstate-static-checker.py @@ -134,6 +134,11 @@ def exists_in_substruct(fields, item): return check_fields_match(fields["Description"]["name"], substruct_fields[0]["field"], item) =20 +def size_total(entry): + size =3D entry["size"] + if "num" not in entry: + return size + return size * entry["num"] =20 def check_fields(src_fields, dest_fields, desc, sec): # This function checks for all the fields in a section. If some @@ -249,17 +254,19 @@ def check_fields(src_fields, dest_fields, desc, sec): continue =20 if s_item["field"] =3D=3D "unused" or d_item["field"] =3D=3D "= unused": - if s_item["size"] =3D=3D d_item["size"]: + s_size =3D size_total(s_item) + d_size =3D size_total(d_item) + if s_size =3D=3D d_size: continue =20 if d_item["field"] =3D=3D "unused": advance_dest =3D False - unused_count =3D d_item["size"] - s_item["size"] + unused_count =3D d_size - s_size; continue =20 if s_item["field"] =3D=3D "unused": advance_src =3D False - unused_count =3D s_item["size"] - d_item["size"] + unused_count =3D s_size - d_size continue =20 print("Section \"" + sec + "\",", end=3D' ') --=20 2.39.1