From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209119; cv=none; d=zohomail.com; s=zohoarc; b=CH1i0jVCQKWexfmXYMdmxBw2jCda3IdcTq5NGa/GxnMMGcqyYskC9HQdNoXF7D8+3Ae5S+z47LM27DhCQCIMtmA4RxwqCnT9U51teKiAzVCaRUUfbSSpTpVoktmOktPpQAanh05rI0C/aHvNSU2tbF8N41tUKd9IzSPQXGP9rMA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209119; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8x1fPRiLk+q98Zq/PxzJ1EQGy5pEsHLkUkWHdcN4ADk=; b=VvpZ8/J0/ziXX1ITP654mF8rSk0fHpyjYqKYYfl/S09m8M87ggur4Yeg/ETHkl0+qzP5he/GADEcAsjuA0HnpLLiCo8H9dpJaVdsxkkKR8GMqlZiPPUtDyx3eBQmcDZP+uX9gR/ASCDSc0BOlZMzyHo4xpggjwGMBIcM4ysedNM= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209119642965.0012002124402; Thu, 18 Sep 2025 08:25:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGUO-0003Ef-DG; Thu, 18 Sep 2025 11:24:04 -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 1uzGUM-0003B2-CA for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:02 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGUK-0002Wg-GA for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:02 -0400 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-52-6gRtGnt3MDOzF3YJSzLiiQ-1; Thu, 18 Sep 2025 11:23:56 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b54ad69f143so1332801a12.1 for ; Thu, 18 Sep 2025 08:23:55 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.23.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:23:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209039; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8x1fPRiLk+q98Zq/PxzJ1EQGy5pEsHLkUkWHdcN4ADk=; b=PROAwEVOvA200bQdOOg7tBfo+Th+Dx6PdwuYk3z3WnERcedZGmYfjX21jr49ZHhYiotxQD SMo8Jm0nXjE7SswRsz8A3nbUKB5Bgue4cg8Kccddrn2CUCuCXA0xmD+47tgim0dWbStims JL82Act33XpWNh2vXznPDUbZS0VPY8E= X-MC-Unique: 6gRtGnt3MDOzF3YJSzLiiQ-1 X-Mimecast-MFC-AGG-ID: 6gRtGnt3MDOzF3YJSzLiiQ_1758209035 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209035; x=1758813835; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8x1fPRiLk+q98Zq/PxzJ1EQGy5pEsHLkUkWHdcN4ADk=; b=LoFzWL2jwVkNjtlxiHjJzlVmY1WxvYzoRKlhzLxwhopdApYueMrogWUUg8pgKOdGDo s6lcqAu/+Hog53kUY6Sdz3g1mut3oe6fQPMqHTa6y4IouBUl2oHN0qjKeMxm9tJnBNZp 8XuQz5et4odu10uPUyt6UjBgemBtUUvlfJCO6GX+JMnyrAOOf2+v+UcrOuzs4Hru8xit NpmKoXSt7FVrbYIo3ZFZ+WRTCRq+/c3esCf2z3/TxTYzYwHERtnsGGRatlFxQriDVmRx vVUkDILIxrOOreGrxbwgqjPCOn+0grA4fPeYsS2yDAW4qIzUdKJpGhiVnrTQfzECF/gx Tjwg== X-Gm-Message-State: AOJu0Yx3qEQE5basVKHAuvu528CUozytcAC3Dnq6BTiurlZ3F2T+OpL+ Gxfnn0wYA+5aYR54kSjxys+mVj9neIxTBnfMH3PbpLRmnkc5/nkyGycuQFHhUfQAvrG3azdgGSA 3er9zaO5U4n9+ySY1AHfNkTf+Wv2Aydv1Jc4DBZXvjZTy4n8MyurV1/mh X-Gm-Gg: ASbGnct162GHRvdlHsO0K1gOLUaKp+M4SkrPDDo7wP79DpO/pXWwkhzN5SLXh6oDKwo VsIRVbIhrRB9YnLkIoZeQbLIXYvnuYg62sxmMhE+Xkkeo0ubMdoY6hA9ItNvdzKE/HEt5ZV66qM DaJx84CNgk43PxPaHah75gg20ymlsyrGUj6Q6A+LM2Rg1c36yQZxvMT2uC77kYxYyXFiZ8Yr93u YvD+pCmh7TgkyV4a/EP8yxLd/jUDHOj/0XdrAj9R4fgkFaS/0Zw8x2p+Zq5Dnq0IvyBbq/ux3pO xcMVKAeZSl8Tt9DEnOXTGQNuUIPu8E5kB2R6ACGzHEghczk8LFdaXg== X-Received: by 2002:a05:6a21:999b:b0:246:2c:10c with SMTP id adf61e73a8af0-27ab2a5d169mr9508900637.40.1758209034925; Thu, 18 Sep 2025 08:23:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEdNfs7/6z48EHockKWM2rs1Vgch7BGFVNHsfB1mtfPzgOxsJOjZ7ea+b52R9iZ+FWfNBZoFg== X-Received: by 2002:a05:6a21:999b:b0:246:2c:10c with SMTP id adf61e73a8af0-27ab2a5d169mr9508843637.40.1758209034487; Thu, 18 Sep 2025 08:23:54 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:18 +0530 Subject: [PATCH v14 01/27] migration: push Error **errp into vmstate_subsection_load() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-1-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3492; i=armenon@redhat.com; h=from:subject:message-id; bh=jjVnj4GpDkFjmsw4frYXnt3FkfLdgzOUkOtwV8FPcDs=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e8TD66dNUlJ5GU3c8TclnKlpZO9tTbyijEF3/itd Ex8637vjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABOxq2Zk+DThgM4H/hmPw3Oq 7HX/fHtx9uAeqYtPpz7WdZb8yfHx5V1Ghtc3Cv/P2bLkaXNhjkBBl2LVvawPuzr9b/+aWrs0w/2 vMzMA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209126211116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that vmstate_subsection_load() must report an error in errp, in case of failure. The errors are temporarily reported using error_report_err(). This is removed in the subsequent patches in this series, when we are actually able to propagate the error to the calling function using errp. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/vmstate.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/migration/vmstate.c b/migration/vmstate.c index 5feaa3244d259874f03048326b2497e7db32e47c..08f2b562e3a5ec0e186336215cc= fb378a7675f0c 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -25,7 +25,7 @@ static int vmstate_subsection_save(QEMUFile *f, const VMS= tateDescription *vmsd, void *opaque, JSONWriter *vmdesc, Error **errp); static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *= vmsd, - void *opaque); + void *opaque, Error **errp); =20 /* Whether this field should exist for either save or load the VM? */ static bool @@ -136,6 +136,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescri= ption *vmsd, { const VMStateField *field =3D vmsd->fields; int ret =3D 0; + Error *local_err =3D NULL; =20 trace_vmstate_load_state(vmsd->name, version_id); if (version_id > vmsd->version_id) { @@ -225,9 +226,10 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescr= iption *vmsd, field++; } assert(field->flags =3D=3D VMS_END); - ret =3D vmstate_subsection_load(f, vmsd, opaque); + ret =3D vmstate_subsection_load(f, vmsd, opaque, &local_err); if (ret !=3D 0) { qemu_file_set_error(f, ret); + error_report_err(local_err); return ret; } if (vmsd->post_load) { @@ -566,7 +568,7 @@ vmstate_get_subsection(const VMStateDescription * const= *sub, } =20 static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *= vmsd, - void *opaque) + void *opaque, Error **errp) { trace_vmstate_subsection_load(vmsd->name); =20 @@ -598,6 +600,8 @@ static int vmstate_subsection_load(QEMUFile *f, const V= MStateDescription *vmsd, sub_vmsd =3D vmstate_get_subsection(vmsd->subsections, idstr); if (sub_vmsd =3D=3D NULL) { trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(lookup)= "); + error_setg(errp, "VM subsection '%s' in '%s' does not exist", + idstr, vmsd->name); return -ENOENT; } qemu_file_skip(f, 1); /* subsection */ @@ -608,6 +612,9 @@ static int vmstate_subsection_load(QEMUFile *f, const V= MStateDescription *vmsd, ret =3D vmstate_load_state(f, sub_vmsd, opaque, version_id); if (ret) { trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(child)"= ); + error_setg(errp, + "Loading VM subsection '%s' in '%s' failed: %d", + idstr, vmsd->name, ret); return ret; } } --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209130; cv=none; d=zohomail.com; s=zohoarc; b=b1A0U3KyQSnqGf+urXum6ZGyyxQSgxbEs8STLRy7sZGMQi/jTL52yxhhfGvu2f0AljpvI7a7usHVAip4GX2l/j+tEXANHGOZRI82fCtOJpXDHS92uBYU7BR7bxNKBQOxMepS7M1DKLQ8gi+wqnoj0IMPrG9rFISUJjZYxbv4L9s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209130; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0t4Es+bdCnEMs6MQ8L/HOg5+fs29AvSTtn4xmG8MSn0=; b=HvUk7HrGP3C7y89QovOwByPAZaRiHgNMa7+gRVe5dNCy1hDOpVXdpCafyvTL1U3AH94Sd0NnoSUAtA+FkjQxieBluLYxAhZkz/QVLYKnbAjZVqfSoJr2M/6vUdp1yS4HU8Pne8UojEYytx1aaA485T1EcACsRNDCVrB9vGlgOGo= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209130760844.5912468963687; Thu, 18 Sep 2025 08:25:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGUl-0003VT-P5; Thu, 18 Sep 2025 11:24:27 -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 1uzGUX-0003QM-BF for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGUT-0002Yc-EG for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:13 -0400 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-526-deoCxZkrPiKSVWq0eJ2QaA-1; Thu, 18 Sep 2025 11:24:05 -0400 Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-77e13772b37so127376b3a.0 for ; Thu, 18 Sep 2025 08:24:05 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.23.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:24:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209048; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0t4Es+bdCnEMs6MQ8L/HOg5+fs29AvSTtn4xmG8MSn0=; b=a+L8Ehjc9fTeB98nmpsUcGWgnKVFpcCxCk93Y/LjxAotDpxNqTUQCFY3vfrc2G8NzqkbMO QOJc76peQ5DZrIPcHA/h1lhBLC1jF9bDCEWm7zogW/BPSlZAEhoCD9H90NZbl5u8wKsVhs KPEVzI/1HTHS8VyKC1hN1Tjv5fwF5ko= X-MC-Unique: deoCxZkrPiKSVWq0eJ2QaA-1 X-Mimecast-MFC-AGG-ID: deoCxZkrPiKSVWq0eJ2QaA_1758209044 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209044; x=1758813844; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0t4Es+bdCnEMs6MQ8L/HOg5+fs29AvSTtn4xmG8MSn0=; b=E5QDbP5ka/6JBVDRxoDB2K2V+m3ExblWfp8svgbXzzVjyyEQa/wrmH7jN3jjX2QKV7 c+20FsjjvqGirU7y7q9OTOABIvToOqZi3aeC9N4DPWo8Mt3BoAteLs5arJz9P24oMctm aof4PN6fyvAEDWN1DXMQwGv/QVXmwp6WjxlwoqJf3BWgYjfo0Xa9dr4XUkVRj0bBO6Cd BQPPyeTiHhviqgAr0m2sWdmqURLbjVz3uDLfMZmY3ub0tkcVCuBq28eHTH3/275zR5UP nKb22+nEISs3vqTz90b3rLuynWkV8omxI13jcCiY8FWV10nR8I53E4Y7IagoXUamxkqb gAKQ== X-Gm-Message-State: AOJu0Ywpxb0CiarCTCQukwhgw3c0fHoMsRPyVS7iyXHf7UTYvW1AwYSh wkZpGW0JdFr7Xqp/khwfUjWfdLC7i0S9XwPqMJ/MfWSkJiVPQ026mDlqdTNOmc0lx+2nlH6vir/ gV6/leb1/zjsSFi5k2C277+nKxyG5+VnbhhX4vb7IWuH5wLQU8/TRhBuA X-Gm-Gg: ASbGncvrGIXXmCoBcjxNrsIU0Pxy1hlYvzV+Ph8ZQrJHk5vh0Bvf9iN5VqEb7wu1NIZ VWV6gJzf0Jix0L4XjfYjbso0uYi1EbhXTTiDAeS8IwE74QjP0xxRcJHOcmBXYPBx9vMZkpAJqWa 3DyoxEDaW2mfZgj5HMvHwcZmt+l1FeUpQy91MNTucFAwgRDInd0pCXYYKfwShVXNQvzDhAENtsu mHz9f19WtnejhsJv3oBWYMTzyygmkMWUgLtHNR5K4PFyP3AHhGyGby7NlT0xbDHWRnD0fVT+DuT 7LJP71b574QmVmbnwzWJVInFudVvJ4qLbw9UiK6IMJnhT2lXd1O2ug== X-Received: by 2002:a05:6a00:228b:b0:772:51f6:3518 with SMTP id d2e1a72fcca58-77bf72cc315mr8261286b3a.14.1758209043964; Thu, 18 Sep 2025 08:24:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEDfwaVeSOfOm0dBmXLe2nXzT8MwmssZTZ+zjhJy84IefRWvBpXhbMQz6bsV49ScbhG56QrRw== X-Received: by 2002:a05:6a00:228b:b0:772:51f6:3518 with SMTP id d2e1a72fcca58-77bf72cc315mr8261236b3a.14.1758209043352; Thu, 18 Sep 2025 08:24:03 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:19 +0530 Subject: [PATCH v14 02/27] migration: push Error **errp into vmstate_load_state() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-2-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=28771; i=armenon@redhat.com; h=from:subject:message-id; bh=ERWSc7muAJvO7tDspa38LJQEobWOn6N/25U+nVNVjaA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e+bymNWGWQJz55zfLFh2quQ1XwR0Q2HlGS7uE7vm /1MSKawo5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwERu9zL8d/baeK422n/Zi+Tb i7f3fWCtOrFkY8KXxFsBHbpZN1c8TGf4K3Zc4xnPwtiinx8umHEcTOW02fbMrKX5wmPTExKrEvW 38wEA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209132652116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that vmstate_load_state() must report an error in errp, in case of failure. The errors are temporarily reported using error_report_err(). This is removed in the subsequent patches in this series, when we are actually able to propagate the error to the calling function using errp. Whereas, if we want the function to exit on error, then error_fatal is passed. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- hw/display/virtio-gpu.c | 2 +- hw/pci/pci.c | 3 ++- hw/s390x/virtio-ccw.c | 2 +- hw/scsi/spapr_vscsi.c | 4 ++- hw/vfio/pci.c | 5 +++- hw/virtio/virtio-mmio.c | 3 ++- hw/virtio/virtio-pci.c | 2 +- hw/virtio/virtio.c | 7 +++-- include/migration/vmstate.h | 2 +- migration/cpr.c | 3 +-- migration/savevm.c | 8 ++++-- migration/vmstate-types.c | 28 ++++++++++++-------- migration/vmstate.c | 61 +++++++++++++++++++++++++++++------------= -- tests/unit/test-vmstate.c | 63 ++++++++++++++++++++++++++++++++++++++---= ---- ui/vdagent.c | 5 +++- 15 files changed, 143 insertions(+), 55 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 0a1a625b0ea6cf26cb0d799171a57ed3d3ab2442..5dc31bc6bfb0272e29a4364ab10= de2595a4bedf7 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1343,7 +1343,7 @@ static int virtio_gpu_load(QEMUFile *f, void *opaque,= size_t size, } =20 /* load & apply scanout state */ - vmstate_load_state(f, &vmstate_virtio_gpu_scanouts, g, 1); + vmstate_load_state(f, &vmstate_virtio_gpu_scanouts, g, 1, &error_fatal= ); =20 return 0; } diff --git a/hw/pci/pci.c b/hw/pci/pci.c index c3df9d6656bf8b41800904dbed0933055eebefb4..17715ca1b34c9c9e777be9b86cf= c5405087df7fd 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -934,7 +934,8 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) int pci_device_load(PCIDevice *s, QEMUFile *f) { int ret; - ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id); + ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id, + &error_fatal); /* Restore the interrupt status bit. */ pci_update_irq_status(s); return ret; diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index d2f85b39f30f7fc82e0c600144c0a958e1269b2c..6a9641a03d5d3a38a4de7ceb9de= ffc0cc303bcff 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1136,7 +1136,7 @@ static void virtio_ccw_save_config(DeviceState *d, QE= MUFile *f) static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1); + return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1, &error_f= atal); } =20 static void virtio_ccw_pre_plugged(DeviceState *d, Error **errp) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index 20f70fb2729de78b9636a6b8c869695dab4f8902..da173f48676395cc02bd00cb3ef= a248afed4581b 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -642,15 +642,17 @@ static void *vscsi_load_request(QEMUFile *f, SCSIRequ= est *sreq) VSCSIState *s =3D VIO_SPAPR_VSCSI_DEVICE(bus->qbus.parent); vscsi_req *req; int rc; + Error *local_err =3D NULL; =20 assert(sreq->tag < VSCSI_REQ_LIMIT); req =3D &s->reqs[sreq->tag]; assert(!req->active); =20 memset(req, 0, sizeof(*req)); - rc =3D vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1); + rc =3D vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1, &local_= err); if (rc) { fprintf(stderr, "VSCSI: failed loading request tag#%u\n", sreq->ta= g); + error_report_err(local_err); return NULL; } assert(req->active); diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index d14e96b2f82d78746d361fc86ccbf14f6275a8de..016fad8ac693ffd1e6f178887ee= e1cb06917a9a4 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2835,13 +2835,16 @@ static int vfio_pci_load_config(VFIODevice *vbasede= v, QEMUFile *f) PCIDevice *pdev =3D PCI_DEVICE(vdev); pcibus_t old_addr[PCI_NUM_REGIONS - 1]; int bar, ret; + Error *local_err =3D NULL; =20 for (bar =3D 0; bar < PCI_ROM_SLOT; bar++) { old_addr[bar] =3D pdev->io_regions[bar].addr; } =20 - ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1, + &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 532c67107ba1d2978a76cf49f9cdc1de1dea3e11..0a688909fc606a3c9fde933667a= e8c309ab527d0 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -34,6 +34,7 @@ #include "qemu/error-report.h" #include "qemu/log.h" #include "trace.h" +#include "qapi/error.h" =20 static bool virtio_mmio_ioeventfd_enabled(DeviceState *d) { @@ -619,7 +620,7 @@ static int virtio_mmio_load_extra_state(DeviceState *op= aque, QEMUFile *f) { VirtIOMMIOProxy *proxy =3D VIRTIO_MMIO(opaque); =20 - return vmstate_load_state(f, &vmstate_virtio_mmio, proxy, 1); + return vmstate_load_state(f, &vmstate_virtio_mmio, proxy, 1, &error_fa= tal); } =20 static bool virtio_mmio_has_extra_state(DeviceState *opaque) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 767216d795998708f5716a23ae16c79cd90ff489..b04faa1e5c91b5cef40e54ec41d= 92422d16bfc13 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -161,7 +161,7 @@ static int virtio_pci_load_extra_state(DeviceState *d, = QEMUFile *f) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy(d); =20 - return vmstate_load_state(f, &vmstate_virtio_pci, proxy, 1); + return vmstate_load_state(f, &vmstate_virtio_pci, proxy, 1, &error_fat= al); } =20 static void virtio_pci_save_queue(DeviceState *d, int n, QEMUFile *f) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 9a81ad912e013fc254899c4e55cff1f76a6112a4..018803c80d13107eb4e5e63914f= 9c1f837ab1b19 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3235,6 +3235,7 @@ virtio_load(VirtIODevice *vdev, QEMUFile *f, int vers= ion_id) BusState *qbus =3D qdev_get_parent_bus(DEVICE(vdev)); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(vdev); + Error *local_err =3D NULL; =20 /* * We poison the endianness to ensure it does not get used before @@ -3327,15 +3328,17 @@ virtio_load(VirtIODevice *vdev, QEMUFile *f, int ve= rsion_id) } =20 if (vdc->vmsd) { - ret =3D vmstate_load_state(f, vdc->vmsd, vdev, version_id); + ret =3D vmstate_load_state(f, vdc->vmsd, vdev, version_id, &local_= err); if (ret) { + error_report_err(local_err); return ret; } } =20 /* Subsections */ - ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1, &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 1ff7bd9ac425ba67cd5ca7ad97bcf570f9e19abe..056781b1c21e737583f081594d9= f88b32adfd674 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -1196,7 +1196,7 @@ extern const VMStateInfo vmstate_info_qlist; } =20 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, int version_id); + void *opaque, int version_id, Error **errp); int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc); int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, diff --git a/migration/cpr.c b/migration/cpr.c index 42ad0b0d500e5de57faf0c6517e216b2d1c0cacf..8abb6db76d2474157f804ece4c3= 5ebfc8c22d21a 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -233,9 +233,8 @@ int cpr_state_load(MigrationChannel *channel, Error **e= rrp) return -ENOTSUP; } =20 - ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1); + ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1, errp); if (ret) { - error_setg(errp, "vmstate_load_state error %d", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index fabbeb296ae987d0c06ba6dafda63720205fecfd..f5a1ab91016dba51f9cd1dee19a= 1c7ba31417423 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -969,7 +969,8 @@ static int vmstate_load(QEMUFile *f, SaveStateEntry *se) if (!se->vmsd) { /* Old style */ return se->ops->load_state(f, se->opaque, se->load_version_id); } - return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id= ); + return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id, + &error_fatal); } =20 static void vmstate_save_old_style(QEMUFile *f, SaveStateEntry *se, @@ -2817,6 +2818,7 @@ static int qemu_loadvm_state_header(QEMUFile *f) { unsigned int v; int ret; + Error *local_err =3D NULL; =20 v =3D qemu_get_be32(f); if (v !=3D QEMU_VM_FILE_MAGIC) { @@ -2839,9 +2841,11 @@ static int qemu_loadvm_state_header(QEMUFile *f) error_report("Configuration section missing"); return -EINVAL; } - ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0); + ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, + &local_err); =20 if (ret) { + error_report_err(local_err); return ret; } } diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index 741a588b7e18c6d37724b08a0101edc8bc74a0a5..c5cfd861e3aa5391245ef46bec9= c90106c467e6e 100644 --- a/migration/vmstate-types.c +++ b/migration/vmstate-types.c @@ -19,6 +19,7 @@ #include "qemu/error-report.h" #include "qemu/queue.h" #include "trace.h" +#include "qapi/error.h" =20 /* bool */ =20 @@ -543,13 +544,17 @@ static int get_tmp(QEMUFile *f, void *pv, size_t size, const VMStateField *field) { int ret; + Error *local_err =3D NULL; const VMStateDescription *vmsd =3D field->vmsd; int version_id =3D field->version_id; void *tmp =3D g_malloc(size); =20 /* Writes the parent field which is at the start of the tmp */ *(void **)tmp =3D pv; - ret =3D vmstate_load_state(f, vmsd, tmp, version_id); + ret =3D vmstate_load_state(f, vmsd, tmp, version_id, &local_err); + if (ret < 0) { + error_report_err(local_err); + } g_free(tmp); return ret; } @@ -626,6 +631,7 @@ static int get_qtailq(QEMUFile *f, void *pv, size_t unu= sed_size, const VMStateField *field) { int ret =3D 0; + Error *local_err =3D NULL; const VMStateDescription *vmsd =3D field->vmsd; /* size of a QTAILQ element */ size_t size =3D field->size; @@ -649,8 +655,9 @@ static int get_qtailq(QEMUFile *f, void *pv, size_t unu= sed_size, =20 while (qemu_get_byte(f)) { elm =3D g_malloc(size); - ret =3D vmstate_load_state(f, vmsd, elm, version_id); + ret =3D vmstate_load_state(f, vmsd, elm, version_id, &local_err); if (ret) { + error_report_err(local_err); return ret; } QTAILQ_RAW_INSERT_TAIL(pv, elm, entry_offset); @@ -772,6 +779,7 @@ static int get_gtree(QEMUFile *f, void *pv, size_t unus= ed_size, GTree *tree =3D *pval; void *key, *val; int ret =3D 0; + Error *local_err =3D NULL; =20 /* in case of direct key, the key vmsd can be {}, ie. check fields */ if (!direct_key && version_id > key_vmsd->version_id) { @@ -803,18 +811,16 @@ static int get_gtree(QEMUFile *f, void *pv, size_t un= used_size, key =3D (void *)(uintptr_t)qemu_get_be64(f); } else { key =3D g_malloc0(key_size); - ret =3D vmstate_load_state(f, key_vmsd, key, version_id); + ret =3D vmstate_load_state(f, key_vmsd, key, version_id, &loca= l_err); if (ret) { - error_report("%s : failed to load %s (%d)", - field->name, key_vmsd->name, ret); + error_report_err(local_err); goto key_error; } } val =3D g_malloc0(val_size); - ret =3D vmstate_load_state(f, val_vmsd, val, version_id); + ret =3D vmstate_load_state(f, val_vmsd, val, version_id, &local_er= r); if (ret) { - error_report("%s : failed to load %s (%d)", - field->name, val_vmsd->name, ret); + error_report_err(local_err); goto val_error; } g_tree_insert(tree, key, val); @@ -872,6 +878,7 @@ static int get_qlist(QEMUFile *f, void *pv, size_t unus= ed_size, const VMStateField *field) { int ret =3D 0; + Error *local_err =3D NULL; const VMStateDescription *vmsd =3D field->vmsd; /* size of a QLIST element */ size_t size =3D field->size; @@ -892,10 +899,9 @@ static int get_qlist(QEMUFile *f, void *pv, size_t unu= sed_size, =20 while (qemu_get_byte(f)) { elm =3D g_malloc(size); - ret =3D vmstate_load_state(f, vmsd, elm, version_id); + ret =3D vmstate_load_state(f, vmsd, elm, version_id, &local_err); if (ret) { - error_report("%s: failed to load %s (%d)", field->name, - vmsd->name, ret); + error_report_err(local_err); g_free(elm); return ret; } diff --git a/migration/vmstate.c b/migration/vmstate.c index 08f2b562e3a5ec0e186336215ccfb378a7675f0c..8d1e9eb62bb9a7506604016b0ed= 858855e685776 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -132,30 +132,33 @@ static void vmstate_handle_alloc(void *ptr, const VMS= tateField *field, } =20 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, int version_id) + void *opaque, int version_id, Error **errp) { const VMStateField *field =3D vmsd->fields; int ret =3D 0; - Error *local_err =3D NULL; =20 trace_vmstate_load_state(vmsd->name, version_id); if (version_id > vmsd->version_id) { - error_report("%s: incoming version_id %d is too new " - "for local version_id %d", - vmsd->name, version_id, vmsd->version_id); + error_setg(errp, "%s: incoming version_id %d is too new " + "for local version_id %d", + vmsd->name, version_id, vmsd->version_id); trace_vmstate_load_state_end(vmsd->name, "too new", -EINVAL); return -EINVAL; } if (version_id < vmsd->minimum_version_id) { - error_report("%s: incoming version_id %d is too old " - "for local minimum version_id %d", - vmsd->name, version_id, vmsd->minimum_version_id); + error_setg(errp, "%s: incoming version_id %d is too old " + "for local minimum version_id %d", + vmsd->name, version_id, vmsd->minimum_version_id); trace_vmstate_load_state_end(vmsd->name, "too old", -EINVAL); return -EINVAL; } if (vmsd->pre_load) { ret =3D vmsd->pre_load(opaque); if (ret) { + error_setg(errp, "pre load hook failed for: '%s', " + "version_id: %d, minimum version_id: %d, ret: %d", + vmsd->name, vmsd->version_id, vmsd->minimum_version= _id, + ret); return ret; } } @@ -193,13 +196,21 @@ int vmstate_load_state(QEMUFile *f, const VMStateDesc= ription *vmsd, =20 if (inner_field->flags & VMS_STRUCT) { ret =3D vmstate_load_state(f, inner_field->vmsd, curr_= elem, - inner_field->vmsd->version_id= ); + inner_field->vmsd->version_id, + errp); } else if (inner_field->flags & VMS_VSTRUCT) { ret =3D vmstate_load_state(f, inner_field->vmsd, curr_= elem, - inner_field->struct_version_i= d); + inner_field->struct_version_i= d, + errp); } else { ret =3D inner_field->info->get(f, curr_elem, size, inner_field); + if (ret < 0) { + error_setg(errp, + "Failed to load element of type %s for = %s: " + "%d", inner_field->info->name, + inner_field->name, ret); + } } =20 /* If we used a fake temp field.. free it now */ @@ -209,31 +220,40 @@ int vmstate_load_state(QEMUFile *f, const VMStateDesc= ription *vmsd, =20 if (ret >=3D 0) { ret =3D qemu_file_get_error(f); + if (ret < 0) { + error_setg(errp, + "Failed to load %s state: stream error:= %d", + vmsd->name, ret); + } } if (ret < 0) { qemu_file_set_error(f, ret); - error_report("Failed to load %s:%s", vmsd->name, - field->name); trace_vmstate_load_field_error(field->name, ret); return ret; } } } else if (field->flags & VMS_MUST_EXIST) { - error_report("Input validation failed: %s/%s", - vmsd->name, field->name); + error_setg(errp, "Input validation failed: %s/%s version_id: %= d", + vmsd->name, field->name, vmsd->version_id); return -1; } field++; } assert(field->flags =3D=3D VMS_END); - ret =3D vmstate_subsection_load(f, vmsd, opaque, &local_err); + ret =3D vmstate_subsection_load(f, vmsd, opaque, errp); if (ret !=3D 0) { qemu_file_set_error(f, ret); - error_report_err(local_err); return ret; } if (vmsd->post_load) { ret =3D vmsd->post_load(opaque, version_id); + if (ret < 0) { + error_setg(errp, + "post load hook failed for: %s, version_id: %d, " + "minimum_version: %d, ret: %d", + vmsd->name, vmsd->version_id, vmsd->minimum_version= _id, + ret); + } } trace_vmstate_load_state_end(vmsd->name, "end", ret); return ret; @@ -570,6 +590,7 @@ vmstate_get_subsection(const VMStateDescription * const= *sub, static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *= vmsd, void *opaque, Error **errp) { + ERRP_GUARD(); trace_vmstate_subsection_load(vmsd->name); =20 while (qemu_peek_byte(f, 0) =3D=3D QEMU_VM_SUBSECTION) { @@ -609,12 +630,12 @@ static int vmstate_subsection_load(QEMUFile *f, const= VMStateDescription *vmsd, qemu_file_skip(f, len); /* idstr */ version_id =3D qemu_get_be32(f); =20 - ret =3D vmstate_load_state(f, sub_vmsd, opaque, version_id); + ret =3D vmstate_load_state(f, sub_vmsd, opaque, version_id, errp); if (ret) { trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(child)"= ); - error_setg(errp, - "Loading VM subsection '%s' in '%s' failed: %d", - idstr, vmsd->name, ret); + error_prepend(errp, + "Loading VM subsection '%s' in '%s' failed: %d: = ", + idstr, vmsd->name, ret); return ret; } } diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c index 63f28f26f45691a70936d33e7341d16477a3471f..4ff0ab632f7e08b922dfcf565f3= 1b0e63c17f59e 100644 --- a/tests/unit/test-vmstate.c +++ b/tests/unit/test-vmstate.c @@ -30,6 +30,7 @@ #include "../migration/savevm.h" #include "qemu/module.h" #include "io/channel-file.h" +#include "qapi/error.h" =20 static int temp_fd; =20 @@ -108,14 +109,16 @@ static int load_vmstate_one(const VMStateDescription = *desc, void *obj, { QEMUFile *f; int ret; + Error *local_err =3D NULL; =20 f =3D open_test_file(true); qemu_put_buffer(f, wire, size); qemu_fclose(f); =20 f =3D open_test_file(false); - ret =3D vmstate_load_state(f, desc, obj, version); + ret =3D vmstate_load_state(f, desc, obj, version, &local_err); if (ret) { + error_report_err(local_err); g_assert(qemu_file_get_error(f)); } else{ g_assert(!qemu_file_get_error(f)); @@ -355,6 +358,8 @@ static const VMStateDescription vmstate_versioned =3D { =20 static void test_load_v1(void) { + Error *local_err =3D NULL; + int ret; uint8_t buf[] =3D { 0, 0, 0, 10, /* a */ 0, 0, 0, 30, /* c */ @@ -365,7 +370,10 @@ static void test_load_v1(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj =3D { .b =3D 200, .e =3D 500, .f =3D 600 }; - vmstate_load_state(loading, &vmstate_versioned, &obj, 1); + ret =3D vmstate_load_state(loading, &vmstate_versioned, &obj, 1, &loca= l_err); + if (ret < 0) { + error_report_err(local_err); + } g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 200); @@ -378,6 +386,8 @@ static void test_load_v1(void) =20 static void test_load_v2(void) { + Error *local_err =3D NULL; + int ret; uint8_t buf[] =3D { 0, 0, 0, 10, /* a */ 0, 0, 0, 20, /* b */ @@ -391,7 +401,10 @@ static void test_load_v2(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj; - vmstate_load_state(loading, &vmstate_versioned, &obj, 2); + ret =3D vmstate_load_state(loading, &vmstate_versioned, &obj, 2, &loca= l_err); + if (ret < 0) { + error_report_err(local_err); + } g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); g_assert_cmpint(obj.c, =3D=3D, 30); @@ -467,6 +480,8 @@ static void test_save_skip(void) =20 static void test_load_noskip(void) { + Error *local_err =3D NULL; + int ret; uint8_t buf[] =3D { 0, 0, 0, 10, /* a */ 0, 0, 0, 20, /* b */ @@ -480,7 +495,10 @@ static void test_load_noskip(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj =3D { .skip_c_e =3D false }; - vmstate_load_state(loading, &vmstate_skipping, &obj, 2); + ret =3D vmstate_load_state(loading, &vmstate_skipping, &obj, 2, &local= _err); + if (ret < 0) { + error_report_err(local_err); + } g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); @@ -493,6 +511,8 @@ static void test_load_noskip(void) =20 static void test_load_skip(void) { + Error *local_err =3D NULL; + int ret; uint8_t buf[] =3D { 0, 0, 0, 10, /* a */ 0, 0, 0, 20, /* b */ @@ -504,7 +524,10 @@ static void test_load_skip(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj =3D { .skip_c_e =3D true, .c =3D 300, .e =3D 500 }; - vmstate_load_state(loading, &vmstate_skipping, &obj, 2); + ret =3D vmstate_load_state(loading, &vmstate_skipping, &obj, 2, &local= _err); + if (ret < 0) { + error_report_err(local_err); + } g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); @@ -744,6 +767,8 @@ static void test_save_q(void) =20 static void test_load_q(void) { + int ret; + Error *local_err =3D NULL; TestQtailq obj_q =3D { .i16 =3D -512, .i32 =3D 70000, @@ -773,7 +798,10 @@ static void test_load_q(void) TestQtailq tgt; =20 QTAILQ_INIT(&tgt.q); - vmstate_load_state(fload, &vmstate_q, &tgt, 1); + ret =3D vmstate_load_state(fload, &vmstate_q, &tgt, 1, &local_err); + if (ret < 0) { + error_report_err(local_err); + } char eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(tgt.i16, =3D=3D, obj_q.i16); @@ -1115,6 +1143,8 @@ static void diff_iommu(TestGTreeIOMMU *iommu1, TestGT= reeIOMMU *iommu2) =20 static void test_gtree_load_domain(void) { + Error *local_err =3D NULL; + int ret; TestGTreeDomain *dest_domain =3D g_new0(TestGTreeDomain, 1); TestGTreeDomain *orig_domain =3D create_first_domain(); QEMUFile *fload, *fsave; @@ -1127,7 +1157,11 @@ static void test_gtree_load_domain(void) =20 fload =3D open_test_file(false); =20 - vmstate_load_state(fload, &vmstate_domain, dest_domain, 1); + ret =3D vmstate_load_state(fload, &vmstate_domain, dest_domain, 1, + &local_err); + if (ret < 0) { + error_report_err(local_err); + } eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(orig_domain->id, =3D=3D, dest_domain->id); @@ -1230,6 +1264,8 @@ static void test_gtree_save_iommu(void) =20 static void test_gtree_load_iommu(void) { + Error *local_err =3D NULL; + int ret; TestGTreeIOMMU *dest_iommu =3D g_new0(TestGTreeIOMMU, 1); TestGTreeIOMMU *orig_iommu =3D create_iommu(); QEMUFile *fsave, *fload; @@ -1241,7 +1277,10 @@ static void test_gtree_load_iommu(void) qemu_fclose(fsave); =20 fload =3D open_test_file(false); - vmstate_load_state(fload, &vmstate_iommu, dest_iommu, 1); + ret =3D vmstate_load_state(fload, &vmstate_iommu, dest_iommu, 1, &loca= l_err); + if (ret < 0) { + error_report_err(local_err); + } eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(orig_iommu->id, =3D=3D, dest_iommu->id); @@ -1363,6 +1402,8 @@ static void test_save_qlist(void) =20 static void test_load_qlist(void) { + Error *local_err =3D NULL; + int ret; QEMUFile *fsave, *fload; TestQListContainer *orig_container =3D alloc_container(); TestQListContainer *dest_container =3D g_new0(TestQListContainer, 1); @@ -1376,7 +1417,11 @@ static void test_load_qlist(void) qemu_fclose(fsave); =20 fload =3D open_test_file(false); - vmstate_load_state(fload, &vmstate_container, dest_container, 1); + ret =3D vmstate_load_state(fload, &vmstate_container, dest_container, = 1, + &local_err); + if (ret < 0) { + error_report_err(local_err); + } eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(eof, =3D=3D, QEMU_VM_EOF); diff --git a/ui/vdagent.c b/ui/vdagent.c index c0746fe5b168fdc7aeb4866de2ba0c3387566649..bc3c77f01332a4b594cba00f3f9= f9a5bca4d739a 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -1001,6 +1001,7 @@ static int get_cbinfo(QEMUFile *f, void *pv, size_t s= ize, VDAgentChardev *vd =3D QEMU_VDAGENT_CHARDEV(pv); struct CBInfoArray cbinfo =3D {}; int i, ret; + Error *local_err =3D NULL; =20 if (!have_clipboard(vd)) { return 0; @@ -1008,8 +1009,10 @@ static int get_cbinfo(QEMUFile *f, void *pv, size_t = size, =20 vdagent_clipboard_peer_register(vd); =20 - ret =3D vmstate_load_state(f, &vmstate_cbinfo_array, &cbinfo, 0); + ret =3D vmstate_load_state(f, &vmstate_cbinfo_array, &cbinfo, 0, + &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209193; cv=none; d=zohomail.com; s=zohoarc; b=cOIEupK6HacL5cro/j0YJuJ1crEIhwvfbIiDfZnJxkOagZzg4nFTUUzzdweveXGbSkJAypribBKC2Adv4e8U6ajQBq+biAZ80gnz3FvuShVkEDbDJeaZVPa/ja8K8nWL4jdtm3tBvyDoLoDcyu9/1lxksPkmxGj0NR2RYCHPijQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209193; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oOSafeLF/cdHj0WUrje7Rzs54rhm0NEYGyektqV3rfY=; b=mcq3iEJR7GJTE25Q3BkY7nXuQm315bVSDeq+JFX8EYy47v6VdSCPYE+NC8sd2tns0sY/nN22+NEUH2sgyDkSNdVZ7zfzvwRkVexyXcbvOVga8Ym9XNxqIpz7Svczn5ByGxQRBGseDM0q/5Vm060gKZb5XZqLeF/0pRgkQv5OJa0= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209193766167.78383950912269; Thu, 18 Sep 2025 08:26:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGUn-0003YX-8I; Thu, 18 Sep 2025 11:24:29 -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 1uzGUf-0003Ru-To for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:22 -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 1uzGUd-0002Zb-1t for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:21 -0400 Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-247-1uTitq7yM568gF50foe0eQ-1; Thu, 18 Sep 2025 11:24:13 -0400 Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-32e0b001505so1084882a91.0 for ; Thu, 18 Sep 2025 08:24:13 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.24.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:24:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209056; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oOSafeLF/cdHj0WUrje7Rzs54rhm0NEYGyektqV3rfY=; b=IfxrhdCtRNriQJV9SU4Ct1CUIin9suHnRoNUxO9yaE4C/ysL2bPUiMUkVNUE4brrOPZOp0 LsGQsg8bCGEp8qZeRmtHWuJW3koNk91t2j0y7HF3DpiU2/m0EKUSyILNfa+ZOEuan0abGy il9GTRyNQhz16QemuaOrW0HbZ/I4w3M= X-MC-Unique: 1uTitq7yM568gF50foe0eQ-1 X-Mimecast-MFC-AGG-ID: 1uTitq7yM568gF50foe0eQ_1758209052 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209052; x=1758813852; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oOSafeLF/cdHj0WUrje7Rzs54rhm0NEYGyektqV3rfY=; b=eDxyABl5rrL5j65JLrBsuyF8noEQdR9N1zWwoCMuGeV9zWN92RxtPexfvsKOS9yGjj Q5qGtmI+Lo8ZbGASBmMeAkwTBJv0xfIsXo+uycZhGuTvkN5LiIBULpDV0/FXx8JXs2l6 QzUgc8usnzr3jtOjx/s26qzQT8EzqX+DJTmwVz1e52bYoqRl99+uqgxXQInMl6UWjm0l c9TFQBcIP7rxH5xh/9WY871OsNktknmWKqIaxpQeR1LIFN7pgAPc04/8T38VHJfBfc7W 5p46L2epXqoQLLuQ0ykrar6cGDCHFuJjDr8J28wcNxk1G31avsBnvWVzwvbjR77Nr8vG Gynw== X-Gm-Message-State: AOJu0YwCgHfKFZl9rZghhdWeGXEFebVlssVA+Sv0O1G0aiMTJ0CT9G4d 4iIo69H2JYlzDVtPsTJzU+qe5/V1LxGti9oONgb1pNh7bsK+yoKmM3BjgcwkU8olB/1sJZveNE6 a215ttsGMMRGJGpcCITImqzIR//88U41vH6lOi2hvtB8iGpKlnGp7ii1r X-Gm-Gg: ASbGncs15dxYSTmKDobMUWQZHNCSRYIOKWJ2kaLdguTKQKl6gP3JxKJAICu9KhUXvPe nFFmj7f8507pZ5cs0F/ekcE09UlwXya0XN+z+Asmzx2YPBe7FaCLqOpBQ4I3Cm8nw83JhvDeWpF eZiatAkahS8BrCnvCWEpD7eyxCnYGLNPodErOPF3CPSyo7Jl0fSUCmDMKxoify7WX92ZP3gm6OU aoVfq4Df+PGR1PJAhIHSZRzSOa6ztGX78DRAsap1Bvp0qWEZjR1eLlZ6GF7yKY89wfbZcQ43db3 Xjzaq5cJjluNw4hUvfeTjkAKfr4yC+gmQwK9xk4r1+bM2BFS8oFMwA== X-Received: by 2002:a17:90b:4ccb:b0:327:b33e:39d5 with SMTP id 98e67ed59e1d1-32ee3f99bdemr8527614a91.37.1758209052256; Thu, 18 Sep 2025 08:24:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEWX4/A+A1kzBc/JQ4ue0O12ISL0X/gY1NX1SFtsHecZmzu+1HpnYhQfg25rvr6T1adsL8WDg== X-Received: by 2002:a17:90b:4ccb:b0:327:b33e:39d5 with SMTP id 98e67ed59e1d1-32ee3f99bdemr8527572a91.37.1758209051817; Thu, 18 Sep 2025 08:24:11 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:20 +0530 Subject: [PATCH v14 03/27] migration: push Error **errp into qemu_loadvm_state_header() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-3-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2973; i=armenon@redhat.com; h=from:subject:message-id; bh=08fs5yPRSN3G4fsuHEbQFA8WwDnIkqC0cHdPyjoW6j0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e9vJp0NlhS/qv1zTsmxqdMKH+SFfnnRpHPV77tZf IzampMbO0pZGMS4GGTFFFkavgbINgUURkTavrwOM4eVCWQIAxenAEzEJ4SR4U+o0KJ9ie7WbzWC czi09/LO/W6fdj3TXmbrLZtdAUE3XRn+yjBZx2ze6pEyseOVvO8aDgfPzrt2Jtcmdrsb64o3HeV lAQA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209195089116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state_header() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index f5a1ab91016dba51f9cd1dee19a1c7ba31417423..0c445a957fc99f826e6753ed379= 5bcdd51f1e3f5 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2814,38 +2814,43 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t t= ype) return 0; } =20 -static int qemu_loadvm_state_header(QEMUFile *f) +static int qemu_loadvm_state_header(QEMUFile *f, Error **errp) { unsigned int v; int ret; - Error *local_err =3D NULL; =20 v =3D qemu_get_be32(f); if (v !=3D QEMU_VM_FILE_MAGIC) { - error_report("Not a migration stream"); + error_setg(errp, "Not a migration stream, magic: %x !=3D %x", + v, QEMU_VM_FILE_MAGIC); return -EINVAL; } =20 v =3D qemu_get_be32(f); if (v =3D=3D QEMU_VM_FILE_VERSION_COMPAT) { - error_report("SaveVM v2 format is obsolete and don't work anymore"= ); + error_setg(errp, + "SaveVM v2 format is obsolete and no longer supported"); + return -ENOTSUP; } if (v !=3D QEMU_VM_FILE_VERSION) { - error_report("Unsupported migration stream version"); + error_setg(errp, "Unsupported migration stream version, " + "file version %x !=3D %x", + v, QEMU_VM_FILE_VERSION); return -ENOTSUP; } =20 if (migrate_get_current()->send_configuration) { - if (qemu_get_byte(f) !=3D QEMU_VM_CONFIGURATION) { - error_report("Configuration section missing"); + v =3D qemu_get_byte(f); + if (v !=3D QEMU_VM_CONFIGURATION) { + error_setg(errp, "Configuration section missing, %x !=3D %x", + v, QEMU_VM_CONFIGURATION); return -EINVAL; } - ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, - &local_err); =20 + ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, + errp); if (ret) { - error_report_err(local_err); return ret; } } @@ -3121,8 +3126,9 @@ int qemu_loadvm_state(QEMUFile *f) =20 qemu_loadvm_thread_pool_create(mis); =20 - ret =3D qemu_loadvm_state_header(f); + ret =3D qemu_loadvm_state_header(f, &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209278; cv=none; d=zohomail.com; s=zohoarc; b=jkvQRR0KIKB5a0uvwC/ugLw7Ch9LV2TYPC26sGQhhj6QyXzkm72WajcX6JPIm5mboALoxYHcVNICoDJUB0qyPWqlQsHxLkZvV4Y27/3O4zSMe1tHWeSQDuj4L8wkGcRIZ7Nr/YR1YA8+b4P/0xdhcURTaKMCP7QnvAOcH6AJh6M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209278; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sFESQmOnhzZW2+hXaXl8rxhwnVtiVIyzJTwYSrM4JVM=; b=oKmZSr1TzFBgmy+p4B1igSe3ena2F9JlH2Df6mt5A5XINffg8NVBTMXiU1CrhBqiGYlTWG15TMRTtQvDDGR2zZm32RAf9AJxtVcT1CRFuLYk33w1whclVBa2wBFRIfTiSILLAbdx1p1V7SkUfwo4bJVwSrcnyjVixuFoOjszMH0= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209278185245.1635936115681; Thu, 18 Sep 2025 08:27:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGUp-0003aA-1o; Thu, 18 Sep 2025 11:24:31 -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 1uzGUn-0003Yc-IK for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:29 -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 1uzGUk-0002cf-GB for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:29 -0400 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-695-HJTdgG_dNRq16clKTNWcsA-1; Thu, 18 Sep 2025 11:24:22 -0400 Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-77422201fd8so1228932b3a.1 for ; Thu, 18 Sep 2025 08:24:21 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.24.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:24:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209063; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sFESQmOnhzZW2+hXaXl8rxhwnVtiVIyzJTwYSrM4JVM=; b=CW7lBAIVuiB75vz825pYz+K0IqMpNSEA8anmSK4tOLBP20B/9ze0pWIjDnaH1Nc2aj5w+q TU9oH8s/nCNUiOQxTcVC2t2KHIpY7IDxNQYyrq72DV5UYu3uo7Cbx93j5A39AMs0gS+CKo LXKw9sY2zhagDyywYtFO70LgyWJqXqE= X-MC-Unique: HJTdgG_dNRq16clKTNWcsA-1 X-Mimecast-MFC-AGG-ID: HJTdgG_dNRq16clKTNWcsA_1758209061 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209061; x=1758813861; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sFESQmOnhzZW2+hXaXl8rxhwnVtiVIyzJTwYSrM4JVM=; b=jvDbWHpeHYVxK/+I8wRkYMbHUL52bWUBY8d6MAJPO8rTcPxiEiVhZ++C/g+IqxZgc+ IGpsKr6W1+qC6jKeDt87YwxU/FeK6xmIqqFv3SFD3HvYXuNPiEzJs+uQjG+GKr49ZifD KtIFba4ITxuEQRek1OqARTOB+JaPsPssyvc2yqfqIT1LKw6ydzvwGAvkkljWxhv1Ao71 ywNfKBafA+RwxKqAkp1Xc8SYfYwopEsZsU7Vq8UaaKE1/AjXLarrG5ugedQAZVKiydv3 0NkdjS8IsZGXFdsbzs+ywK1gcaqi+zloX9pPG5zVDzec4u4r7upou/9+ELWoFCzL312G 8Phg== X-Gm-Message-State: AOJu0YxYwcOOgFOwCATRxNnE7zRswUa9xQZcMRCwozWKxFnnkDRS4EB6 B9z1Urrzv4zOZ383y3nMJWuBd70uoEr0o9WL6F149aFKTp8S7NBf+lUMs4v2+njZ5Rfnj0wEuCe 8i9KPjYmTHe1bE9z8BvYNmiNVMu/ZR7pd29c7ir8YDegfhfUJ9EzTh/oQ X-Gm-Gg: ASbGncsFUq/jDhr4ryHh72E+nbr+8/lsHfvcXVN4bx62obY+7mFA8H8MqGwa7P0sKLR Bjhi769JAhby1k9iCYzguy+uDohBxFTNXKh/sC/XnIsEL3mFq14EdOerSqZ8d9Z6nNltCSL+Drd cvWoiwOn1UU341IVxz6E/kP3DVhzPk+D3sajTtYczeIdKLgaK0X00wgy2eQxDIVb5HHtGVJyZvN kaJfglts5nLBC6Jjbcc1Y0mcJYR3EblCRH/O0PsC3oWwLsjxRDoJINOyuEaOVFRe26F4qD8PuKN ebCVEK0XCQzq4sF32cPqM/GmPGh8RoYsusD8OQahHCnm1CEBRh7S0Q== X-Received: by 2002:a05:6a20:914a:b0:252:2bfe:b65a with SMTP id adf61e73a8af0-27a91197b56mr8094346637.7.1758209060940; Thu, 18 Sep 2025 08:24:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGolnpvDNp6OiuqBqa/oKTvoWxO1Stfdk0DbqSDPcJZmrdDAwmEQLXP1c6dzN2ZUlCbhn9blQ== X-Received: by 2002:a05:6a20:914a:b0:252:2bfe:b65a with SMTP id adf61e73a8af0-27a91197b56mr8094280637.7.1758209060495; Thu, 18 Sep 2025 08:24:20 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:21 +0530 Subject: [PATCH v14 04/27] migration: push Error **errp into vmstate_load() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-4-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3264; i=armenon@redhat.com; h=from:subject:message-id; bh=XNWOL0PRpe00C/2zRFfhJytxVRezN65+i4XThQwPhbg=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e/P1vrw+z4W1bsW5u7L+3OL1KvzrtySJxbtfvfUL egcT59KRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgInYcjIy/MiP+vqwwPDnRN3J pa8rzp2Os73WxqYr//LXjQ2Ht740u8nwP+vnj1WWnhss90mGMsRGebvVn3y985UJ70Kx5/qRX8s YeQE= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209280046116601 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that vmstate_load() must report an error in errp, in case of failure. The errors are temporarily reported using error_report_err(). This is removed in the subsequent patches in this series when we are actually able to propagate the error to the calling function. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 0c445a957fc99f826e6753ed3795bcdd51f1e3f5..40dae406db22dc9ddbff2f5ada9= 2a32626b58e3b 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -963,14 +963,20 @@ void vmstate_unregister(VMStateIf *obj, const VMState= Description *vmsd, } } =20 -static int vmstate_load(QEMUFile *f, SaveStateEntry *se) +static int vmstate_load(QEMUFile *f, SaveStateEntry *se, Error **errp) { + int ret; trace_vmstate_load(se->idstr, se->vmsd ? se->vmsd->name : "(old)"); if (!se->vmsd) { /* Old style */ - return se->ops->load_state(f, se->opaque, se->load_version_id); + ret =3D se->ops->load_state(f, se->opaque, se->load_version_id); + if (ret < 0) { + error_setg(errp, "Failed to load vmstate version_id: %d, ret: = %d", + se->load_version_id, ret); + } + return ret; } return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id, - &error_fatal); + errp); } =20 static void vmstate_save_old_style(QEMUFile *f, SaveStateEntry *se, @@ -2692,6 +2698,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) SaveStateEntry *se; char idstr[256]; int ret; + Error *local_err =3D NULL; =20 /* Read section start */ section_id =3D qemu_get_be32(f); @@ -2741,10 +2748,11 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se); + ret =3D vmstate_load(f, se, &local_err); if (ret < 0) { error_report("error while loading state for instance 0x%"PRIx32" o= f" " device '%s'", instance_id, idstr); + error_report_err(local_err); return ret; } =20 @@ -2769,6 +2777,7 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) uint32_t section_id; SaveStateEntry *se; int ret; + Error *local_err =3D NULL; =20 section_id =3D qemu_get_be32(f); =20 @@ -2794,10 +2803,9 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t ty= pe) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se); + ret =3D vmstate_load(f, se, &local_err); if (ret < 0) { - error_report("error while loading state section id %d(%s)", - section_id, se->idstr); + error_report_err(local_err); return ret; } =20 --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209249; cv=none; d=zohomail.com; s=zohoarc; b=CgqlMt3qUj8dRTT7MxC7ENf5Ao4+hD8oyg1gRW17+9vNZ1ojywC/Fa8Qju0re/D6s32LKgdl0YHMDlxnIF5tR9OW5sasVpTY97iNlU9Uv5jUGvAz2oaHoKIpRAtrZxisMv9Lddk3fTPT9c1wltPunVkWyPA7IpplQo5gfbITX7I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209249; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uj4H8KnUuiQwP+qdZY3377j43+Z3u9M3mu/jrKpfZ4I=; b=SffN5+unBMtt4Nl6v56aWPFPSPcGreqaGsS+n29qL59LV2QpdQo/koVLj4UnYL/QPZAVwCxk46L/GQHy1fSQkobT8+hShVjvKhtDrYyQiZrASqJJJkA4gV5b6Hc//2A+vF78v4jobkUx0GAX4KKt5Hca27aHm0z4+dw9upd5jBA= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175820924967468.1047010985402; Thu, 18 Sep 2025 08:27:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGUv-0003dT-Sp; Thu, 18 Sep 2025 11:24:37 -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 1uzGUt-0003cR-WE for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGUr-0002f5-Gk for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:35 -0400 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-516-tqDeDZqzP1aI1du7LM1jhw-1; Thu, 18 Sep 2025 11:24:30 -0400 Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-7725b77b795so1131024b3a.2 for ; Thu, 18 Sep 2025 08:24:30 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.24.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:24:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209071; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uj4H8KnUuiQwP+qdZY3377j43+Z3u9M3mu/jrKpfZ4I=; b=FHRWtpO4yI19yBrYlB1vgbUGDPun1Ud1rEv6uK2DpJXkJW1YQvStkbPEpdFozDJ+q0pHkV j/Enddx2ZGG6iNd9vT4EtPOc4k5D8ho4Q4I26DD9stZlwkwvWNvoHImLraceUkZsZS5muX sNcMValTKEhs1MsOhDtIO7Qk1OpU4Ds= X-MC-Unique: tqDeDZqzP1aI1du7LM1jhw-1 X-Mimecast-MFC-AGG-ID: tqDeDZqzP1aI1du7LM1jhw_1758209070 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209069; x=1758813869; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uj4H8KnUuiQwP+qdZY3377j43+Z3u9M3mu/jrKpfZ4I=; b=X/gxO+B1N/lmy2EDJrRIs17xT6X+g8rk/2vhD2KC9wv/Ph6SQYFKHzlqmqfV14MnZ6 /hAUwVTDXrrRvj3C3wegAHIDjiWk4e9rjNXFSraBAcoYoK0hNj41lY9JWBwfrTrlXvGC Yifml1EhFQpgWbr+lGf9+qdmXRNA0C3ARlZPBrbE+tKyF6BUXAPFUfdLLyeX+Ur82Eu2 lT82bOcSDxCj/Af3dTYpKiyOjWVbHl6gy287cVXrOvzwYd6ws/cpeV4H9ZxfMryKwlzk Ui/gakpPDJ5CGSnITAV1ZQTeiWMHZsS1zdOgO9Tf0RLvVwPmmXddoCi1DL23oJSFvCOC 5V0Q== X-Gm-Message-State: AOJu0YxcvrzeWnsmVIEDrTudKi4z8P8ZrQD8iyqqPbNmgyqKEYE5M1mS GBCN8c0On9RE1kVL93Fvu8WwksKjCj4qBbTC+PIuRKpVA4z+s+1d9XmfNH8gLnMEEXTok7mTk4Y UtBgzUeHciORBlR6gRqKKb0NBfs2bHTxGIsoc6l5e2dAyoCsW4LO6MUJm X-Gm-Gg: ASbGncvz4hzA5nk3sdTla4GKckjvX97nsUhh5lwMWeYMCg//BqTSjYiJXnW7j2vUFvA lrTiJQjVRBHGRZBLMm5aLUrKcMjCp5ii4a09rB5MmsUv4KxgC6C2uruLg34Abip2svm+Y/vPX05 Ve340xGPzGoWPPHTetIz2emg9erT4werVx87f8qITquY6kBjUqwIc6DxgBC+th5R3WA9jlw/sH9 brVxfzCz/zjxt7fscXDyjiXj9XAiBDmwtxoOp+kFh3Nffm0WcbaWxbBMEmpB8kX79rNm3ktZPJ4 nTZpH3ftTT2zGqkzywcHrRsJl7XXBpZ/MEnKsslwy98BwCNNeYZn1g== X-Received: by 2002:a05:6a00:1888:b0:776:1804:6fe with SMTP id d2e1a72fcca58-77bf6fcee5amr7514199b3a.7.1758209069482; Thu, 18 Sep 2025 08:24:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEQMCS8eer6M5gPpi3aRDPTEPN0EaVmvKvqg5D+qEIc8K0bW2kc4GJdcAg4Zsden+3/wHeYfQ== X-Received: by 2002:a05:6a00:1888:b0:776:1804:6fe with SMTP id d2e1a72fcca58-77bf6fcee5amr7514153b3a.7.1758209069032; Thu, 18 Sep 2025 08:24:29 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:22 +0530 Subject: [PATCH v14 05/27] migration: push Error **errp into loadvm_process_command() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-5-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7155; i=armenon@redhat.com; h=from:subject:message-id; bh=qSL0t7f4wG7F7+1wOstaO87epuFS+Gl9p/u+kXVLec8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e/yURPMXZdZHz91+0t+kdqD+G2v2jPVV9xoU82P2 K/MuvV+RykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgImIHGVk6DDc7vX9Qu8CkY5w riS/2GnHzU71Ckz5nBC+cbpB8E2RRob/YXpKqTvNEvSNAp5zxC3ZJXMwz03tSl1ciSDv+n5t25M MAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209251761116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_process_command() must report an error in errp, in case of failure. The errors are temporarily reported using error_report_err(). This is removed in the subsequent patches in this series when we are actually able to propagate the error to the calling function. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 86 +++++++++++++++++++++++++++++++++++++++-----------= ---- 1 file changed, 63 insertions(+), 23 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 40dae406db22dc9ddbff2f5ada92a32626b58e3b..0e9935aea3e1a214cfa0ddd0e30= fa5cf925373e3 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2546,32 +2546,37 @@ static int loadvm_postcopy_handle_switchover_start(= void) * LOADVM_QUIT All good, but exit the loop * <0 Error */ -static int loadvm_process_command(QEMUFile *f) +static int loadvm_process_command(QEMUFile *f, Error **errp) { MigrationIncomingState *mis =3D migration_incoming_get_current(); uint16_t cmd; uint16_t len; uint32_t tmp32; + int ret; =20 cmd =3D qemu_get_be16(f); len =3D qemu_get_be16(f); =20 /* Check validity before continue processing of cmds */ - if (qemu_file_get_error(f)) { - return qemu_file_get_error(f); + ret =3D qemu_file_get_error(f); + if (ret) { + error_setg(errp, + "Failed to load VM process command: stream error: %d", + ret); + return ret; } =20 if (cmd >=3D MIG_CMD_MAX || cmd =3D=3D MIG_CMD_INVALID) { - error_report("MIG_CMD 0x%x unknown (len 0x%x)", cmd, len); + error_setg(errp, "MIG_CMD 0x%x unknown (len 0x%x)", cmd, len); return -EINVAL; } =20 trace_loadvm_process_command(mig_cmd_args[cmd].name, len); =20 if (mig_cmd_args[cmd].len !=3D -1 && mig_cmd_args[cmd].len !=3D len) { - error_report("%s received with bad length - expecting %zu, got %d", - mig_cmd_args[cmd].name, - (size_t)mig_cmd_args[cmd].len, len); + error_setg(errp, "%s received with bad length - expecting %zu, got= %d", + mig_cmd_args[cmd].name, + (size_t)mig_cmd_args[cmd].len, len); return -ERANGE; } =20 @@ -2584,7 +2589,7 @@ static int loadvm_process_command(QEMUFile *f) } mis->to_src_file =3D qemu_file_get_return_path(f); if (!mis->to_src_file) { - error_report("CMD_OPEN_RETURN_PATH failed"); + error_setg(errp, "CMD_OPEN_RETURN_PATH failed"); return -1; } =20 @@ -2594,11 +2599,10 @@ static int loadvm_process_command(QEMUFile *f) * been created. */ if (migrate_switchover_ack() && !mis->switchover_ack_pending_num) { - int ret =3D migrate_send_rp_switchover_ack(mis); + ret =3D migrate_send_rp_switchover_ack(mis); if (ret) { - error_report( - "Could not send switchover ack RP MSG, err %d (%s)", r= et, - strerror(-ret)); + error_setg_errno(errp, -ret, + "Could not send switchover ack RP MSG"); return ret; } } @@ -2608,39 +2612,71 @@ static int loadvm_process_command(QEMUFile *f) tmp32 =3D qemu_get_be32(f); trace_loadvm_process_command_ping(tmp32); if (!mis->to_src_file) { - error_report("CMD_PING (0x%x) received with no return path", - tmp32); + error_setg(errp, "CMD_PING (0x%x) received with no return path= ", + tmp32); return -1; } migrate_send_rp_pong(mis, tmp32); break; =20 case MIG_CMD_PACKAGED: - return loadvm_handle_cmd_packaged(mis); + ret =3D loadvm_handle_cmd_packaged(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_ADVISE: - return loadvm_postcopy_handle_advise(mis, len); + ret =3D loadvm_postcopy_handle_advise(mis, len); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_LISTEN: - return loadvm_postcopy_handle_listen(mis); + ret =3D loadvm_postcopy_handle_listen(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_RUN: - return loadvm_postcopy_handle_run(mis); + ret =3D loadvm_postcopy_handle_run(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_RAM_DISCARD: - return loadvm_postcopy_ram_handle_discard(mis, len); + ret =3D loadvm_postcopy_ram_handle_discard(mis, len); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_RESUME: return loadvm_postcopy_handle_resume(mis); =20 case MIG_CMD_RECV_BITMAP: - return loadvm_handle_recv_bitmap(mis, len); + ret =3D loadvm_handle_recv_bitmap(mis, len); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_ENABLE_COLO: - return loadvm_process_enable_colo(mis); + ret =3D loadvm_process_enable_colo(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_SWITCHOVER_START: - return loadvm_postcopy_handle_switchover_start(); + ret =3D loadvm_postcopy_handle_switchover_start(); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; } =20 return 0; @@ -3049,6 +3085,7 @@ int qemu_loadvm_state_main(QEMUFile *f, MigrationInco= mingState *mis) { uint8_t section_type; int ret =3D 0; + Error *local_err =3D NULL; =20 retry: while (true) { @@ -3076,7 +3113,10 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f); + ret =3D loadvm_process_command(f, &local_err); + if (ret < 0) { + error_report_err(local_err); + } trace_qemu_loadvm_state_section_command(ret); if ((ret < 0) || (ret =3D=3D LOADVM_QUIT)) { goto out; --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209123; cv=none; d=zohomail.com; s=zohoarc; b=IuGTCGU2mvXbO6xQHKbIdCEEI+79ntNQjw/lq389HRFlCu8PRUxQXi1+92yf01R8rdSJ7eKSk2gO8TQrWPOpCGROzbCqJafN9ov6ddSGZNWH034x+mCxlrJDyC9iR2O5pLzKcuRKHR980NCNo6smA0iJ+YGRlwFiF8Itf+6sth4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209123; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dfMeHNkHXITJfT3smIrT5NGNTBXHlf78w/tF67kcbe4=; b=Ob1kGtCTzpBmNFV7E2efssHwEDf6gBL4klQTv1WnwfzFai2y6yEdVhF12KvYaM/pdNWW4k8ptil7ymBxlQg7GiAZ/Tmvp6JxWV/Bmu6cfXDOxnCT5n12k4nzuTtizx8DzcIIM1IPwVrvDuUWQp8BuJst8AFgNzchmkcq1Ri/ZsA= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209120202716.4277693974808; Thu, 18 Sep 2025 08:25:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGV4-0003gz-2q; Thu, 18 Sep 2025 11:24:46 -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 1uzGV2-0003gV-AT for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:44 -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 1uzGUz-0002is-KU for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:44 -0400 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-349-78s-dRHaMbCXK0h-QGG3eQ-1; Thu, 18 Sep 2025 11:24:39 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-32dd3e922fdso1607798a91.0 for ; Thu, 18 Sep 2025 08:24:39 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.24.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:24:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209080; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dfMeHNkHXITJfT3smIrT5NGNTBXHlf78w/tF67kcbe4=; b=iz4I0+lQjc/JZ3+0k+ILdd8eLCweEdMaxryP/XEtct0P6j1lIueenrE2b1F+JbMj6wz3Jk 0OWlwkSxqU/fON4oUXX71rLZn5iJ9yHIJSplyWxMnxZEMf0gG+nVoSGA/c2dfWkwiJPZzE L+EKYzfBxPYjAmA1y5mWXObZMTYhsAg= X-MC-Unique: 78s-dRHaMbCXK0h-QGG3eQ-1 X-Mimecast-MFC-AGG-ID: 78s-dRHaMbCXK0h-QGG3eQ_1758209078 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209078; x=1758813878; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dfMeHNkHXITJfT3smIrT5NGNTBXHlf78w/tF67kcbe4=; b=rqx3BXp0n63dHn9ITqFAqoC0gOeQnqTxGkAxdOGWSyi5FRm0Cx4NhZWBtTIKdUnCw/ GfDXALuhfuk2q/U6neBL1IbYwd/5M/OW4ZXzu5TZq/rkwcaB1DvfLr4N1FbIWliBV+FT mFnPe9GJtPmtkqQL2lbvMegwu5Ia9T92wG87aF+JTrUuV6AttXBin/+6ToWZaQNHXgPG GC+fHbusjGDMbOHmselonGEio2ApGeIgjY3FAkVa28dC+jp7oJbyz4QM7anjrN8alKTA JBm7XrkOXgneyRvuFqWL+5PmW1NqadqrAHL2C418WP84DAmiI3MCTnMlhm8cVEbPv4y1 UJFA== X-Gm-Message-State: AOJu0Yyjoa10ZRtKJ8Zu3GVdzxj7CmnKrydqPdr059SEL10XMWli6xNm SdqWpw9b13tac+4EN6MoM9D2Ugs8GiuwLDPdWi6LWdwv/JhfpqxJp65xVHHji1bYsGdMyu1Nl4W RvVCPRzqqhooReEGK9fUB0nKZ3GGPTgMq7FEPjHUk/gqQJEM2sPwwF7Wv X-Gm-Gg: ASbGncu1VlBucOZgY2oY2+PDjWrAeDjQ760/n+kO+91XDQFujT8RkVz97pG1JIqoGyX OgK3dTJY6zEQBEuPb0nngX91cTgBVVNdWL2C0Ymurh5eTYJhdRytzoV0NS23jFdGPMGQUhUSWix qjlUa/0mlguCzVt79WDHphqTelqO0XuUJY22GIkj+tl+XIFnuZkBEazk4rOuxqOw7n9G0t8J9Tk 2UpzTVSvThq8/LZjL+bi7VztGO2j/1UtI3lnYfEBjftpqaiZMnPoygNCPhUmJbx3J/OagUxjF6T 3J/bVMLhO/tYAVUs5JkAB3ErfSKSIN0iVVR0E6yHLGRgz642ENi7+g== X-Received: by 2002:a17:90b:4cc7:b0:32d:f4cb:7486 with SMTP id 98e67ed59e1d1-32ee3f5d61emr9249782a91.19.1758209078202; Thu, 18 Sep 2025 08:24:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHchsePdUAtT/bSNdlGCYJzS2Wc/PL0J09GzLGLkbB0fLQqtWjhtABACbxujfBEKLRMLBdihQ== X-Received: by 2002:a17:90b:4cc7:b0:32d:f4cb:7486 with SMTP id 98e67ed59e1d1-32ee3f5d61emr9249730a91.19.1758209077774; Thu, 18 Sep 2025 08:24:37 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:23 +0530 Subject: [PATCH v14 06/27] migration: push Error **errp into loadvm_handle_cmd_packaged() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-6-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2769; i=armenon@redhat.com; h=from:subject:message-id; bh=EGno3AsWvaj5rUCkbXjfvd8MsWC3MPQGycacGbWUg0A=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e9Wd17VpotteMXcvu72nQ0tAS0e/oJT80Xa9Q/K7 5b18JzaUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCIP/zEyfOtrj1TsnMLm9W2z R90l/5r5+s+KL/kutjmmwCC7e4qWMiPDvCfln+IXq75/FGR+6senV3F5oSq97z5N0Pnx2CWlVGw 6LwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209126163116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_handle_cmd_packaged() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 0e9935aea3e1a214cfa0ddd0e30fa5cf925373e3..de5671ffd1cd06e728227a3056c= 3f895d3a6e6f3 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2405,7 +2405,7 @@ static int loadvm_postcopy_handle_resume(MigrationInc= omingState *mis) * Returns: Negative values on error * */ -static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis) +static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis, Error *= *errp) { int ret; size_t length; @@ -2415,7 +2415,7 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis) trace_loadvm_handle_cmd_packaged(length); =20 if (length > MAX_VM_CMD_PACKAGED_SIZE) { - error_report("Unreasonably large packaged state: %zu", length); + error_setg(errp, "Unreasonably large packaged state: %zu", length); return -1; } =20 @@ -2426,8 +2426,8 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis) length); if (ret !=3D length) { object_unref(OBJECT(bioc)); - error_report("CMD_PACKAGED: Buffer receive fail ret=3D%d length=3D= %zu", - ret, length); + error_setg(errp, "CMD_PACKAGED: Buffer receive fail ret=3D%d lengt= h=3D%zu", + ret, length); return (ret < 0) ? ret : -EAGAIN; } bioc->usage +=3D length; @@ -2457,6 +2457,9 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis) } while (1); =20 ret =3D qemu_loadvm_state_main(packf, mis); + if (ret < 0) { + error_setg(errp, "VM state load failed: %d", ret); + } trace_loadvm_handle_cmd_packaged_main(ret); qemu_fclose(packf); object_unref(OBJECT(bioc)); @@ -2620,11 +2623,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) break; =20 case MIG_CMD_PACKAGED: - ret =3D loadvm_handle_cmd_packaged(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_handle_cmd_packaged(mis, errp); =20 case MIG_CMD_POSTCOPY_ADVISE: ret =3D loadvm_postcopy_handle_advise(mis, len); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209633; cv=none; d=zohomail.com; s=zohoarc; b=UVYrdSl70lUqgXgvcIhnO+jeQsIfwMa6gKqlMjtm1GEHI3ftJlBa98dhTUH2++KNgHHiybRUfY99wiGRQNjkwnFfX0gN3XSKR89lUPrg6xPivm3c5CGk0oNU5xb0oWB1ma++PuscvVpdDXtsRO7pfpgELqSMHTlA+H9tul4NOL4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209633; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1nZZiGu+K47IEF65X0NaWF9ITwNWS/RFb4YkerOV6gk=; b=VoFkcs+QZ21pA/vqkL990vbpaFjI9vAzbrkbVVonhgQ4SxDWbXktTwpLVj477RwegHnV7C7fUdyGulTUNAf1Axg5NE5O8DYMIVM+GIZC/jZT1OOeFXy+ze8i+n2myEXGxtiEREWSBE2D8LBg0H4OwHwQl9+mW/etEzqbwc5n+UY= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209633888190.64428875509077; Thu, 18 Sep 2025 08:33:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGVE-00042G-9t; Thu, 18 Sep 2025 11:24: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 1uzGVA-0003vK-9G for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGV8-0002jr-3I for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:24:51 -0400 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-548-gh1yR-QyO0GDVfRkCwHQcw-1; Thu, 18 Sep 2025 11:24:48 -0400 Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-77241858ec1so1164403b3a.0 for ; Thu, 18 Sep 2025 08:24:48 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.24.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:24:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1nZZiGu+K47IEF65X0NaWF9ITwNWS/RFb4YkerOV6gk=; b=NEZAgHugmZOitleeg/V+Bvgn5Yw9T0hMtFGxYJYUgkdxD/M1bXy38F6/Ha/kJ4wLLIWtzt vb1uLM144B1zMgxBTq0PmTPeSW7Z+43rjMi6R2aKgWRNGS8VCyhFDBrQ5HGwIKQ2G3qcUh lE2xN2GcfZPTGh6p2nbHzXegQ5ixP8U= X-MC-Unique: gh1yR-QyO0GDVfRkCwHQcw-1 X-Mimecast-MFC-AGG-ID: gh1yR-QyO0GDVfRkCwHQcw_1758209087 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209087; x=1758813887; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1nZZiGu+K47IEF65X0NaWF9ITwNWS/RFb4YkerOV6gk=; b=S+ibYidOHoZ75DRUBGL9Jd2ue2yQKy8DIPjTk+f6wG9Y6OjVkX3zhz27ZUy8+vVnJM ZUU3PsWMq1WpOM1afqyAadtk26wtoiwD2Wfc1SPtsUzJLCpu5Aos8+oYyIX1IlkTova3 gu2Ec/xe3R56y1J7ItVWLSHkHvIjLFZLkowq4wPjbMYgowpChlJUZU9n7vrwGwN1IR3/ gektArZZ+bISlTf9xPvvI49zlSZwo15/8ikH7l5FZdXlLmjnCl9mNmbqHVQ9HERCh5bv NQzyQhfb9fWAfCM6pFNAH6sg2+ntSTdN7InkvO6IFieANirXCXlEuXQWA4fTwXmin4Uh PGpA== X-Gm-Message-State: AOJu0YztqomnE8avya4bvsSK0hyCXMPcYzoqPIHZ4MmLY0yGCvJY7luk +jjfn5zuOXQa1U8b9vu1eD3TO08itiByoZL5TqBS84D0W6SxrCeDXcXSj8dhSwgBnQHL6yqTF8x RKevDyvvWglNsqpiruz90LepefluzXMUNDF+QYTgOGZmhFdmyUjAZqeWl X-Gm-Gg: ASbGncuhwtvsU/DoFOxkY0CR6LOxzSU8/Hbw2Ye54Jht/XlQ+IhR6ikEsJcMp+nhtch V7reHOGBYVd4cH1VrUUwRgmoxmEZUp768iITtrS8Bs7I99Hn/2g6qH60T/JBDBrheW6SP2KmIVp ZQ6Pt4TGfjac06NeSLnhdToo6JcqgT+UdebrlcWYhBU513B4jffeS7cT/C0H8Vm1HZHCZnqZ+7x LI6fuWrbG+g2W1MkIXbCW/ZZLsJidVb9VxYCBbMtrKJXTF4xoZdzneneHBpYHKDosAKwRZ5Uu66 UKmJta7Vvo1qX/nxhkYZX7jC7tkSTsb5UGOe5XW7pBWZUS9HEgsfNg== X-Received: by 2002:a05:6a00:1992:b0:77d:13e3:ccfa with SMTP id d2e1a72fcca58-77d13e3ecdcmr4288499b3a.4.1758209086913; Thu, 18 Sep 2025 08:24:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFDEtBDV5GWMugTnv1URRn1BiyYUovAg3YH4X1KUhW5RH8Tqoso5H7nEGfbh/kQsHMtMUgpOA== X-Received: by 2002:a05:6a00:1992:b0:77d:13e3:ccfa with SMTP id d2e1a72fcca58-77d13e3ecdcmr4288448b3a.4.1758209086417; Thu, 18 Sep 2025 08:24:46 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:24 +0530 Subject: [PATCH v14 07/27] migration: push Error **errp into qemu_loadvm_state() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-7-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6219; i=armenon@redhat.com; h=from:subject:message-id; bh=IIT+8nokWMp/vohnpdDSOWEYBogGfJ2e1LS670VvRDE=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e8rH4j+3TtdeO4GHa/m5alnPk6oOjLD3u9Q3ly1G 3M8dUzzO0pZGMS4GGTFFFkavgbINgUURkTavrwOM4eVCWQIAxenAEwkYwvDP827duf2i9pN5F5l Gsgqu6Xtl/bC2NKlHb9PlKb1TdO/Hsnwv0gu40X7oco3CyansIbnpq8t2PdW3/HiTlMDrm9ZEc6 LmQE= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 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: 1758209634711116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state() must report an error in errp, in case of failure. When postcopy live migration runs, the device states are loaded by both the qemu coroutine process_incoming_migration_co() and the postcopy_ram_listen_thread(). Therefore, it is important that the coroutine also reports the error in case of failure, with error_report_err(). Otherwise, the source qemu will not display any errors before going into the postcopy pause state. Suggested-by: Akihiko Odaki Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/migration.c | 14 ++++++++++++-- migration/savevm.c | 30 ++++++++++++++++++------------ migration/savevm.h | 2 +- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 10c216d25dec01f206eacad2edd24d21f00e614c..fcf76cf73595c93e7616ee7341f= 2e02a598e4e3b 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -881,7 +881,7 @@ process_incoming_migration_co(void *opaque) MIGRATION_STATUS_ACTIVE); =20 mis->loadvm_co =3D qemu_coroutine_self(); - ret =3D qemu_loadvm_state(mis->from_src_file); + ret =3D qemu_loadvm_state(mis->from_src_file, &local_err); mis->loadvm_co =3D NULL; =20 trace_vmstate_downtime_checkpoint("dst-precopy-loadvm-completed"); @@ -908,7 +908,8 @@ process_incoming_migration_co(void *opaque) } =20 if (ret < 0) { - error_setg(&local_err, "load of migration failed: %s", strerror(-r= et)); + error_prepend(&local_err, "load of migration failed: %s: ", + strerror(-ret)); goto fail; } =20 @@ -935,6 +936,15 @@ fail: } =20 exit(EXIT_FAILURE); + } else { + /* + * Report the error here in case that QEMU abruptly exits + * when postcopy is enabled. + */ + WITH_QEMU_LOCK_GUARD(&s->error_mutex) { + error_report_err(s->error); + s->error =3D NULL; + } } out: /* Pairs with the refcount taken in qmp_migrate_incoming() */ diff --git a/migration/savevm.c b/migration/savevm.c index de5671ffd1cd06e728227a3056c3f895d3a6e6f3..0087fca15ce108685667d380835= 0d80d37b807b1 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3159,28 +3159,24 @@ out: return ret; } =20 -int qemu_loadvm_state(QEMUFile *f) +int qemu_loadvm_state(QEMUFile *f, Error **errp) { MigrationState *s =3D migrate_get_current(); MigrationIncomingState *mis =3D migration_incoming_get_current(); - Error *local_err =3D NULL; int ret; =20 - if (qemu_savevm_state_blocked(&local_err)) { - error_report_err(local_err); + if (qemu_savevm_state_blocked(errp)) { return -EINVAL; } =20 qemu_loadvm_thread_pool_create(mis); =20 - ret =3D qemu_loadvm_state_header(f, &local_err); + ret =3D qemu_loadvm_state_header(f, errp); if (ret) { - error_report_err(local_err); return ret; } =20 - if (qemu_loadvm_state_setup(f, &local_err) !=3D 0) { - error_report_err(local_err); + if (qemu_loadvm_state_setup(f, errp) !=3D 0) { return -EINVAL; } =20 @@ -3191,6 +3187,9 @@ int qemu_loadvm_state(QEMUFile *f) cpu_synchronize_all_pre_loadvm(); =20 ret =3D qemu_loadvm_state_main(f, mis); + if (ret < 0) { + error_setg(errp, "Load VM state failed: %d", ret); + } qemu_event_set(&mis->main_thread_load_event); =20 trace_qemu_loadvm_state_post_main(ret); @@ -3208,8 +3207,15 @@ int qemu_loadvm_state(QEMUFile *f) if (migrate_has_error(migrate_get_current()) || !qemu_loadvm_thread_pool_wait(s, mis)) { ret =3D -EINVAL; + error_setg(errp, + "Error while loading vmstate"); } else { ret =3D qemu_file_get_error(f); + if (ret < 0) { + error_setg(errp, + "Error while loading vmstate: stream error: %d", + ret); + } } } /* @@ -3474,6 +3480,7 @@ void qmp_xen_save_devices_state(const char *filename,= bool has_live, bool live, =20 void qmp_xen_load_devices_state(const char *filename, Error **errp) { + ERRP_GUARD(); QEMUFile *f; QIOChannelFile *ioc; int ret; @@ -3495,10 +3502,10 @@ void qmp_xen_load_devices_state(const char *filenam= e, Error **errp) f =3D qemu_file_new_input(QIO_CHANNEL(ioc)); object_unref(OBJECT(ioc)); =20 - ret =3D qemu_loadvm_state(f); + ret =3D qemu_loadvm_state(f, errp); qemu_fclose(f); if (ret < 0) { - error_setg(errp, "loading Xen device state failed"); + error_prepend(errp, "loading Xen device state failed: "); } migration_incoming_state_destroy(); } @@ -3569,13 +3576,12 @@ bool load_snapshot(const char *name, const char *vm= state, ret =3D -EINVAL; goto err_drain; } - ret =3D qemu_loadvm_state(f); + ret =3D qemu_loadvm_state(f, errp); migration_incoming_state_destroy(); =20 bdrv_drain_all_end(); =20 if (ret < 0) { - error_setg(errp, "Error %d while loading VM state", ret); return false; } =20 diff --git a/migration/savevm.h b/migration/savevm.h index 2d5e9c716686f06720325e82fe90c75335ced1de..b80770b7461a60e2ad6ba5e24a7= baeae73d90955 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -64,7 +64,7 @@ void qemu_savevm_send_colo_enable(QEMUFile *f); void qemu_savevm_live_state(QEMUFile *f); int qemu_save_device_state(QEMUFile *f); =20 -int qemu_loadvm_state(QEMUFile *f); +int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); int qemu_load_device_state(QEMUFile *f); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209152; cv=none; d=zohomail.com; s=zohoarc; b=htUdnAzHTV5N+pvtRJXvNe2MvpyS4wuKXMYxJbH4iQo/bi/SyaVU/VnDBAdfupfTNfJlgdZwkzmyzbpHCiLmXYjqz9aGBuTh3cLONoDxOhg7S/vVSNOv+dDKEOBMXjIgZhdIg4eH8AYUC8E2TEz5wIjXmsTQ7bV2ulj5UTQcR/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209152; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BaRoLgnvXipTQIwgmh18VwtQRJZMUjxN2HSv+RmjctM=; b=Vd8YSBab0BN9mvcZLhpVmvkCJceR9sLMkUNEqba0ddrUPv7DQ9/FrDpqzM7k9VH1B9nbgtTgrotNHwAiDwNkE2cHUDMTrdjr5TAtoZiFSqWepqOc6gg709uZNMUCjqsRY3NJFzh5BpWvMPeIxBpwEt3HW90/5KHT3VmP21nMF+M= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209152825860.9036762470311; Thu, 18 Sep 2025 08:25:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGVT-0004GA-28; Thu, 18 Sep 2025 11:25:11 -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 1uzGVL-0004CP-N5 for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGVI-0002kb-GI for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:03 -0400 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-678-iQV_4UUROA2IpEK0TfQckQ-1; Thu, 18 Sep 2025 11:24:56 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-324e41e946eso1743444a91.0 for ; Thu, 18 Sep 2025 08:24:56 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.24.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:24:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BaRoLgnvXipTQIwgmh18VwtQRJZMUjxN2HSv+RmjctM=; b=DwED5x9QARC9vqRxPo/g2OU78kNtyXT+nC0b6cpSzxa58uwGDpWNbKOGQtB/KnWu8by3GQ e4/tUvR8Wibe0i20qSRrosgvdjIL5e6biz0wIc7Z+rOqJNiaUL0QRMCrV7b5PJg5GR0lJy eN4blRSnCDTeO2QNkiYZFvWY/5bxlsk= X-MC-Unique: iQV_4UUROA2IpEK0TfQckQ-1 X-Mimecast-MFC-AGG-ID: iQV_4UUROA2IpEK0TfQckQ_1758209095 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209095; x=1758813895; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BaRoLgnvXipTQIwgmh18VwtQRJZMUjxN2HSv+RmjctM=; b=hHCBbtZ8ItpEYIHAL1Ap47Vibth1JEg5c11VcB0fPHNjXx1mPnefBsjjczhGerWhuD RNAEUj+LK0ZQViXImcvW3Xe58CeocQPXx7tMvTZqNKZxW3HoYF390gzirpPGMJT/41vI yQZeci7Xoqm8EoBsgUm/NFENiWowBKcuPf/LZvsLqVuLkmW0mT46Zp96tGmsgvvB3kh4 g5RteIY6EPtB6pU255Ka0nYt4B7iiHu4P3w8CaltJ/aDDoat5qWb3EA0cTNyW8UBjMbu B3eli3yiY3JKMhnrwaj9/kZQm3KcmEABZ08VwngPYSvgK/0qZM/Qze32lvg/47qBRYkQ MLOQ== X-Gm-Message-State: AOJu0YyhpENN0QAjxyKhvZrEG1wjuBqaPnJ8wnAqUDHpffvNzlI8GmgC cSdJA8rtc4R1k82/WXEOHRTZLEE03dwj/ccbsAMBz3ISJUWpjIdcMGfj2OlNKR2QCRWNfgUVVHA 7bMa9HDO0TcrxIYxTYbZwsg4rQDAI4DpPlfb6RbU3gxL3v2Sq/rhSedz0 X-Gm-Gg: ASbGncsJBpg83+rAsaITRzsBhFWBy/htujLJkEiLZ543MbgVyqwRVw8+feOKexI5bFt k/ZZwjmRnw7r6aB62g/PALxrzIGIi15U07yIcM3U7nzDbetAiMV9Z51GgadrJqYlf+qKXEQGObx rR8l5Znk9b/mP+9rumFe/SzaL8fmEjx/oPv3lOCrwYSvCNakv/ZxNtk/czozRKk81TWXPTvJFxE NxwNQwnNULJNHTQZvNdyiHRiqHcaWL+2oN4l1WWOKDOdabtmm4bWIDQBE5ahcvJTxn/nCG2ixBe k4irea4OymY8vvaXZ/N1QyF3cnYgWaj4+V3y61ZyywLDaBaXAp4rGQ== X-Received: by 2002:a17:90b:3506:b0:32e:e3af:45f6 with SMTP id 98e67ed59e1d1-32ee3ed2886mr7684575a91.10.1758209095273; Thu, 18 Sep 2025 08:24:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHjHG3cCwNOeKkfnp6fAQKs8/v1wo9X6e/zfcz2wtVlDVJvHdRqfI7BAAjltxwvL/MxXN8DFw== X-Received: by 2002:a17:90b:3506:b0:32e:e3af:45f6 with SMTP id 98e67ed59e1d1-32ee3ed2886mr7684512a91.10.1758209094808; Thu, 18 Sep 2025 08:24:54 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:25 +0530 Subject: [PATCH v14 08/27] migration: push Error **errp into qemu_load_device_state() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-8-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2697; i=armenon@redhat.com; h=from:subject:message-id; bh=UirhkFM9zKCc9fAhhyz10Rt0EBJQI4cJF89hFF4FZFs=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e/R6vYTcoItb/cbLH187xTjvB/yW0xObtY6P+fOR t55lxYt7ihlYRDjYpAVU2Rp+Bog2xRQGBFp+/I6zBxWJpAhDFycAjCR8EsMfwVX/0mRfqlmZBvy RO34T77Dag6Hru4WLn9y62iKJfvBCfUM/2s8TT5M/qrvafOqVO7Uuo4Vz/p9tkTEpqqlvFnYdUf zOisA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209154645116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_load_device_state() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/colo.c | 3 +-- migration/savevm.c | 4 ++-- migration/savevm.h | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index e0f713c837f5da25d67afbd02ceb6c54024ca3af..2f524b19e6a79dcfe3861f1dfb7= 68222f65a718a 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -729,9 +729,8 @@ static void colo_incoming_process_checkpoint(MigrationI= ncomingState *mis, bql_lock(); vmstate_loading =3D true; colo_flush_ram_cache(); - ret =3D qemu_load_device_state(fb); + ret =3D qemu_load_device_state(fb, errp); if (ret < 0) { - error_setg(errp, "COLO: load device state failed"); vmstate_loading =3D false; bql_unlock(); return; diff --git a/migration/savevm.c b/migration/savevm.c index 0087fca15ce108685667d3808350d80d37b807b1..5462eaff0dcec1fa207c08da612= 4fe91656201ac 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3264,7 +3264,7 @@ int qemu_loadvm_state(QEMUFile *f, Error **errp) return ret; } =20 -int qemu_load_device_state(QEMUFile *f) +int qemu_load_device_state(QEMUFile *f, Error **errp) { MigrationIncomingState *mis =3D migration_incoming_get_current(); int ret; @@ -3272,7 +3272,7 @@ int qemu_load_device_state(QEMUFile *f) /* Load QEMU_VM_SECTION_FULL section */ ret =3D qemu_loadvm_state_main(f, mis); if (ret < 0) { - error_report("Failed to load device state: %d", ret); + error_setg(errp, "Failed to load device state: %d", ret); return ret; } =20 diff --git a/migration/savevm.h b/migration/savevm.h index b80770b7461a60e2ad6ba5e24a7baeae73d90955..b12681839f0b1afa3255e45215d= 99c13a224b19f 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -67,7 +67,7 @@ int qemu_save_device_state(QEMUFile *f); int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); -int qemu_load_device_state(QEMUFile *f); +int qemu_load_device_state(QEMUFile *f, Error **errp); int qemu_loadvm_approve_switchover(void); int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, bool in_postcopy); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209265; cv=none; d=zohomail.com; s=zohoarc; b=D+Cidtu9g1UwkI7Ro9TDe7lhMBqOcJL3XQZNETdehu5NIv7VrFDBalst0bGBpQtSuOujf/ruq4ZDFuEcWV48E/91/MV+2oTtnKlYlk32f09QCLQ1wLPAWCd4ZP9qY41JZ0gTnJJVV45yCK42LmvjkDuO7jb4o9hFSRJ79yUa0ag= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209265; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UTHY4yYhUKE3D/jL5Fi7j9W8F5eZAPi88KnU28ha278=; b=eVY4FJSyfonkp6qJD/eRqXEdfcOS7+IB7rwNt9yq/QTS/GxIXvfSFCnXreOIaeaJ4if5E+s1SdGH8Y+O4BEb8XA+YKhLRjumqJTfuEpnqcdSrpXTKDmnKyacoPRAWab0fJh8Ctj275kyNw+73syNY//jEKqkZhAzKgAR9Sl7lz0= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209265470388.9819658811474; Thu, 18 Sep 2025 08:27:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGVa-0004Np-0A; Thu, 18 Sep 2025 11:25:18 -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 1uzGVR-0004GQ-7r for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:11 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGVP-0002lx-DQ for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:08 -0400 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-608-ygMzvpPxO8aFp6dtZN6Z8Q-1; Thu, 18 Sep 2025 11:25:05 -0400 Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b54c46337c9so1448183a12.1 for ; Thu, 18 Sep 2025 08:25:05 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.24.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:25:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209106; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UTHY4yYhUKE3D/jL5Fi7j9W8F5eZAPi88KnU28ha278=; b=RL1rGZx955BecHEsqZYs7wS8q2yOR32K+VYFEVGiZ8BDmgpqRvhsP3vEcMe0FpOQo3fH5l kzOyRvWSTgLs7zUj34YrTpq62aPCExVvDWhZaKbrLqXAelWQ9PUzHWkwG1wH444V+vYI4m nmxqOoIAPnMm8ROKeE9jZRIfjtPIkHo= X-MC-Unique: ygMzvpPxO8aFp6dtZN6Z8Q-1 X-Mimecast-MFC-AGG-ID: ygMzvpPxO8aFp6dtZN6Z8Q_1758209104 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209104; x=1758813904; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UTHY4yYhUKE3D/jL5Fi7j9W8F5eZAPi88KnU28ha278=; b=AP147/euVgO8yvNXrE+8AvcfiH0h/EI0GVkxAd+mYFg93jlV77F7/gjBSn4D27QN8j 46PSkN3W+zXnBypjcTeIuQeucuPpYY/gIMFstrom6fZVsYEiTkMtvwf9FCTZlXnbNRDK pSJIXOE46DRsC5112ixFkkk/W4LdchIbm8MjdOe4WJXDmhXvY/gFSAjPTLwA6YLM/KVf YsyldCJOAF1RNDIWDqVcAImF8Q3mTpmVCISF8tjV2OL9xpM6ugqVxJagmqS8D9zdo+9k 2+SXFI4bE5RyZ6nodfBj938I+j2ZePuUppCVrnNt+DafgwlVpaDPOyj5XTW7qA7vf9fY VKvg== X-Gm-Message-State: AOJu0Yw2Jz+gxWKZJmGlBH25lHuuyp0U7Xw/pm+1tJSSPsh1+bMPdMdO D6xGfITTSx9zw9Xu/I8DC54F8ZnjtFoEU1Oki53Wwfk155ktK20hPHcIohotEFuTyR3sWZzx9PH 1I7YFdk2qjBNlcBoX516SutYq/R+bAlt3p28zDWUVG2/ajEQbi3x+n5tG X-Gm-Gg: ASbGncsbDmwwBUrYf0WLH5De4mxhx3uhZH9tLfBYjZL8x8C256BEINn4+ghg83oRLnO K0gV9refF/XPDrnSuhGr+5LJlj3B9XamBvL3J/0RBoBK1e09rS4w9WOgmQsNBD9/ydp3ZjW2T3F YLZtbGiny95/BF40qpq5dIcxFmruQ5Ko0wXE9NL/JUxgHcpbZNB5tl4w4A8/YWuLNal8tdFKZGL uOk0GUT8M+iwMsawnARfnn+IImELwFZfILg/ju90EJf1R09NaWwJL6MTrbot+mxsHHtLk+lCnvn zq2DDj4vpFja5GuBuDFUik2TvXs8XWuuIZqm6FWVcYOgWZ4hnzpEtg== X-Received: by 2002:a05:6a20:bf25:b0:262:8bce:33bc with SMTP id adf61e73a8af0-27aa99bdb79mr7505490637.56.1758209104198; Thu, 18 Sep 2025 08:25:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGGWS037C+Fg39j6wEdOMo5UkvblfjDZdIvKIxYeD15QWSN7u4XXyj546tU9lufY5KE1s4Jcg== X-Received: by 2002:a05:6a20:bf25:b0:262:8bce:33bc with SMTP id adf61e73a8af0-27aa99bdb79mr7505454637.56.1758209103791; Thu, 18 Sep 2025 08:25:03 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:26 +0530 Subject: [PATCH v14 09/27] migration: push Error **errp into qemu_loadvm_state_main() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-9-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6326; i=armenon@redhat.com; h=from:subject:message-id; bh=CbE6WDTGoaxyx+hpN6RrbB5sFr/ZitwM6OvQ3jqdjKk=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e/zpx/j5nq248eEhceXFa3c8bm2+t4b8UnnO9dXN 8zxDjhu0FHKwiDGxSArpsjS8DVAtimgMCLS9uV1mDmsTCBDGLg4BWAi5+8x/A+tm2MuK3Hy9cmz GSbrBHWZD2Zanb/VHujcWF+Se+ZiQQwjw03u409eh/5cEPZw29btNxf5vJ747Oe+APFKc0W5GsX NRdwA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209268229116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state_main() must report an error in errp, in case of failure. Set errp explicitly if it is NULL in case of failure in the out section. This will be removed in the subsequent patch when all of the calls are converted to passing errp. The error message in the default case of qemu_loadvm_state_main() has the word "savevm". This is removed because it can confuse the user while reading destination side error logs. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/colo.c | 3 +-- migration/savevm.c | 36 +++++++++++++++++------------------- migration/savevm.h | 3 ++- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 2f524b19e6a79dcfe3861f1dfb768222f65a718a..642d17487d92c0a9508e599ca3b= f524e80b6fd46 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -686,11 +686,10 @@ static void colo_incoming_process_checkpoint(Migratio= nIncomingState *mis, =20 bql_lock(); cpu_synchronize_all_states(); - ret =3D qemu_loadvm_state_main(mis->from_src_file, mis); + ret =3D qemu_loadvm_state_main(mis->from_src_file, mis, errp); bql_unlock(); =20 if (ret < 0) { - error_setg(errp, "Load VM's live state (ram) error"); return; } =20 diff --git a/migration/savevm.c b/migration/savevm.c index 5462eaff0dcec1fa207c08da6124fe91656201ac..eccb3f63f8dfc070263a1d19ec3= 415684e8fa60e 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2105,7 +2105,7 @@ static void *postcopy_ram_listen_thread(void *opaque) qemu_file_set_blocking(f, true); =20 /* TODO: sanity check that only postcopiable data will be loaded here = */ - load_res =3D qemu_loadvm_state_main(f, mis); + load_res =3D qemu_loadvm_state_main(f, mis, &error_fatal); =20 /* * This is tricky, but, mis->from_src_file can change after it @@ -2456,10 +2456,7 @@ static int loadvm_handle_cmd_packaged(MigrationIncom= ingState *mis, Error **errp) qemu_coroutine_yield(); } while (1); =20 - ret =3D qemu_loadvm_state_main(packf, mis); - if (ret < 0) { - error_setg(errp, "VM state load failed: %d", ret); - } + ret =3D qemu_loadvm_state_main(packf, mis, errp); trace_loadvm_handle_cmd_packaged_main(ret); qemu_fclose(packf); object_unref(OBJECT(bioc)); @@ -3080,18 +3077,22 @@ static bool postcopy_pause_incoming(MigrationIncomi= ngState *mis) return true; } =20 -int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis) +int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis, + Error **errp) { + ERRP_GUARD(); uint8_t section_type; int ret =3D 0; - Error *local_err =3D NULL; =20 retry: while (true) { section_type =3D qemu_get_byte(f); =20 - ret =3D qemu_file_get_error_obj_any(f, mis->postcopy_qemufile_dst,= NULL); + ret =3D qemu_file_get_error_obj_any(f, mis->postcopy_qemufile_dst,= errp); if (ret) { + error_prepend(errp, + "Failed to load section ID: stream error: %d: ", + ret); break; } =20 @@ -3112,10 +3113,7 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f, &local_err); - if (ret < 0) { - error_report_err(local_err); - } + ret =3D loadvm_process_command(f, errp); trace_qemu_loadvm_state_section_command(ret); if ((ret < 0) || (ret =3D=3D LOADVM_QUIT)) { goto out; @@ -3125,7 +3123,7 @@ retry: /* This is the end of migration */ goto out; default: - error_report("Unknown savevm section type %d", section_type); + error_setg(errp, "Unknown section type %d", section_type); ret =3D -EINVAL; goto out; } @@ -3133,6 +3131,9 @@ retry: =20 out: if (ret < 0) { + if (*errp =3D=3D NULL) { + error_setg(errp, "Loading VM state failed: %d", ret); + } qemu_file_set_error(f, ret); =20 /* Cancel bitmaps incoming regardless of recovery */ @@ -3153,6 +3154,7 @@ out: migrate_postcopy_ram() && postcopy_pause_incoming(mis)) { /* Reset f to point to the newly created channel */ f =3D mis->from_src_file; + error_free_or_abort(errp); goto retry; } } @@ -3186,10 +3188,7 @@ int qemu_loadvm_state(QEMUFile *f, Error **errp) =20 cpu_synchronize_all_pre_loadvm(); =20 - ret =3D qemu_loadvm_state_main(f, mis); - if (ret < 0) { - error_setg(errp, "Load VM state failed: %d", ret); - } + ret =3D qemu_loadvm_state_main(f, mis, errp); qemu_event_set(&mis->main_thread_load_event); =20 trace_qemu_loadvm_state_post_main(ret); @@ -3270,9 +3269,8 @@ int qemu_load_device_state(QEMUFile *f, Error **errp) int ret; =20 /* Load QEMU_VM_SECTION_FULL section */ - ret =3D qemu_loadvm_state_main(f, mis); + ret =3D qemu_loadvm_state_main(f, mis, errp); if (ret < 0) { - error_setg(errp, "Failed to load device state: %d", ret); return ret; } =20 diff --git a/migration/savevm.h b/migration/savevm.h index b12681839f0b1afa3255e45215d99c13a224b19f..c337e3e3d111a7f28a57b90f61e= 8f70b71803d4e 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -66,7 +66,8 @@ int qemu_save_device_state(QEMUFile *f); =20 int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); -int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); +int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis, + Error **errp); int qemu_load_device_state(QEMUFile *f, Error **errp); int qemu_loadvm_approve_switchover(void); int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209443; cv=none; d=zohomail.com; s=zohoarc; b=d6pqQn/qaGHa3KmctOFbof/uiPnPR6LwKbtPmgSbt4Gu5q65ntwEIQH9Pzjai4Kifrw6mm56jpIKtNktKfGfLknDf4opBOoL4PM9W70m6Tixb7QMsX5L1I9PrR/h4DZlKh862mkGBXXpAX31AkG2t9GYRIVVkBs2KculzKn2gYg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209443; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FsBBzucx8y5i9VHunk1XF83aX/5bi21WNzwEAMu8Vec=; b=nJSPmhLuC99ae6BvAvQND3vNC5lmW3MVbuNj290v6EU9/JPOChSncoNgx9hdQk28HIkYTOB+Buk0a8LsgFxulBJtx/Ccl76yGSS+dAH59juMJWYch02593xZNTRCSCY6jSdPtpcBGzqkzJUFlhPD3YM3koYgAIya7AINT8dkcCU= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209443135981.6038765244022; Thu, 18 Sep 2025 08:30:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGVr-0004qV-W5; Thu, 18 Sep 2025 11:25:36 -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 1uzGVb-0004Ty-0y for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:20 -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 1uzGVX-0002xs-LR for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:18 -0400 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-27-GN5gpzSCNcOdQmbD8KUohg-1; Thu, 18 Sep 2025 11:25:13 -0400 Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-77cb7607cfcso1408277b3a.0 for ; Thu, 18 Sep 2025 08:25:13 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.25.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:25:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209114; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FsBBzucx8y5i9VHunk1XF83aX/5bi21WNzwEAMu8Vec=; b=NPr/WfwNsnYAV2F89oel53kGZnFVDY70AO9/2PAQ5YrvwcRIvdgp4z2BquAeExlQt1ZyXq 4XlpB3cv7xXlU3DAmV++U7lSrPRssia2SizV+nAeR9ZN+NK4Qx49jeEx+cPq4ixL7Tu74Y E6Bf3E8vgAMrTvmWVKVVSSvaz11KA9s= X-MC-Unique: GN5gpzSCNcOdQmbD8KUohg-1 X-Mimecast-MFC-AGG-ID: GN5gpzSCNcOdQmbD8KUohg_1758209113 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209113; x=1758813913; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FsBBzucx8y5i9VHunk1XF83aX/5bi21WNzwEAMu8Vec=; b=MPJmiuyL+cMmxB65mVLVwNYXD79WTSs1k2ZC1dO4pHLDRClYX/x33fvFsLl23hY9Zq 14pAELXvRPILcn8Sc2BqFZitwL5UWbS81wo+Ab0vukEDuLiSIVtS1RmhhzOJMSkHRBR7 PHe1adNib1hvaNTOHowfjJTyltNkoeEiGAI7kRlEiDRvKiK0TBXlp/aJXjSxbJn1F0/L /uFTRkq57K+7/4Q/xs+4By86LRq2os/7SCO6pIMmUsu0SGmOP88Cs45wwXHSJkGQLU6o JSxZFICQVhysL/mFdyN/S5yoRxUocR9J0XMVLm4TzlIgcxWJYtSCKgy3wSoRe4mln1DM hPzw== X-Gm-Message-State: AOJu0Yy7anyUt76HAj9zlcIWGpu88XtLyo9jWPR59bX4EfrLvFxvvhDw uQpw/JhrOheOA+qtv3Hgu92C5FchhFGu0+X5sHpMtc88FFavT+JndueXemi8XErF7e/FpdzBkIz Sn/opzeSghY9cnJqSNoY50lIYKme0IrH1iaEDGEwo0WtetcjurLaIQOfR X-Gm-Gg: ASbGncsThRJ8uXoywENebqSVAedJi/p8H8cZC2l/EAPl19FWxHd+ayttlYPuei25hZi UpBEornrXDCC07Uh4SCyE7T4E87VSFIojIlVUOX82RHGj9gOZJeRXKMgFNEgvaBt4WYbBusS5tZ bPp1Vr4geEZV5jG1+ZTXCFWKgVj8eBc0g2ljsNylxOKMvhwAhQQCuMXzW3CDAX0TQaNqoA52E2Z cZ5UuCAfije/6Poe+90PjPscuEKHTqy0roWPEUeawAvgoCuVM+ht9RkwJBa0pICd1sRRUrtayLz 2uKFz6z3dqurvMB29w5ECdzfDlIRhzMoftkbrj8hTdw46x1waydqSQ== X-Received: by 2002:a05:6a21:3983:b0:253:1e04:4e8 with SMTP id adf61e73a8af0-27ab730a545mr10628753637.56.1758209112558; Thu, 18 Sep 2025 08:25:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFmEmXEj1DpCBiBVgLWcSiF27Q+lvsBDXJw0zOwfXyhkfEQVnjKKHwa128pdgnS24XvYxn2mw== X-Received: by 2002:a05:6a21:3983:b0:253:1e04:4e8 with SMTP id adf61e73a8af0-27ab730a545mr10628702637.56.1758209112208; Thu, 18 Sep 2025 08:25:12 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:27 +0530 Subject: [PATCH v14 10/27] migration: push Error **errp into qemu_loadvm_section_start_full() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-10-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4798; i=armenon@redhat.com; h=from:subject:message-id; bh=mjhvRtOfCNflzXKsd7LfnW6aMa0TrUuxLNhD6rtfZNc=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e8WAsV+aubBiZyXTU/VLJbc2H1eNerNbdnJSRryi fnKa5g6SlkYxLgYZMUUWRq+Bsg2BRRGRNq+vA4zh5UJZAgDF6cATOQGKyNDY/esbzeEEgRnhHbk mU17dGBumvZXnfWCzsaKzS2CXN93MfxPc3RduCv9D/u/c6/eMrpOcGq2rBeZumXlrEgzp578N28 5AQ== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209443898116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_section_start_full() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index eccb3f63f8dfc070263a1d19ec3415684e8fa60e..01e1a9739aa784d90f80bf2b561= fd62f5e4678f8 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2722,21 +2722,21 @@ static bool check_section_footer(QEMUFile *f, SaveS= tateEntry *se) } =20 static int -qemu_loadvm_section_start_full(QEMUFile *f, uint8_t type) +qemu_loadvm_section_start_full(QEMUFile *f, uint8_t type, Error **errp) { + ERRP_GUARD(); bool trace_downtime =3D (type =3D=3D QEMU_VM_SECTION_FULL); uint32_t instance_id, version_id, section_id; int64_t start_ts, end_ts; SaveStateEntry *se; char idstr[256]; int ret; - Error *local_err =3D NULL; =20 /* Read section start */ section_id =3D qemu_get_be32(f); if (!qemu_get_counted_string(f, idstr)) { - error_report("Unable to read ID string for section %u", - section_id); + error_setg(errp, "Unable to read ID string for section %u", + section_id); return -EINVAL; } instance_id =3D qemu_get_be32(f); @@ -2744,8 +2744,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) =20 ret =3D qemu_file_get_error(f); if (ret) { - error_report("%s: Failed to read instance/version ID: %d", - __func__, ret); + error_setg(errp, "Failed to read instance/version ID: %d", ret); return ret; } =20 @@ -2754,17 +2753,17 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type) /* Find savevm section */ se =3D find_se(idstr, instance_id); if (se =3D=3D NULL) { - error_report("Unknown savevm section or instance '%s' %"PRIu32". " - "Make sure that your current VM setup matches your " - "saved VM setup, including any hotplugged devices", - idstr, instance_id); + error_setg(errp, "Unknown section or instance '%s' %"PRIu32". " + "Make sure that your current VM setup matches your " + "saved VM setup, including any hotplugged devices", + idstr, instance_id); return -EINVAL; } =20 /* Validate version */ if (version_id > se->version_id) { - error_report("savevm: unsupported version %d for '%s' v%d", - version_id, idstr, se->version_id); + error_setg(errp, "unsupported version %d for '%s' v%d", + version_id, idstr, se->version_id); return -EINVAL; } se->load_version_id =3D version_id; @@ -2772,7 +2771,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) =20 /* Validate if it is a device's state */ if (xen_enabled() && se->is_ram) { - error_report("loadvm: %s RAM loading not allowed on Xen", idstr); + error_setg(errp, "loadvm: %s RAM loading not allowed on Xen", idst= r); return -EINVAL; } =20 @@ -2780,11 +2779,11 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se, &local_err); + ret =3D vmstate_load(f, se, errp); if (ret < 0) { - error_report("error while loading state for instance 0x%"PRIx32" o= f" - " device '%s'", instance_id, idstr); - error_report_err(local_err); + error_prepend(errp, + "error while loading state for instance 0x%"PRIx32" = of" + " device '%s': ", instance_id, idstr); return ret; } =20 @@ -2795,6 +2794,8 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) } =20 if (!check_section_footer(f, se)) { + error_setg(errp, "Section footer error, section_id: %d", + section_id); return -EINVAL; } =20 @@ -3100,7 +3101,7 @@ retry: switch (section_type) { case QEMU_VM_SECTION_START: case QEMU_VM_SECTION_FULL: - ret =3D qemu_loadvm_section_start_full(f, section_type); + ret =3D qemu_loadvm_section_start_full(f, section_type, errp); if (ret < 0) { goto out; } --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209222; cv=none; d=zohomail.com; s=zohoarc; b=K+OISyMLnVPpWoC3o/ydIz5eDGw6QGpl3epD9agYwKrstUwVZzUJbcRpgwxltop8aG/nOsdDsOM1/nxaV34OcV16y6npZNaegvxVDCDmp8bUjJ2cKMtdA6ZLJGNUN2BuL0U6O/Dvc1jDLG/2sn8rB5Gfas9XoxKdGXmsSTrmDVc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209222; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Wm02YWFPgXK6tLalWRdl7gepF4qWtk92F6eyDxpJHBE=; b=IdAUp9xXPZJDXfWZ7rFYVyTDuYMjrE3+eLR9wH8luKJdEykwfgc8gflScl9233HkFicyJ034tHr/CK3l7n1CTDouFZSSF6Dq9k8jvQ2dGOZf2HgqOwhCIVicEN1EW9197vX7VJH9NTu6zsuSb7aPOp7nGNkBEUxssAPPT0BC3Fg= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209222855188.8784834972522; Thu, 18 Sep 2025 08:27:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGVv-00051P-AO; Thu, 18 Sep 2025 11:25:39 -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 1uzGVi-0004cc-9T for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:26 -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 1uzGVg-0002yw-K4 for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:26 -0400 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-339--oGhrJhtO_2KbfK62k2ZvQ-1; Thu, 18 Sep 2025 11:25:22 -0400 Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-77df7f0d7a3so282799b3a.2 for ; Thu, 18 Sep 2025 08:25:22 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.25.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:25:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209123; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Wm02YWFPgXK6tLalWRdl7gepF4qWtk92F6eyDxpJHBE=; b=e21f0Uuj0BcD8S04Nr5IRolzvaEhaJ9dWCehbp3IFXKs5JJPnfg3eKLEJvCDqELcNg2uWM k/uNH2adTpHwSmvKb0vKph89Ks6bXpXoSVUjwHuA2W61hErsfiHM3EuvSi/GfiOoZyp+gP qFyVgVKuy6r57kMBSksxXh5tzMM4R/U= X-MC-Unique: -oGhrJhtO_2KbfK62k2ZvQ-1 X-Mimecast-MFC-AGG-ID: -oGhrJhtO_2KbfK62k2ZvQ_1758209122 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209122; x=1758813922; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Wm02YWFPgXK6tLalWRdl7gepF4qWtk92F6eyDxpJHBE=; b=krbt85/kV/nMhNS2CtfwfPeA9pmoCH8EmMA/Z5GNuPEXT4nUcht1s4Qp+AiFkMcYm4 hVZ2mvYF0ul1s4KHBywbX9qGRKdbhUetSJoYw0Pz6FpAAsYnyKW3ynaJQtDWUdVnlfWe GIuBmUjUNFSmfah84ogwNUOvnXKAv56k28I67H4ExNSXmNxuWDmH1avztodqCtqfe+cp LieQwk2ROJaCRGJkRuqQndNevhXO7IyWqo9Z9ZP01aSdQSmn+ZRRNFmG9o7Xm/sQSg/Y RwpM19UKqRy6C+vzg+e13Kxzhy6NQxvUXOFA01nEftFqk69CKM0RNhHGSvhOhIymZiDB +5rg== X-Gm-Message-State: AOJu0YxmkK5Lz63q/xxwEFU0kBMpAWfk1aE58iG2HAovfQecqx91HBya vJp+M01E9wu65P7dts+xQnR49YSK/uPV7Af6ItLLtkbHjwTQBe4dwcm2pAlJRE4Y2Rz01+nd8Cd TUa4OkR6J5j17dAHBycgc9fG2lqyK2ejVikwc+pDfbrzNyhaaNSLfBqO8 X-Gm-Gg: ASbGncuGg487pc2n9I6rGorHGrgXzxmTHeC+9ynewsnV3k1mNewPj3c2YBiRUApH1yw wwFaYKaC3M9X3tWWD1ViDRQSU3negwX7yY/NbJ3LJxdQExIEpTPt75FFNEZZiD3sSIGvHyKO91S cajPDMc80kQLN1zzcdRE1Ueda2BffHm9l3iQw2dbTfu0vB/P7FQ0/kyJ68AMtF1mMJYGTx5I2Tg 9okOeQm7V0j9kJt5isCjH4JVCumlttKCookNaYJ3NhorZXvGOz5RXB8cfizRrazV+D52ut9v2vF WnBwgKMWN5ZCQp6X/ucLQRKpEQrongtnOskNdyv+77oo8etvOgYuow== X-Received: by 2002:a05:6a00:3e10:b0:776:8bcc:f1d5 with SMTP id d2e1a72fcca58-77bf77bbe00mr6673483b3a.10.1758209121257; Thu, 18 Sep 2025 08:25:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHuO9Wuwk1h9gt9j+0DHBVF1aFPzs1mBWlURDBqfShlqhbA2ZqM9bnNi0ulWwJcH8LI9m1phw== X-Received: by 2002:a05:6a00:3e10:b0:776:8bcc:f1d5 with SMTP id d2e1a72fcca58-77bf77bbe00mr6673426b3a.10.1758209120775; Thu, 18 Sep 2025 08:25:20 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:28 +0530 Subject: [PATCH v14 11/27] migration: push Error **errp into qemu_loadvm_section_part_end() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-11-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3094; i=armenon@redhat.com; h=from:subject:message-id; bh=CgLPVCj6slw8FkUxePJRDJzlIhYmWPhKwDSIMzJ0/CA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5e8NP5ffiNZ4t8pJ6r/z+eLVCzJn+yzrZXr03No09 d7Et5KrO0pZGMS4GGTFFFkavgbINgUURkTavrwOM4eVCWQIAxenAEzE8B8jwxJRMzlJrbjPwtMv zJ0onafvUP80iDX18bXTl/bPe1nbGs/IsEC5LvEzn/bWTKH1n5N25UvFvCstejcrtVHCwONlt1M 9OwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209223423116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_section_part_end() must report an error in errp, in case of failure. This patch also removes the setting of errp when errp is NULL in the out section as it is no longer required in the series. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 01e1a9739aa784d90f80bf2b561fd62f5e4678f8..c8234f2ef7f413b207aebae7192= c82f1f4d6d91d 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2803,21 +2803,19 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type, Error **errp) } =20 static int -qemu_loadvm_section_part_end(QEMUFile *f, uint8_t type) +qemu_loadvm_section_part_end(QEMUFile *f, uint8_t type, Error **errp) { bool trace_downtime =3D (type =3D=3D QEMU_VM_SECTION_END); int64_t start_ts, end_ts; uint32_t section_id; SaveStateEntry *se; int ret; - Error *local_err =3D NULL; =20 section_id =3D qemu_get_be32(f); =20 ret =3D qemu_file_get_error(f); if (ret) { - error_report("%s: Failed to read section ID: %d", - __func__, ret); + error_setg(errp, "Failed to read section ID: %d", ret); return ret; } =20 @@ -2828,7 +2826,7 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) } } if (se =3D=3D NULL) { - error_report("Unknown savevm section %d", section_id); + error_setg(errp, "Unknown section %d", section_id); return -EINVAL; } =20 @@ -2836,9 +2834,8 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se, &local_err); + ret =3D vmstate_load(f, se, errp); if (ret < 0) { - error_report_err(local_err); return ret; } =20 @@ -2849,6 +2846,8 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) } =20 if (!check_section_footer(f, se)) { + error_setg(errp, "Section footer error, section_id: %d", + section_id); return -EINVAL; } =20 @@ -3108,7 +3107,7 @@ retry: break; case QEMU_VM_SECTION_PART: case QEMU_VM_SECTION_END: - ret =3D qemu_loadvm_section_part_end(f, section_type); + ret =3D qemu_loadvm_section_part_end(f, section_type, errp); if (ret < 0) { goto out; } @@ -3132,9 +3131,6 @@ retry: =20 out: if (ret < 0) { - if (*errp =3D=3D NULL) { - error_setg(errp, "Loading VM state failed: %d", ret); - } qemu_file_set_error(f, ret); =20 /* Cancel bitmaps incoming regardless of recovery */ --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209270; cv=none; d=zohomail.com; s=zohoarc; b=S+Cq8jPshPf2tdD3TxE6/q0SHpyTOjnZRdBoaHu9l2SDGiCamDPHjEMrADBTRGkIpZ3ja/f2ItGHZb/u9JExLX5W8y04DlobYPoXYcz4wuMExYhzxC8EYCR670wtr2eylX+fwpyLjOBXNj6f8+LUDcIQlX/OU8xSSWFc+4pwpUA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209270; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kPRRonDI7v9CULdkpTnX724+UFIBp/Jcli88m3ndHPQ=; b=YPZQSXA1TrVcTX1lBb7TiFLfLu3kWPHS0+PivLDflVBxWg0rSBSTlZOoJIrHfmfu7JuGkyM8emSHG0HdtmkrafCd4zAfGnSU0uqJm3XQuAv2l0zc0gM8fT/oDPx0ZY/yUJQ2j7quQfe88eXUPH8UW6V6eVg+ZAHn7pgB2xoCceY= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209270106146.9676079579075; Thu, 18 Sep 2025 08:27:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGVw-000577-Rc; Thu, 18 Sep 2025 11:25:41 -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 1uzGVq-0004nl-NW for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGVo-0002zp-Pq for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:34 -0400 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-642-RgcaTYe1Pr29BaSpBgPx9A-1; Thu, 18 Sep 2025 11:25:31 -0400 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-77e13772b37so128527b3a.0 for ; Thu, 18 Sep 2025 08:25:30 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.25.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:25:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209132; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kPRRonDI7v9CULdkpTnX724+UFIBp/Jcli88m3ndHPQ=; b=hmMhxrGWQ3UiKSTuaoGtqd9FXW0K34iQfxXW6rKE+DCCEEf+FiPOXuKr+of8k3NZwg7XDD jtC/8QuiTda5F1g4HylU1H7cfJuTKkRW242YiISiJPRetERPBFjZ4VZXFcD629DFGUckL0 hlxEbmIU/9cy33JDQo2izgwvthYbXrg= X-MC-Unique: RgcaTYe1Pr29BaSpBgPx9A-1 X-Mimecast-MFC-AGG-ID: RgcaTYe1Pr29BaSpBgPx9A_1758209130 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209130; x=1758813930; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kPRRonDI7v9CULdkpTnX724+UFIBp/Jcli88m3ndHPQ=; b=oW5bv6sfpkS2pQ8g3PNCfIL9J9VCH33wSIFOexiNQv0XU7o7DN8miVRZ3ULF8TmIen S+gVF0b81ZhEIyRtQeDS3xOOsKdwI0WbYeajCgbnyK4qVcmVgTvfgfJy6QFiTYh3Mumf oZVyhSKnuvhjI5szAvNQ0XfIdSR10us7R/ypaAQLP1jh5FntqHWyz+IJkb5cc+1Kvydh UIQ+5x9sqkX0zqLVlL7WPzMvHZee/E6w9409JA73Kfm9i4nlAgO0z5+ueKnA7pMlLecq RYK/bMbMUl4HeZ2yKv6a9NdLOO4KFb2GIWESEitp8uk4o/4t8xPg/K2vOlpZH5bjfh90 23xA== X-Gm-Message-State: AOJu0Ywe6AuNcVTY8ucLxXh3/dbV6JV77j01JhOpn6GG9I1YnWrhn3Yl SOL8ZeO+nRRiiS9o+ksqgO/16agFRq+bfCHbv+QAIMQ0jFSlUBgePAe91ykdkkVVOaBf+oo/4Ue Wqxe4u7rpCvOnvHR7ZngGKtSMq9qKxfdm7N1HeojX35wdBZISTFGzFG/1 X-Gm-Gg: ASbGncui1OVxgCyBeeDLvUE9qzDcUnXSbgjta0Ai0aB51BB4SxTV1wRSTv8WccskQHq pYLXsUizWDdqxkGdsIDmCCFFKx/kI+T7jo1KBkDPfhXf7HYHsTXWUZGJZraDPcxIp0OCUUQAaHh mtlJKhZNGxmymKPdp6i5qqt3+6+4bajRpYAeW+uR3b/rYzfN/NsgX7NfOOXePVrD3/5ivuT/IRM tR9B1COrKzVs1hmyW7/wpllucxKK7Uv6bRuTswEQFwSvJ1tTeFpcFgV3CLl+TtYiQCfmsE06RBx AxSnnhgeBy5Y0tuUPeNYVRsrI70oZZzljh8reHfITn6qF1XL1hK0+A== X-Received: by 2002:a05:6a21:6d86:b0:263:71ee:51f7 with SMTP id adf61e73a8af0-27a9586ba4bmr8962429637.24.1758209129984; Thu, 18 Sep 2025 08:25:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHMuah6p8Lj4os8pSCNCMoJDCYCF+l4cBohev7TpDVWRdsoSXdbrjQ5xyeQbkS83C55eyWzwA== X-Received: by 2002:a05:6a21:6d86:b0:263:71ee:51f7 with SMTP id adf61e73a8af0-27a9586ba4bmr8962380637.24.1758209129561; Thu, 18 Sep 2025 08:25:29 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:29 +0530 Subject: [PATCH v14 12/27] migration: Update qemu_file_get_return_path() docs and remove dead checks MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-12-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3908; i=armenon@redhat.com; h=from:subject:message-id; bh=RY2oIVqr3QDclIGMM+6BjCwpbbpRGE9+Nfi4t5ye/aI=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R83zba1WYs8cf/tWXHgzbwnWSeT31ll1Jycey5bO e2i77HDHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACZy0ofhf/rpT28aPrO0CPCF W7N+ckhYECd99+Ihq98v5cKe/peKmcrIMJ+bcckWi+lL2H6sdL8uYSkdLrlWfl+al0n4vwVFl9x LWAA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209271972116600 The documentation of qemu_file_get_return_path() states that it can return NULL on failure. However, a review of the current implementation reveals that it is guaranteed that it will always succeed and will never return NULL. As a result, the NULL checks post calling the function become redundant. This commit updates the documentation for the function and removes all NULL checks throughout the migration code. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/colo.c | 4 ---- migration/migration.c | 12 ++---------- migration/qemu-file.c | 1 - migration/savevm.c | 4 ---- 4 files changed, 2 insertions(+), 19 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 642d17487d92c0a9508e599ca3bf524e80b6fd46..07a32044b58541eb9bd7c5e63eb= 6ca598f8a8933 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -847,10 +847,6 @@ static void *colo_process_incoming_thread(void *opaque) failover_init_state(); =20 mis->to_src_file =3D qemu_file_get_return_path(mis->from_src_file); - if (!mis->to_src_file) { - error_report("COLO incoming thread: Open QEMUFile to_src_file fail= ed"); - goto out; - } /* * Note: the communication between Primary side and Secondary side * should be sequential, we set the fd to unblocked in migration incom= ing diff --git a/migration/migration.c b/migration/migration.c index fcf76cf73595c93e7616ee7341f2e02a598e4e3b..16250faed91781843a572fe1ad4= d71a37a2847a4 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2656,12 +2656,9 @@ out: return NULL; } =20 -static int open_return_path_on_source(MigrationState *ms) +static void open_return_path_on_source(MigrationState *ms) { ms->rp_state.from_dst_file =3D qemu_file_get_return_path(ms->to_dst_fi= le); - if (!ms->rp_state.from_dst_file) { - return -1; - } =20 trace_open_return_path_on_source(); =20 @@ -2670,8 +2667,6 @@ static int open_return_path_on_source(MigrationState = *ms) ms->rp_state.rp_thread_created =3D true; =20 trace_open_return_path_on_source_continue(); - - return 0; } =20 /* Return true if error detected, or false otherwise */ @@ -4020,10 +4015,7 @@ void migration_connect(MigrationState *s, Error *err= or_in) * QEMU uses the return path. */ if (migrate_postcopy_ram() || migrate_return_path()) { - if (open_return_path_on_source(s)) { - error_setg(&local_err, "Unable to open return-path for postcop= y"); - goto fail; - } + open_return_path_on_source(s); } =20 /* diff --git a/migration/qemu-file.c b/migration/qemu-file.c index b6ac190034f777dbde0da1598483a892089d7538..f9ccee9a1091ecbd37e6b7d2081= a4446442b544d 100644 --- a/migration/qemu-file.c +++ b/migration/qemu-file.c @@ -125,7 +125,6 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bo= ol is_writable) =20 /* * Result: QEMUFile* for a 'return path' for comms in the opposite directi= on - * NULL if not available */ QEMUFile *qemu_file_get_return_path(QEMUFile *f) { diff --git a/migration/savevm.c b/migration/savevm.c index c8234f2ef7f413b207aebae7192c82f1f4d6d91d..d54028b1be4d7a1e4615c2b0561= 1535bd7478e2b 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2588,10 +2588,6 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return 0; } mis->to_src_file =3D qemu_file_get_return_path(f); - if (!mis->to_src_file) { - error_setg(errp, "CMD_OPEN_RETURN_PATH failed"); - return -1; - } =20 /* * Switchover ack is enabled but no device uses it, so send an ACK= to --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209207; cv=none; d=zohomail.com; s=zohoarc; b=J0rS4nBX1kZ8Rnfh3Yrf8sZgK4TKYFxz0r3j8aAIfkW0/CYYbchshrgiOHeFmVr19NhP6OAu3I3GyCo0j0ySlZ4X3WpuONv3KNMZZXVLeSWwaLNuKC3+dziv4JgTEk4ZxQgH6o5TB/0rkRssrR6VSfwLA5GtO37dHi2PuSmCmKc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209207; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=E61UbPQ98vkxoeM+8ySKgPLne5BO/4Y70dZrTRJJ2TY=; b=aVPeKUjjaA38qCTNaqeD3pv98reWH1maqBaCMoX9Zs+blLE6ZuQYNxdj/cJj9nm1evztqLrEuZnt/QYaDNjSeFjtqPEp57LpwmRKESursmOg0Yi745znZTKbHXe5i8wZg5byDISvb4ypCZ0vBp8ayivb51Stzth6bxI3JjXAQ2g= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209207266663.4912176806059; Thu, 18 Sep 2025 08:26:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGW8-0005WB-6k; Thu, 18 Sep 2025 11:25:54 -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 1uzGW0-0005I4-NX for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:44 -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 1uzGVy-00031Z-7e for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:44 -0400 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-333-O-c9RFJ_P_6CnC9sOPzR8Q-1; Thu, 18 Sep 2025 11:25:39 -0400 Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-77615793f06so1170603b3a.0 for ; Thu, 18 Sep 2025 08:25:39 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.25.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:25:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209141; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E61UbPQ98vkxoeM+8ySKgPLne5BO/4Y70dZrTRJJ2TY=; b=KRseeLISIyw1cDwcbm9NVs68LBfWCmqc3d5iv8pmjw6i3aHXemhxHLK8uuaHApk42Lk5S4 4QEo64Uhz9v9zgTjaZVBHzEeOowzMexsO2hKsJd6O8z12f3PDi2+oh1uwmlEsLHGxwBp7g DQX3pusmO5raFntaGZEHQMFxG4prNtc= X-MC-Unique: O-c9RFJ_P_6CnC9sOPzR8Q-1 X-Mimecast-MFC-AGG-ID: O-c9RFJ_P_6CnC9sOPzR8Q_1758209139 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209139; x=1758813939; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=E61UbPQ98vkxoeM+8ySKgPLne5BO/4Y70dZrTRJJ2TY=; b=oyT7Et8N1UGK/RzlGmii97D7e4v05DWbgYL0XqB1oznosvxYq/PmZFjmXl9clfyDtX kvBZ+Yor5WAyKV3NYKSPSyKHw35D0URZmNqHeXW5Wwa3UG+EuF+TT5z2WfKGV19xWO18 uXllPyXlJ3k++aK9854wc3itqm3mFlNc8E4CzGeHUOTE10iQxotgP7Ia/cHI33NT3xd8 Dn5cRNeyCSYKGj2X+XA1TBFe+75DHOACs7fnKi6lYxX21mOkaobubJzK8Zu5zwp4LXNq uwl7utiOZITfOVA8XOKRxhnlc+fmgOi8/m7AVQBWef9TP7EUqBgMSchZiLZd8Sr3YI1V 35gw== X-Gm-Message-State: AOJu0YznF4xzCF3kbGb03UROFEFj+fFkEplWooRd4FL+vW91+0KH0OTX yMcmUcI/YNtBTRNLkHx4sKSfgZjveLrtcN0Pt4HsjVAd8lOes0g0K6s7quzro+rwEmobCDXDPdx RK83DMI62McK+ZVw4gsfLf7AdULlSQ8pkNE8Ob5gocXxZG+s/+3xWX7Yp X-Gm-Gg: ASbGncuxq3V1LK270v7RxB3OiuMYUoEWqE4/WWz36brZTYwR6yRdA8mMbnAwMvo6/Rr wD8YyDgqA4HVHvKmJHR3OfWtp+JKICfJZFQ7AKlCQGncYh0rCW2qVPkKrcadid0x0uucdjYHPRH lVyzWrEKf5URv/nBxaSgynFcxDOi/Qi3xbCazEgnjUb4+Gccvf+s8DIhS9HYYOhHrDifsoLjN7j mBbABE04HbklEZmonWlRVz2F9sT1BzGdRoTiF/3OXNwBa+x04h6Nx7amUWciBFlyav/MxomWiOX z6dRWItD3mLvonsijAQfXTJ5ZYn2+1C1ubQ4h4rb51rFVXCm96JYNw== X-Received: by 2002:a05:6a00:8d1:b0:771:e2f7:5a12 with SMTP id d2e1a72fcca58-77bf6dce4eamr9126446b3a.6.1758209138747; Thu, 18 Sep 2025 08:25:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGEqxvr+s7Cnj59Yo4v8MSL5aVfPGr/qqLYwstSZpAITU5ySBcpQECIplhglRdTgj2Kb3g8gw== X-Received: by 2002:a05:6a00:8d1:b0:771:e2f7:5a12 with SMTP id d2e1a72fcca58-77bf6dce4eamr9126358b3a.6.1758209138184; Thu, 18 Sep 2025 08:25:38 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:30 +0530 Subject: [PATCH v14 13/27] migration: make loadvm_postcopy_handle_resume() void MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-13-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2052; i=armenon@redhat.com; h=from:subject:message-id; bh=J3tCTCrF6nSfsNZa6QUxbIzpTTI6Us9gYinavq3Uol8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R8r5HU3undL7di+r4/FOHc/T8lPBd+tIk4Wh5e/N dnfcyK/o5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwE3OZGT4brhjl+qzU7UrFfsT D0benpXkVKWy6OFkvrQGRdENd1IYGBm2mj2pY04W3PBNfvmeVQ9XPHNj1l5u73ZPzPABf1S/lxs TAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209209437116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. Use warn_report() instead of error_report(); it ensures that a resume command received while the migration is not in postcopy recover state is not fatal. It only informs that the command received is unusual, and therefore we should not set errp with the error string. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index d54028b1be4d7a1e4615c2b05611535bd7478e2b..c079942b7ecb959b3b668b97717= 4d906f73c2777 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2334,12 +2334,12 @@ static void migrate_send_rp_req_pages_pending(Migra= tionIncomingState *mis) } } =20 -static int loadvm_postcopy_handle_resume(MigrationIncomingState *mis) +static void loadvm_postcopy_handle_resume(MigrationIncomingState *mis) { if (mis->state !=3D MIGRATION_STATUS_POSTCOPY_RECOVER) { - error_report("%s: illegal resume received", __func__); + warn_report("%s: illegal resume received", __func__); /* Don't fail the load, only for this. */ - return 0; + return; } =20 /* @@ -2391,8 +2391,6 @@ static int loadvm_postcopy_handle_resume(MigrationInc= omingState *mis) /* Kick the fast ram load thread too */ qemu_sem_post(&mis->postcopy_pause_sem_fast_load); } - - return 0; } =20 /** @@ -2647,7 +2645,8 @@ static int loadvm_process_command(QEMUFile *f, Error = **errp) return ret; =20 case MIG_CMD_POSTCOPY_RESUME: - return loadvm_postcopy_handle_resume(mis); + loadvm_postcopy_handle_resume(mis); + return 0; =20 case MIG_CMD_RECV_BITMAP: ret =3D loadvm_handle_recv_bitmap(mis, len); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209434; cv=none; d=zohomail.com; s=zohoarc; b=XSQGEOIGuPSMAtn/hCu6h8eljzlcRqxDMVP9bB3xudIG5Kd1ITHFRiuOSR4rNhHukCeVwH6TTdNM1hRysx6ngkRCYW6RQ0GEz4jDtOQFTdQkOHtTTy0dsHGQxns2xmu+USciIb0y87K9kT9fmGbzDJ16QQne8T/iqaHRoVSW2ec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209434; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sTWUNM+v16RdqicPQUSVUg/HZymrt0SY9y6hBqA0bZE=; b=gga56n3Y5SwScf5ign4etc8ih8zof9hupLz6zAwNGCrtBriPJ9ROEJOACVW6Wvbhptn7CweZmpPb8zr5dJFTfrqocXVzNtyXbDKJjjLpe0vQFFopN2TQ0T1pPJRq2r/brM288dBlouzqotilEJ3FiKto9IIodgFqADU1bKg+g/U= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209434254324.02743920575006; Thu, 18 Sep 2025 08:30:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGWL-0006Dh-4D; Thu, 18 Sep 2025 11:26:05 -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 1uzGW8-0005Zy-3d for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGW6-00032y-4q for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:25:51 -0400 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-152-pvMjIAm9Ne-p2J-VBDjFxA-1; Thu, 18 Sep 2025 11:25:48 -0400 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-7722ef6c864so939923b3a.1 for ; Thu, 18 Sep 2025 08:25:48 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.25.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:25:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209149; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sTWUNM+v16RdqicPQUSVUg/HZymrt0SY9y6hBqA0bZE=; b=HSJux7PB/OmQteXrJZi+bzx87IVbDVpBUIDxzcrs9jk1UU+9t9OcYse8dIi1M5NSDXGyCb 88mEmVdtVtBzvHtF7HGdVNe/W4+TJ54trBZ9QDqI/9GW0ns+ekolEtZ6y1gz8+x/Wb3JCr 4aBLzclkIwPKKpwc08RxaYOv2Xbvg5U= X-MC-Unique: pvMjIAm9Ne-p2J-VBDjFxA-1 X-Mimecast-MFC-AGG-ID: pvMjIAm9Ne-p2J-VBDjFxA_1758209147 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209147; x=1758813947; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sTWUNM+v16RdqicPQUSVUg/HZymrt0SY9y6hBqA0bZE=; b=EEHp/RkJbqc79aiH+STxL1wUTfgjhqBxIeuUyAgRCAgN/hWnpcx4kerHdIf0pD+CtD nXvoeH4cVgnZDr+pIduEeY/gUSBdZOI2wzSd+xXTdthEJV4org7XoHAptL425mWfzve6 xfBo3jMyvZPHUWotcQlIALp4a2Vzu7SMSfdahzaYbjh5HB546MEy4iiAcOM4cYN5f4rO WlMgl3pTje0P0RzJ9nnx8R176OvWGb3Im+vpidnv4vrcFzrTwexEZ6amT5SnN1taMuE8 aGXBR7zpl/46CGinASaQt8N+FWDRiqS2xrNVNR8Pn0h5cf9RfafNsitG/Cc7cuirKLGl hq0A== X-Gm-Message-State: AOJu0YwVlUdeEv9BOrhrIhfZVij7usEnKoJKB7JAuFgHCtsrZYkvf+S+ ft9ntwM6hphrXfbdCwNlDxQyFBfX8EBkojyWUQYXrwY02t68U3QfNOJq15LwxDk6KaBYO1duGs+ YWcoc1fdZbHoNWlTZ3xxaZXd2RQjVuj8+CIGjp4W7fl6XZlBrbfsImNuD X-Gm-Gg: ASbGncsicuQT9T/Rfdgcxw+7CCPzTwVj+bYVGTckdYwsEoUaFLzZDbFefHQSEPPUtVT hjFQdhAKGVL9IRZh0qHalG/abjTLALTpl4ueWKUX8/mNuD6+gp17GRbh88gD4HJk5Q/dU7kz1cx ZQEWSbLTTMXe+gQKEdgCUXx3druzrPdvKn1leSPj9v75MI1JWFt9qT62A52dMAHimJcpdAVu5oU /PL1i0fpFCiDwV4R0NhAIE5Zmz7C3neBNN8e481go9vyGXTO8d6b/BmwhRpWMPmq4LGwvMszVjx WdnCVydE5NO+4wVCKmkjA1HB16XrBtFHC6NAcGDK7hzLAMZzH2NEIA== X-Received: by 2002:a05:6a00:2e94:b0:772:86aa:ed0a with SMTP id d2e1a72fcca58-77bf9074a10mr7866371b3a.25.1758209147119; Thu, 18 Sep 2025 08:25:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFL3TrqGnADVsga37YrtTY8aAsF5vQqest3wrqepncC63N9W8kxEjr8izw20zTt3Sy8FTA0hg== X-Received: by 2002:a05:6a00:2e94:b0:772:86aa:ed0a with SMTP id d2e1a72fcca58-77bf9074a10mr7866343b3a.25.1758209146747; Thu, 18 Sep 2025 08:25:46 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:31 +0530 Subject: [PATCH v14 14/27] migration: push Error **errp into ram_postcopy_incoming_init() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-14-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4806; i=armenon@redhat.com; h=from:subject:message-id; bh=NxHIEIcsn6ki3pjI+1SDVs7doJTeFpfWjxBGpIKPSXQ=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R+NcxU3blCK7/XnCb/Vt3dbtUzH1pAnilctjikKK 2SHp2zqKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJEqb0aGi8tuXeBqVmTVsfps qaql+OFkyWGrJyLz75+0Zp5/Lzkmh+GvxL+FinP7ynkcGGa42H2+8ufpe1O1brdJD7XCpp74uEy DGwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 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: 1758209435878116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that ram_postcopy_incoming_init() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/postcopy-ram.c | 9 ++++++--- migration/postcopy-ram.h | 2 +- migration/ram.c | 4 ++-- migration/ram.h | 2 +- migration/savevm.c | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 45af9a361e8eacaad0fb217a5da2c5004416c1da..05617e5fbcad62226a54fe17d9f= 7d9a316baf1e4 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -681,6 +681,7 @@ out: */ static int init_range(RAMBlock *rb, void *opaque) { + Error **errp =3D opaque; const char *block_name =3D qemu_ram_get_idstr(rb); void *host_addr =3D qemu_ram_get_host_addr(rb); ram_addr_t offset =3D qemu_ram_get_offset(rb); @@ -701,6 +702,8 @@ static int init_range(RAMBlock *rb, void *opaque) * (Precopy will just overwrite this data, so doesn't need the discard) */ if (ram_discard_range(block_name, 0, length)) { + error_setg(errp, "failed to discard RAM block %s len=3D%zu", + block_name, length); return -1; } =20 @@ -749,9 +752,9 @@ static int cleanup_range(RAMBlock *rb, void *opaque) * postcopy later; must be called prior to any precopy. * called from arch_init's similarly named ram_postcopy_incoming_init */ -int postcopy_ram_incoming_init(MigrationIncomingState *mis) +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp) { - if (foreach_not_ignored_block(init_range, NULL)) { + if (foreach_not_ignored_block(init_range, errp)) { return -1; } =20 @@ -1703,7 +1706,7 @@ bool postcopy_ram_supported_by_host(MigrationIncoming= State *mis, Error **errp) return false; } =20 -int postcopy_ram_incoming_init(MigrationIncomingState *mis) +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp) { error_report("postcopy_ram_incoming_init: No OS support"); return -1; diff --git a/migration/postcopy-ram.h b/migration/postcopy-ram.h index 3852141d7e37ab18bada4b46c137fef0969d0070..ca19433b246893fa5105bcebffb= 442c58a9a4f48 100644 --- a/migration/postcopy-ram.h +++ b/migration/postcopy-ram.h @@ -30,7 +30,7 @@ int postcopy_ram_incoming_setup(MigrationIncomingState *m= is); * postcopy later; must be called prior to any precopy. * called from ram.c's similarly named ram_postcopy_incoming_init */ -int postcopy_ram_incoming_init(MigrationIncomingState *mis); +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp); =20 /* * At the end of a migration where postcopy_ram_incoming_init was called. diff --git a/migration/ram.c b/migration/ram.c index 7208bc114fb5c366740db380ee6956a91b3871a0..6a0dcc04f436524a37672c41c38= f201f06773374 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3716,9 +3716,9 @@ static int ram_load_cleanup(void *opaque) * postcopy-ram. postcopy-ram's similarly names * postcopy_ram_incoming_init does the work. */ -int ram_postcopy_incoming_init(MigrationIncomingState *mis) +int ram_postcopy_incoming_init(MigrationIncomingState *mis, Error **errp) { - return postcopy_ram_incoming_init(mis); + return postcopy_ram_incoming_init(mis, errp); } =20 /** diff --git a/migration/ram.h b/migration/ram.h index 921c39a2c5c45bc2344be80854c46e4c10c09aeb..275709a99187f9429ccb4111e05= 281ec268ba0db 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -86,7 +86,7 @@ void ram_postcopy_migrated_memory_release(MigrationState = *ms); void ram_postcopy_send_discard_bitmap(MigrationState *ms); /* For incoming postcopy discard */ int ram_discard_range(const char *block_name, uint64_t start, size_t lengt= h); -int ram_postcopy_incoming_init(MigrationIncomingState *mis); +int ram_postcopy_incoming_init(MigrationIncomingState *mis, Error **errp); int ram_load_postcopy(QEMUFile *f, int channel); =20 void ram_handle_zero(void *host, uint64_t size); diff --git a/migration/savevm.c b/migration/savevm.c index c079942b7ecb959b3b668b977174d906f73c2777..a1b606318f2ae8feff42b759ad3= 08ebbd07318b7 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1989,7 +1989,7 @@ static int loadvm_postcopy_handle_advise(MigrationInc= omingState *mis, return -1; } =20 - if (ram_postcopy_incoming_init(mis)) { + if (ram_postcopy_incoming_init(mis, NULL) < 0) { return -1; } =20 --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209314; cv=none; d=zohomail.com; s=zohoarc; b=ef0Yc19O8YkOqF1dLWn+/KYTvxXj8Y30yracz56ZpLIyjp46K+mT4QuR5lNWZrVWkkU60ZMJzIf7akgYzoFXAASQxbUq7aLD4/0MaJeTuOt9kXXcYWaWmpAIM+GNcv8ueQD44+vS6lLBqrjhjqjVBgIT3t+ulnEhVZZxB9B/OrE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209314; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=k9sqDXkDqoF2sK/YqGONtbwmKp3jZKoCMKUxLstVdcU=; b=iIge2jgzW+TTQz8YgsbhrMAug6e9YDPcs94dO16B4RkDNQgUYprAhrCRp6cZ8T33HIhvv88S3FTU7opkrz85nBe15zTrTj+qKHfxOnAP8ViKXiXbqV1nI6VqhB7fq6od9l+KX9aEy6HtmVkNPNIu7c/YjLP817B7fASl6n1IwPE= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175820931401064.62826834652083; Thu, 18 Sep 2025 08:28:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGWM-0006JC-BV; Thu, 18 Sep 2025 11:26:06 -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 1uzGWK-00064J-5h for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGWF-000350-S0 for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:03 -0400 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-274-P9m1lYzlNwqWbfinqhORTA-1; Thu, 18 Sep 2025 11:25:57 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b55055060e6so505472a12.3 for ; Thu, 18 Sep 2025 08:25:56 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.25.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:25:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209158; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=k9sqDXkDqoF2sK/YqGONtbwmKp3jZKoCMKUxLstVdcU=; b=FFZXEO+2W8aptefhHHXgx79sHKwHoDnSKDoMAevIspxZges8gkyV7YkAA+V+vT0yQgmDhy zHDHcGHr9RZV07+JIshqfmayFVb/E/jKBouNXIQnZEftV9Bu36ZeX3tq8DJAobTyjLEGuM ozpcssVDKVbJtkvMO4VD6Wd74ADNHKs= X-MC-Unique: P9m1lYzlNwqWbfinqhORTA-1 X-Mimecast-MFC-AGG-ID: P9m1lYzlNwqWbfinqhORTA_1758209156 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209156; x=1758813956; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=k9sqDXkDqoF2sK/YqGONtbwmKp3jZKoCMKUxLstVdcU=; b=H4JfaFLibAaeSTkFkRdxfxeH3MrP+G93P3g8O020tVVsLZsS98MniNhhXW98RpQXwQ Ek6Q+wdtM51u4/Aaz5oRs6aGWPUUCQS7F7xlB5x+vFhEOBhjga7qpyKxVb4jiV1uB2Mm rVPvXgZ9L+BS4OqrZiBpglVibkuDixTalLI4OwHtv5XDVl8cwwkdV4CNTmhWPPL505xW whW9COZjUiHqAOq1ssgHo3jeREq1/4H3V15lwQHKLmcFuvZ07kSI9uIaPKF0fI4NTYi1 G2pnmhxA2MN6NIZeJTaoDj2lll+eCVyoZx8VlJ8RFAyOOoMGUbBxK+vAmZsDuO6xGa+l kRow== X-Gm-Message-State: AOJu0Ywk/r8+HQsbD062zP37a/8KGRb+78NNoIOWO6f1t7s6w0E0c6rU sM1uGFsJYPpLIEeqCtsz1Gv9UTRLk2GghM1px8RnitUCVRGM8GpZo+3YzkMNmzqrs19t8JTonfm hPZlZuHY4ZdO/XDMeBLPvLdHo2d3g6bosLnCdS5Ag0XTdKEPMxOTfrkp9 X-Gm-Gg: ASbGncsd+1o3MLamfaB2TPAIpcnlXXGUKwfRs3U3zGdLWhHED/68ZMxinDLZ4cRhHEY SpXahLIBkyWgWVEaS4M8WT9b6SBNWBuqmdetFhsNvVQ9l3lopA1kRx3HD8rvyYa/G1gQbzjAZDy 1rW82XjA1fC8M5mQRiGnUySbBHx6AS04Pqm7Kj81q0FxJTacvNtMrY08AfPe7XTd6Lj63kydVCI shjAGZH4EuwO0A6aZi+POo7FrXEh8utym2WrCZOksVaGjiL5hNULLCAa5ZAkyM3lUALsstyI4MB IJg9f3WAfgPFBhCuoZED0ISFi0HuiGXp1EQay0NwwFHU5/X/Hc8+rg== X-Received: by 2002:a05:6a20:6a05:b0:262:9461:2e59 with SMTP id adf61e73a8af0-27aa204bb20mr9286632637.39.1758209155869; Thu, 18 Sep 2025 08:25:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFhv6M3IrcIKXM2Am4q5WhZRUeSLMKitZDLZxZNZ5Tix0Sw25p8Oqs6t7AoMpW6BRpCeY7FIQ== X-Received: by 2002:a05:6a20:6a05:b0:262:9461:2e59 with SMTP id adf61e73a8af0-27aa204bb20mr9286574637.39.1758209155423; Thu, 18 Sep 2025 08:25:55 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:32 +0530 Subject: [PATCH v14 15/27] migration: push Error **errp into loadvm_postcopy_handle_advise() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-15-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4838; i=armenon@redhat.com; h=from:subject:message-id; bh=YIrBpYmjnNrlQEW0CrE8o05ulfKM6YeYARhM3eBobvY=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R8+kwQSmS2rd/+PjT176b9UxRHlvWIrTEQV+x2d9 CqaG552lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmEhKECPDjOatZ1z+KWrtzTrE wsi5/pnOs9oPHfkqe7WSpS5GtyjzM/x3nnH8EIdzyOHbUZuljR8ttC18Z/Dz+VLfHJmtAj2cmkX MAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209316505116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_advise() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index a1b606318f2ae8feff42b759ad308ebbd07318b7..680f6e1c4bbc979f779d9fde28a= b71ae234b5891 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1912,39 +1912,39 @@ enum LoadVMExitCodes { * quickly. */ static int loadvm_postcopy_handle_advise(MigrationIncomingState *mis, - uint16_t len) + uint16_t len, Error **errp) { PostcopyState ps =3D postcopy_state_set(POSTCOPY_INCOMING_ADVISE); uint64_t remote_pagesize_summary, local_pagesize_summary, remote_tps; size_t page_size =3D qemu_target_page_size(); - Error *local_err =3D NULL; =20 trace_loadvm_postcopy_handle_advise(); if (ps !=3D POSTCOPY_INCOMING_NONE) { - error_report("CMD_POSTCOPY_ADVISE in wrong postcopy state (%d)", p= s); + error_setg(errp, "CMD_POSTCOPY_ADVISE in wrong postcopy state (%d)= ", + ps); return -1; } =20 switch (len) { case 0: if (migrate_postcopy_ram()) { - error_report("RAM postcopy is enabled but have 0 byte advise"); + error_setg(errp, "RAM postcopy is enabled but have 0 byte advi= se"); return -EINVAL; } return 0; case 8 + 8: if (!migrate_postcopy_ram()) { - error_report("RAM postcopy is disabled but have 16 byte advise= "); + error_setg(errp, + "RAM postcopy is disabled but have 16 byte advise"); return -EINVAL; } break; default: - error_report("CMD_POSTCOPY_ADVISE invalid length (%d)", len); + error_setg(errp, "CMD_POSTCOPY_ADVISE invalid length (%d)", len); return -EINVAL; } =20 - if (!postcopy_ram_supported_by_host(mis, &local_err)) { - error_report_err(local_err); + if (!postcopy_ram_supported_by_host(mis, errp)) { postcopy_state_set(POSTCOPY_INCOMING_NONE); return -1; } @@ -1967,9 +1967,10 @@ static int loadvm_postcopy_handle_advise(MigrationIn= comingState *mis, * also fails when passed to an older qemu that doesn't * do huge pages. */ - error_report("Postcopy needs matching RAM page sizes (s=3D%" PRIx64 - " d=3D%" PRIx= 64 ")", - remote_pagesize_summary, local_pagesize_summary); + error_setg(errp, + "Postcopy needs matching RAM page sizes " + "(s=3D%" PRIx64 " d=3D%" PRIx64 ")", + remote_pagesize_summary, local_pagesize_summary); return -1; } =20 @@ -1979,17 +1980,18 @@ static int loadvm_postcopy_handle_advise(MigrationI= ncomingState *mis, * Again, some differences could be dealt with, but for now keep it * simple. */ - error_report("Postcopy needs matching target page sizes (s=3D%d d= =3D%zd)", - (int)remote_tps, page_size); + error_setg(errp, + "Postcopy needs matching target page sizes (s=3D%d d=3D= %zd)", + (int)remote_tps, page_size); return -1; } =20 - if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_ADVISE, &local_err)) { - error_report_err(local_err); + if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_ADVISE, errp)) { return -1; } =20 - if (ram_postcopy_incoming_init(mis, NULL) < 0) { + if (ram_postcopy_incoming_init(mis, errp) < 0) { + error_prepend(errp, "Postcopy RAM incoming init failed: "); return -1; } =20 @@ -2617,11 +2619,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_handle_cmd_packaged(mis, errp); =20 case MIG_CMD_POSTCOPY_ADVISE: - ret =3D loadvm_postcopy_handle_advise(mis, len); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_advise(mis, len, errp); =20 case MIG_CMD_POSTCOPY_LISTEN: ret =3D loadvm_postcopy_handle_listen(mis); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209177; cv=none; d=zohomail.com; s=zohoarc; b=aBxi1ufGZ+W4VPCTrA2ViYV1CVnVXFTPPO1G9jY9l2vzTJ8MYuk7slaOXbhmQ2OxrbRssLzOAo5pb9lIcLEjmj05F9ER9tXsZ0DRZAIvY7gww4cHx9G2XutWWnTp4LbZpJRdGqLblvslrRzOP8BLV7l5iF4l7XGGNWy19IqlraQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209177; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Za1NNvSl7uFr3wDIymXqGWcBuLkcyiqwtqIRxvI2IEk=; b=WFVw4H9CFGVhy9hipIPYGAGM/u94h1mr/Sr4kEAm14UA02rEPUvtSQkmDqXJ82TPHQUMrZ06d8dhYn6iCUiRJA77Yz3ZMqyfhsaR8PQoum9ABp3oGE1xvSQ1/HPBuWFaqCAZgqRqyQ6lyZFGXNfUBYDQZQUb6BxPOtkTfi84Q8M= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209177339442.30608085907875; Thu, 18 Sep 2025 08:26:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGWS-0006fm-BZ; Thu, 18 Sep 2025 11:26:12 -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 1uzGWP-0006Tp-C1 for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:09 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGWN-00037F-O2 for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:09 -0400 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-350-2AC2GrSgPAmr2n-nctmKlw-1; Thu, 18 Sep 2025 11:26:05 -0400 Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-7761dd1c845so1136285b3a.0 for ; Thu, 18 Sep 2025 08:26:05 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.25.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:26:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209167; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Za1NNvSl7uFr3wDIymXqGWcBuLkcyiqwtqIRxvI2IEk=; b=gODCPv3cu6V5lksGKVcpWX5YStFeVr+Ykmy7G35hJmKmpfKZsQhshGNusNhESSPeRCq3Jb u/69COIltIR2fZLN7pLRKaXo5Vy0c3KPLzWarHD7H4S5qzaDrCTmueuy3s0xDo9UdkOl9s zOb308G+T107a5RGRW4rzmNCI84k5NI= X-MC-Unique: 2AC2GrSgPAmr2n-nctmKlw-1 X-Mimecast-MFC-AGG-ID: 2AC2GrSgPAmr2n-nctmKlw_1758209165 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209164; x=1758813964; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Za1NNvSl7uFr3wDIymXqGWcBuLkcyiqwtqIRxvI2IEk=; b=lYhNEc4jOlE2H9YOT9MLHYRFWA8hD9YygdzZqvvcAoJqcGi+0069Lx27sspVcdE71Q 0QEls5xsKA+JWwnS0NkTI41FHy5ggNEQsIFgpNZRe6ArGdxsuf7zeC7fcfqGe6vOW1bV 8vLwRdSl0p5/28VFOdiUjQzLoRJK2xHTEKEG5spltiXizPrzx0nj4840qmU+gDn+Gqa9 tGpBm6LU/h65+Su67ec+HmGblo+qRnhXtIioRrdPQxt9izCltfDlP+kGfEuAn65bDcvl u+7j3tuaFpQKu0ivhsOLONrfnKpOU4remlZDFP+//9OdbjPHyCBNwiA4sUxYcUxhz69c 9dTg== X-Gm-Message-State: AOJu0Yx1NnrBo0VBZ18MKTONGOO+yfjniwbtyWXKzKw0oSIa3JBPcO3L 00VL+9YDCH7C67B1M9kyGUcA6V4NVIiL2b+OGlFuTLgeeP55BWDVdnEDy+cblEKnd7ZmsEGm9v7 QfghMXYLdmyLJ39i2cYhvbo3VuL9VDFvADqKMsbpXb2SKRqj+xTkg3BnA X-Gm-Gg: ASbGncsyWEqmcFV2JC0AR+sg7G7Yd0xm5rjU2qMY1IYflhPRiGUnSgPfbD35lEDpHYa fzBCLQrIR7jcpd9RzsBPswffw/BYg4NhLGPFWEptvjhmynoFG5DEZgVTwWL3Q7nURLQ1Xoxd8+O JoGSDzJYDt0aZs+aC/80+9t1ywoQC0HfahNvsbPWg9WgF+llu+H6zorU0ItmojclehJlTn4Y6Mz 4ahjgzPA6/u6lvIWFN/oY7TO3NdxtxKsyZc55UcwEsfMLKL6opUXKGZLDB9GXtcN8dVw5q3n5vF PahbhVb4GkNrPE4sQvptwiN8zDx39MMKpuwxsVnmyDJEcVoPlXZJpw== X-Received: by 2002:a05:6a00:3c95:b0:770:343b:5457 with SMTP id d2e1a72fcca58-77bf926836cmr6875651b3a.16.1758209164507; Thu, 18 Sep 2025 08:26:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF8ncZ9So2Y7vmCD4CO66kVw3lIrVIcv5pjax3rehicl/SDmqaYvXAE21WslU6uduuZjTgAbA== X-Received: by 2002:a05:6a00:3c95:b0:770:343b:5457 with SMTP id d2e1a72fcca58-77bf926836cmr6875608b3a.16.1758209164127; Thu, 18 Sep 2025 08:26:04 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:33 +0530 Subject: [PATCH v14 16/27] migration: push Error **errp into loadvm_postcopy_handle_listen() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-16-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2751; i=armenon@redhat.com; h=from:subject:message-id; bh=BsaDnW57QysoXysSxJ9DH2reNuwbEbmWWZabpe2MJIE=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R8PFbfyPLfkW1HwJv+mqcrXiXcCfSSXr2s39nTeX zvT88yijlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABP59YzhD89n9Qs2sgszLy7+ 9kVw+eF85dypCTsy5C+JPFWaU3C1wpiRYUvMY4uyhNePD219/aD43zqzCKGq04/OzL96pUVbrXh 1DxsA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209179126116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_listen() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 680f6e1c4bbc979f779d9fde28ab71ae234b5891..c681d6d21af356a97645f2a0d36= e7440e3bd95c6 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2181,15 +2181,16 @@ static void *postcopy_ram_listen_thread(void *opaqu= e) } =20 /* After this message we must be able to immediately receive postcopy data= */ -static int loadvm_postcopy_handle_listen(MigrationIncomingState *mis) +static int loadvm_postcopy_handle_listen(MigrationIncomingState *mis, + Error **errp) { PostcopyState ps =3D postcopy_state_set(POSTCOPY_INCOMING_LISTENING); - Error *local_err =3D NULL; =20 trace_loadvm_postcopy_handle_listen("enter"); =20 if (ps !=3D POSTCOPY_INCOMING_ADVISE && ps !=3D POSTCOPY_INCOMING_DISC= ARD) { - error_report("CMD_POSTCOPY_LISTEN in wrong postcopy state (%d)", p= s); + error_setg(errp, + "CMD_POSTCOPY_LISTEN in wrong postcopy state (%d)", ps); return -1; } if (ps =3D=3D POSTCOPY_INCOMING_ADVISE) { @@ -2212,14 +2213,14 @@ static int loadvm_postcopy_handle_listen(MigrationI= ncomingState *mis) if (migrate_postcopy_ram()) { if (postcopy_ram_incoming_setup(mis)) { postcopy_ram_incoming_cleanup(mis); + error_setg(errp, "Failed to setup incoming postcopy RAM blocks= "); return -1; } } =20 trace_loadvm_postcopy_handle_listen("after uffd"); =20 - if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_LISTEN, &local_err)) { - error_report_err(local_err); + if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_LISTEN, errp)) { return -1; } =20 @@ -2622,11 +2623,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_postcopy_handle_advise(mis, len, errp); =20 case MIG_CMD_POSTCOPY_LISTEN: - ret =3D loadvm_postcopy_handle_listen(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_listen(mis, errp); =20 case MIG_CMD_POSTCOPY_RUN: ret =3D loadvm_postcopy_handle_run(mis); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209297; cv=none; d=zohomail.com; s=zohoarc; b=jbRTN1EQhgWhje5+6TnCWT2v5nGh31cdxE0ICJyqFIbJWn38IX+btT2FOrHwdbZHcKkPwgTn8uwBKoYreibIDfEhb8q2R7/IuuNw2yrlAm5JGGB5XgHacj1yJusg0VqHiXSCxjpcmyTo902mwYTcu/8eDuFNPgYTh8N1WYM6ODk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209297; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EK8ZniS31eKfAuecJyHjMuA5swX2F7mkJn3tAORFulo=; b=mN2XBkIghqe2wA+D9ocBNsKXtYB8Hm5RYVC1lVqCfND+0GpJ8rsgDfSBQzjKf32C+T04hGMLRx/HU6w1WaHRm6nL+SboVcIOR9lzfkfGCcEHr0gZhDx4hwVP96YnzKP4AvfxOr5f/QTwWHzHAr64ki0Z190HM0bajN1sNp11dps= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209297437642.8076527341746; Thu, 18 Sep 2025 08:28:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGWi-0007pg-9o; Thu, 18 Sep 2025 11:26:28 -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 1uzGWg-0007Zm-Bk for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGWW-00039I-6E for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:25 -0400 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-220-RndcvfYQM4Kd_gaHtWNZQA-1; Thu, 18 Sep 2025 11:26:14 -0400 Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-77d20efe2d5so1233250b3a.3 for ; Thu, 18 Sep 2025 08:26:14 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.26.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:26:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209175; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EK8ZniS31eKfAuecJyHjMuA5swX2F7mkJn3tAORFulo=; b=Hm8EO/bBzV6h+YI3PqhNd9MPYlY4DR3/mKFn1CrmkPCL90KJZbe9KG5ED9PkFBVYWhehfT 2IFxeT0pgMTLAk1M5UXZxORFXXUcgttXFRTQwD/b7ygbl4ik+MKdXRCJCwu7Dx7n/wFVjH KS63kPiEWOPi9idVD1i2U+dy7iCLHXw= X-MC-Unique: RndcvfYQM4Kd_gaHtWNZQA-1 X-Mimecast-MFC-AGG-ID: RndcvfYQM4Kd_gaHtWNZQA_1758209173 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209173; x=1758813973; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EK8ZniS31eKfAuecJyHjMuA5swX2F7mkJn3tAORFulo=; b=QUBVRIVaA6KFRT1Vs7MaGosU7hDDdlxCoee9XjoEwXZbHmrzhZNdKWxYf7RxjqLvps ZEd54Ew8z1AFInwt7clzNDrImOzkBwEwbM4i3MuFIP40c0zkEz5jcMPdZcBNM/rG5UE/ b5IKeJK5FQhzRNB3OdhSiI+SM1HoxiCwgYv0RuFHn2Ls7jLQ4DBrSi31lDqRxC3VMLtZ Znmmk7412qfQt05yJVCwMG3Rs8PCxCKHyv6uG4MA2T5BKbnPqFXsSTglPbULAqkKLjM2 h5JIa0DM/XHqDzyXkNZMT4raP8WHVhb5PYjdZosPEPUWTf9f1ONFB0IXuJq5N+tzZvV2 /T+Q== X-Gm-Message-State: AOJu0Yx0HL1zBkGZg2+9zWKSfg747RNOWImNEZueU8YZFdnjWi1oPMJc Bk+pFf3zptpWFHBHPLMQ9VnMD3k9Ouq8czqy8yO8/wDpS6igYjay0EZafp2qn4TaAaQcQVNYNAP VlF3HcJuVkj2KYu8bfY18Fh0VSgaCUvb6E5kdCR96togkyGOiVwUkVa0Z X-Gm-Gg: ASbGncuF+fzdaEXx3YRT5Tq2PTllV1dbYaelHrrQIsnMD/ajdCsTPn85VqJyRA03ddH tHCKVAp2RlDlPNWxp64gD/RdYZTssgwGsqXCLmJ4O5PTBuXLa3nxG6le9WkX+qBihsD+pHVfe9F xIB9iU5F4A6R9UZNtzOFXNUUTa8hXxWFJqkBPbtmBmmMNFZpKvYar5ieSiG8pzuQKxEsjX8zJDM /Hy1XY16q2ch9LXs/AbBEu0WBaVxTKHDbHZwyGTsUjYPvtCY2K2XemI8NFJaxQ4UDsvG3hGl8Ri YHlB9HdZEoh/tMAOfjlry1CQBc4srjN84T9NClv8gxxt75nbCeKWKg== X-Received: by 2002:a05:6a00:7096:b0:77c:d54b:8c86 with SMTP id d2e1a72fcca58-77cd54b9014mr4631217b3a.0.1758209173252; Thu, 18 Sep 2025 08:26:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFS0MJecLzlL9sKl0qZUacYM/7yKkS7NxjQ3nl1DAwAkINLP/TulkB4/M2hQdedZlvGaQyZ5w== X-Received: by 2002:a05:6a00:7096:b0:77c:d54b:8c86 with SMTP id d2e1a72fcca58-77cd54b9014mr4631196b3a.0.1758209172898; Thu, 18 Sep 2025 08:26:12 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:34 +0530 Subject: [PATCH v14 17/27] migration: push Error **errp into loadvm_postcopy_handle_run() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-17-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1888; i=armenon@redhat.com; h=from:subject:message-id; bh=Bc7pNWeaQQJR7xn/IMqCNxln9K0U+dn3FXOfz+z8MlM=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R+7Nt1bVjzvbN6qaWY+F5i1P8ktnzQ5yfDkBNelV 21KDh662lHKwiDGxSArpsjS8DVAtimgMCLS9uV1mDmsTCBDGLg4BWAivx8wMuycHRAgUD498bZn ysqnRf+E+ZS4Dojvn6/NpfHYp+nqmjmMDIsS3uQ3SG5+EGKQYxitcvf9sZ7jx3LztidN5dqfvvS uFCMA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209298270116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_run() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index c681d6d21af356a97645f2a0d36e7440e3bd95c6..3ab20bd3de980ecfd79ab29697e= 3e1527ab3e73c 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2273,13 +2273,13 @@ static void loadvm_postcopy_handle_run_bh(void *opa= que) } =20 /* After all discards we can start running and asking for pages */ -static int loadvm_postcopy_handle_run(MigrationIncomingState *mis) +static int loadvm_postcopy_handle_run(MigrationIncomingState *mis, Error *= *errp) { PostcopyState ps =3D postcopy_state_get(); =20 trace_loadvm_postcopy_handle_run(); if (ps !=3D POSTCOPY_INCOMING_LISTENING) { - error_report("CMD_POSTCOPY_RUN in wrong postcopy state (%d)", ps); + error_setg(errp, "CMD_POSTCOPY_RUN in wrong postcopy state (%d)", = ps); return -1; } =20 @@ -2626,11 +2626,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_postcopy_handle_listen(mis, errp); =20 case MIG_CMD_POSTCOPY_RUN: - ret =3D loadvm_postcopy_handle_run(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_run(mis, errp); =20 case MIG_CMD_POSTCOPY_RAM_DISCARD: ret =3D loadvm_postcopy_ram_handle_discard(mis, len); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209256; cv=none; d=zohomail.com; s=zohoarc; b=gbdSk2NlIMrNmlxUreBXNTIsxMBAFHck2P2y3qyRzaScx+Kf840tcxeMO1k72dw5Zr1qSeLaWYRhYp+5OIXwt1SMKQeUFRqAW0pfERPC1LGJsj8jFui2mpmBWJfC1yDGxJSuWki1SsGckWNJhZhnOWoURjuaKM6gMt0sb48H/nk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209256; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gj+j75kbzZRr8WyC+CT6yCwQ+uVU6b0xjRbHU07xHqI=; b=hb2rp/APHf/o3jmvdjLCTtjy+oL7OgyM/szGIN/cIb+S/2PS6OxY28vsqjRxYn1ZGTLBPtkUqnGWrbTiOvOl5UTMxBT9GZ/EE29ltNR5m7y1QQfQtuUHqNHr5LdDUHicEmM/QBPGvXVLZVL01l9IbPtPUnDt8lzLe2IJ6yIjOhI= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175820925633229.846372982044613; Thu, 18 Sep 2025 08:27:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGWq-00007T-2N; Thu, 18 Sep 2025 11:26:36 -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 1uzGWn-0008ML-7t for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:33 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGWf-0003AT-3F for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:32 -0400 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-680-lLkZIoReOeuGQcxpHKUOVg-1; Thu, 18 Sep 2025 11:26:23 -0400 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-77422201fd8so1231672b3a.1 for ; Thu, 18 Sep 2025 08:26:22 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.26.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:26:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209184; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gj+j75kbzZRr8WyC+CT6yCwQ+uVU6b0xjRbHU07xHqI=; b=UhSuC8+8V//1JGZSPHQHXRvx1J0cc05O70398GPwlUlRxWVYkbkB6N9BzS/XIcsjGoysaK zIil3dHN1VrECy0x6nqknqz2u4C3RYR7O8hpqauxqgeIu32oLdHhKAlkHTp4govFKINt4E MZHN0x7bBRi3pq/8Hn9CJzu2hcqECfg= X-MC-Unique: lLkZIoReOeuGQcxpHKUOVg-1 X-Mimecast-MFC-AGG-ID: lLkZIoReOeuGQcxpHKUOVg_1758209182 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209182; x=1758813982; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gj+j75kbzZRr8WyC+CT6yCwQ+uVU6b0xjRbHU07xHqI=; b=e2+WJdRhAS8eM3nlxqBJ+NxF6bxa3U98GKLAGnpwysRNonrllgt6TIHm9sr5vwPeZl lnt3qnchmtkETykpOInD0zboZb/ploCGWv17rYJ+0gycohnMw7JtSpTtrJ6XVtK2DGE6 XihNJZ0KVdEVr+fzNGl8XYy+f8DI+yt71NnveWL1Ct5uuXB6SGBATyGS+m+J++cjo75f ho610CVVNfDfnl7/rSaUyByASWxe3wLWzv4B5xuwWFdq0GbAfynVrxNQ3zMTRzmQK/AE mUWkaQ5tDBpLwfArNoNSID1wHhUf/JwaF0xyNuylI9yHKyaA7p0kZyvZIFUF7zammwj7 07eA== X-Gm-Message-State: AOJu0YxDs+VOCBOI+M81TivCbUkNiYmJRX5YLf2h3U9p0TRhY9BdNQxz Cf9d6x1pQIJBHd0g0TAZK1e0pp3xIr2JgEZw25Fqe+lHsFU/A2/PWDvoz7dzfrKS+2lgPw83UCk emisJ2nKns1fE6+tQZnNyboG0tASsYfYCU2necYTeahXmlhfaoC4FLW67 X-Gm-Gg: ASbGncvAibBX8NEpm1VIIWw+Hl9OyLPweTxWtFL63io4R+ggSzTZZO2eReECVKvlNyo MrkTujfpxm44GVhVVsp+OTm/avyKpxEb+4N9f566Ov7vAc/wglQQ19iNHWjMdbu+OHpZu45eolb DE+Wga87kX2XIEpU5OYxM1QM1+ror/fGHKcDYM0el0c90St93qwenAXdYavlctcRCl74yTecCwb 5ohAstI7lZUkxf/sk6eWi+rkEjedWGtf2JwIrF4vQfWfIGJvtZnofGL0r2RFqS68ftT86tIoem/ LAG/C/ANrfjl6MuyGK8Bgi3uTx1FYtAdSNrw6bbQw8sLUQ5wG5ovqA== X-Received: by 2002:a05:6a00:2181:b0:777:8ba9:d200 with SMTP id d2e1a72fcca58-77bf71cdfaamr6553695b3a.10.1758209181920; Thu, 18 Sep 2025 08:26:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFp6KYCd4/SsPpOcdd6m93nKWZidNLfzi0DkYN1cS7xdWQLNqWPx2fjecphigKMQ3NqTG0v+Q== X-Received: by 2002:a05:6a00:2181:b0:777:8ba9:d200 with SMTP id d2e1a72fcca58-77bf71cdfaamr6553640b3a.10.1758209181420; Thu, 18 Sep 2025 08:26:21 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:35 +0530 Subject: [PATCH v14 18/27] migration: push Error **errp into loadvm_postcopy_ram_handle_discard() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-18-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4329; i=armenon@redhat.com; h=from:subject:message-id; bh=r7TvIL4ZIDOkRB8HrM5BHB1nfGTyTk+rEFu7cLDvTA4=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R8FQQ8LDYw+nOIXUKvmm3pi/fLH7MsWX/xTvPLwR c3Azpg1HaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACbipMPwh/f05nmb/v10n/ZK +mkBs+3KQNeDqhyL71+avvbWnPCOJw8Y/so4x10WXu/VNf/UtaKM95MeFn9ePDVufi73tAv596d e62AFAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209257852116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_ram_handle_discard() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 3ab20bd3de980ecfd79ab29697e3e1527ab3e73c..01cc186b9e0324053e804c4fede= bee02d8df4052 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2004,7 +2004,7 @@ static int loadvm_postcopy_handle_advise(MigrationInc= omingState *mis, * There can be 0..many of these messages, each encoding multiple pages. */ static int loadvm_postcopy_ram_handle_discard(MigrationIncomingState *mis, - uint16_t len) + uint16_t len, Error **errp) { int tmp; char ramid[256]; @@ -2017,6 +2017,7 @@ static int loadvm_postcopy_ram_handle_discard(Migrati= onIncomingState *mis, /* 1st discard */ tmp =3D postcopy_ram_prepare_discard(mis); if (tmp) { + error_setg(errp, "Failed to prepare for RAM discard: %d", tmp); return tmp; } break; @@ -2026,8 +2027,9 @@ static int loadvm_postcopy_ram_handle_discard(Migrati= onIncomingState *mis, break; =20 default: - error_report("CMD_POSTCOPY_RAM_DISCARD in wrong postcopy state (%d= )", - ps); + error_setg(errp, + "CMD_POSTCOPY_RAM_DISCARD in wrong postcopy state (%d)", + ps); return -1; } /* We're expecting a @@ -2036,29 +2038,30 @@ static int loadvm_postcopy_ram_handle_discard(Migra= tionIncomingState *mis, * then at least 1 16 byte chunk */ if (len < (1 + 1 + 1 + 1 + 2 * 8)) { - error_report("CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", len); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", l= en); return -1; } =20 tmp =3D qemu_get_byte(mis->from_src_file); if (tmp !=3D postcopy_ram_discard_version) { - error_report("CMD_POSTCOPY_RAM_DISCARD invalid version (%d)", tmp); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD invalid version (%d)", = tmp); return -1; } =20 if (!qemu_get_counted_string(mis->from_src_file, ramid)) { - error_report("CMD_POSTCOPY_RAM_DISCARD Failed to read RAMBlock ID"= ); + error_setg(errp, + "CMD_POSTCOPY_RAM_DISCARD Failed to read RAMBlock ID"); return -1; } tmp =3D qemu_get_byte(mis->from_src_file); if (tmp !=3D 0) { - error_report("CMD_POSTCOPY_RAM_DISCARD missing nil (%d)", tmp); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD missing nil (%d)", tmp); return -1; } =20 len -=3D 3 + strlen(ramid); if (len % 16) { - error_report("CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", len); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", l= en); return -1; } trace_loadvm_postcopy_ram_handle_discard_header(ramid, len); @@ -2070,6 +2073,7 @@ static int loadvm_postcopy_ram_handle_discard(Migrati= onIncomingState *mis, len -=3D 16; int ret =3D ram_discard_range(ramid, start_addr, block_length); if (ret) { + error_setg(errp, "Failed to discard RAM range %s: %d", ramid, = ret); return ret; } } @@ -2629,11 +2633,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_postcopy_handle_run(mis, errp); =20 case MIG_CMD_POSTCOPY_RAM_DISCARD: - ret =3D loadvm_postcopy_ram_handle_discard(mis, len); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_ram_handle_discard(mis, len, errp); =20 case MIG_CMD_POSTCOPY_RESUME: loadvm_postcopy_handle_resume(mis); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209651; cv=none; d=zohomail.com; s=zohoarc; b=nk3YNkcW31u5fR//Z7qU4IrrvNkvgbvIQ6Lgl783A5mchV5VjMvvIkB0cUPNHKdTJgYqfIaCfsoGp3p/glZyD9tYIfZZb966+Fbh0JnJ6qR9Auh5734B37rE+ciLyT1TiF38Wi33F1GsA4nQD5lzJafwaXo5DFxR+FqCPFr7Wk0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209651; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yZ5qpT0ubEUqCdewMRwilIH2qM78jxpQ70y0QUZWscE=; b=RyFXS7LWlY6+ZwViz7QzOvvwh9yKeBKF2Dlz8gfB+nI3/plLdsRZDOr/IIw0rTUo5iIWXfnQGMf3J7ejMze2YNd0498X2gy0wAlIzGRlG2WK4x/R5kdfz19E8V1zRgTivYKb98bQiTXSBPGgxJnD4GsOrLsJHhvbHhGQdG6/NX8= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175820965113757.058051061981814; Thu, 18 Sep 2025 08:34:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGWr-0000Dx-8p; Thu, 18 Sep 2025 11:26:37 -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 1uzGWq-0000AY-8m for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:36 -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 1uzGWo-0003Br-7C for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:35 -0400 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-669-GaAQpgFONzqSJ46lMf2o8A-1; Thu, 18 Sep 2025 11:26:32 -0400 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-77ddaa4caabso471676b3a.2 for ; Thu, 18 Sep 2025 08:26:31 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.26.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:26:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209193; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yZ5qpT0ubEUqCdewMRwilIH2qM78jxpQ70y0QUZWscE=; b=Z0Vcy/Uu/VEbhRrnMsPGspruF1rTNQGO7iNQAYTsk76CNGrM77mvZF2Z4X+b92dtCwWxWg XbH44WrVOu5O2MF7idr/iGOT20JsSWbuiNi49/Zz4s3bNV/W0zUN7TyWDxc3LtqTcwstKN /46MFXbHSbY8HrcNJkKxWon+0BNJ6fg= X-MC-Unique: GaAQpgFONzqSJ46lMf2o8A-1 X-Mimecast-MFC-AGG-ID: GaAQpgFONzqSJ46lMf2o8A_1758209191 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209191; x=1758813991; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yZ5qpT0ubEUqCdewMRwilIH2qM78jxpQ70y0QUZWscE=; b=NwLIK4c3Wklc01ApzzHYj+VnoIRjkjpGV6xtQ4dPcDwbcdAHR72MKusyf48T6crkp5 gCl53JBJ7XDy9KzeXKk42dyCTv65M8XZQjwdnjZv6i+hAhEZaLaoltergI/JlLYNafCY AiLuLpKvnzY1+HrtVN8fsllR6K4xuBUN/1QAeA1gDQ7VUnynbJB7ITGfHZhw9uo3iZdV a2yl8N3ezdMUoZvW3r8elvdMOQYFdq9arYmAUp22axjwLtXqXdWIrFMlUaGuP6qo2j1p 8NhiSVcrxMUouN7UIcsVrtkM6btDjBD3wN7gfWRqjgOb6dreqAKbuynGkaxK4IFCqiw8 kwLA== X-Gm-Message-State: AOJu0Yzeeu/4FlCORFJz0NsweR1E/YBNMSG5vbZvui/A8B7EjhUAwyZA gfDA6SqyjBkE6joIWIlTkrwldCia6tY21IgIxARha3JgAWLNCYiyrZZSzWZBWyWvbw3oFFmPmB0 CaVjDrEZWhTha6h3yFAF2YnWUH0XtMxYYAG/bbJvnLXdkv+UV+pGFUSrP X-Gm-Gg: ASbGnctldHzLX7u15hIR3Q1VVr9ZxMw6GDQhBf7dvpz7YDjyFxxZwel9PwUzbFvA/Mb tg2LPQYcyjqEqzKP4eH+RKoivQARszOtFbzjiBQfsLlTqIbraAGEbnIxRICC6iO9c0Vfs3/qmBe f4XWvwzoNrIVdoPJEYbeG7xLSeB+xQgrQmdGP/ZGxrQyPHTygax81qaurXMi18FMgkMMn1rv/4e dbakM8+df75GINisViloLFmWFiutsY+uwMBraf0FAqFN0ngKQ+nI07xX+WO8EpXEQpcoX0kNqXb BDqcXMl6mAMi9S24cbuoeBLgimmyTuQ/mcd454EmHBg5j87EdyZc4Q== X-Received: by 2002:a05:6a00:99b:b0:771:ea51:690e with SMTP id d2e1a72fcca58-77bf9c4d94bmr7352650b3a.20.1758209190760; Thu, 18 Sep 2025 08:26:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGKRRBw1BskaFN7/JIkIFV12GleRGCrEwmRIDIk0wc5g/Y9S2IE3Fj3UYTFFmZtaOxw1DMBPQ== X-Received: by 2002:a05:6a00:99b:b0:771:ea51:690e with SMTP id d2e1a72fcca58-77bf9c4d94bmr7352618b3a.20.1758209190394; Thu, 18 Sep 2025 08:26:30 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:36 +0530 Subject: [PATCH v14 19/27] migration: push Error **errp into loadvm_handle_recv_bitmap() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-19-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2645; i=armenon@redhat.com; h=from:subject:message-id; bh=sWsUM8lShaPXtDP2lf9BQ1xaS+5SyRjp1vtDn8Aau4A=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R953c+DXhZGB1bf9VC5f3fBpslsc/aYXV6wTYP3t ME05b+8HaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACaiW8/wT8X4sI3ZIRZBpQaJ Bbm8HxPE5Vt2VwguM2XNv3Jni+LCXYwMTW8CqhwjuTxqToanTCg1Pf1b+NGm20HOP3Pn7y2YMtu PEwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209652484116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_handle_recv_bitmap() must report an error in errp, in case of failure. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 01cc186b9e0324053e804c4fedebee02d8df4052..13a809564aebf6346228f46fd60= f611ba6104bea 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2476,32 +2476,35 @@ static int loadvm_handle_cmd_packaged(MigrationInco= mingState *mis, Error **errp) * len (1 byte) + ramblock_name (<255 bytes) */ static int loadvm_handle_recv_bitmap(MigrationIncomingState *mis, - uint16_t len) + uint16_t len, Error **errp) { QEMUFile *file =3D mis->from_src_file; RAMBlock *rb; char block_name[256]; size_t cnt; + int ret; =20 cnt =3D qemu_get_counted_string(file, block_name); if (!cnt) { - error_report("%s: failed to read block name", __func__); + error_setg(errp, "failed to read block name"); return -EINVAL; } =20 /* Validate before using the data */ - if (qemu_file_get_error(file)) { - return qemu_file_get_error(file); + ret =3D qemu_file_get_error(file); + if (ret < 0) { + error_setg(errp, "loadvm failed: stream error: %d", ret); + return ret; } =20 if (len !=3D cnt + 1) { - error_report("%s: invalid payload length (%d)", __func__, len); + error_setg(errp, "invalid payload length (%d)", len); return -EINVAL; } =20 rb =3D qemu_ram_block_by_name(block_name); if (!rb) { - error_report("%s: block '%s' not found", __func__, block_name); + error_setg(errp, "block '%s' not found", block_name); return -EINVAL; } =20 @@ -2640,11 +2643,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return 0; =20 case MIG_CMD_RECV_BITMAP: - ret =3D loadvm_handle_recv_bitmap(mis, len); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_handle_recv_bitmap(mis, len, errp); =20 case MIG_CMD_ENABLE_COLO: ret =3D loadvm_process_enable_colo(mis); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209656; cv=none; d=zohomail.com; s=zohoarc; b=PBj5y7+ghVgyXaRH5A9G3dujSXAfgHOKD+vK33t6q6ckgA6wD7y1/N8RpslbDknJRFq8Dg+TWqpH/C3qz8TKoPxIFSFkyPu5OiUq4kZSsVMVNilDLtsXzc3rJbxMJ4Fp7CK5I2aEnNA0GB65GKFfEL4em0x526Fgmls8KKxMzdA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209656; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LB9SXkQgOnyONEMwUfFwYKtNNWRhU5cy/RayQLcVHSg=; b=g0NLgu0AMFhmmhHM0z7/KCR+AqI4Rtte6RGfNMxcPUrX/aMC+M8AyGN+TTn/3sIZYCq43P8BFI7zqpLnOQLRDRoGTfs3Z1BW7rniHIvmMiIKSz0tV6ajibzH/jPB71z+F+nno/haqIjAQA0b+Hxpu6xesYR221gGTQwBugEEhv0= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209656473945.8526101501309; Thu, 18 Sep 2025 08:34:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGX6-0000iD-M5; Thu, 18 Sep 2025 11:26:52 -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 1uzGX0-0000YC-R0 for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:48 -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 1uzGWw-0003DM-UH for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:45 -0400 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-517-iRbIvrEwP9CJjQrFwgQueg-1; Thu, 18 Sep 2025 11:26:40 -0400 Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b5508cb189cso694244a12.2 for ; Thu, 18 Sep 2025 08:26:40 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.26.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:26:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209202; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LB9SXkQgOnyONEMwUfFwYKtNNWRhU5cy/RayQLcVHSg=; b=V39PiIcMc+Q29f0D0l7Jbr8cHSJ2KViv4h6nvlpJrT4ZIihfR0txYWsOIB6tgJiKR5k494 yq+JqwLfWJ3XgQduw+ahjtdOULt18eV/QfQ7EAOWmJhwXBLl/1Dba+cj1KYB4UTX9a/7dr PmuvG0Yw5FxEREPBrXDf6QsaaQmWL2U= X-MC-Unique: iRbIvrEwP9CJjQrFwgQueg-1 X-Mimecast-MFC-AGG-ID: iRbIvrEwP9CJjQrFwgQueg_1758209199 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209199; x=1758813999; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LB9SXkQgOnyONEMwUfFwYKtNNWRhU5cy/RayQLcVHSg=; b=TdIFkwHShGSf0XJ2KFm6wMO5T3peRmyBZWFJHShwqotcxPmMEAHrEJH4jfN4I6Fw0+ EBwI4DiBBw2FSJUpCLbhCocUpjuG8oJAC9+mfTC/yz9gcGYOCOvr7SXOKRs+NERTAD44 SSFoL+jBDc1snRNtX/gC8Am+hjHEgpcZM6qM3AAqXHXKLlJsSls4/42rQw/6bGHr1nIN CrjjINr0lg0AA4nxJknqJL99n460m3tFty0asFGaLLCk37M8Y4dL+xLX8w67xO2eWin/ zMV+SSfq94UbyKCHBtL7bfAjlJteQtFq9gS9hPtqY9MXnBZnM33dCcfD/sueE5p593w5 +fqw== X-Gm-Message-State: AOJu0YxmhHrBM9lOusAQ3Jd4FHtjm+QB8YsGkZYeHBUFBee/WaPRskAC FDgP1HNLrApOltWaOFtvvDXRl4iw8iVkVzb4SNoJz0+iIyqgc4fudb2I9LuI9pzjgC1A18uprJn Xpk3aNaF66jw5nk11WDzQ7LhkuPgI78LWnVpUeNyR/ckPRdDaIUE4/KbG X-Gm-Gg: ASbGncvAWvEZ72WPTt49qarBxo7PaEOoZOQPIgfT00h5feq45J9z9HHjMjTwWdEVCOa 103BEbp0IavpYGZAsx5BFuHtKrAECOvgrQrCYu7Mi9PifiH9oDaIkDMhmDHwmrAP6EnBRahT53l N7jGEQvxubycDciRatyLs+oRfRf6Uqqc1cQhiwazXskhh3MdL3qGfKBquGjSOInufLLLSWvz94x umqkh0lmbz9HemeUKfvLBLSL+8PxaDZUM1l17Tfm6kMhov3q8upMCdYEo2UZMfIryXUZdBw0UXf pCTC5UIQuHYu8FYo3LdgESZ14QVYJOBNJqh8Nw5fBwRcvFm6xFDZRw== X-Received: by 2002:a05:6a20:7288:b0:263:1475:6653 with SMTP id adf61e73a8af0-27a9f543fd7mr8828013637.16.1758209199313; Thu, 18 Sep 2025 08:26:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF15rKsO3NKh6/kOvjW96QpfmCWC5f6jUy2I7Pxr4RjWTKQBL5oAUue+v2LE6C3kpdBsK5l2A== X-Received: by 2002:a05:6a20:7288:b0:263:1475:6653 with SMTP id adf61e73a8af0-27a9f543fd7mr8827952637.16.1758209198844; Thu, 18 Sep 2025 08:26:38 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:37 +0530 Subject: [PATCH v14 20/27] migration: Return -1 on memory allocation failure in ram.c MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-20-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1640; i=armenon@redhat.com; h=from:subject:message-id; bh=LbrL/8rC1j/1roMz22wMr5Cto4+KiN2vW7a+UxDKaz0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R8XGQIqgu/+LFp3+tv11hVc8yx3L7wufXCN+AnxV utZd5R/dJSyMIhxMciKKbI0fA2QbQoojIi0fXkdZg4rE8gQBi5OAZiIxCqG/9kNiz5OK3hYYjBF ZOe3uW0y4UdCN3KvtnHzjXrG82v7oycM/+O+Ze40Yp+78JvCz5B5dydn7Kq+dXen82rPC9Evvwd dqWMCAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209658488116600 The function colo_init_ram_cache() currently returns -errno if qemu_anon_ram_alloc() fails. However, the subsequent cleanup loop that calls qemu_anon_ram_free() could potentially alter the value of errno. This would cause the function to return a value that does not accurately represent the original allocation failure. This commit changes the return value to -1 on memory allocation failure. This ensures that the return value is consistent and is not affected by any errno changes that may occur during the free process. Reviewed-by: Fabiano Rosas Reviewed-by: Peter Xu Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/ram.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/migration/ram.c b/migration/ram.c index 6a0dcc04f436524a37672c41c38f201f06773374..163265a57f26fb1dc88d9797629= d58c278e9afb7 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3575,6 +3575,8 @@ static void colo_init_ram_state(void) * colo cache: this is for secondary VM, we cache the whole * memory of the secondary VM, it is need to hold the global lock * to call this helper. + * + * Returns zero to indicate success or -1 on error. */ int colo_init_ram_cache(void) { @@ -3594,7 +3596,7 @@ int colo_init_ram_cache(void) block->colo_cache =3D NULL; } } - return -errno; + return -1; } if (!machine_dump_guest_core(current_machine)) { qemu_madvise(block->colo_cache, block->used_length, --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209489; cv=none; d=zohomail.com; s=zohoarc; b=T08YrMDaScC07/xnLacgrQoHusR7OD19TI0rDzt2quhhpranH5SQn4lijUMQts/b1WvNVYYEi9+6N+oXS5HRalpQBCAQmgal2h9NzWllOQ+bvKkhBwMb8Ag4ivJcCdMTkWbLmDdNWIqzOLqx4tgnYFOpDqd6JhP8Ue8DlgttME0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209489; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hJPSGag0Qjlv9+IbFHR1Wh7Da0AbXrIq0eHPPw0rJ78=; b=ZqMYO0VNIpP1ns/PvKEkMjSfqzepFY7/fmSDJleg4VLOBfm+u9bGAIP1W+dA/L6XEpSh/gyOBaigCLoAqoSxD+WYUMJEriPlsCVYjPItUUbFVo2GtQuHTsnY9XckN3jSeyGPg2d7qYMptHtGj7yMnfVlJ5Ga07/jUQcjZCkoylY= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209489905304.6855867649797; Thu, 18 Sep 2025 08:31:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGXC-00017o-J5; Thu, 18 Sep 2025 11:26:58 -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 1uzGX8-0000om-64 for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:54 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGX5-0003E3-Az for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:26:53 -0400 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-460-3SrjWYHON5ycZqyaAQpn5A-1; Thu, 18 Sep 2025 11:26:48 -0400 Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-77dab334f78so450849b3a.3 for ; Thu, 18 Sep 2025 08:26:48 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.26.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:26:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209210; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hJPSGag0Qjlv9+IbFHR1Wh7Da0AbXrIq0eHPPw0rJ78=; b=LQanTP3VU/JyVTBBS63bECK+gY+FrhrFKVkFZPlEqnadgITtkVm0tJtezrMtOgs5o5W1FS rtefQreJNkTw7AiWnmvbDh6yKO3jvSFfA4thzlaMDeLuvqzbfxduZaw+/F3FclQLLbdIiw Q7wpSpQsSuLEFKEKNh9HMAdjbIvj70I= X-MC-Unique: 3SrjWYHON5ycZqyaAQpn5A-1 X-Mimecast-MFC-AGG-ID: 3SrjWYHON5ycZqyaAQpn5A_1758209208 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209208; x=1758814008; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hJPSGag0Qjlv9+IbFHR1Wh7Da0AbXrIq0eHPPw0rJ78=; b=Z5jkCpTTlIdChJ5HkhpRuUm6B2nXaw/GvxQFEi/99OpWFKW4dzj+SkTJ6aI3VmeuWv Syt2qHZxJ68Cx5Oz2VB+UFQCqDt1QXOsgHlfvSrhWApFT/biQFcWWCNQtXWeZtduMrDK 2H0TF27iDYecDKwuz4yH4gtmEj36hbyI/7XBPQQJB6JufmMZjy9XJ1rHJXtd96djyRyU JvyP4W+/MLkch7McYf8/FrnUNdpbQ6GDnGv+OzVu5yUhrUdWLRxitxT3HJXcjbMZVLy1 Xxf8X8iyDVypqnS8zx3TrI/BbG5/SL4DuUGc+/V4iLncflvwuVuiKgEsP1NfhSId55In 6MjA== X-Gm-Message-State: AOJu0YyR1ee7P+8450NNdd8AuUsKTciITOwd622xNWPOnH3C77RY7A2A k3HhprqUmYjmoKcI0E5Gav0JLPggd2k17ybBCTCGFUQscP+XmxUVhDl2bstGbZXx/G8yxrgSzka OMkTRV1+F2Goq9p+Dc6ad1WHfLRWUTxU+pQJjUbN/mqlPVVGML5dW16NI X-Gm-Gg: ASbGncuLo6D+lUH+GfeQ70Ege3017u0RwJPmXEJcK32+TMYvx1iPsHS9uoalWa26urQ IC0AQcFe8/saMyW3qHDEbk3D1tyOZfaTnERGJxDgxPT6MVbaeWaLtrUlz2P9NOZXHlcEm5MoEAD 63dlAUDw65qXhMz3RLibJmiEWZVgPUyiLL3qQqjm3GidhU3vxCKEsQkLY3akt+YVz0kEQ3Txb/o a+KOjTVV4m9LAWi7TeIm8MVPDfI8OqaFo0z1Kwp8ClwHxKu8iOknI8c6itAVdIpxHNmYDHHQgHj Ka1PokJX0Xvk5f4RcZuJOa700PLqS8xpZ6C0/kPTNTqtu7oDPXrfJg== X-Received: by 2002:a05:6a20:2443:b0:253:2fae:5291 with SMTP id adf61e73a8af0-27aa1e62df2mr9640057637.29.1758209207754; Thu, 18 Sep 2025 08:26:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEil1nSM7Za4+Dq1ZKXMd7wBNWkzFLqwXQm4kJozI1bjGEi4sykjWy4izr3AN/N8ZZmoyKi1A== X-Received: by 2002:a05:6a20:2443:b0:253:2fae:5291 with SMTP id adf61e73a8af0-27aa1e62df2mr9640000637.29.1758209207337; Thu, 18 Sep 2025 08:26:47 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:38 +0530 Subject: [PATCH v14 21/27] migration: push Error **errp into loadvm_process_enable_colo() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-21-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6000; i=armenon@redhat.com; h=from:subject:message-id; bh=+LtLa1s3KBCwKzISTFaaE+ziTA/jwk32Bx4Oc//mt74=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R/pLEHsZ8LTO39u5LMOZznwut7uzdawVJ6yKZeFP YwU+Js6SlkYxLgYZMUUWRq+Bsg2BRRGRNq+vA4zh5UJZAgDF6cATKTuOSPD1kz7vQ8lzT9+7+L9 yFVxO+at5Zy76zeLcLTF2Mzb8sO4neG/T3X94QsZy9+cnPVONPVXfNI3vxlSlRMrj6XplW0RnFT KCQA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 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: 1758209496336116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_process_enable_colo() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- include/migration/colo.h | 2 +- migration/migration.c | 12 ++++++------ migration/ram.c | 8 ++++---- migration/ram.h | 2 +- migration/savevm.c | 26 ++++++++++++++------------ 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/include/migration/colo.h b/include/migration/colo.h index 43222ef5ae6adc3f7d8aa6a48bef79af33d09208..d4fe422e4d335d3bef4f860f564= 00fcd73287a0e 100644 --- a/include/migration/colo.h +++ b/include/migration/colo.h @@ -25,7 +25,7 @@ void migrate_start_colo_process(MigrationState *s); bool migration_in_colo_state(void); =20 /* loadvm */ -int migration_incoming_enable_colo(void); +int migration_incoming_enable_colo(Error **errp); void migration_incoming_disable_colo(void); bool migration_incoming_colo_enabled(void); bool migration_incoming_in_colo_state(void); diff --git a/migration/migration.c b/migration/migration.c index 16250faed91781843a572fe1ad4d71a37a2847a4..5d17e65bbf4c044ad9aac0f5f3f= c9f5fefd71230 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -623,22 +623,22 @@ void migration_incoming_disable_colo(void) migration_colo_enabled =3D false; } =20 -int migration_incoming_enable_colo(void) +int migration_incoming_enable_colo(Error **errp) { #ifndef CONFIG_REPLICATION - error_report("ENABLE_COLO command come in migration stream, but the " - "replication module is not built in"); + error_setg(errp, "ENABLE_COLO command come in migration stream, but th= e " + "replication module is not built in"); return -ENOTSUP; #endif =20 if (!migrate_colo()) { - error_report("ENABLE_COLO command come in migration stream, but x-= colo " - "capability is not set"); + error_setg(errp, "ENABLE_COLO command come in migration stream" + ", but x-colo capability is not set"); return -EINVAL; } =20 if (ram_block_discard_disable(true)) { - error_report("COLO: cannot disable RAM discard"); + error_setg(errp, "COLO: cannot disable RAM discard"); return -EBUSY; } migration_colo_enabled =3D true; diff --git a/migration/ram.c b/migration/ram.c index 163265a57f26fb1dc88d9797629d58c278e9afb7..a8e8d2cc6790336625de626fee0= 70ecc51327200 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3578,7 +3578,7 @@ static void colo_init_ram_state(void) * * Returns zero to indicate success or -1 on error. */ -int colo_init_ram_cache(void) +int colo_init_ram_cache(Error **errp) { RAMBlock *block; =20 @@ -3587,9 +3587,9 @@ int colo_init_ram_cache(void) block->colo_cache =3D qemu_anon_ram_alloc(block->used_length, NULL, false, false); if (!block->colo_cache) { - error_report("%s: Can't alloc memory for COLO cache of blo= ck %s," - "size 0x" RAM_ADDR_FMT, __func__, block->idst= r, - block->used_length); + error_setg(errp, "Can't alloc memory for COLO cache of " + "block %s, size 0x" RAM_ADDR_FMT, + block->idstr, block->used_length); RAMBLOCK_FOREACH_NOT_IGNORED(block) { if (block->colo_cache) { qemu_anon_ram_free(block->colo_cache, block->used_= length); diff --git a/migration/ram.h b/migration/ram.h index 275709a99187f9429ccb4111e05281ec268ba0db..24cd0bf585762cfa1e86834dc03= c6baeea2f0627 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -109,7 +109,7 @@ void ramblock_set_file_bmap_atomic(RAMBlock *block, ram= _addr_t offset, bool set); =20 /* ram cache */ -int colo_init_ram_cache(void); +int colo_init_ram_cache(Error **errp); void colo_flush_ram_cache(void); void colo_release_ram_cache(void); void colo_incoming_start_dirty_log(void); diff --git a/migration/savevm.c b/migration/savevm.c index 13a809564aebf6346228f46fd60f611ba6104bea..8e891243dc1e7f5d3bc3a4326c6= c4a2f5c32e1a2 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2515,15 +2515,21 @@ static int loadvm_handle_recv_bitmap(MigrationIncom= ingState *mis, return 0; } =20 -static int loadvm_process_enable_colo(MigrationIncomingState *mis) +static int loadvm_process_enable_colo(MigrationIncomingState *mis, + Error **errp) { - int ret =3D migration_incoming_enable_colo(); + ERRP_GUARD(); + int ret; =20 - if (!ret) { - ret =3D colo_init_ram_cache(); - if (ret) { - migration_incoming_disable_colo(); - } + ret =3D migration_incoming_enable_colo(errp); + if (ret < 0) { + return ret; + } + + ret =3D colo_init_ram_cache(errp); + if (ret) { + error_prepend(errp, "failed to init colo RAM cache: %d: ", ret); + migration_incoming_disable_colo(); } return ret; } @@ -2646,11 +2652,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_handle_recv_bitmap(mis, len, errp); =20 case MIG_CMD_ENABLE_COLO: - ret =3D loadvm_process_enable_colo(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_process_enable_colo(mis, errp); =20 case MIG_CMD_SWITCHOVER_START: ret =3D loadvm_postcopy_handle_switchover_start(); --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209446; cv=none; d=zohomail.com; s=zohoarc; b=YQCtbsqWjKN0H71gj9Vgj0q0PBIU79Fs8FQYntqFgKl48V1brHkYTsR6lkFd9b2ltTr+80Oh7OS5RGGaC2Z2hXdXAmD7zZQ+jlZtR3FytQgQmapCf6JDgk9N1sPSOYE622cnYtuTk8Hd3FetYJ93QoilRiujp2CDHRQk3nVFaQ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209446; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wRbqiAPNISkqVRppZsP2Vwbcn9nh/EQ6BOnJNHC9Ojs=; b=UdOSgb+fReAVr8qAcF6LRqpjY5sbbHJps3iPD7opivJuIZuzXBgktNj7Hsir9qUY5K0EcbwEcjz82sVJmwxfTgTR8mnOu+JTpJwsHGNLy9ran9xVCpJUcOfyFJLJDcIM+kJC5oU4RghjK7G+6g0DNpvTkyKcopL8OyJz0vvK97Y= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175820944613343.882727255483246; Thu, 18 Sep 2025 08:30:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGXP-0001dI-AT; Thu, 18 Sep 2025 11:27:11 -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 1uzGXF-0001MD-Sn for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:01 -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 1uzGXD-0003Gm-Uj for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:01 -0400 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-15-UKIscowsOcKup7Jq1z2Jcg-1; Thu, 18 Sep 2025 11:26:57 -0400 Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-77b73bddbdcso1244208b3a.1 for ; Thu, 18 Sep 2025 08:26:57 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.26.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:26:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209218; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wRbqiAPNISkqVRppZsP2Vwbcn9nh/EQ6BOnJNHC9Ojs=; b=hLV58RsgzsezSpk6ucySqGdPJanP7mTHrWgaYJwozKarsQwr1ohH3++W3ClwvwKnlvSGtl 6mScdGHwBdT58kFqD9Kr4ifhe+kBao56lRkez4oOLHb+v8/uyDt26bfx4UT6NQJDlw1iSV 6JX1dZWJO09k7T3+0pJ1QkKcfigS4d8= X-MC-Unique: UKIscowsOcKup7Jq1z2Jcg-1 X-Mimecast-MFC-AGG-ID: UKIscowsOcKup7Jq1z2Jcg_1758209217 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209216; x=1758814016; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wRbqiAPNISkqVRppZsP2Vwbcn9nh/EQ6BOnJNHC9Ojs=; b=GRm0VeVfRMW34nx1mPxEkHubLQvwBxJwV2PQ5hHgKDDeiTiyIW1vy9+QgcbwET6/MM jMcYXMj3y+ok0RDnGpnfk7Nl//xqGFM3ajc/7xFiIazQEV1/ah76XGHSIWIv2coKFR14 MMBGXAV3I3nRUIwu2I+gqo1Zm55urppKIMBE3oqkdhbLqrTSOhWx8LoKftEMNv/y+G3g xHEGvJJXzFyrVDcG9sez+VmOylZ6xRf52QJ/2ZcDpwOTWg85ltIxrzU0Jy2HLkYzIOw9 hFQMl0RrRyvChB/6NLFMiM17pJvEfL5WjPzDaVZ7NgCUsVoKtspXVI2xtLnU1lwlwaR9 TPaw== X-Gm-Message-State: AOJu0Yxo6lRtCjOSkeJSuMqVIyhOsLLqAu/7eoS1H0SSnZMiJm1DSYRs 8EhQCQ1BeMKFh9QYJiPsTJCrUEGWXR3XLQVVN746U+x75qTbTlrKVRpdyw0PYNdlDGRbPLlA7VV UH7za2i3zBJgLNcdGsxPN7wWBneWod4qSuUDSOof6rY5Pdk3AoF/v0Vrf X-Gm-Gg: ASbGncuL6UvqXF6nnp50r9NCFQ1aN5svjzHg/rhdiiEm5zPO4Haes755NeVeWMdiQRf Kp3KPiT/vOTw3biUqm8ZlZQjzKVEDKDXsQSk+mWOMKGHGHZ13iTQBfogirw2SydNOGsb7ILAjQY 72xpThCrYab17SJtjcpUH6W8kQBJj6HYinNA3h9dDKiA5mtdK0PGNtV2x/fIjXCV2uCcmiAPHPC IaFvLSlNAPsZZLxnY8UsuyU6X6cPVh+ZzTsXXbI4vyp+Ht2TZ7NKZaf8601vbvK5hwmnnWUwZ25 0FYz/yF1wzxowPXpIID0x2Agb0DAGNyCAtarD7uczwF28V/vgPLDjQ== X-Received: by 2002:a05:6a00:4a07:b0:772:6bee:9ff4 with SMTP id d2e1a72fcca58-77ce050d597mr3208402b3a.5.1758209216590; Thu, 18 Sep 2025 08:26:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGGr6LusWLuwq56qkztQyHByRvQKkTaC4b2GsSVfCnPWR844zG4OWuIeFom70xJ6zhMmcOYDQ== X-Received: by 2002:a05:6a00:4a07:b0:772:6bee:9ff4 with SMTP id d2e1a72fcca58-77ce050d597mr3208366b3a.5.1758209216201; Thu, 18 Sep 2025 08:26:56 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:39 +0530 Subject: [PATCH v14 22/27] migration: push Error **errp into loadvm_postcopy_handle_switchover_start() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-22-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1747; i=armenon@redhat.com; h=from:subject:message-id; bh=x/yKec8YqQYPuuXzcHNbQkCBg0poQ6E8l/qo+33kxFQ=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R+9DVsYDwv83SW99QGn/x9H5rUSensNNm8+6+azl 2npU6b5HaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACayQIDhv49xHq/2s0vbt0xL knfflBbaml+te/7zKRuP9XuPnmMubGT4zVan9vyhxJtH39rk90k9nXdPT8flvd2Rjt2N3gvlngf u4wQA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209447748116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_switchover_start() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 8e891243dc1e7f5d3bc3a4326c6c4a2f5c32e1a2..b0fd51d0f142c30ce21bdc02204= ce947283fea49 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2534,7 +2534,7 @@ static int loadvm_process_enable_colo(MigrationIncomi= ngState *mis, return ret; } =20 -static int loadvm_postcopy_handle_switchover_start(void) +static int loadvm_postcopy_handle_switchover_start(Error **errp) { SaveStateEntry *se; =20 @@ -2547,6 +2547,7 @@ static int loadvm_postcopy_handle_switchover_start(vo= id) =20 ret =3D se->ops->switchover_start(se->opaque); if (ret < 0) { + error_setg(errp, "Switchover start failed: %d", ret); return ret; } } @@ -2655,11 +2656,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_process_enable_colo(mis, errp); =20 case MIG_CMD_SWITCHOVER_START: - ret =3D loadvm_postcopy_handle_switchover_start(); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_switchover_start(errp); } =20 return 0; --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209483; cv=none; d=zohomail.com; s=zohoarc; b=G8RmMDa3dehBFF9kzknd0U6bA00WL/QXtIpvmMqmqOgisBmTA7p6H8sexPWtOA3hkOwxRKlqMAGE2ho/DkiKg2s9EmifF1yW2MCwaHxRVjmlnbUkLCv9Qj4/04GRzgrh84VQz/ISPrrGTFPCpJu09FOB5qKxoZJKqFr1cPg/A1Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209483; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ex70HvFHCA+0PjVijQlAjy4Lm+10k8XimyJ545WFrYo=; b=SWL7GwwV/HSYEoBAhpEsk25CCwtgmxAEPpKWMc6NHjhrftjp9dxyG78WcFj5Z6p2fFVVK3ZVtQzotX88zb2qywm2FA36eXt2ypcy3CyKYo+t0Cjta/K+LqmJeiCOFQp9eXGNODGZXx2eF1tuBqNQb1S7rhAT+YeWQdiIU+1w/MI= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175820948347424.46597988893916; Thu, 18 Sep 2025 08:31:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGXQ-0001le-Dr; Thu, 18 Sep 2025 11:27:14 -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 1uzGXP-0001dB-3p for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:11 -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 1uzGXN-0003LQ-3a for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:10 -0400 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-27-iheU-HeiOxKdHmT3d41tSA-1; Thu, 18 Sep 2025 11:27:06 -0400 Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-77df7f0d7a3so284170b3a.2 for ; Thu, 18 Sep 2025 08:27:06 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.26.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:27:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209227; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ex70HvFHCA+0PjVijQlAjy4Lm+10k8XimyJ545WFrYo=; b=cXoP2JJOl7UwPCe2THd1XeQg73J6M6wIF58iCuR62bM2/BNCGQ83cMGCy1xOg4lra0Icnl imOWUDsfguBKBxrYasBjXmMRDrM4+CSauZ5DCn3XlR6YHPT+y/8QMkNohIg45sK07kStw3 1NsXWifxFW32oreXHNKjmDNADzQArCE= X-MC-Unique: iheU-HeiOxKdHmT3d41tSA-1 X-Mimecast-MFC-AGG-ID: iheU-HeiOxKdHmT3d41tSA_1758209225 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209225; x=1758814025; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ex70HvFHCA+0PjVijQlAjy4Lm+10k8XimyJ545WFrYo=; b=Zh3cohye1vgKckyA/BtZsg8Mf+Wed1XaMis9ZwZbSthPo/rntzFRFuGuOc41SvNebR 1bTeVK9e/vtFg1Ky1XtOIXHudTduVK7VO/sdK3etrXfrn33evGCpPhs2b0aJSPAYTmee BdmIXgdSi3cFtFJMm3FfYlMHgOF8EYaqMPl25mYUZlsjlTU+Ct+pVpLB560SwFqT79qL /+uxBjyMoM18e6aDxbgTnWz4tK0D65xc1VNq59Cu32JDTOubjM4ph/+GYodi0Fh2PPDN slFIs0ThzHAXoOgHZlsBi0rxH9RrXjAxGxIGJ6n2/oyIvsW7uxhCsjB1UiZ8tc2wYMsI ZyUQ== X-Gm-Message-State: AOJu0YyZBCYGLMZ6PDrogFpxKKD8WuvwAdSHRL2okd8z/niL/uFfGljT xIo0i91wRQQmNI2IH4f4IjvLW3Lk8tl5y5Q6I+qHR05jc5JNDdDhQljTq4rWgTVd+PziMa66JK3 wBTQ5rt3RC/UvdBtFchjA5n2FmNoBu3ohr9R9HT/8rjJ0Debu4rxDn9Ji X-Gm-Gg: ASbGncsJVdQmSYOxMOc0V0F4GLIiD1oWN18TrggEtU8fsgKTjvR0/M3we3H2mz5ZG+8 wYts0QXmq9PZY2ftxXmNgiMG1Hyp3OpkxZ39LQfSonF9ggG8uUEakm2KR/KTR+JTzGGho4qwqi5 EakzN/JHab9RVbxru3yaA76M09IORoC+y9UC4z1DisrZ2U79KHsMwh/VTKVkByw/V+sgf6I+iln TSj5uflQRsyxgQzDwh3j+ZA10yPahG9Vy58/IaaFX7lWSvfWn7Le/L59pLMVWKTLW2lT0EQgK4b bShZUHMJfbJkJL/qADuI7q8IbKQOaWFDPYSCsT5HirxFnVEnR6kzxQ== X-Received: by 2002:a05:6a00:3c95:b0:770:343b:5457 with SMTP id d2e1a72fcca58-77bf926836cmr6879150b3a.16.1758209225201; Thu, 18 Sep 2025 08:27:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFptHNEH9tCswXZHG2989Rs4/bM38KSXM8njI1sTSjzTP5FFJDpvoHgN/7DxjhUWdGBd3ATxA== X-Received: by 2002:a05:6a00:3c95:b0:770:343b:5457 with SMTP id d2e1a72fcca58-77bf926836cmr6879099b3a.16.1758209224779; Thu, 18 Sep 2025 08:27:04 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:40 +0530 Subject: [PATCH v14 23/27] migration: Capture error in postcopy_ram_listen_thread() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-23-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2083; i=armenon@redhat.com; h=from:subject:message-id; bh=dpJRFzd7gm8KScLE3AM8NwdARIO3OP6+DoU1jE8PGBM=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5R+7/CLWHG3a2ZqctLtjyjUD7Vfaq7ea3X7F+m2yw k2/lPKzHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACbiYcnwT3H+thUT+C4vP+QX Pyu/SnOhc6zFK+3fs59HeAsxrAn5sZWRYf+jHasnaa5uLmxb57vbc0XvoowGI6EJDeWTJN+p675 VYwMA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 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: 1758209484348116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. postcopy_ram_listen_thread() calls qemu_loadvm_state_main() to load the vm, and in case of a failure, it should set the error in the migration object. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- migration/savevm.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index b0fd51d0f142c30ce21bdc02204ce947283fea49..71f4d8399349934134c2c02609d= 3ede6f61754f8 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2095,6 +2095,7 @@ static void *postcopy_ram_listen_thread(void *opaque) QEMUFile *f =3D mis->from_src_file; int load_res; MigrationState *migr =3D migrate_get_current(); + Error *local_err =3D NULL; =20 object_ref(OBJECT(migr)); =20 @@ -2111,7 +2112,7 @@ static void *postcopy_ram_listen_thread(void *opaque) qemu_file_set_blocking(f, true); =20 /* TODO: sanity check that only postcopiable data will be loaded here = */ - load_res =3D qemu_loadvm_state_main(f, mis, &error_fatal); + load_res =3D qemu_loadvm_state_main(f, mis, &local_err); =20 /* * This is tricky, but, mis->from_src_file can change after it @@ -2137,7 +2138,10 @@ static void *postcopy_ram_listen_thread(void *opaque) __func__, load_res); load_res =3D 0; /* prevent further exit() */ } else { - error_report("%s: loadvm failed: %d", __func__, load_res); + error_prepend(&local_err, + "loadvm failed during postcopy: %d: ", load_res); + migrate_set_error(migr, local_err); + error_report_err(local_err); migrate_set_state(&mis->state, MIGRATION_STATUS_POSTCOPY_ACTIV= E, MIGRATION_STATUS_FAILED); } --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209576; cv=none; d=zohomail.com; s=zohoarc; b=F0uXXLUBiwu0gUewJR+GVDzPyUr5Z9anoubPTsjqOB41htr6xevo66a0SCCoR5B0fClmMHyIyEQYelWn2JWOPHXabhdzrQMhNU5RUVhlQSidyUInf4DOwxNrJGVHqnugsncIZPIM8pQvxPbjWvpJ6GEshEE5EO6ydVbnOu95Y+Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209576; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UfXACdHX424v068Gb+PfJPTjTfM4gSMp0qs18KTh55c=; b=lvKwJO0SK2IZX4xKf4g0Ex98OsfI3cXi4z94BFw6gHAKxrFgsYAm6XRoFnnJ+qLK/umf55fvAPIjUu9QSFTnot8Cfi9R/mMlReU2k66pdTlSI6s0eIc/YxQuWqR3+tWafaYJRH7LKTPNTvKUBqUn2h0A5D6YJ2MQ5HP6BfXz9fs= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209576585945.2354653373395; Thu, 18 Sep 2025 08:32:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGXe-0002dS-I9; Thu, 18 Sep 2025 11:27:26 -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 1uzGXb-0002YR-Pz for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:23 -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 1uzGXY-0003N6-QS for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:23 -0400 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-683-WQNai_WkPTy2qFRjBZgYRg-1; Thu, 18 Sep 2025 11:27:17 -0400 Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-77df7f0d7a3so284319b3a.2 for ; Thu, 18 Sep 2025 08:27:16 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.27.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:27:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209239; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UfXACdHX424v068Gb+PfJPTjTfM4gSMp0qs18KTh55c=; b=Ltq42VPJ8km3/CLWl7hUmsodOb4n9Had6vK5crfK+p9mdULe3M26yP7gGVXTtWBylr8RDB +CaSUIqjmtYkehiBw7Rr/lOtJwGAIALjLTFg00O/OfJh8uo2n2SRAMNOqAOC9L2BNjno6f qB1hWFxTfSkBb4Rwh2Asb/IMVURx2sA= X-MC-Unique: WQNai_WkPTy2qFRjBZgYRg-1 X-Mimecast-MFC-AGG-ID: WQNai_WkPTy2qFRjBZgYRg_1758209235 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209235; x=1758814035; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UfXACdHX424v068Gb+PfJPTjTfM4gSMp0qs18KTh55c=; b=JzIbpSxFV0MZ9qY8QHz4PVLrXgGbuRGJOPpXHEZ4+HIEvr6W4XoxjJUJWwULLGmsmb vVqmHUTmywNpm04o+cmUt7to8QSz/9FolhpJ12zBSDH9OLlFTHv7M3I5McTQNRKPNn+4 LVaeYymY2gJf9p3fFYgEiyW/OJ0NYPDHtkFdjyB/iR03wlDP12oiSbNT0Gl5ULDYr4I5 lHyruGhDtys7ZSWnHiIs0ksPZyFv4Sr/9QAAq7VBeOUArffNneC+G9nAIAb6KRt8xggb wBCU9SKXLLYLSwPpTIb5M22MR5rYOSU16fiiOvmJ9nCcVRK4HxVkrKVQMKqpj6rJF172 0xZA== X-Gm-Message-State: AOJu0Yz457m++3P8FWaPSDyD8ixrExkb4B6G4bdxYLUmEimiy9ckZQWX +zuitKqXMPvphdAIlou9aRAmPvSLZCiy6AKai4Uqs2OEOVqsjx2SYsc3VakWSPnrjejCu78fABl 0fWGFNXV7MLdwQbJIYaUf5lVkeeH+o7qiC2FGy1JzUDs7zcmKy7JEmJFp X-Gm-Gg: ASbGncv5noh8pzATEUwdAQ4NdQwvXXDSWAv8vt8Px3EVJ3dmL7dEuWWLESHqimc5cVu 2LRpLAlHdx/h66zkewYF+0gHrMF6XdFcDCYxF/Aq+XRhxLGCLaMLzijizV8g2VumAtAQ8K9ifyp cXQqjZz7YA/I97rOso8/QoYzkBtus2Stel3QNcDUa2dXSd0PvUlgGc9hzfN8lY1TA7/YXcZmXCo 2IaQkMnf8pjKRNWWNLvcFpzbO9bkOuc+ZmH3FwM3zfLmkn+DLw0GSirRi0nHaTijwDSA5Q/TzWq ZrQLuM1S5ypIdOxaolTBo2+jnb6ldQsrl8Wv/XdNMBSI6Bfb6GAWmg== X-Received: by 2002:a05:6a21:6d9a:b0:243:966e:21a with SMTP id adf61e73a8af0-27aa3cf636dmr10256883637.36.1758209234943; Thu, 18 Sep 2025 08:27:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFmNPp5TFV0ItV4h/WBAG18DsxHilhUJQ9ZNHoylkG+wACYbfzF2/6IxZXCaEsBCtrF8rQTpQ== X-Received: by 2002:a05:6a21:6d9a:b0:243:966e:21a with SMTP id adf61e73a8af0-27aa3cf636dmr10256820637.36.1758209234446; Thu, 18 Sep 2025 08:27:14 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:41 +0530 Subject: [PATCH v14 24/27] migration: Remove error variant of vmstate_save_state() function MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-24-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=18020; i=armenon@redhat.com; h=from:subject:message-id; bh=9GoF2fjt3rH9A4WAioi2fxa1GUj89xvGsQGNRvzsXsw=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5Z/6Wu8Nk/IlmHV4HQ2zTjwTNt+1i/8c68M7BX5qC n4ZtQc7SlkYxLgYZMUUWRq+Bsg2BRRGRNq+vA4zh5UJZAgDF6cATKR3KyPDqS+m5zfm1ylpefEc 3MK+2+rg6sx6JVnL0nqRc12WMxxfMjK8XLAmN+aQaYLM6Qc+n33y2ieWVH8SVMv8837GgdRUjUW MAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209577933116600 This commit removes the redundant vmstate_save_state_with_err() function. Previously, commit 969298f9d7 introduced vmstate_save_state_with_err() to handle error propagation, while vmstate_save_state() existed for non-error scenarios. This is because there were code paths where vmstate_save_state_v() (called internally by vmstate_save_state) did not explicitly set errors on failure. This change unifies error handling by - updating vmstate_save_state() to accept an Error **errp argument. - vmstate_save_state_v() ensures errors are set directly within the errp object, eliminating the need for two separate functions. All calls to vmstate_save_state_with_err() are replaced with vmstate_save_state(). This simplifies the API and improves code maintainability. vmstate_save_state() that only calls vmstate_save_state_v(), by inference, also has errors set in errp in case of failure. The errors are reported using error_report_err(). If we want the function to exit on error, then &error_fatal is passed. Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- hw/display/virtio-gpu.c | 3 ++- hw/pci/pci.c | 2 +- hw/s390x/virtio-ccw.c | 2 +- hw/scsi/spapr_vscsi.c | 2 +- hw/vfio/pci.c | 4 ++-- hw/virtio/virtio-mmio.c | 2 +- hw/virtio/virtio-pci.c | 2 +- hw/virtio/virtio.c | 6 ++++-- include/migration/vmstate.h | 2 -- migration/cpr.c | 3 +-- migration/savevm.c | 11 ++++++++--- migration/vmstate-types.c | 25 ++++++++++++++++++------- migration/vmstate.c | 10 ++-------- tests/unit/test-vmstate.c | 20 +++++++++++++++++--- ui/vdagent.c | 3 ++- 15 files changed, 61 insertions(+), 36 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 5dc31bc6bfb0272e29a4364ab10de2595a4bedf7..477ec700a130d77ad93346c264b= b7eaa8bca76d5 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1246,7 +1246,8 @@ static int virtio_gpu_save(QEMUFile *f, void *opaque,= size_t size, } qemu_put_be32(f, 0); /* end of list */ =20 - return vmstate_save_state(f, &vmstate_virtio_gpu_scanouts, g, NULL); + return vmstate_save_state(f, &vmstate_virtio_gpu_scanouts, g, NULL, + &error_fatal); } =20 static bool virtio_gpu_load_restore_mapping(VirtIOGPU *g, diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 17715ca1b34c9c9e777be9b86cfc5405087df7fd..5e2c3c6fc2d33444c2f826620f2= e5cdba604cca8 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -926,7 +926,7 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) * This makes us compatible with old devices * which never set or clear this bit. */ s->config[PCI_STATUS] &=3D ~PCI_STATUS_INTERRUPT; - vmstate_save_state(f, &vmstate_pci_device, s, NULL); + vmstate_save_state(f, &vmstate_pci_device, s, NULL, &error_fatal); /* Restore the interrupt status bit. */ pci_update_irq_status(s); } diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index 6a9641a03d5d3a38a4de7ceb9deffc0cc303bcff..4cb1ced001ae241c53c503ebfd7= c90e336799c37 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1130,7 +1130,7 @@ static int virtio_ccw_load_queue(DeviceState *d, int = n, QEMUFile *f) static void virtio_ccw_save_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL); + vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL, &error_fatal= ); } =20 static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index da173f48676395cc02bd00cb3efa248afed4581b..f0a7dd2b882a13deec4a4c6d2eb= 4aae6d2fdbeb9 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -630,7 +630,7 @@ static void vscsi_save_request(QEMUFile *f, SCSIRequest= *sreq) vscsi_req *req =3D sreq->hba_private; assert(req->active); =20 - vmstate_save_state(f, &vmstate_spapr_vscsi_req, req, NULL); + vmstate_save_state(f, &vmstate_spapr_vscsi_req, req, NULL, &error_fata= l); =20 trace_spapr_vscsi_save_request(req->qtag, req->cur_desc_num, req->cur_desc_offset); diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 016fad8ac693ffd1e6f178887eee1cb06917a9a4..e9766a31d09b106731a4201a03b= 2be14216e1c03 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2825,8 +2825,8 @@ static int vfio_pci_save_config(VFIODevice *vbasedev,= QEMUFile *f, Error **errp) { VFIOPCIDevice *vdev =3D container_of(vbasedev, VFIOPCIDevice, vbasedev= ); =20 - return vmstate_save_state_with_err(f, &vmstate_vfio_pci_config, vdev, = NULL, - errp); + return vmstate_save_state(f, &vmstate_vfio_pci_config, vdev, NULL, + errp); } =20 static int vfio_pci_load_config(VFIODevice *vbasedev, QEMUFile *f) diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 0a688909fc606a3c9fde933667ae8c309ab527d0..fb58c36452730cfc92a0d26ff13= e01e2d6654960 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -613,7 +613,7 @@ static void virtio_mmio_save_extra_state(DeviceState *o= paque, QEMUFile *f) { VirtIOMMIOProxy *proxy =3D VIRTIO_MMIO(opaque); =20 - vmstate_save_state(f, &vmstate_virtio_mmio, proxy, NULL); + vmstate_save_state(f, &vmstate_virtio_mmio, proxy, NULL, &error_fatal); } =20 static int virtio_mmio_load_extra_state(DeviceState *opaque, QEMUFile *f) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index b04faa1e5c91b5cef40e54ec41d92422d16bfc13..d2595fbd55151aba2579bb01a59= 577c1a40b71e0 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -154,7 +154,7 @@ static void virtio_pci_save_extra_state(DeviceState *d,= QEMUFile *f) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy(d); =20 - vmstate_save_state(f, &vmstate_virtio_pci, proxy, NULL); + vmstate_save_state(f, &vmstate_virtio_pci, proxy, NULL, &error_fatal); } =20 static int virtio_pci_load_extra_state(DeviceState *d, QEMUFile *f) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 018803c80d13107eb4e5e63914f9c1f837ab1b19..0a68f1b6f1ddb97a968c9c03ed4= f37a38484d2f9 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -2992,6 +2992,7 @@ int virtio_save(VirtIODevice *vdev, QEMUFile *f) VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(vdev); uint32_t guest_features_lo =3D (vdev->guest_features & 0xffffffff); int i; + Error *local_err =3D NULL; =20 if (k->save_config) { k->save_config(qbus->parent, f); @@ -3035,14 +3036,15 @@ int virtio_save(VirtIODevice *vdev, QEMUFile *f) } =20 if (vdc->vmsd) { - int ret =3D vmstate_save_state(f, vdc->vmsd, vdev, NULL); + int ret =3D vmstate_save_state(f, vdc->vmsd, vdev, NULL, &local_er= r); if (ret) { + error_report_err(local_err); return ret; } } =20 /* Subsections */ - return vmstate_save_state(f, &vmstate_virtio, vdev, NULL); + return vmstate_save_state(f, &vmstate_virtio, vdev, NULL, &error_fatal= ); } =20 /* A wrapper for use as a VMState .put function */ diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 056781b1c21e737583f081594d9f88b32adfd674..5fe9bbf39058d0cf97c1adab54c= c516dbe8dc32a 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -1198,8 +1198,6 @@ extern const VMStateInfo vmstate_info_qlist; int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, int version_id, Error **errp); int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, JSONWriter *vmdesc); -int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, void *opaque, JSONWriter *vmdesc, Error **errp); int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc, diff --git a/migration/cpr.c b/migration/cpr.c index 8abb6db76d2474157f804ece4c35ebfc8c22d21a..038f48f810aceb66d7988852240= e2e5d9840ad1a 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -182,9 +182,8 @@ int cpr_state_save(MigrationChannel *channel, Error **e= rrp) qemu_put_be32(f, QEMU_CPR_FILE_MAGIC); qemu_put_be32(f, QEMU_CPR_FILE_VERSION); =20 - ret =3D vmstate_save_state(f, &vmstate_cpr_state, &cpr_state, 0); + ret =3D vmstate_save_state(f, &vmstate_cpr_state, &cpr_state, 0, errp); if (ret) { - error_setg(errp, "vmstate_save_state error %d", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index 71f4d8399349934134c2c02609d3ede6f61754f8..2c05b763148295d7e2095027aa1= 43f45bc4c4676 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1056,8 +1056,8 @@ static int vmstate_save(QEMUFile *f, SaveStateEntry *= se, JSONWriter *vmdesc, if (!se->vmsd) { vmstate_save_old_style(f, se, vmdesc); } else { - ret =3D vmstate_save_state_with_err(f, se->vmsd, se->opaque, vmdes= c, - errp); + ret =3D vmstate_save_state(f, se->vmsd, se->opaque, vmdesc, + errp); if (ret) { return ret; } @@ -1285,6 +1285,7 @@ void qemu_savevm_state_header(QEMUFile *f) { MigrationState *s =3D migrate_get_current(); JSONWriter *vmdesc =3D s->vmdesc; + Error *local_err =3D NULL; =20 trace_savevm_state_header(); qemu_put_be32(f, QEMU_VM_FILE_MAGIC); @@ -1303,7 +1304,11 @@ void qemu_savevm_state_header(QEMUFile *f) json_writer_start_object(vmdesc, "configuration"); } =20 - vmstate_save_state(f, &vmstate_configuration, &savevm_state, vmdes= c); + vmstate_save_state(f, &vmstate_configuration, &savevm_state, + vmdesc, &local_err); + if (local_err) { + error_report_err(local_err); + } =20 if (vmdesc) { json_writer_end_object(vmdesc); diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index c5cfd861e3aa5391245ef46bec9c90106c467e6e..a1cd7a95fa0148858dd883acf9a= 707b2b076d89e 100644 --- a/migration/vmstate-types.c +++ b/migration/vmstate-types.c @@ -565,10 +565,14 @@ static int put_tmp(QEMUFile *f, void *pv, size_t size, const VMStateDescription *vmsd =3D field->vmsd; void *tmp =3D g_malloc(size); int ret; + Error *local_err =3D NULL; =20 /* Writes the parent field which is at the start of the tmp */ *(void **)tmp =3D pv; - ret =3D vmstate_save_state(f, vmsd, tmp, vmdesc); + ret =3D vmstate_save_state(f, vmsd, tmp, vmdesc, &local_err); + if (ret) { + error_report_err(local_err); + } g_free(tmp); =20 return ret; @@ -676,13 +680,15 @@ static int put_qtailq(QEMUFile *f, void *pv, size_t u= nused_size, size_t entry_offset =3D field->start; void *elm; int ret; + Error *local_err =3D NULL; =20 trace_put_qtailq(vmsd->name, vmsd->version_id); =20 QTAILQ_RAW_FOREACH(elm, pv, entry_offset) { qemu_put_byte(f, true); - ret =3D vmstate_save_state(f, vmsd, elm, vmdesc); + ret =3D vmstate_save_state(f, vmsd, elm, vmdesc, &local_err); if (ret) { + error_report_err(local_err); return ret; } } @@ -711,6 +717,7 @@ static gboolean put_gtree_elem(gpointer key, gpointer v= alue, gpointer data) struct put_gtree_data *capsule =3D (struct put_gtree_data *)data; QEMUFile *f =3D capsule->f; int ret; + Error *local_err =3D NULL; =20 qemu_put_byte(f, true); =20 @@ -718,16 +725,20 @@ static gboolean put_gtree_elem(gpointer key, gpointer= value, gpointer data) if (!capsule->key_vmsd) { qemu_put_be64(f, (uint64_t)(uintptr_t)(key)); /* direct key */ } else { - ret =3D vmstate_save_state(f, capsule->key_vmsd, key, capsule->vmd= esc); + ret =3D vmstate_save_state(f, capsule->key_vmsd, key, capsule->vmd= esc, + &local_err); if (ret) { + error_report_err(local_err); capsule->ret =3D ret; return true; } } =20 /* put the data */ - ret =3D vmstate_save_state(f, capsule->val_vmsd, value, capsule->vmdes= c); + ret =3D vmstate_save_state(f, capsule->val_vmsd, value, capsule->vmdes= c, + &local_err); if (ret) { + error_report_err(local_err); capsule->ret =3D ret; return true; } @@ -857,14 +868,14 @@ static int put_qlist(QEMUFile *f, void *pv, size_t un= used_size, size_t entry_offset =3D field->start; void *elm; int ret; + Error *local_err =3D NULL; =20 trace_put_qlist(field->name, vmsd->name, vmsd->version_id); QLIST_RAW_FOREACH(elm, pv, entry_offset) { qemu_put_byte(f, true); - ret =3D vmstate_save_state(f, vmsd, elm, vmdesc); + ret =3D vmstate_save_state(f, vmsd, elm, vmdesc, &local_err); if (ret) { - error_report("%s: failed to save %s (%d)", field->name, - vmsd->name, ret); + error_report_err(local_err); return ret; } } diff --git a/migration/vmstate.c b/migration/vmstate.c index 8d1e9eb62bb9a7506604016b0ed858855e685776..ad8e5b71ae2ce78e66a6426602e= 5c20405ec57c0 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -406,12 +406,6 @@ bool vmstate_section_needed(const VMStateDescription *= vmsd, void *opaque) =20 =20 int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, JSONWriter *vmdesc_id) -{ - return vmstate_save_state_v(f, vmsd, opaque, vmdesc_id, vmsd->version_= id, NULL); -} - -int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, void *opaque, JSONWriter *vmdesc_id, Error **errp) { return vmstate_save_state_v(f, vmsd, opaque, vmdesc_id, vmsd->version_= id, errp); @@ -512,7 +506,7 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDesc= ription *vmsd, =20 if (inner_field->flags & VMS_STRUCT) { ret =3D vmstate_save_state(f, inner_field->vmsd, - curr_elem, vmdesc_loop); + curr_elem, vmdesc_loop, errp); } else if (inner_field->flags & VMS_VSTRUCT) { ret =3D vmstate_save_state_v(f, inner_field->vmsd, curr_elem, vmdesc_loop, @@ -674,7 +668,7 @@ static int vmstate_subsection_save(QEMUFile *f, const V= MStateDescription *vmsd, qemu_put_byte(f, len); qemu_put_buffer(f, (uint8_t *)vmsdsub->name, len); qemu_put_be32(f, vmsdsub->version_id); - ret =3D vmstate_save_state_with_err(f, vmsdsub, opaque, vmdesc= , errp); + ret =3D vmstate_save_state(f, vmsdsub, opaque, vmdesc, errp); if (ret) { return ret; } diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c index 4ff0ab632f7e08b922dfcf565f31b0e63c17f59e..cadbab3c5e2609e217e436d470d= 00356704f2c8f 100644 --- a/tests/unit/test-vmstate.c +++ b/tests/unit/test-vmstate.c @@ -67,9 +67,13 @@ static QEMUFile *open_test_file(bool write) static void save_vmstate(const VMStateDescription *desc, void *obj) { QEMUFile *f =3D open_test_file(true); + Error *local_err =3D NULL; =20 /* Save file with vmstate */ - int ret =3D vmstate_save_state(f, desc, obj, NULL); + int ret =3D vmstate_save_state(f, desc, obj, NULL, &local_err); + if (ret) { + error_report_err(local_err); + } g_assert(!ret); qemu_put_byte(f, QEMU_VM_EOF); g_assert(!qemu_file_get_error(f)); @@ -438,10 +442,15 @@ static const VMStateDescription vmstate_skipping =3D { =20 static void test_save_noskip(void) { + Error *local_err =3D NULL; QEMUFile *fsave =3D open_test_file(true); TestStruct obj =3D { .a =3D 1, .b =3D 2, .c =3D 3, .d =3D 4, .e =3D 5,= .f =3D 6, .skip_c_e =3D false }; - int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL); + int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL, + &local_err); + if (ret) { + error_report_err(local_err); + } g_assert(!ret); g_assert(!qemu_file_get_error(fsave)); =20 @@ -460,10 +469,15 @@ static void test_save_noskip(void) =20 static void test_save_skip(void) { + Error *local_err =3D NULL; QEMUFile *fsave =3D open_test_file(true); TestStruct obj =3D { .a =3D 1, .b =3D 2, .c =3D 3, .d =3D 4, .e =3D 5,= .f =3D 6, .skip_c_e =3D true }; - int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL); + int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL, + &local_err); + if (ret) { + error_report_err(local_err); + } g_assert(!ret); g_assert(!qemu_file_get_error(fsave)); =20 diff --git a/ui/vdagent.c b/ui/vdagent.c index bc3c77f01332a4b594cba00f3f9f9a5bca4d739a..ddb91e75c64a2af09d3f01e1b49= 00bd253513dd7 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -992,7 +992,8 @@ static int put_cbinfo(QEMUFile *f, void *pv, size_t siz= e, } } =20 - return vmstate_save_state(f, &vmstate_cbinfo_array, &cbinfo, vmdesc); + return vmstate_save_state(f, &vmstate_cbinfo_array, &cbinfo, vmdesc, + &error_fatal); } =20 static int get_cbinfo(QEMUFile *f, void *pv, size_t size, --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209407; cv=none; d=zohomail.com; s=zohoarc; b=I55vzJdJWXla1Dr5IUHOvJrJvy/57m/o/D13YbpkGIenKUWFLjFaToReCtf8VIyWDcLGMAlfkopX5rnlLdQ+w6RbydggIKan+AJYV7ybcCH5+xfp31yX+xJKFPWOUMX9BieDYaW6SyQhYI9o2NVD3+0AUbLdZimhd+TigS6MpWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209407; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PaZvHMvq5UGvPHZJTIR0qZ8hdQBkbCFkuOZ3ZxBhp7k=; b=Nun9ul60Q7V5G076hKIfjA0iX4qTbD/mk5XuN0sYwU5RVr8B9BQg/yY8qgHVcyEwlhuCGXaTxdb/N+aWVNLsA1xTBlRDJmZtEmqX+Z4RPkSuWzABsCvWnqeKeNMZLt1W3wf4GIrzf0Q4Cg7eEgl304jXMZXt5lE88iha0zvS4sI= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175820940732349.97836524764239; Thu, 18 Sep 2025 08:30:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGXp-0002yt-NQ; Thu, 18 Sep 2025 11:27:37 -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 1uzGXi-0002nb-OA for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uzGXf-0003OF-A8 for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:30 -0400 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-564-krCUzEgVOgmciGei13u-cg-1; Thu, 18 Sep 2025 11:27:25 -0400 Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-77243618babso1175925b3a.0 for ; Thu, 18 Sep 2025 08:27:24 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.27.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:27:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209246; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PaZvHMvq5UGvPHZJTIR0qZ8hdQBkbCFkuOZ3ZxBhp7k=; b=AB+d7a/bv3ypcpBeYRarhrvKRHULIYmXekVCiIIpkGouz3fBIh0DTctQD0cEPBeYBaMnlH jqETshSFdXFA+Zvh5yFpLW3oCq2684pyAYf29nr5r8xM9Rv/y/XDauqAAt5XPUJHO0jk91 UXax0y6skqwMokxtzbfH0sPuJuTZHuk= X-MC-Unique: krCUzEgVOgmciGei13u-cg-1 X-Mimecast-MFC-AGG-ID: krCUzEgVOgmciGei13u-cg_1758209244 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209244; x=1758814044; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PaZvHMvq5UGvPHZJTIR0qZ8hdQBkbCFkuOZ3ZxBhp7k=; b=IUY/AgSmMx0KfoU+PKhFc2buZS50XZIw/SeOFNRJdTXghE+OC/1oRqUvm258sP6ukR 3LdSmsPUMImeZawNYsRbPIJNLeJzd8rGu7iqqyZHQI7RGh8QsbSgBXyGd86IiiEaXvYf 5tvwEue8ZYkXmHggB8RMz/midEt2h5qdtqrQaPGamwxpTqvmatPvfgfTfpeuEvzTSMyu 5CtBahUqKLBhDgHaW3Vu5MJ4H8JssYGtOzIWtg9vi9h8yXx2h4HGK4bC/hV7htRAy8Uc qtKIoaqW8Nl0uHOWqHsCZrG32T1fYynVGPYtqg3OvoclXI+zNff6m/SLSHO8zfqjZybD xpTA== X-Gm-Message-State: AOJu0YzqW9LSc4HujdL15GaaCiFGkO+KaLOEf2+DaVl2bzY0b4NfwOPK EEqmG1eLr8HRgCgGr0Myol+Yzm3wNH63w+MDT3f9OXoPDtY4YlWx3yQmVplza+sIAC3tUhmZeAJ rQ0zJst0d1wCu87qnJ6ZfKqLaPYalbk2hKa3sDWahPSTQ0iu4PwT6GRe7 X-Gm-Gg: ASbGnctR2yM99hmABXIcSNyui4ZFAQ/ysAlKUJWzdA0UZ6Zg4UDLXwm/I5fa9tpNb8r julBUeQ8Qq/XxJ1obhtx6SunpGJkmx9CIPbSVfBdqHs1s+jgRd8hVYWxH6qslVSD973sejlDREm 9OquN3rX7pjMJQ9MFnwTYHfCXtY7iGuObH7+/VLlrJcTmj28OzFRV9JJ3tT2fiX/gXnNk1Y9BhC gNqwiQ4itf9M4XC2CeRSFW3hgflFsCBwDDcL3X7OyJ0HkY+fvBw3aJGrPoJmbdCUoMfUfMIudw5 QC2PjM0lKzspVI/nC6V9odD/7KzJaY96iQoDQQzLadhwqi72Dx2XBw== X-Received: by 2002:a05:6a00:1395:b0:771:ec42:1c1e with SMTP id d2e1a72fcca58-77bf9274927mr6708383b3a.16.1758209243988; Thu, 18 Sep 2025 08:27:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEh4YZXnONzvydcwry0JyJmM1lVvZRxCXhgGiNSZ1r9M4aK4I7jrrnQaVsMUnrkDuoLzzmxbQ== X-Received: by 2002:a05:6a00:1395:b0:771:ec42:1c1e with SMTP id d2e1a72fcca58-77bf9274927mr6708358b3a.16.1758209243574; Thu, 18 Sep 2025 08:27:23 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:42 +0530 Subject: [PATCH v14 25/27] migration: Rename post_save() to cleanup_save() and make it void MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-25-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6500; i=armenon@redhat.com; h=from:subject:message-id; bh=RA0v69F99I5SRsauN9jKQHb/8Bw3uL+HkXH2toG+G78=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5Z99Z2Nk0qR3u6uJX1or/zT/UpjUIwuPD3dPah4qM pO6uMK3o5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwET4pRkZnnosOmwso8Fre2ZW 3rRDz2dfF39+99iuqttLtj4IvyNet4Lhr0xyylvmcouOf/wS33+sqOfwfNh2NDDORk/RWH+Vljo HFwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209409423116600 The post_save() function call is responsible for cleaning up resources after the device state has been saved. Currently it is infallible, and does not return an error. It is called regardless of whether there is a preceding error from save or subsection save. That is, save and post_save() together are considered to be an atomic logical operation. It should not be confused as a counterpart of the post_load() function because post_load() does some sanity checks and returns an error if it fails. This commit, therefore, renames post_save() to cleanup_save() and makes it a void function. Reviewed-by: Fabiano Rosas Suggested-by: Akihiko Odaki Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- docs/devel/migration/main.rst | 2 +- hw/ppc/spapr_pci.c | 5 ++--- include/migration/vmstate.h | 2 +- migration/savevm.c | 5 ++--- migration/vmstate.c | 12 ++++-------- target/arm/machine.c | 6 ++---- 6 files changed, 12 insertions(+), 20 deletions(-) diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst index 6493c1d2bca48a2fa34d92f6c0979c215c56b8d5..a39fec2e21c26c4315c0cf13b10= 5176d70679d4d 100644 --- a/docs/devel/migration/main.rst +++ b/docs/devel/migration/main.rst @@ -439,7 +439,7 @@ The functions to do that are inside a vmstate definitio= n, and are called: =20 This function is called before we save the state of one device. =20 -- ``int (*post_save)(void *opaque);`` +- ``void (*cleanup_save)(void *opaque);`` =20 This function is called after we save the state of one device (even upon failure, unless the call to pre_save returned an error). diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 1ac1185825e84ca908fd878f6cbe7e8cacac1d89..135265f075dff502af59fbc91ba= bca1f9a26c54d 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -2118,14 +2118,13 @@ static int spapr_pci_pre_save(void *opaque) return 0; } =20 -static int spapr_pci_post_save(void *opaque) +static void spapr_pci_cleanup_save(void *opaque) { SpaprPhbState *sphb =3D opaque; =20 g_free(sphb->msi_devs); sphb->msi_devs =3D NULL; sphb->msi_devs_num =3D 0; - return 0; } =20 static int spapr_pci_post_load(void *opaque, int version_id) @@ -2152,7 +2151,7 @@ static const VMStateDescription vmstate_spapr_pci =3D= { .version_id =3D 2, .minimum_version_id =3D 2, .pre_save =3D spapr_pci_pre_save, - .post_save =3D spapr_pci_post_save, + .cleanup_save =3D spapr_pci_cleanup_save, .post_load =3D spapr_pci_post_load, .fields =3D (const VMStateField[]) { VMSTATE_UINT64_EQUAL(buid, SpaprPhbState, NULL), diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 5fe9bbf39058d0cf97c1adab54cc516dbe8dc32a..c1d8e5b7a7d9d544fc8ce181372= 660f5538ef66b 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -208,7 +208,7 @@ struct VMStateDescription { int (*pre_load)(void *opaque); int (*post_load)(void *opaque, int version_id); int (*pre_save)(void *opaque); - int (*post_save)(void *opaque); + void (*cleanup_save)(void *opaque); bool (*needed)(void *opaque); bool (*dev_unplug_pending)(void *opaque); =20 diff --git a/migration/savevm.c b/migration/savevm.c index 2c05b763148295d7e2095027aa143f45bc4c4676..693f77b728604f2072fb40bd2ec= 268b217da9727 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -322,14 +322,13 @@ static int configuration_pre_save(void *opaque) return 0; } =20 -static int configuration_post_save(void *opaque) +static void configuration_cleanup_save(void *opaque) { SaveState *state =3D opaque; =20 g_free(state->capabilities); state->capabilities =3D NULL; state->caps_count =3D 0; - return 0; } =20 static int configuration_pre_load(void *opaque) @@ -544,7 +543,7 @@ static const VMStateDescription vmstate_configuration = =3D { .pre_load =3D configuration_pre_load, .post_load =3D configuration_post_load, .pre_save =3D configuration_pre_save, - .post_save =3D configuration_post_save, + .cleanup_save =3D configuration_cleanup_save, .fields =3D (const VMStateField[]) { VMSTATE_UINT32(len, SaveState), VMSTATE_VBUFFER_ALLOC_UINT32(name, SaveState, 0, NULL, len), diff --git a/migration/vmstate.c b/migration/vmstate.c index ad8e5b71ae2ce78e66a6426602e5c20405ec57c0..a7562a5cfd8627e20c90e286e35= c5e3429c48150 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -529,8 +529,8 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDesc= ription *vmsd, if (ret) { error_setg(errp, "Save of field %s/%s failed", vmsd->name, field->name); - if (vmsd->post_save) { - vmsd->post_save(opaque); + if (vmsd->cleanup_save) { + vmsd->cleanup_save(opaque); } return ret; } @@ -557,12 +557,8 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDes= cription *vmsd, =20 ret =3D vmstate_subsection_save(f, vmsd, opaque, vmdesc, errp); =20 - if (vmsd->post_save) { - int ps_ret =3D vmsd->post_save(opaque); - if (!ret && ps_ret) { - ret =3D ps_ret; - error_setg(errp, "post-save failed: %s", vmsd->name); - } + if (vmsd->cleanup_save) { + vmsd->cleanup_save(opaque); } return ret; } diff --git a/target/arm/machine.c b/target/arm/machine.c index 6666a0c50c45504082f02fab42f499ca58dc3597..cb6b9ee653915cd07b7d93e2c9e= c63be1a3365a0 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -883,15 +883,13 @@ static int cpu_pre_save(void *opaque) return 0; } =20 -static int cpu_post_save(void *opaque) +static void cpu_cleanup_save(void *opaque) { ARMCPU *cpu =3D opaque; =20 if (!kvm_enabled()) { pmu_op_finish(&cpu->env); } - - return 0; } =20 static int cpu_pre_load(void *opaque) @@ -1028,7 +1026,7 @@ const VMStateDescription vmstate_arm_cpu =3D { .version_id =3D 22, .minimum_version_id =3D 22, .pre_save =3D cpu_pre_save, - .post_save =3D cpu_post_save, + .cleanup_save =3D cpu_cleanup_save, .pre_load =3D cpu_pre_load, .post_load =3D cpu_post_load, .fields =3D (const VMStateField[]) { --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209374; cv=none; d=zohomail.com; s=zohoarc; b=kqiYx+ogcT45nZ2auyzofhmKMy8G0gVXPoLTC/BcvdBuJc+qnN1lhQONhggDNlPUqZVIcq+bikqzUOkqHfSAxkq1jQI5tXdmUstLoL8P/7IUwPHudvlG74Ixo/NhyhQiH4zSuynNUtE5M7v/M6KiqDutIhj9Jq1bc9Ob1LOXRw4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209374; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Vc9okNpMYt4DXDWcpMg2ynUqZTjLFOeZYVXE63oU0yM=; b=OFZXZWof/l9HJEZ8CVvvsP9vX55C+t2cWeXXIK86bo6RhTktChUUZfTEkRIAVlK793TfKKeSOAwbV92WDyjQ5TNnmmkpfTgcsCQS3K884FvxcayQ4tpVDInzwMTGwkzmyWPBEQpz2Cu/vOaZvykqakUPgbaGteg4ONnI7dn2A54= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209374830804.8503765136791; Thu, 18 Sep 2025 08:29:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGYy-0003yh-Ss; Thu, 18 Sep 2025 11:28:51 -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 1uzGXr-00038p-VV for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:42 -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 1uzGXn-0003PV-JM for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:38 -0400 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-689-uTIfyDXZP3aCBDrpK2cEMQ-1; Thu, 18 Sep 2025 11:27:33 -0400 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-77429fb6ce4so1176683b3a.2 for ; Thu, 18 Sep 2025 08:27:33 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.27.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209254; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Vc9okNpMYt4DXDWcpMg2ynUqZTjLFOeZYVXE63oU0yM=; b=N/BKoc7WS6SxmWwMqYklXi7FW2H+ZvOv1vYm83X6FLok6qBscSp1DmAelWeLSQRUHQUhaX LUq6AKS55XrUcn7Eo58pNKBslpsnIo2hdTNc9KkCW5dUDP90ouD06mSEQSMBxtGF5OpYiu NgZubqd/1Riv0S80fqmh/IsH0BvPvqM= X-MC-Unique: uTIfyDXZP3aCBDrpK2cEMQ-1 X-Mimecast-MFC-AGG-ID: uTIfyDXZP3aCBDrpK2cEMQ_1758209253 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209253; x=1758814053; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Vc9okNpMYt4DXDWcpMg2ynUqZTjLFOeZYVXE63oU0yM=; b=qJmYOXkokuesmsLh/IkcxQ+jECsjJ91syzzvfVDs1Go8looKs23ViSLhAkouVOrKAi V9V8bU+CsnJfkLg9ZsMDaXO/t4uHQHJVwgfDX4QnkwnJf6nt6Mr07YJiYxvCOY0iXNuc E6ICVsBTe0JLkYWDrw7zMCc6YjNbLqFTrtsA+ZnVgugSPOVGzA43/H31+TpNYpQowxAk DdBpoUmlN7RPP2HwZDPQTgEIQUVauk4idxf57kdGwWiDBlCWo4AkKoOZ4e+d3Dl17HqR CO355jXdpOy8EpJOsr7qE5jTVRU1vIOn34n8/AXneGuXgBZRWg0bFu6gy2OxbX6VcfK/ /EmQ== X-Gm-Message-State: AOJu0YzSKuNxm1Rao/TUNjdF3wFa1pnmctKoSv7Tk72wrT8PRSfj74tf ZQW/cSA6qzesW5gOrDJ67AIe2j/zRzJN90rAHHVnS5vJTditAKRJnPaMeodoREjm0w3jpYZH40B PDlhoOv9ZGGtFqMkvlowJ4wXA4iCu5+ME9pjm0a06nZ85eZLCTnbkDFGC X-Gm-Gg: ASbGncuuL/PJDIuf/DCEy3RNQBZHwkTSCEZMjE2V5SkpdPdgJKtOP4sNg/xETTn++Ba CWhyYtO1mvFU7kK5RpwYYZJlW89zPcIR+0w1kkq5lMFuDVsy2Cc8Gavvyd8do0ym00MsgnZKcaf +/wyrW/WZIOoNkZfgiDBuJjgS9klgDFEpz78SBxbFZ7WDG4d0SPxK8/9GtnWES1rtWlUwsido7d AHOE91aOZIu7NtG71mGZBS7HX9kjbzyXH7Orm0S1CllwfPt5pMwMSsBrU9vmlCrL6HQ1g/qOB+6 bQWeBls8fWR9uFj1VGIZaDAfJEDTIaqFwJC9RU7b4V4kFSWGaToaKg== X-Received: by 2002:a05:6a20:7347:b0:243:cb7b:4f5f with SMTP id adf61e73a8af0-27a9882f018mr8810785637.25.1758209252596; Thu, 18 Sep 2025 08:27:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH2liFfUJfeXKx7MQyAtK8rAyi+3XIjwBr0K+6utqqnHEYetJGQCwiaWwDz2qnG6yMwMDrUPQ== X-Received: by 2002:a05:6a20:7347:b0:243:cb7b:4f5f with SMTP id adf61e73a8af0-27a9882f018mr8810737637.25.1758209252129; Thu, 18 Sep 2025 08:27:32 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:43 +0530 Subject: [PATCH v14 26/27] migration: Add error-parameterized function variants in VMSD struct MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-26-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6945; i=armenon@redhat.com; h=from:subject:message-id; bh=mV3iaTC209YJUAdA9bqx8Vyx3XlTmai9n7FrOGzxR9o=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5Z/reozuL6+rV0t11iyY97szYT7rI+uOLQmLna/eT HIoMfLoKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJEP/owMP+/yq2gL/mmy8FDe 6sS+ZkVlqT6n/LVe11f9d5uVBa7YMDKcrhVexHhxyck2pWmvDISfqE3wCDNNPq4/LdN4Ytydaf9 ZAQ== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209377227116600 - We need to have good error reporting in the callbacks in VMStateDescription struct. Specifically pre_save, pre_load and post_load callbacks. - It is not possible to change these functions everywhere in one patch, therefore, we introduce a duplicate set of callbacks with Error object passed to them. - So, in this commit, we implement 'errp' variants of these callbacks, introducing an explicit Error object parameter. - This is a functional step towards transitioning the entire codebase to the new error-parameterized functions. - Deliberately called in mutual exclusion from their counterparts, to prevent conflicts during the transition. - New impls should preferentally use 'errp' variants of these methods, and existing impls incrementally converted. The variants without 'errp' are intended to be removed once all usage is converted. Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- docs/devel/migration/main.rst | 19 +++++++++++++++++++ include/migration/vmstate.h | 14 ++++++++++++++ migration/vmstate.c | 31 ++++++++++++++++++++++++++++--- 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst index a39fec2e21c26c4315c0cf13b105176d70679d4d..93620102ae875e7477af2e26eef= fe636ca0cdbca 100644 --- a/docs/devel/migration/main.rst +++ b/docs/devel/migration/main.rst @@ -444,6 +444,25 @@ The functions to do that are inside a vmstate definiti= on, and are called: This function is called after we save the state of one device (even upon failure, unless the call to pre_save returned an error). =20 +Following are the errp variants of these functions. + +- ``int (*pre_load_errp)(void *opaque, Error **errp);`` + + This function is called before we load the state of one device. + +- ``int (*post_load_errp)(void *opaque, int version_id, Error **errp);`` + + This function is called after we load the state of one device. + +- ``int (*pre_save_errp)(void *opaque, Error **errp);`` + + This function is called before we save the state of one device. + +New impls should preferentally use 'errp' variants of these +methods and existing impls incrementally converted. +The variants without 'errp' are intended to be removed +once all usage is converted. + Example: You can look at hpet.c, that uses the first three functions to massage the state that is transferred. =20 diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index c1d8e5b7a7d9d544fc8ce181372660f5538ef66b..647d7a35ce5f2c8b8ca5fdb15b5= 4c10a0896cea8 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -200,14 +200,28 @@ struct VMStateDescription { * exclusive. For this reason, also early_setup VMSDs are migrated in a * QEMU_VM_SECTION_FULL section, while save_setup() data is migrated in * a QEMU_VM_SECTION_START section. + * + * There are duplicate impls of the post/pre save/load hooks. + * New impls should preferentally use 'errp' variants of these + * methods and existing impls incrementally converted. + * The variants without 'errp' are intended to be removed + * once all usage is converted. + * + * For the errp variants, + * Returns: 0 on success, + * <0 on error where -value is an error number from errno.h */ + bool early_setup; int version_id; int minimum_version_id; MigrationPriority priority; int (*pre_load)(void *opaque); + int (*pre_load_errp)(void *opaque, Error **errp); int (*post_load)(void *opaque, int version_id); + int (*post_load_errp)(void *opaque, int version_id, Error **errp); int (*pre_save)(void *opaque); + int (*pre_save_errp)(void *opaque, Error **errp); void (*cleanup_save)(void *opaque); bool (*needed)(void *opaque); bool (*dev_unplug_pending)(void *opaque); diff --git a/migration/vmstate.c b/migration/vmstate.c index a7562a5cfd8627e20c90e286e35c5e3429c48150..86293593e0fbb8409409b22d3f0= 653327d727c32 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -134,6 +134,7 @@ static void vmstate_handle_alloc(void *ptr, const VMSta= teField *field, int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, int version_id, Error **errp) { + ERRP_GUARD(); const VMStateField *field =3D vmsd->fields; int ret =3D 0; =20 @@ -152,7 +153,16 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescr= iption *vmsd, trace_vmstate_load_state_end(vmsd->name, "too old", -EINVAL); return -EINVAL; } - if (vmsd->pre_load) { + if (vmsd->pre_load_errp) { + ret =3D vmsd->pre_load_errp(opaque, errp); + if (ret < 0) { + error_prepend(errp, "pre load hook failed for: '%s', " + "version_id: %d, minimum version_id: %d, " + "ret: %d: ", vmsd->name, vmsd->version_id, + vmsd->minimum_version_id, ret); + return ret; + } + } else if (vmsd->pre_load) { ret =3D vmsd->pre_load(opaque); if (ret) { error_setg(errp, "pre load hook failed for: '%s', " @@ -245,7 +255,14 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescr= iption *vmsd, qemu_file_set_error(f, ret); return ret; } - if (vmsd->post_load) { + if (vmsd->post_load_errp) { + ret =3D vmsd->post_load_errp(opaque, version_id, errp); + if (ret < 0) { + error_prepend(errp, "post load hook failed for: %s, version_id= : " + "%d, minimum_version: %d, ret: %d: ", vmsd->name, + vmsd->version_id, vmsd->minimum_version_id, ret); + } + } else if (vmsd->post_load) { ret =3D vmsd->post_load(opaque, version_id); if (ret < 0) { error_setg(errp, @@ -414,12 +431,20 @@ int vmstate_save_state(QEMUFile *f, const VMStateDesc= ription *vmsd, int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc, int version_id,= Error **errp) { + ERRP_GUARD(); int ret =3D 0; const VMStateField *field =3D vmsd->fields; =20 trace_vmstate_save_state_top(vmsd->name); =20 - if (vmsd->pre_save) { + if (vmsd->pre_save_errp) { + ret =3D vmsd->pre_save_errp(opaque, errp); + trace_vmstate_save_state_pre_save_res(vmsd->name, ret); + if (ret < 0) { + error_prepend(errp, "pre-save for %s failed, ret: %d: ", + vmsd->name, ret); + } + } else if (vmsd->pre_save) { ret =3D vmsd->pre_save(opaque); trace_vmstate_save_state_pre_save_res(vmsd->name, ret); if (ret) { --=20 2.51.0 From nobody Sun Sep 28 15:30:20 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1758209396; cv=none; d=zohomail.com; s=zohoarc; b=C/PuYXZodgCCbqfBoMgGpJTYPAXBzKxqYAEchxVxsYd+J8dNG3ND+YsG2cFmlSPwyxvGqfaQGbgy5Qlk1sR5Efk2rCRme/MhVzM0r7ySYrXpP/GatIDl5zqTNBQGmPr42G4vutIQW4V91mDq+XPRGcVIOFNm9H2D36m6JSKVv/0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758209396; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vFx1//LdCNq+XYf5MolNY5wtarm8we+wGLU/Uo30GXs=; b=QaSx045wWm2S0VrcihiNZJiJaA1dVNyuW3uykM7d2JDVR+zp3hTRVEOju2NdpHP+djZ8T2G5Tf2IpN3J2FsiSF37TEBySZw8zN73X2Jpsmt3kogc0FFfHWApNh0ZSoxjUdSdzWWHJ8DY7KK3zaeldQn+QZM2Q5wF2+7hNOd9tUA= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758209396473534.8428703669114; Thu, 18 Sep 2025 08:29:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzGZR-0004Gt-JR; Thu, 18 Sep 2025 11:29:23 -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 1uzGY6-0003Hb-QZ for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27: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 1uzGY1-0003RI-Qh for qemu-devel@nongnu.org; Thu, 18 Sep 2025 11:27:51 -0400 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-295-qIWJMCTsPM-3_hT6_LX4Hw-1; Thu, 18 Sep 2025 11:27:43 -0400 Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-77429fb6ce4so1176808b3a.2 for ; Thu, 18 Sep 2025 08:27:42 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-77cfc2481d7sm2675512b3a.32.2025.09.18.08.27.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 08:27:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758209269; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vFx1//LdCNq+XYf5MolNY5wtarm8we+wGLU/Uo30GXs=; b=FD64Slp1bVmFwRr7Q75MtsUKvXNVtpMqJehvOK/n5FW+fRg85K1PyUZYYGODmwBqFGDk0v +AiZnY1Br8ng001qxonhfRzqP8CUen0fVaKZFEG/1CgA8ACICuVweYLwaVMSCouOVcTVGo SR3OgXQ7tALFBSrOgcYryCRaSyLhzFU= X-MC-Unique: qIWJMCTsPM-3_hT6_LX4Hw-1 X-Mimecast-MFC-AGG-ID: qIWJMCTsPM-3_hT6_LX4Hw_1758209262 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758209262; x=1758814062; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vFx1//LdCNq+XYf5MolNY5wtarm8we+wGLU/Uo30GXs=; b=Zac3jiPJslXqkoiqQ8vd+0AssOdOZP0oBu+xutKI33pUTwx4soqyFbwgC/M9BxSIJG 37JAt6rZTkRM/OaKqJAdqu94gIwi3xoDDDEsoskZy9pnvkXlRAxlnER6FhYl+lSb6Wj0 QD3apSIWtx67Dv9RyTV4PLkryFJ3CHbN9vE8iKFBTHzwIypOo7J0wDv37TQJHte4oxx+ IfWkRdMYl4ycqHg3p5cr827W07lk0HzEaSEMKmOUN4u6KfRXYlbX8rLn5nTtkfAYuS0R /J1hNPI1kaYBa8JAMj3SScdnGHnQUC4b22716ETWsfMRknuMI9CoXF662yYjDLxJWj8y Ok6g== X-Gm-Message-State: AOJu0YymRmPhf95rItezP3sNdSuyyJTlhh/lfLAUyL6izz1Ym5/vo/Wn RzXIZIBoflJvP4Bkrso7Tp5zYZXW/XgYqjF3EjpXAnJ0XD9C2326EjvBJvPqGFqgp7TadguoRUy Yitr8Wy+EVap+eY8JeUHyb8FV0eLkLB21JNnaxDWE6nISZ2V2+KWTO2ACpPQyAroBaMs= X-Gm-Gg: ASbGnctsRlwIxLTQz8t6Pi/bjj52jdd0/E3llCvGojUhqd7l583WlNGvi4KjfRLrJql RZzhmqz6Ajc4kz8LoQ0Zy6gq5QccNkfSGrI0H9U6VXSAf0/t3FdFbECF5V44P9RUEZ7xkQPBFMG R12R+d2Us/u2l+qB0LRl7zqh14LRflWAb97kQXOu3GUeRRr9JlDXZ2/WxZt67YIyecsOZfhfCwY nMvsL3QzWu0Bn42Amne+NLR8D1nJhSrYin9AeuAo1UKoYLqa0KL0eLzzimdIzbbyG3Kor6WNAr/ 4yJ3MYMloeXhmB9xUO9vfGoas5fpEiYoX3pJ4mbrWbBrhgviFm7dMQ== X-Received: by 2002:a05:6a00:c8a:b0:777:73a6:edb8 with SMTP id d2e1a72fcca58-77bf946a71fmr7729922b3a.28.1758209261631; Thu, 18 Sep 2025 08:27:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFPrewjkJEVcx0CmqaQ3CPnYY7zszhI34lUBw08Tj+e8d1e9KQBArDqPgWLUGcox1f3xefEIQ== X-Received: by 2002:a05:6a00:c8a:b0:777:73a6:edb8 with SMTP id d2e1a72fcca58-77bf946a71fmr7729900b3a.28.1758209261227; Thu, 18 Sep 2025 08:27:41 -0700 (PDT) From: Arun Menon Date: Thu, 18 Sep 2025 20:53:44 +0530 Subject: [PATCH v14 27/27] backends/tpm: Propagate vTPM error on migration failure MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-propagate_tpm_error-v14-27-36f11a6fb9d3@redhat.com> References: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> In-Reply-To: <20250918-propagate_tpm_error-v14-0-36f11a6fb9d3@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Stefan Berger X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6741; i=armenon@redhat.com; h=from:subject:message-id; bh=xJOfJwiqBhYlRBnodOx/pfgX2IXLy1xjBTSVIQV4ib8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YZ5Z9pssaZqldCs1l52E02LjuQfmjZn+qkwiW7uf3sF mjYMPJ1lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmMizUIZ/th2c6Sne67SbOGQy auZ++nauTiWbPfsUh+s8dbvwZ18aGP67PJXavCju9cvjN7c6eup+mj39yoyv6WYTVjS3V4bP3C/ ADgA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.005, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1758209397408116600 - When migration of a VM with encrypted vTPM fails on the destination host, (e.g., due to a mismatch in secret values), the error message displayed on the source host is generic and unhelpful. - For example, a typical error looks like this: "operation failed: job 'migration out' failed: Sibling indicated error 1. operation failed: job 'migration in' failed: load of migration failed: Input/output error" - Such generic errors are logged using error_report(), which prints to the console/monitor but does not make the detailed error accessible via the QMP query-migrate command. - This change, along with the set of changes of passing errp Error object to the VM state loading functions, help in addressing the issue. We use the post_load_errp hook of VMStateDescription to propagate errors by setting Error **errp objects in case of failure in the TPM backend. - It can then be retrieved using QMP command: {"execute" : "query-migrate"} Buglink: https://issues.redhat.com/browse/RHEL-82826 Reviewed-by: Stefan Berger Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon Reviewed-by: Akihiko Odaki --- backends/tpm/tpm_emulator.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c index 4a234ab2c0b19b2604bf0dd8cb5f4540c72a9438..dacfca5ab7eb0445ddc1ced9751= 3068501b468bf 100644 --- a/backends/tpm/tpm_emulator.c +++ b/backends/tpm/tpm_emulator.c @@ -819,7 +819,8 @@ static int tpm_emulator_get_state_blobs(TPMEmulator *tp= m_emu) static int tpm_emulator_set_state_blob(TPMEmulator *tpm_emu, uint32_t type, TPMSizedBuffer *tsb, - uint32_t flags) + uint32_t flags, + Error **errp) { ssize_t n; ptm_setstate pss; @@ -838,17 +839,18 @@ static int tpm_emulator_set_state_blob(TPMEmulator *t= pm_emu, /* write the header only */ if (tpm_emulator_ctrlcmd(tpm_emu, CMD_SET_STATEBLOB, &pss, offsetof(ptm_setstate, u.req.data), 0, 0) < 0= ) { - error_report("tpm-emulator: could not set state blob type %d : %s", - type, strerror(errno)); + error_setg_errno(errp, errno, + "tpm-emulator: could not set state blob type %d", + type); return -1; } =20 /* now the body */ n =3D qemu_chr_fe_write_all(&tpm_emu->ctrl_chr, tsb->buffer, tsb->size= ); if (n !=3D tsb->size) { - error_report("tpm-emulator: Writing the stateblob (type %d) " - "failed; could not write %u bytes, but only %zd", - type, tsb->size, n); + error_setg(errp, "tpm-emulator: Writing the stateblob (type %d) " + "failed; could not write %u bytes, but only %zd", + type, tsb->size, n); return -1; } =20 @@ -856,17 +858,17 @@ static int tpm_emulator_set_state_blob(TPMEmulator *t= pm_emu, n =3D qemu_chr_fe_read_all(&tpm_emu->ctrl_chr, (uint8_t *)&pss, sizeof(pss.u.resp)); if (n !=3D sizeof(pss.u.resp)) { - error_report("tpm-emulator: Reading response from writing stateblo= b " - "(type %d) failed; expected %zu bytes, got %zd", type, - sizeof(pss.u.resp), n); + error_setg(errp, "tpm-emulator: Reading response from writing " + "stateblob (type %d) failed; expected %zu bytes, " + "got %zd", type, sizeof(pss.u.resp), n); return -1; } =20 tpm_result =3D be32_to_cpu(pss.u.resp.tpm_result); if (tpm_result !=3D 0) { - error_report("tpm-emulator: Setting the stateblob (type %d) failed= " - "with a TPM error 0x%x %s", type, tpm_result, - tpm_emulator_strerror(tpm_result)); + error_setg(errp, "tpm-emulator: Setting the stateblob (type %d) " + "failed with a TPM error 0x%x %s", type, tpm_result, + tpm_emulator_strerror(tpm_result)); return -1; } =20 @@ -880,7 +882,7 @@ static int tpm_emulator_set_state_blob(TPMEmulator *tpm= _emu, * * Returns a negative errno code in case of error. */ -static int tpm_emulator_set_state_blobs(TPMBackend *tb) +static int tpm_emulator_set_state_blobs(TPMBackend *tb, Error **errp) { TPMEmulator *tpm_emu =3D TPM_EMULATOR(tb); TPMBlobBuffers *state_blobs =3D &tpm_emu->state_blobs; @@ -894,13 +896,13 @@ static int tpm_emulator_set_state_blobs(TPMBackend *t= b) =20 if (tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_PERMANENT, &state_blobs->permanent, - state_blobs->permanent_flags) < 0 || + state_blobs->permanent_flags, errp) < = 0 || tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_VOLATILE, &state_blobs->volatil, - state_blobs->volatil_flags) < 0 || + state_blobs->volatil_flags, errp) < 0 = || tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_SAVESTATE, &state_blobs->savestate, - state_blobs->savestate_flags) < 0) { + state_blobs->savestate_flags, errp) < = 0) { return -EIO; } =20 @@ -948,12 +950,12 @@ static void tpm_emulator_vm_state_change(void *opaque= , bool running, * * Returns negative errno codes in case of error. */ -static int tpm_emulator_post_load(void *opaque, int version_id) +static int tpm_emulator_post_load(void *opaque, int version_id, Error **er= rp) { TPMBackend *tb =3D opaque; int ret; =20 - ret =3D tpm_emulator_set_state_blobs(tb); + ret =3D tpm_emulator_set_state_blobs(tb, errp); if (ret < 0) { return ret; } @@ -969,7 +971,7 @@ static const VMStateDescription vmstate_tpm_emulator = =3D { .name =3D "tpm-emulator", .version_id =3D 0, .pre_save =3D tpm_emulator_pre_save, - .post_load =3D tpm_emulator_post_load, + .post_load_errp =3D tpm_emulator_post_load, .fields =3D (const VMStateField[]) { VMSTATE_UINT32(state_blobs.permanent_flags, TPMEmulator), VMSTATE_UINT32(state_blobs.permanent.size, TPMEmulator), --=20 2.51.0