From nobody Sun Dec 14 02:02:08 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=1754637373; cv=none; d=zohomail.com; s=zohoarc; b=EZau/M/8CScgcY/8U4ckUuh7aJZPsaAQIr9DOORdtlXtJGRPOJhyEPlNfpN86N5RotbVi0dmqJDZbUEl7NynrUCn+0mDmQdNa0hjOWfpqOIWcNXs7apFbmp3+9tTkZLqRKYAhRTbZecV2aqhcdZdd1QkS56GZxQ65S+dtJSyMyc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637373; 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=myWD06jsCLFFdkskRIGu45nxHZFfAn2DedxWxJSi+cs=; b=levvKymhdK+7z7RKPULdoxGZRCFvlHRd9En9nRzg2f8uJVR8pOEOOVVBYDEn7vrOM59zS7g6iwUByQFPNz1bMzh83BOBiMY2q5kjn4hS1UJlDsDjrLZaPC0jzTEqn+xbWREH+XoV9bzFjO1lKZegg33mt6ebC+g3C2KVBF7LFEY= 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 1754637373281370.07644868362195; Fri, 8 Aug 2025 00:16:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHJa-0005rF-Vi; Fri, 08 Aug 2025 03:14:59 -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 1ukHJZ-0005qh-Ah for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:14:57 -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 1ukHJV-0006wW-Vq for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:14:57 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-120-fLicQrxbP3GP5walT2p5vw-1; Fri, 08 Aug 2025 03:14:50 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-23fed1492f6so30402895ad.2 for ; Fri, 08 Aug 2025 00:14:50 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.14.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:14:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637292; 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=myWD06jsCLFFdkskRIGu45nxHZFfAn2DedxWxJSi+cs=; b=NaMmp9Jyq1F2ZZbXQpvQxXIWTXBanOFWWpld+/bHw4Np2AyKgy+PWQ2+Wj0RiU6STRKHc0 P8+2Nm+cljyLoHtCmaVXz3mvNIdEwk51uS212hsVkeMuWVIKRNIjDeQx7OfiyiMjauXzH4 pOxXzhcon2fj3y7Jtu+Cy5+ehsjkPk8= X-MC-Unique: fLicQrxbP3GP5walT2p5vw-1 X-Mimecast-MFC-AGG-ID: fLicQrxbP3GP5walT2p5vw_1754637290 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637289; x=1755242089; 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=myWD06jsCLFFdkskRIGu45nxHZFfAn2DedxWxJSi+cs=; b=fwAOVt3WJ5/1ljXUvRfwdKWTzyUCexPrfdS/C1TgZd2ptw2eVox6N3gwhxkr7Z1mIY GNFQmIrsRkfcX1EBsvIi/NauZvk9/isaLjFurbyRgNErg1G3U8Xsj8iRtiW292pCh+gy 0MVTvTg4OElbzPpVfjiKNUIvu6+6Q+pOwBbYVlnPctHVybP7TNs526cXv0uAUSzKH8Ej 3NOJ6Ey4P2pJtt2ljisLriuXOpichGfUOMFUTJ3hLnvzBaSo3wdaBzJ+0IfmL4qaiSxw VeOlx0m+8vp7DrV2j50rTrKROA5T1c33KOwKCgRM7bLkWYvzCelYo4IK18jc2X+AELmi WCLw== X-Gm-Message-State: AOJu0YysYHu82sw7uEQ/Y+JSk+kksIjzOLyCRhPUgL0qNzj2xo1a7y8b wlM4P6GbJuI7jA8MNLVjKLMFbBEr7kqJh5mv/lE9Smt+c4BKqWHlmCfOKHT1qkuflWH3r0pi225 1PWDN5RLNjBnOmDqzKoVAZd2Z3YASEcsIatcInIJ01g90QSpRsipRDo47 X-Gm-Gg: ASbGncv64Jl1uOxKFCOHcm7hFB63tzipRjm7tt3MLmn8a4IN8Ez4oLpAtCKdIlYl4N0 H80JqSXl22JQJnGspbGtawFwibNbLc6bG0Ub8CR9sTS5oKUaW4owUfgzMqI2IvOOZt4kM3qoSYl l5BouWKB37ZUVyvGgRWF5QyfdL06yzKgZpcTMQZQAKXBQWVyBgOLeh3k3krMrwH1kqyYgl95MTf u6doJG8ka6WMR1Uh8MQIm1x6TzJoayQFbixFvnHXdFvNtKvPtF5lS2F+FfRw00bEuyz/RAiU6LH knhvi4t96MQpL3sJzMfgLfEsMs53zfxKYf7UL7vAzhK2C6vzE2Zh7g== X-Received: by 2002:a17:902:f70f:b0:234:d292:be95 with SMTP id d9443c01a7336-242c22ca48dmr31117135ad.42.1754637289524; Fri, 08 Aug 2025 00:14:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFeJMd3PvBhPzLg2uCRjsODuHg/G4TBg8rkZ/sLSLJtjNMGBAE9O6fvwHpk1lN6N6DvN4AFcA== X-Received: by 2002:a17:902:f70f:b0:234:d292:be95 with SMTP id d9443c01a7336-242c22ca48dmr31116565ad.42.1754637289157; Fri, 08 Aug 2025 00:14:49 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:27 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-1-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=2863; i=armenon@redhat.com; h=from:subject:message-id; bh=GsjRQXNLq9FEI3O2ShgB5NgQyEbEgPJj+oic+AMrPlc=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVeETUIyq76JqZqqeR3tz01Zad684biq3+G+YpPrr 5MmGKzrKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMBGXz4wMrf93Xqn8J640V0t+ y1Ff17bpy4+z6YrNTgl2bIrXfLpoJ8M/M9WI3Iny9+b5SQpaums7JNjIJK/58mfRLO0FrGovXnY yAgA= 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.001, 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: 1754637374748124100 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. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/vmstate.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/migration/vmstate.c b/migration/vmstate.c index 5feaa3244d259874f03048326b2497e7db32e47c..f01bb5fe17aa1c9e16c39648369= 04a95e5892670 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 @@ -225,7 +225,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescri= ption *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, &error_warn); if (ret !=3D 0) { qemu_file_set_error(f, ret); return ret; @@ -566,7 +566,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 +598,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 +610,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637346; cv=none; d=zohomail.com; s=zohoarc; b=Fc/6Ao4obvm4f9rl4qAEeYeF6fyJSyfh2MHbxpaBxtglkDoBtp//7noLyPUGeMkn+Be/bN/NbLsy6aKr1kvOpHVeyMDMAcO6OgDAtBzq+fLELFqWPSdVlwC8p7JqJTFSkSynxx4w1XAP3R1sZSGRIuSEHhNZUTq0VPLDNPLbNHE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637346; 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=0zBaeGeHEKkCmKFY1Fy4za2D0IoF5IHysKDyVQxogdo=; b=LOYtRr2CCNDKGLtwfuF1HSCjI/QXJy+NFsakkPwfExldGqiCDu9rvsWwkWawfhV4GRS76rZOKvQyE1NiKRR/Fo1gN9TERqjh+S0BrsBhKVXj9S0qjER35mcB1cdwN0KPoCl4up9O4hBmdnnjq6Jk4DVQtJJlBPXh3uOWGY2eRKY= 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 1754637345891355.96019484797864; Fri, 8 Aug 2025 00:15:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHJp-00061g-91; Fri, 08 Aug 2025 03:15:15 -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 1ukHJk-0005zh-UB for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15: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 1ukHJh-00078s-SQ for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15:08 -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-248-DGVXg0D9NyexATbpzn8w6w-1; Fri, 08 Aug 2025 03:15:00 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b31bc3128fcso3445812a12.0 for ; Fri, 08 Aug 2025 00:15:00 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.14.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:14:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637305; 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=0zBaeGeHEKkCmKFY1Fy4za2D0IoF5IHysKDyVQxogdo=; b=BPmdg/+UgewrkZ7H9Nr/CychkXbOWQmVLAlAQ8wKIgHViCTmgZCt0yhswQtvhoawqRUsIq dSsh/WDTcaHLdMN2GZafU5t0b9aVYveTK+KyGkO59W6U9m46KAD6NiWJm+v0K0japakqtC qVFNEniJoBL1j2mTNktImRttAVx2IEo= X-MC-Unique: DGVXg0D9NyexATbpzn8w6w-1 X-Mimecast-MFC-AGG-ID: DGVXg0D9NyexATbpzn8w6w_1754637299 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637299; x=1755242099; 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=0zBaeGeHEKkCmKFY1Fy4za2D0IoF5IHysKDyVQxogdo=; b=fevTWMA0P/ZuRpt2tSV7HOStZUXkctCd1/wg/E64ADoJsZt9VUG2o+IAcTO5ndfYqC O2jggHHmBQPsj2ebutZBYLHDq5GMVbd7Ks/p3ygI9MkMRQPsx4FfWlNy2S1hvUY6EwN7 tYn180inrtIjGqN1XhMn8vC/h9R1skeSiRq1bfDfqcCL4jSBSLClOpJabIzt0mlHeSci 42J5TiHP3PzG00g4qzWuRVhID6bB9GDHvMsjEsIOtd44+37QsHJu8OynoafHikU461IU XDxFwfKcB/sjPV0/ueSYIMNo9i2LA2RVtW/fBof4CBU6zhkM5ubTiK5D5RXaQex/zpqj dSzQ== X-Gm-Message-State: AOJu0YyNDFpAinFBEacGioAKh2RZBFgHpGLHcntr4c5hjQwNHyP45a8c SgCaCazxdfU+d8+gbH9+xIH6Oti0eQNFnIY38pzhvHh2BKP5ioSuWYLG8B0ZjO1njl+hqyuKK4Y VT8h6cdJ405TvgF6SAcqx7QjLrQVQt8NdwQdWGdXk2X7q/aeovSSoQLNb X-Gm-Gg: ASbGncvxE5vgqrD1PekyOLvhZLQYA/Ao9a5nelBxglVtb5lK0pcQwljB2qpbdfV6h8c 3bkCX0koPosrk6Y5KNjmAG9NrbRYTGziULEErLO2eb8Cqj09s7XWlLieFq+lollwReGvvkZO0UY nphPCaQjxvfZeWl9RrKGlDiiqoqLXXEDjFkF/VEBWaU7Uuvl+FTkPxCXngjdtCRzDyMpcdpUfxD sFARVbgBPdZBZ2xkKq54yl19NmHEanExRsfXP5ikgp8DfETzCheWvMgp7QAIPY6sX9eGiqPXl/A FZ79W+Ztj8mAlJa6Mx+nPrL30r232cGBq1lWjkt7Jvp5No7BkVr+pg== X-Received: by 2002:a17:902:e552:b0:21f:1202:f2f5 with SMTP id d9443c01a7336-242c2070acdmr26099325ad.8.1754637298766; Fri, 08 Aug 2025 00:14:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEIBdnJi7zljuf044makiD6GZ+01w74M2Ku96taFbIa+PTVJ6/fnnF4LLmzwA64xntS/4JcYA== X-Received: by 2002:a17:902:e552:b0:21f:1202:f2f5 with SMTP id d9443c01a7336-242c2070acdmr26098815ad.8.1754637298260; Fri, 08 Aug 2025 00:14:58 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:28 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-2-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=22274; i=armenon@redhat.com; h=from:subject:message-id; bh=eO0rH6wMteLdzlGVX+8rWLlkfjy7E5R+PXPqmqzSPqU=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVeOP9gR9Z33ff5fSbcLQVFzJmSuvWlw/vmkiM1VG 8Ij7T6GdZSyMIhxMciKKbI0fA2QbQoojIi0fXkdZg4rE8gQBi5OAZgI80mGvxJbfGZOPbFF31Uj 1yyuT+jeZols5WWbfs7nNDicczRGeg4jQ++ezKZwuYPqzqIbSqNW6Jndkq90+Fezbvf23UYxlsu f8AEA 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.001, 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: 1754637346381116600 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. In cases where we do not want to essentially set the error in errp object and also not abort/exit, the caller only passes &error_warn, to warn on error. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- hw/display/virtio-gpu.c | 2 +- hw/pci/pci.c | 3 ++- hw/s390x/virtio-ccw.c | 2 +- hw/scsi/spapr_vscsi.c | 2 +- hw/vfio/pci.c | 2 +- hw/virtio/virtio-mmio.c | 3 ++- hw/virtio/virtio-pci.c | 2 +- hw/virtio/virtio.c | 4 ++-- include/migration/vmstate.h | 2 +- migration/cpr.c | 5 ++-- migration/savevm.c | 6 +++-- migration/vmstate-types.c | 11 +++++---- migration/vmstate.c | 56 ++++++++++++++++++++++++++++++-----------= ---- tests/unit/test-vmstate.c | 20 ++++++++-------- ui/vdagent.c | 2 +- 15 files changed, 75 insertions(+), 47 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 0a1a625b0ea6cf26cb0d799171a57ed3d3ab2442..5ff9f5e6dc0b6b112e36170318c= 900f893a73c5e 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_warn); =20 return 0; } diff --git a/hw/pci/pci.c b/hw/pci/pci.c index c70b5ceebaf1f2b10768bd030526cbb518da2b8d..80545189980f176ca6a3dc9abce= 7043c8bc2708c 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_warn); /* 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..bafcb9b76d81749925e31b5a0a1= 320b3332ad2cf 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_w= arn); } =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..a4812afd0cc7c495080ef03a531= c7d279af29b33 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -648,7 +648,7 @@ static void *vscsi_load_request(QEMUFile *f, SCSIReques= t *sreq) 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, &error_= warn); if (rc) { fprintf(stderr, "VSCSI: failed loading request tag#%u\n", sreq->ta= g); return NULL; diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 4fa692c1a32bcfa4e4939e5fcb64f2bf19905b3b..04d385d7674f444844beeee7364= ee0424f762758 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2795,7 +2795,7 @@ static int vfio_pci_load_config(VFIODevice *vbasedev,= QEMUFile *f) 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, &erro= r_warn); if (ret) { return ret; } diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 532c67107ba1d2978a76cf49f9cdc1de1dea3e11..f14f0487fec3ed30d2cc3aec969= 50c2121265716 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_wa= rn); } =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..07f144d6d1bfbb561b28015de71= 762601080dc23 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_war= n); } =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..c73d1c5a3b790eb96df0de4d84c= 134ac68e326ff 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3327,14 +3327,14 @@ 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, &error_= warn); if (ret) { return ret; } } =20 /* Subsections */ - ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1, &error_warn); if (ret) { return ret; } 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..bdb24736f44e91ba59b6e622a31= 5597c97e7f64d 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -202,6 +202,7 @@ int cpr_state_save(MigrationChannel *channel, Error **e= rrp) =20 int cpr_state_load(MigrationChannel *channel, Error **errp) { + ERRP_GUARD(); int ret; uint32_t v; QEMUFile *f; @@ -233,9 +234,9 @@ 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); + error_prepend(errp, "vmstate_load_state error %d: ", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index fabbeb296ae987d0c06ba6dafda63720205fecfd..cb64f2855d46aaa7c617b3e4079= a2c9e566079b2 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, @@ -2839,7 +2840,8 @@ 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, + &error_fatal); =20 if (ret) { return ret; diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index 741a588b7e18c6d37724b08a0101edc8bc74a0a5..e2020a733d0921d748b6f832a19= 3e5de8d302d5f 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 @@ -549,7 +550,7 @@ static int get_tmp(QEMUFile *f, void *pv, size_t 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, &error_warn); g_free(tmp); return ret; } @@ -649,7 +650,7 @@ 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, &error_warn); if (ret) { return ret; } @@ -803,7 +804,7 @@ static int get_gtree(QEMUFile *f, void *pv, size_t unus= ed_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, &erro= r_warn); if (ret) { error_report("%s : failed to load %s (%d)", field->name, key_vmsd->name, ret); @@ -811,7 +812,7 @@ static int get_gtree(QEMUFile *f, void *pv, size_t unus= ed_size, } } 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, &error_wa= rn); if (ret) { error_report("%s : failed to load %s (%d)", field->name, val_vmsd->name, ret); @@ -892,7 +893,7 @@ static int get_qlist(QEMUFile *f, void *pv, size_t unus= ed_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, &error_warn); if (ret) { error_report("%s: failed to load %s (%d)", field->name, vmsd->name, ret); diff --git a/migration/vmstate.c b/migration/vmstate.c index f01bb5fe17aa1c9e16c3964836904a95e5892670..60ff38858cf54277992fa5eddea= db6f3d70edec3 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -132,29 +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; =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, "VM pre load failed for: '%s', " + "version_id: %d, minimum version_id: %d, ret: %d", + vmsd->name, vmsd->version_id, vmsd->minimum_version= _id, + ret); return ret; } } @@ -192,10 +196,12 @@ 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); @@ -208,30 +214,43 @@ 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: %d", + vmsd->name, ret); + return ret; + } } if (ret < 0) { qemu_file_set_error(f, ret); - error_report("Failed to load %s:%s", vmsd->name, - field->name); + error_setg(errp, + "Failed to load %s:%s version_id: %d: ", + vmsd->name, field->name, vmsd->version_id); 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, &error_warn); + ret =3D vmstate_subsection_load(f, vmsd, opaque, errp); if (ret !=3D 0) { qemu_file_set_error(f, ret); return ret; } if (vmsd->post_load) { ret =3D vmsd->post_load(opaque, version_id); + if (ret < 0) { + error_setg(errp, + "VM Post load 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; @@ -568,6 +587,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) { @@ -607,12 +627,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..807deb3531f3079864ac99567d4= dece7122571dd 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 @@ -114,7 +115,7 @@ static int load_vmstate_one(const VMStateDescription *d= esc, void *obj, 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, &error_warn); if (ret) { g_assert(qemu_file_get_error(f)); } else{ @@ -365,7 +366,7 @@ 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); + vmstate_load_state(loading, &vmstate_versioned, &obj, 1, &error_warn); g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 200); @@ -391,7 +392,7 @@ static void test_load_v2(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj; - vmstate_load_state(loading, &vmstate_versioned, &obj, 2); + vmstate_load_state(loading, &vmstate_versioned, &obj, 2, &error_warn); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); g_assert_cmpint(obj.c, =3D=3D, 30); @@ -480,7 +481,7 @@ 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); + vmstate_load_state(loading, &vmstate_skipping, &obj, 2, &error_warn); g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); @@ -504,7 +505,7 @@ 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); + vmstate_load_state(loading, &vmstate_skipping, &obj, 2, &error_warn); g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); @@ -773,7 +774,7 @@ static void test_load_q(void) TestQtailq tgt; =20 QTAILQ_INIT(&tgt.q); - vmstate_load_state(fload, &vmstate_q, &tgt, 1); + vmstate_load_state(fload, &vmstate_q, &tgt, 1, &error_warn); char eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(tgt.i16, =3D=3D, obj_q.i16); @@ -1127,7 +1128,7 @@ static void test_gtree_load_domain(void) =20 fload =3D open_test_file(false); =20 - vmstate_load_state(fload, &vmstate_domain, dest_domain, 1); + vmstate_load_state(fload, &vmstate_domain, dest_domain, 1, &error_warn= ); eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(orig_domain->id, =3D=3D, dest_domain->id); @@ -1241,7 +1242,7 @@ 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); + vmstate_load_state(fload, &vmstate_iommu, dest_iommu, 1, &error_warn); eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(orig_iommu->id, =3D=3D, dest_iommu->id); @@ -1376,7 +1377,8 @@ 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); + vmstate_load_state(fload, &vmstate_container, dest_container, 1, + &error_warn); 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..b9a22a689d9acfeafb862ae7330= 8db6fbd52331e 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -1008,7 +1008,7 @@ static int get_cbinfo(QEMUFile *f, void *pv, size_t s= ize, =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, &erro= r_warn); if (ret) { return ret; } --=20 2.50.1 From nobody Sun Dec 14 02:02:08 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=1754637490; cv=none; d=zohomail.com; s=zohoarc; b=BqmCnLbm0g+9w/B4nTkgNavJfyjOVrc/sL5jGdnHhNFavIqWPZrLiwZoCwCt63LL9zb6Ku+qJXtZ+2Fwx5TTMGX8I5g9fxsTaeXMGR5yfYjM+UFfkcsoNFLbyX1/iiYke3YTgLgBibEWB8HYF4I7R3P9X35FSopX7J004LBMldg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637490; 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=1v0Wy0NSbA5uZ0B0ojmXFDTE3N7jK7tm2qCkdD6UUW0=; b=K6lN4fbA8zNnZ3ZSLHXWey/VIoKVoTddKxdzBceAmGCIXm2q4pc5IEd2j3vtnNDiHz5Hz+xlVuPHCK+1oJ0pz9jWxKctlNmgesu0m3DISsNEnWizmRhWPpO8Z1RpZHTP4lCGHpqolRdM2YXrbx93C/x3dWzZQjV58EvNRwGiScM= 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 1754637490956616.0310703711917; Fri, 8 Aug 2025 00:18:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHK4-000693-IK; Fri, 08 Aug 2025 03:15: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 1ukHJp-00063w-Hz for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15:19 -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 1ukHJn-0007A4-Fj for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15:13 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-552-KqzvSMyYP4OTOOv_VnzBIQ-1; Fri, 08 Aug 2025 03:15:08 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-24249098fd0so22539925ad.0 for ; Fri, 08 Aug 2025 00:15:08 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.14.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:15:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637310; 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=1v0Wy0NSbA5uZ0B0ojmXFDTE3N7jK7tm2qCkdD6UUW0=; b=iDVzkF37IGREtgKF23m77bijX6SBeCh+TGjaHum+DrHrCiIcxNnLB4yiuPk0Q+hqBz77VT gxE7ZFiPUD3g4WBDU0iQ5ibi3fTrFYiFW0oqypr9UEMqBss4lwTZWxdF84aqjyo8HI7SX6 aQT7qTYXKCkKM3eOcrChXxwygEpYHl4= X-MC-Unique: KqzvSMyYP4OTOOv_VnzBIQ-1 X-Mimecast-MFC-AGG-ID: KqzvSMyYP4OTOOv_VnzBIQ_1754637307 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637307; x=1755242107; 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=1v0Wy0NSbA5uZ0B0ojmXFDTE3N7jK7tm2qCkdD6UUW0=; b=WaeTPYDZ1BGCR2YNkEmI2vH5kDCxz+gvgp05WXxoKCxlKV5qEtgj1IrbJWwuNd3lL0 spnhBdXeUf+O7G1WgSizAZY1GbJTii4uaNX8zIxcMMNuKU1FO984FkpDIjsF6xyOM6/2 59i2ayAXAf9GFOnnLXIc4rUDkMjrWaoBkD9Vtec+qby86FuQTnV/kqtJdGx2Fk6QQXuC tCnMMUEC4kJBECF+7zzrKBqjkW7SRWn9mcuTtH4fZDmnLkFN19eV4t50TyWmJrNu3UGb UsqayD6VTbIPFovN5I6yPm6/ms/zml1QYqO+5fQjJ4pZMaF+FJZVjEgphopyHRHVS5SA Qltg== X-Gm-Message-State: AOJu0Yyq12SyiARHWeUKMqU3hdnKxWmVZyjhoOkNdwBU4rY2jcOCtjsI OxgFn44UzPkEoeEydJLD4AhwRXdCns4n1ALFrt5IFwcLbCuzOACp5fL2nS9WbVoPqHBUZqjE2xO wKz7AhDDtX9oGPE0Pgg0+zSvqbo9ptT75bFs9rDT6bTzbit+CsIRhFK5U X-Gm-Gg: ASbGncu/Q8Zp+EXrDGKDmGOn7B9e/v8nhfra/r2eIJfFXhSGqHc4nDpVFxp5MysULtl jaCaJwv+pEgnbbCPSbk4R+UjdKNv8xKYgQT1J9sZXUGTC+hh4ZQdq0nlEQ/EqXIhKSmbJZOSjq4 ih6NFNSMfBLHuNxvjFVhP3THUWmSiHLHqy0NHg3R56J/u/krGv+v9kLyKsyhKbUErzB34YqSS79 1cCUBkj9eXr8opGMokTq9y8ixqtkq3Mff3y+5udnSQnsjR+bfKmZAbaoyzTk0c5H4isWTQJVS9N k8He1UsHpWKvbt5GMf/osm3ugK5YgXvrZlnLGy8PaLV92hlBnrmBCg== X-Received: by 2002:a17:902:ce91:b0:23f:f96d:7579 with SMTP id d9443c01a7336-242c2206d64mr28071795ad.37.1754637307261; Fri, 08 Aug 2025 00:15:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFOrxdLHP2yGX/57eRXuIbDA3aYDyk6HNZU1XdUSFFgn2r4riszeKnry5WgeKlhONdXY8A2Ew== X-Received: by 2002:a17:902:ce91:b0:23f:f96d:7579 with SMTP id d9443c01a7336-242c2206d64mr28071205ad.37.1754637306855; Fri, 08 Aug 2025 00:15:06 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:29 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-3-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=2844; i=armenon@redhat.com; h=from:subject:message-id; bh=LUfuSVtS+gUS8beBElvFDj3Y5B57FjuN8HAr4S+wfhA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVdEFVb//P4wyOZjY0iPuF+y9h2vekNDjbcLeTurb 6S4fr3UUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCL/XzAyzFM/IbRP+Rnv1Zm7 Qy5uP3K06prwvM5X/EIhFVfWq2Xl9jL8Ff7JKyHeJHj0V9HtlR0em51NXmao7+Vv+fLQf4Hvsjl iHAA= 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.001, 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: 1754637492264116600 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: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index cb64f2855d46aaa7c617b3e4079a2c9e566079b2..0c445a957fc99f826e6753ed379= 5bcdd51f1e3f5 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2814,35 +2814,42 @@ 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; =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, - &error_fatal); =20 + ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, + errp); if (ret) { return ret; } @@ -3119,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637441; cv=none; d=zohomail.com; s=zohoarc; b=eQbST2Lch1kB84eL9YnSeVbPsIETYW+/fvA95Cr2JV+dlFYLJRwoZQjqcsS2MOeJcmBemucnE+OSnGyBnAbbPr8iksjVMDRpg3NMyCV1Iy0olmqiQPsBjdWAeGpFsC4XKomC/qj1Z/IEa69+Ybv2fY5pgCD5zwLiwEnmcR0sElM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637441; 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=k3KCUTS9bthE/q+vuH7wXyUsB8QAxl3I26xc+I+6qlk=; b=KFvroODP5GsIzeCfg3wDpLft79mNNbV1BiargF0enlc9OA/Q4Spk1l9B3qYlNy9V93r0tIi5YlbldyNW1RKz3sPvN6cBe6SH7XDCTFGhSbXfwNcwbPmB2HmeAramgUG5uZ1I2W+/zXNbhuRQ29tcwoyZEDweNyfwa9nDdYqdPNE= 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 175463744187625.094011176888216; Fri, 8 Aug 2025 00:17:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHLg-0007NP-IA; Fri, 08 Aug 2025 03:17:09 -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 1ukHK3-00069j-Od for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15:28 -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 1ukHJz-0007Bo-PY for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15:27 -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-37-xbnuOWazN2aRdlyeWIrOqg-1; Fri, 08 Aug 2025 03:15:17 -0400 Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b429e665c7dso1310294a12.3 for ; Fri, 08 Aug 2025 00:15:16 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.15.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:15:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637320; 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=k3KCUTS9bthE/q+vuH7wXyUsB8QAxl3I26xc+I+6qlk=; b=AFMOFbUp4HRl5xB+LAkIfinBuoSMoji+Zo52sRscBEG3MX3qVREDwTgr1LNRG5YaASw4yu ro1bwtAUBHC6URTklHuLSfvVMvYOXtW/CjHjVJT09f77vSYHx71BK2cmVG3knh2n9cvB6l gBTcWcAYk2Tc2c/GhjCp4rNJgaBSLsg= X-MC-Unique: xbnuOWazN2aRdlyeWIrOqg-1 X-Mimecast-MFC-AGG-ID: xbnuOWazN2aRdlyeWIrOqg_1754637316 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637316; x=1755242116; 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=k3KCUTS9bthE/q+vuH7wXyUsB8QAxl3I26xc+I+6qlk=; b=GArV/Dx+dia3nKZJOvgPEGi452Nz3EUywzXv2P9LKWMaBvl7+RHb7hrszQHW+SS/4y GBcx7drIwF0aGvRhrgL8RJc5fcQv4ftyalEIvkoXKPWuz7uHUtWwAG42S5DqNunHClon aYbWYGGokBKwDhJepVQ8+rqD2zFftATgwZDigr8ni5IlV8OAmoZYQP4vfMocpLM5lHKr XJpgqlFjapiWmq5c6fG8ECMcwVvULWJ55teSstqxtUWkQrfE6mxUvC3UxrCC7Rv2+bdk rsvYzCmdFn2x1kXkK9aaYGA3hLUUqSMiF7W+ZXCoK5UGNEE/OSI7y4IRxcqYP5BjhFow bUCQ== X-Gm-Message-State: AOJu0YwwaULeTFbZZqgMwGsvDlxeVsympRFOhDobxSXx6v1v4RnWwVWk 57aEKEroNxzBLC6iEjgZ/SQFlL0sVNiyq9L8SquDQaFHQl5PD+4OESVgBafXdz6S73OjwUv35un RstZ09Vwi+7NBhe5l5JjLWn95ezV+vubFNfriV/LhlfnhxqwbG4h4ia2J X-Gm-Gg: ASbGnctveCpLragHEhJVoIF7jN4iEZLbxi0S/PwaltkH8oY7l7wS7BobKg57Z7bnTFP farfMfW1JE+N/e8a0E/hh0H+aEo71Y+9DjKur2/sEGl3JDT20YDLq/5GeMXTMu7I9Jh+mbZixGi VOvIk6L+Zee3qm8GzxBFmMuQ5wCMJtx7aKedk4Fj6nMUrSdhuTbNsTKiAVRPZRgeyTHmZe7RmLk wXyu61ktKcdQs2wC/ML4Me/nBI5vhEVC22cCxHjg+dl5/UCNm07VCeK+gUQJfCptqNzf4kf5VFG M6TO5SL+GMbde6FGcNxnl34AnyXryWUKwMUz2bIPjZojsxf1uP1Isw== X-Received: by 2002:a17:902:e544:b0:242:1b:7f05 with SMTP id d9443c01a7336-242c21c30e2mr32738615ad.24.1754637315852; Fri, 08 Aug 2025 00:15:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFnNUOrvi5zQ8ysoZYbKUu+dltVp0hfcCYn7vsOZmcBdXf/Uix04dYsE9GelD834mymqR88rA== X-Received: by 2002:a17:902:e544:b0:242:1b:7f05 with SMTP id d9443c01a7336-242c21c30e2mr32738255ad.24.1754637315485; Fri, 08 Aug 2025 00:15:15 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:30 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-4-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=2395; i=armenon@redhat.com; h=from:subject:message-id; bh=lv1wyhoSKPghBwYXHzxqme8sGZVcV6fS6AKrxDBIaJA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVf0XvjwMqs+3n6R030q78qVheH7FxRvWScnIc8lO 0tw0crTHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACYSvJfhnw6LU7Wjb7mXPoNk yYPTgostvI+Jf/j49lnGz0W9Ag6uVYwMf3OemOod8E38UOLws2qmkN4XlbkXu9+UrJyqs2Xj/we f2QE= 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.001, 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: 1754637443499124100 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. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 0c445a957fc99f826e6753ed3795bcdd51f1e3f5..5806c1822c5712fa7c22185e020= 50f3b16503757 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 VM 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, @@ -2741,7 +2747,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se); + ret =3D vmstate_load(f, se, &error_warn); if (ret < 0) { error_report("error while loading state for instance 0x%"PRIx32" o= f" " device '%s'", instance_id, idstr); @@ -2794,7 +2800,7 @@ 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); + ret =3D vmstate_load(f, se, &error_warn); if (ret < 0) { error_report("error while loading state section id %d(%s)", section_id, se->idstr); --=20 2.50.1 From nobody Sun Dec 14 02:02:08 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=1754637442; cv=none; d=zohomail.com; s=zohoarc; b=LU7Q/49sF9rL4m861TPIOV3NObkaOhNMOv150dZRfiKc34InVfXf9LJtwwbjzQqfniR1a0LbvdMMULB4t+4mAxbTlqYalH4nQNu99wd8t9L5UBA52NkplI43IffK0reWKLb8v/RGkxilFxbDGy4jkScYNubbMENYhmB19jBaYZQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637442; 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=01tgWRjsp4Nmp978hJEf36J87Ju4L/qLp1nYjZWtjHU=; b=BDedbUwBhzxPDk8kfGZcOP+oRtLhUTFv0X2XW3H65pZLUJcsFRe2SSlbg2NfHVbmvavNSMggjz+QTktCbs3VoeE7KMnyaLmShQutWAXqnufohV0vsX/S3LTAC+YIw2cF2BrJJHX+kOKUzRnYhgJi/C9T/gFGKPdTmKizYNMXgKw= 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 1754637442274704.9369475436596; Fri, 8 Aug 2025 00:17:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHLV-0007BQ-Fi; Fri, 08 Aug 2025 03:16: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 1ukHKC-0006DF-0f for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15: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 1ukHK5-0007D7-Vh for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15:32 -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-35-A7qZTDPDO7CBxSyOei4KlA-1; Fri, 08 Aug 2025 03:15:25 -0400 Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b42aeac2d75so361930a12.2 for ; Fri, 08 Aug 2025 00:15:25 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.15.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:15:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637329; 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=01tgWRjsp4Nmp978hJEf36J87Ju4L/qLp1nYjZWtjHU=; b=YY/nilkUmAC7mBOObf4Jr+VJgk1WqqDW1lWV4Bt7h1VZAn1F+W+4rH4bXAPaGWqi55sIYz UDcqFhjxzlJILCxa5LTMVXuxoZFn+bbl1j1mtJEYxoi6pue6XEsgJhktSUtCFL24aJ7Kzd YdOwnkjqKSgZD/IrrZnLhwQ3QBiyqbc= X-MC-Unique: A7qZTDPDO7CBxSyOei4KlA-1 X-Mimecast-MFC-AGG-ID: A7qZTDPDO7CBxSyOei4KlA_1754637325 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637324; x=1755242124; 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=01tgWRjsp4Nmp978hJEf36J87Ju4L/qLp1nYjZWtjHU=; b=l1QXFedhub1BEPYkHn5ZJvOwf6N+l0yZ0S/tPD4nJ0CeQPw+dujLUdqb+SlVsHUX3j wIExo9450wakPdp8ktmvZK13oLRzRjouUDvBR0CqfEvOz+jfyvAR8fPj/6x0sVJ+C+fb lspC0fdySRLUuM4lRyS4rwjazZjVcncbmXQqc4/rd7fW6RnWZUII/esyVpXuXfs6AF9W gx1/IB/BrygBN75jBb1OuROPt9jynpc/aZOh0a1Tc/E3fU00zIy7dJth3gcO9c8KE4Ns gvdFQ2s1taEI5haiP5ZIQuR19UBF1AtkFL1dz8ENBo7g/KqOBbHxvJ2YhLD5KFzIkgrx 0bSA== X-Gm-Message-State: AOJu0YwViaKU0QSRICzTQW8ehWVKRt2DaIivadgVPLbBrM7APyPPhznq KPZR+BAY7+NDIt3kiFyIM58NRNxPOV0O20Jx0GyM2PR52rjkJLdVn6OZvJweuCYLNIDjNTbUX0e s2z9wFrSFh66dq0LmqDTsPv1VIviJ/QZpnwNlnnZ5mC9d2TZo126C3KHK X-Gm-Gg: ASbGncudahdYpxJbyO64AW+PKI27Tw+NsDWr94a415MetZE7oB+r7Hut5TQePbUHtbl vP/PELpjcgfjvbR3bUezwrSDum+U1vHx15sALF16J4lWrkerrOnGEMZVRDKtl55Mle01cQx7aQ+ YPw7bYLZRfZ/W2qng/H0tvMpZ0ujz1MikR0Jp1LEkQD1+1bdqLfTwqioIuUQdhyimqGUvtAJQXg pNk68uQwis79Zjr1a930JWbCk19Vur1WsEwv5V6m6LcX+DCrpuRHVacQTgrcODgsrNlEyfNei4C 3Prl8u2DOcKyYEOBEZTnzMvcrYYxBxSc/VajmgqJY71sNc7FpZSRkA== X-Received: by 2002:a17:902:f64a:b0:240:3f39:2c73 with SMTP id d9443c01a7336-242c19ac4f0mr27596145ad.0.1754637324588; Fri, 08 Aug 2025 00:15:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IESWoKTvJ1rCfkD//4MJ+pa0WEgaV4NL0162vL0R0cyCgGTDo/EUAGcUfgRLYDyREZf6z0doQ== X-Received: by 2002:a17:902:f64a:b0:240:3f39:2c73 with SMTP id d9443c01a7336-242c19ac4f0mr27595715ad.0.1754637324193; Fri, 08 Aug 2025 00:15:24 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:31 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-5-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=6217; i=armenon@redhat.com; h=from:subject:message-id; bh=6GpLRCgLM9xCK0aD7MRFnBnb/kEapNprwCbc+wBmSTw=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVeWP572N8d53wSfxOk37H5wqj3q4OK5G7I5eMGuw zKvpjv6dZSyMIhxMciKKbI0fA2QbQoojIi0fXkdZg4rE8gQBi5OAZjIdUeGv6J5fGJ+PmzlBx/1 XokxX9si013mnWZoYCmm7Wj1gb/Tn5FhPnPrrfAfLy/9iXirPOm352bOP+1LhFkY2qaV/Nl3xMa QFQA= 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.001, 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: 1754637443806116600 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. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 78 +++++++++++++++++++++++++++++++++++++++-----------= ---- 1 file changed, 56 insertions(+), 22 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 5806c1822c5712fa7c22185e02050f3b16503757..ef0bc9e989d9de3aee066b16401= ae0cf9f3ecbcf 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2546,32 +2546,35 @@ 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: %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 @@ -2594,11 +2597,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 +2610,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; @@ -3074,7 +3108,7 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f); + ret =3D loadvm_process_command(f, &error_warn); trace_qemu_loadvm_state_section_command(ret); if ((ret < 0) || (ret =3D=3D LOADVM_QUIT)) { goto out; --=20 2.50.1 From nobody Sun Dec 14 02:02:08 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=1754637485; cv=none; d=zohomail.com; s=zohoarc; b=MHPihWJn4J+pN+EGy7K+XUgQPk+dAA95oJj5/bYot9EmEZggwzUqY+CwkcRd7pdSdChUNiPDbZYgn2QdceSd4zbtKTtPAXtl8Q2q8NiMZIcLE7D9FSfZYmPh7IyvsXPIqhyMRDKbr1Sa3NGk9yuMMfWHCguo38DiWRVhYdNm+tE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637485; 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=rsisoMUYyRrNcEb/+SWb07kdSRIAJIbvwaNSO04Xm/Q=; b=i8TSn+A3VXSemLfamS9WBM+EUD1oDFpX2A5dilWeK0lAFfRTRtE3ZDT+5+dcxXh/PF2xa2Rt6bEV4VF5aJOhDEZkp90aumXWV2IFea+M64fBUWvg/C8EtD5DkUxFrMaNgXkvZcFpxPdfzfA5CfN6qQyz9mfHhuPCnDq8h8yVMgk= 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 1754637485343204.99996643550878; Fri, 8 Aug 2025 00:18:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHLv-0008TL-E4; Fri, 08 Aug 2025 03:17: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 1ukHKR-0006Jf-Ns for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15:53 -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 1ukHKE-0007ED-Su for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15:50 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-397-AqHjYKEeMqCwOfGtZRDA7Q-1; Fri, 08 Aug 2025 03:15:34 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2405fdb7c15so26408805ad.0 for ; Fri, 08 Aug 2025 00:15:34 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.15.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:15:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637336; 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=rsisoMUYyRrNcEb/+SWb07kdSRIAJIbvwaNSO04Xm/Q=; b=Y6ntGW2bmHj3lfGwgFdYhIxvvXGTbTnQOtafl55a3jH4fjwkKMrJJ+XR1m1O0G3LwFhmOb NhRWbQhexGD2hH3cLoKxUIwZfc78JlO/y0jelQVXUuOyiwyj/OYsbceCGG5rNLf2adCfQH ODvx7ZXoy2Zuk0wTIqADTyqzRlzOrnM= X-MC-Unique: AqHjYKEeMqCwOfGtZRDA7Q-1 X-Mimecast-MFC-AGG-ID: AqHjYKEeMqCwOfGtZRDA7Q_1754637333 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637333; x=1755242133; 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=rsisoMUYyRrNcEb/+SWb07kdSRIAJIbvwaNSO04Xm/Q=; b=Y/+OZmLlg/zUX3YPkCGnBS8GAMxaUyA3RRL399lrAzBNDK82xZ1osPR7bzNYlXf6Ut MbN2XR2ZzCG605ZxBqFRDu0cgeFCYVG9TOu7+jXny0lC1gJCXOQ9gNFyPTbPsU+hO+fY jMmv/Zze9ak31KO+pert0iVNxkkjlUvb/K32zLzBI2kuwU37evNb7/PH4e77wyeyC3Hc A04j7x/XQyoSPw+J3TzGz2LKt3MsJYEn5S7q9mj4mhQnPFCPt4eKyJo0nZB4hwQpWljI 4sE8fOSdw1X7WLQj+dWoV10hlbV5uxeo1xvwzMxFioGPNJGOOJ7/nwt0U+9vT3dwl99z tiDA== X-Gm-Message-State: AOJu0YwYx7wjsoGLHhMS4BrGZhP5coWySFzZ+pTcxYhDP2y+FK7lww5g Dot8t5TXrs6nKUd6MGmgLaFqLJi78HL0gaSsuBFuCva1YKRkF/AYziVqwkGv4nZsFwyukyiK0kA NRHpVBpnzO1GrrdaJXDISpVyDo4evwQ9D1ZtmZ3SNf4mDJxptO5W/W+VzJ5+v/+0Q X-Gm-Gg: ASbGncug4tv5qm+DJv61pqkvJVcP0mSjdLkfz4rZiJKpdPKaAClnkfEpS5TDgTF2Hfx ++u5AmHnLa8BVhEpCEUQMbF0uXzvFTCc8HRO8tOJ6fUu+mqQL7BhXb3N4drWMJA2BoeNNfP+19z /F+hqfpkUMNfpU48Umk1gTyx3F1H7E7IB3CjzMKWJuwky6zaWrMxAFrNix1lKrDgdUNT03UBTo5 GrFC6CCcO8o9iTgbiu/xyM6O1BkS4UuK0l9w6zpwtV/FSYbP0fhgxfyhpueNNeqjnKTaYCD2kYS Kjj9m42DPmXN9HrSRFimVV4dgWQQxGGNWsk+ErOpPUPvlIXVYDHJ/w== X-Received: by 2002:a17:902:ebc6:b0:238:120:134a with SMTP id d9443c01a7336-242c201056amr35014595ad.22.1754637333338; Fri, 08 Aug 2025 00:15:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFnhPr0wQ9L7Rgy46F24TtNuJD+/sys9TTZH+4SFdLmD03pU+jOnP5P7MHFs3/CH0ZsT45Faw== X-Received: by 2002:a17:902:ebc6:b0:238:120:134a with SMTP id d9443c01a7336-242c201056amr35014215ad.22.1754637332951; Fri, 08 Aug 2025 00:15:32 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:32 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-6-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=2723; i=armenon@redhat.com; h=from:subject:message-id; bh=3mB2h+cFVTVgcyAHN6Q4MYhvAR65KG4PCQXNdhHx3jA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVfkvgvWidgc2pXgrC2yvunBr7fzT1duibzl+VLhw 8Wms00XOkpZGMS4GGTFFFkavgbINgUURkTavrwOM4eVCWQIAxenAExETpnhf/40KbOJXspSNy2L 7q9QDhJgXb8t13Xe04kfiviSal26PRj+8B+T2mwdtCjnb7jklpknyx8c0k7e8u3j0ROhb5S1Vr2 oYgMA 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.001, 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: 1754637486022116600 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: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index ef0bc9e989d9de3aee066b16401ae0cf9f3ecbcf..adc4ca16ebc8deb4efe49ac2088= cc20aaf795056 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)); @@ -2618,11 +2621,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637521; cv=none; d=zohomail.com; s=zohoarc; b=bbb7+LwmIWvzUjT07L0GFpFIkn4RWw1X1ws/BDuwmHtCNWfqwhfSVfpA4Hho6+kdh+DIwE2dEgAbLHsYH9TNXCjOygJq9HrFGI9SJ17332UrKLbw0TLPIyddLcZ6aiYTXASN6SHWAz6sHIZC0VIqw8gbonpeCb94kC4LRdjf4gM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637521; 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=776aUuNNXpBQ/gxLXLFuR/W2j/u8IsZh9hr0NLkKlGo=; b=YGX4nuemrHaBudBJm24Npv7Vx7kERTYBl4UDcTJadYBWXwKHZlFVUsv8wL2+ShVAS8TNziZx1RtatZPe34T4hQceDnJzT18uuOb9wq5/zQEFKC85sP1+Di8deUwhObSU+W3e85+SaNrnfdW81r6r0kWlkcQ72jBwjlpaJZ+1P5Y= 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 1754637521416963.1554811485555; Fri, 8 Aug 2025 00:18:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHM8-0000mI-4w; Fri, 08 Aug 2025 03:17: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 1ukHKW-0006NO-5N for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:03 -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 1ukHKN-0007Ey-Hm for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:15:55 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-220-G34YodxwO9mCXkUA5tWyOQ-1; Fri, 08 Aug 2025 03:15:44 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-23fe26e5a33so27458305ad.3 for ; Fri, 08 Aug 2025 00:15:43 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.15.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:15:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637345; 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=776aUuNNXpBQ/gxLXLFuR/W2j/u8IsZh9hr0NLkKlGo=; b=bBjxfLi/z8ubTiO62pCIDRQjr5LPjtiIP3x8SGReK9DTZpIBG4F9HA4GVMB5nybgNe0nhQ P8n4hvw0CSPlFq+3OeWT9M31t+RqMUaPwFpRxLE929+p8cCwOzMNHgYpDw+6EsyYOae2Vl iLw3N5t1fdmazIynAT7tIRnGUfnfrKY= X-MC-Unique: G34YodxwO9mCXkUA5tWyOQ-1 X-Mimecast-MFC-AGG-ID: G34YodxwO9mCXkUA5tWyOQ_1754637343 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637343; x=1755242143; 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=776aUuNNXpBQ/gxLXLFuR/W2j/u8IsZh9hr0NLkKlGo=; b=ZZeVs9uMj7/uqGI7QeW7TjAEkUKtyAqzxTdRxjNJ9mX8+KCfAfrY1Pd3k0Q5HVdOKc Aj5KLDQElJb0qJgpJjaM74U3a06WsD4mjyQW6fUVcXmFvTyJIe1pIsxUhHz+EmyBpUKi JWWdVJqFkz5gZwCs+ApydKvvqcPiQrB7G5PzOjAhmymPzoO8bdRQf6lixx4gSlnBT/dl 6ZHcrG3ObWz7br1k8dTQrbuqY8PSUK45GaFLLn4VnKhSKdI91UDDXQzj6KGTYyHACGXn IlNXsjQtmCWjCyBaRri0xE8i09A+nELFsYKrzq8sQnT9GFz3dwbeRjLU6XEMnSmrFhnS NJ3A== X-Gm-Message-State: AOJu0Ywu/cwb6EmPG6gm2/Pcn35Aj9Yra4QtzLoUMhwtLXuIiDkKpHAB CEwXKWYGliq4sVBufSzXAuC1cMTHogHpiayChW/FhAZtpydz8Y2ImdGG8VB2RQkOqNCwAq7wCes dxiCHbxh61E065/NkEQmoDsHVmrU/kqTYF5DWRlAlls1PXhhaLuOWZRmC X-Gm-Gg: ASbGncuY2XiqIobwBCiUTXKn/n1VjY0iUKtGbYGqmVFb+JuTHW+0aAt/OXz8JuKQQeA DrItJgE8QGd7GhqsvCLMqI8aIztSa2rO3dK1jqzpz/O4/86WP10GKcUONcQLrDeHPWxZUsqG8C+ N3/PodK/ryO0r8tr2+PtzSUycNgko5xhhcAkX8peaR+GYKg+ybUbvwXdPvBwIQvoJzi7tUDN6jJ YWdRNwqg6DobG7knIZLUERWgvt44yvRkYbACZ8qkb1p/UnVpFqw7fCnSrv4N3TqLO2xvFyF6kSd oLXcxLyM699KHrOgalLIVMe2k5hL+PfwFg81xB5hSS9qUR5h3YmlXg== X-Received: by 2002:a17:903:3bad:b0:234:b743:c7a4 with SMTP id d9443c01a7336-242c22c3c1emr29484025ad.38.1754637342942; Fri, 08 Aug 2025 00:15:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGtROQHALO00noWzKJjHS/LKQSLED4y931ir4T3rd7QyJpv/BFkqbu4i3ouUvrUo4mDBnfI3w== X-Received: by 2002:a17:903:3bad:b0:234:b743:c7a4 with SMTP id d9443c01a7336-242c22c3c1emr29483815ad.38.1754637342523; Fri, 08 Aug 2025 00:15:42 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:33 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-7-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=6555; i=armenon@redhat.com; h=from:subject:message-id; bh=2BpcOKMH/FVFxTwW0YF1zv6MRi3jFfGw2z/tzd0HdX8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVdUjgvuWKom7/zz+oujE1PlvD3vTL38UXjpnW+GC am/XywQ6ShlYRDjYpAVU2Rp+Bog2xRQGBFp+/I6zBxWJpAhDFycAjARaxuGf/o2LvoFzvvvuoTl GCzcwnYt9NtPecG4SUuMjymWnqzw2cLwV+qPwPJKJdPAe7vWlDz7GnjY4iH/48TPvUfOVUa0FLt JcAMA 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.001, 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: 1754637525551124100 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. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/migration.c | 9 +++++---- migration/savevm.c | 31 +++++++++++++++++++------------ migration/savevm.h | 2 +- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 10c216d25dec01f206eacad2edd24d21f00e614c..c6768d88f45c870c7fad9b99573= 00766ff69effc 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 @@ -924,13 +925,13 @@ fail: migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE, MIGRATION_STATUS_FAILED); migrate_set_error(s, local_err); - error_free(local_err); + error_report_err(local_err); =20 migration_incoming_state_destroy(); =20 if (mis->exit_on_error) { WITH_QEMU_LOCK_GUARD(&s->error_mutex) { - error_report_err(s->error); + error_free(s->error); s->error =3D NULL; } =20 diff --git a/migration/savevm.c b/migration/savevm.c index adc4ca16ebc8deb4efe49ac2088cc20aaf795056..8c107fb5b89dea4d1b9a2746624= 7c5d7c6b63bec 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3151,28 +3151,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 @@ -3183,6 +3179,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); @@ -3200,8 +3199,14 @@ 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 VM state: " + "Migration stream has error"); } else { ret =3D qemu_file_get_error(f); + if (ret < 0) { + error_setg(errp, "Error while loading vmstate : %d", ret); + } } } /* @@ -3466,6 +3471,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; @@ -3487,10 +3493,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(); } @@ -3498,6 +3504,7 @@ void qmp_xen_load_devices_state(const char *filename,= Error **errp) bool load_snapshot(const char *name, const char *vmstate, bool has_devices, strList *devices, Error **errp) { + ERRP_GUARD(); BlockDriverState *bs_vm_state; QEMUSnapshotInfo sn; QEMUFile *f; @@ -3561,13 +3568,13 @@ 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); + error_prepend(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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637493; cv=none; d=zohomail.com; s=zohoarc; b=a3ba5xN9K9+rqwBUtaLt2o0n0HSEURlG7RZrjPngtKRImbpmLA8Z2yn3Roi3EctFFlzWhr8x42dK3kCb05WQF0vbhKfO87X1yjxXJG455F9nTN5y8keNepPCbvvi/g8O2sVbwjo7xQaqSGhXQNgx2un01YyZf+R7rAgufKw0iOo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637493; 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=674/Cf6toA/OKPIbAxIkqVYnsPnsPyHvnVzOFE9af/o=; b=dFmQHslVrPDhLgdGMa91w6Q3lhwAuQE1n97kXm5UqZHpKS6dKLK8Q+7X3P6MNPnzWDzEsIxSlthaOIz78wA/71CnD5t5shBrKPs1tniyUmHYgGqQ7U9sg4VtLp5d9F7Ts1e/b7fJix4X3X/C5H1gU7Z3kNCAXeiZCCbrrn/U/cs= 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 1754637493058273.47180860473577; Fri, 8 Aug 2025 00:18:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHM5-0000Sq-IP; Fri, 08 Aug 2025 03:17:33 -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 1ukHKt-0006oc-OQ for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:35 -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 1ukHKg-0007Gx-B8 for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:18 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-627-gFkLwmp4MGiVWF1fhfrOfQ-1; Fri, 08 Aug 2025 03:15:52 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-242aa2e4887so41483605ad.3 for ; Fri, 08 Aug 2025 00:15:52 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.15.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:15:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637356; 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=674/Cf6toA/OKPIbAxIkqVYnsPnsPyHvnVzOFE9af/o=; b=hsi2OxKBywL13HvJB7M0TxKpSfddkapmiLuwW7dwktCLvVGJ4rCONeszfsxFdv32Z207CU 5R/AOSDjvaUeVR/msK8h0/i1BqRpzrhzABxWnJtJNQo0ROQMMhJ3jvvsGN9u/x89c9OACa Y/yNDjFACiz4M2TGnOQUWVWckkUKs1w= X-MC-Unique: gFkLwmp4MGiVWF1fhfrOfQ-1 X-Mimecast-MFC-AGG-ID: gFkLwmp4MGiVWF1fhfrOfQ_1754637352 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637352; x=1755242152; 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=674/Cf6toA/OKPIbAxIkqVYnsPnsPyHvnVzOFE9af/o=; b=FhnEspDliRoQGj98+a3rn9hFciCB0TXKVoCLEIQKH7NjUZaFmrWDM5EFJead7ocd9u Yv/Bk4aIpUGJLn28vjge9VeNyGHyAiGTEW/vhNQKADR/5819SkQxEp15vqt0erwNWnGl pKJHCp0oVZCIsoNAI9b7MJVmGFwlsAkK42u9tE/nUhA4S7GA26f1wqmVKRDt8AUDQT92 3d0M87TL4VVvEM0wK+SkIfZvAqIkz5hZdn0jCndCwRDHMcBe6Ek6WX1PiE28LwQ4WxUp M8PY4+B3UFfm+z3jmfPwcjS/BrKLSdKXdbwGFZ/qoPRHUr3XQQraCH+XcsQDlW7cLQFP H3JQ== X-Gm-Message-State: AOJu0YwjWJuc9786iJs0n4AmqyZYI4ivEtL28S2CwD9159gHNzdKq7op L8y5B4IEsnsQ8E8Cs9k8iZIcysw8+7m8BxMOPhuIntHqix8CWOzmcBT1UvV7yVvjQvE3NtmUhhN 7MpwhUodxU3odeE62AH3jPJYSsLH5t66deoye40qirvRbptwNXbq4iH2G X-Gm-Gg: ASbGncvPPstK6SstjUCLUEG0b7mshwygeZ6yZ5BN4CSIaxE66qxiwk+hCwiIyiH6Dop 19He+c9AgkWJpKmlW/vdJTnt08/ZkSeuzZQKPnf8NUrks69BGP1xr96IkCuxBZ7AkITgmotFCnY APr6ALGXVY9esnnQHa0ZXlE5kmBbEG+GKUVqzVKuUsl+yGm2QLMUJ3xbaM9jOJEeyUtUpshMttZ 9OzFFYU1pvaL85Vqt418D7JYyVfYIq5ijhYGAs3vg7FR1cudVYcBkF3eyXe/KQGlRmoSySLT8Zz fuklfdp88zo2Uxbr1Tf9LYTyw4TZ+tbwxWCy5cGbvq48xsj+YLU04g== X-Received: by 2002:a17:903:1106:b0:240:3f4d:b9b1 with SMTP id d9443c01a7336-242c21fe5e9mr29386755ad.29.1754637351676; Fri, 08 Aug 2025 00:15:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFzaXDhUkp8uaAIKJYAIHTJ7m/BlrYP3t6Ym5xHEMHtCt98P77XwcBU5znFqIPSWAGq4YPElw== X-Received: by 2002:a17:903:1106:b0:240:3f4d:b9b1 with SMTP id d9443c01a7336-242c21fe5e9mr29386375ad.29.1754637351236; Fri, 08 Aug 2025 00:15:51 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:34 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-8-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=2682; i=armenon@redhat.com; h=from:subject:message-id; bh=FTU2QK1xtHVGrbgg6clW9lVV6renoihKHbOJ3mkz6GY=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVd1+iwnseUpTpuwOFHyZeGrqTmSzDl+Ico8elE8g ezdP3I7SlkYxLgYZMUUWRq+Bsg2BRRGRNq+vA4zh5UJZAgDF6cATGTnRUaG44GTf7w/9/pJcN4G /TqL5UujfOQfCnw4u/WPY+7iacvvNjH8034x09BmR3SdvCdDUFCFWBr7w//Vi3c+WDDZ1/3LzP4 X3AA= 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.001, 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: 1754637494125116600 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 Signed-off-by: Arun Menon --- migration/colo.c | 4 ++-- migration/savevm.c | 5 +++-- migration/savevm.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index e0f713c837f5da25d67afbd02ceb6c54024ca3af..0ba22ee76a13e313793f653f43a= 728e3c433bbc1 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -729,9 +729,9 @@ 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"); + error_prepend(errp, "COLO: load device state failed: "); vmstate_loading =3D false; bql_unlock(); return; diff --git a/migration/savevm.c b/migration/savevm.c index 8c107fb5b89dea4d1b9a27466247c5d7c6b63bec..8557cef35eaf834166ed05ef8b3= 9d79ead47b78f 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3255,15 +3255,16 @@ 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) { + ERRP_GUARD(); MigrationIncomingState *mis =3D migration_incoming_get_current(); int ret; =20 /* 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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637619; cv=none; d=zohomail.com; s=zohoarc; b=Nr2kxM8/y2q8C0NERtUdPDJ0NK9kyXDKrDUaEIuh0VtuohFKRagVxwU0oD5gxyjHObBUkufiEqdj2clw5OVH+t7j7/e3GHZOAat37b6NdcKjIPJp1cvIdG8JqYpg+xhTdUU4fVlYp5Tk9zoSPH0dLyzgJEpdXWMsNkU76nTmuYY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637619; 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=Dp0ss66SXDuo00PuAE5YpQ+W52Yt+0FYOjomzf8l/hg=; b=d83aNpWbmMM1CmSV9P39J2r52izUCh7r48tsBGjaIxthzuwPMuYRVqdBLQfp2fZHqUdyVMox5971KbKE/47fw19cLKvT/z310Ex5IppFH3UUQqxm3AwoPa5RsDry6eLZ1YUXqTt6/njfx9CRKsgwC+lfBifp2gkXJUVIXr/rTBM= 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 1754637619920673.6734669776497; Fri, 8 Aug 2025 00:20:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMR-00025T-Pp; Fri, 08 Aug 2025 03:17: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 1ukHKr-0006oQ-OO for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:35 -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 1ukHKg-0007Hh-BX for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:17 -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-121-UuOHk6eQNRKO5oLYaRhq8Q-1; Fri, 08 Aug 2025 03:16:01 -0400 Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b42a54b7812so383848a12.1 for ; Fri, 08 Aug 2025 00:16:01 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.15.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:15:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637363; 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=Dp0ss66SXDuo00PuAE5YpQ+W52Yt+0FYOjomzf8l/hg=; b=QjAqDupn2gAoo4JglY2HQ73+wnCRwUynRuuUnqs83zAsHTU9gPwm/JF1xLEr6e19RLbpmK q0glNg2JZU6mAB3JY0PDQqPIsxclTfDh/qsnxhMQOIDUzhduBs3M1ZbdEm8hH98KgHCX+V C2fZXBS9km7Xpo8bP997YW6Qv0E2D2g= X-MC-Unique: UuOHk6eQNRKO5oLYaRhq8Q-1 X-Mimecast-MFC-AGG-ID: UuOHk6eQNRKO5oLYaRhq8Q_1754637360 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637360; x=1755242160; 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=Dp0ss66SXDuo00PuAE5YpQ+W52Yt+0FYOjomzf8l/hg=; b=g25RVkSJvE/YoxyiSelv/48Q3WQ0LUcAHnzIckVt9okUnInZUgpEkVEVrtfN5FOJtO M0yzp0bpyHJ8mgeEAS8YU0ZHs+IGtRNN2rSLmxU0ol8XedEdQkjaoAz+GKIfDFn4CQ4R 8+RRQQ4m4mu2/XLFOpydBnEZMdKAbr5msGpCADNEzajnXKrDjU0dzVXxn6t03wTd8+A9 dPOUcgl4ZYvAz/Pj1gjOJNZk2ZlvsipJ2qHw8ToVT68X3mD/81wXivKNom+mf1jloYy8 yYKKp9ZmHoQZher3f+ANsiQFfXqS5vHPaWH2eM+NXqL3NBPDZTI3XW/ppN9d6T0ZmAZz 26Sg== X-Gm-Message-State: AOJu0YxwEE9oTPxl43qkvrKtF2foicz1Qtu6UjQub6XoKuDruIUXRWaq Mavc0Yrc+W7U733u/k5Tc7yfA79A1pgAfkYulPafj8/+6ZhrR6/sAZu4F0Y0cONYL6sO9/1+Gf9 EobF+1X0J0ffD1dOEz6K+jgmklWnLz5j+6SfvZ1o/4m1R/gWhXKRo/ih3 X-Gm-Gg: ASbGncuMR34jl2y8F5dDFwP6ge3wg+Imug092lomC4Iu1QKyO9ZpRYKrDReocfJBUxh FuAYHHc+Ob8rGMALxMrbGbe4vBJc76jfJgOPIKskMeBLcloI+U5oq/IeceP3BW4/9VR4W76Qo2r VeidW6KVPMRuxlOEouE8/RIsiVpHapkPxwdJoX5GzFxMj1Dn+n7jEEpPi6FqZ2zzm3h9BmpABLE G3hpHfiEHnUgCyOhOu5p5PkXokRdkYTvZogwOjM4n5X++ixmhSFjMJAY00jVZJlMn/xr5x7eiMJ 5ULl5HC8ADeD+7+sX9ULyDhHzNq7Mxb45Xk+NIXcUWvfAKbj2IudBA== X-Received: by 2002:a17:902:ccc9:b0:235:eb8d:7fff with SMTP id d9443c01a7336-242c2217723mr23043495ad.28.1754637360321; Fri, 08 Aug 2025 00:16:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE+uk6RCG0Wpg1m5meduBVzDnWnP8ollkytwM85pqYi7rMxxkZ/L/1702Xyf7GmC7TbVduAIA== X-Received: by 2002:a17:902:ccc9:b0:235:eb8d:7fff with SMTP id d9443c01a7336-242c2217723mr23043215ad.28.1754637359947; Fri, 08 Aug 2025 00:15:59 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:35 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-9-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=6631; i=armenon@redhat.com; h=from:subject:message-id; bh=baBKy11F3HHheVcdcrkjS+nVp29i59ojHE+SmCIy59w=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVcj9iy8rSzyuPrFF5dsdZb5di7Lp187GLzsrN/J9 vmLDX7HdZSyMIhxMciKKbI0fA2QbQoojIi0fXkdZg4rE8gQBi5OAZgIix/D/4hfPt8mNGc7H3n7 evreb/n9/bsarqafr/j4Ynl+/MNAIzaGf1qTyjoEf84tf2NfpbnGdp13ws23+vK/DTIkNrTx/mY zZwMA 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.001, 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: 1754637621528116600 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. loadvm_process_command also sets the errp object explicitly. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/colo.c | 5 +++-- migration/savevm.c | 32 +++++++++++++++++++------------- migration/savevm.h | 3 ++- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 0ba22ee76a13e313793f653f43a728e3c433bbc1..a96e4dba15516b71d1b315c736c= 3b4879ff04e58 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -659,6 +659,7 @@ void migrate_start_colo_process(MigrationState *s) static void colo_incoming_process_checkpoint(MigrationIncomingState *mis, QEMUFile *fb, QIOChannelBuffer *bioc, Error **errp) { + ERRP_GUARD(); uint64_t total_size; uint64_t value; Error *local_err =3D NULL; @@ -686,11 +687,11 @@ 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"); + error_prepend(errp, "Load VM's live state (ram) error: "); return; } =20 diff --git a/migration/savevm.c b/migration/savevm.c index 8557cef35eaf834166ed05ef8b39d79ead47b78f..3df78ac0026c4c098d3fd13f765= b54db0eafdc61 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 @@ -2407,6 +2407,7 @@ static int loadvm_postcopy_handle_resume(MigrationInc= omingState *mis) */ static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis, Error *= *errp) { + ERRP_GUARD(); int ret; size_t length; QIOChannelBuffer *bioc; @@ -2456,9 +2457,9 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis, Error **errp) qemu_coroutine_yield(); } while (1); =20 - ret =3D qemu_loadvm_state_main(packf, mis); + ret =3D qemu_loadvm_state_main(packf, mis, errp); if (ret < 0) { - error_setg(errp, "VM state load failed: %d", ret); + error_prepend(errp, "Loading VM state failed: %d: ", ret); } trace_loadvm_handle_cmd_packaged_main(ret); qemu_fclose(packf); @@ -3076,8 +3077,10 @@ static bool postcopy_pause_incoming(MigrationIncomin= gState *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; =20 @@ -3085,8 +3088,10 @@ 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 device state section ID: %= d: ", + ret); break; } =20 @@ -3107,7 +3112,7 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f, &error_warn); + ret =3D loadvm_process_command(f, errp); trace_qemu_loadvm_state_section_command(ret); if ((ret < 0) || (ret =3D=3D LOADVM_QUIT)) { goto out; @@ -3117,7 +3122,7 @@ retry: /* This is the end of migration */ goto out; default: - error_report("Unknown savevm section type %d", section_type); + error_setg(errp, "Unknown savevm section type %d", section_typ= e); ret =3D -EINVAL; goto out; } @@ -3125,6 +3130,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 */ @@ -3145,6 +3153,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; } } @@ -3178,10 +3187,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); @@ -3262,9 +3268,9 @@ 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); + error_prepend(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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637475; cv=none; d=zohomail.com; s=zohoarc; b=F3x7bB5/K5hOAUD28bf6tEIcb4kzuOnvTwCWdIe8YMWZF8GyQOm1biMty/58P3GnlX2cl6Elkf+o4txKYxUAw7SB5xeTohQbThadC9Ft2dIxlWj+BT7kCKGzESuzgW5UC656ggh587KZ6MUfYIvca38zVZvm2al/X6qmxf61ayI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637475; 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=W/xJsGYLQ3l/15ghT8JrI6NoUQ8PtivMeVPGYf0S0Yc=; b=IseFDeXRduOB0hnQ9Hxj7hjde7RTEFNPlP68SnQ8kDReNqVuQDiIpweIv2ik9eHj3AytOFvHlZQAA7axjWLIZ6uFu7Jq2HYGlJK3HiY6/SyMAeWF0cLJbdyG01hpY49qonIK+3ydhFwtJAa7bW58b2g/Y85P8AfvHH4/4ZEP97E= 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 1754637475814904.7774342947469; Fri, 8 Aug 2025 00:17:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHML-0001cQ-EM; Fri, 08 Aug 2025 03:17:49 -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 1ukHKz-0006wJ-Ja for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16: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 1ukHKn-0007Id-5N for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:23 -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-425-tTTXOlGYNz2gsr-cl-Kitg-1; Fri, 08 Aug 2025 03:16:10 -0400 Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b4253124e77so1653608a12.2 for ; Fri, 08 Aug 2025 00:16:10 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.16.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:16:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637371; 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=W/xJsGYLQ3l/15ghT8JrI6NoUQ8PtivMeVPGYf0S0Yc=; b=GvYSuv5cPhgm9i3Mf9xC5No1CcazgONQsyl+0ce2DKLlXeR5ACnhMcotAcDPYLIq9SmSVN 5g6II0/uCuzN+OWJ/z7x09pLLoLTarc2TWGYi78AKzmBnEJ8+xGPPWyuQiYKRSgY4Fbypd hIioUv6H6hyeXw1IaW1OpvQR5QQDzUg= X-MC-Unique: tTTXOlGYNz2gsr-cl-Kitg-1 X-Mimecast-MFC-AGG-ID: tTTXOlGYNz2gsr-cl-Kitg_1754637369 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637369; x=1755242169; 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=W/xJsGYLQ3l/15ghT8JrI6NoUQ8PtivMeVPGYf0S0Yc=; b=u+Xg/BdqHjSPXs+m1WkxkKTUye06nFfyvuONHtMUDbVJXsh+Rm+6pyNbxVaix3Ktfr DXa/oVZB/qd7XmWZRF2jVmXImQN0ZEygjPN4xXEcT045WVZw8d2JvCqff9fQy10sLScg 3j35XQobP4Kqai7gVRMaCjAp6q+I5OYJFwk9bfBQx+fHnq7/jsaszzJtcbv8GKjZ3ZLP xieXewQYYDNW/Glvh2bmEQb/kq7ZB8eoRySM/u1WvONK46XM/fIDjd28ItQxFccAfiXA sbD2HRunumRK9gm1QhER2SyHrbS3vFcmjCyNTTa0FagbB2Re2apOg/6ajSitRcglj68z WzyA== X-Gm-Message-State: AOJu0YxMlzua/crBDI5BYMaWtyeF9gX7tpOW9ukoURBGaJd0qBvicb6c bHjXPjPxu1ri0euSVlq4bsICHGaFP8XdbTXpYLQ6gYiyKLM1N37c4eelyc9uE1V8JxjxfTbf6Ub SnJIQNwGvbeVdeNQKeGw+D2NahFxsqxv0AVXWX43/t34VaKk//cKiK5l+ X-Gm-Gg: ASbGncufTwQH0Of22TgylcarTtRngl8/v6oWfVFJC2tQm9BPoQipOWwXqONsHySmXur fiMCmF1w/jehVmx2eYpgKpyyriYf9/Iu+hkxbdAqh0pFfIb/qFDxtDYDbRi95r0MWue+YIhph7l G3VanZIrpAWxXUqBURNGNOSlwGPeHFFoZtY4qE/kLkaWeAYaE2NNtsDFRZFBp4nqv6u++FjhT96 DG8T++CTOpAENggCYzApfRt1IehxtC49QsLw53zJr2vsg1NiA+8+6NRMbtrCy9gNkST6pHsmTdA GZfkaQQxQ0QLuqMm+KX4NH4zDjaPK/Qa2K5vtcmCrSqCdBhasHmx3Q== X-Received: by 2002:a17:903:b0e:b0:234:f4da:7ecf with SMTP id d9443c01a7336-242c1ecca84mr24763425ad.8.1754637368995; Fri, 08 Aug 2025 00:16:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFcEpAfjTjMF9F4ttdpU7tnnc13zZz12zoO1NeEej25IhophgyPPW89tiAGnjQEGWrdARrFsg== X-Received: by 2002:a17:903:b0e:b0:234:f4da:7ecf with SMTP id d9443c01a7336-242c1ecca84mr24763165ad.8.1754637368569; Fri, 08 Aug 2025 00:16:08 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:36 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-10-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=4804; i=armenon@redhat.com; h=from:subject:message-id; bh=jyiyBRDRCbEkSoT/i0OBlFzhgE/vTIugorgDNobXEvg=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVcNJXi3b7zA8/vjcZEFV7hCo1bNeD5zRUxazlZXw xtfmraEdpSyMIhxMciKKbI0fA2QbQoojIi0fXkdZg4rE8gQBi5OAZjIHhOGvzKv/x+LCriyT8pt 8iLHpmV+qfxXCk+4pzDsuePovmFSWTgjwzKGvCX23Zn/hLnnpZmFTP2nuOOzqcLt/F2CW3PuHXj HyggA 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.001, 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: 1754637477999116600 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 Signed-off-by: Arun Menon --- migration/savevm.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 3df78ac0026c4c098d3fd13f765b54db0eafdc61..6302e1cdc3bca0c16f64dc0f35a= 17e4d9b7705ea 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2724,8 +2724,9 @@ static bool check_section_footer(QEMUFile *f, SaveSta= teEntry *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; @@ -2736,8 +2737,8 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) /* 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); @@ -2745,8 +2746,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 @@ -2755,17 +2755,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 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); 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, "savevm: unsupported version %d for '%s' v%d", + version_id, idstr, se->version_id); return -EINVAL; } se->load_version_id =3D version_id; @@ -2773,7 +2773,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 @@ -2781,10 +2781,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, &error_warn); + 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_prepend(errp, + "error while loading state for instance 0x%"PRIx32" = of" + " device '%s': ", instance_id, idstr); return ret; } =20 @@ -2795,6 +2796,9 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) } =20 if (!check_section_footer(f, se)) { + error_setg(errp, "Reading footer section of instance " + "0x%"PRIx32" of device '%s' for version_id: %d failed", + instance_id, idstr, version_id); return -EINVAL; } =20 @@ -3099,7 +3103,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637522; cv=none; d=zohomail.com; s=zohoarc; b=XyFm+CH30/o3q14+7K5f+RYHjhBSboa/OfK295oA5QkD/UxXcocYlQRyXkpJRHIhZX4MUXqzZPbiPzSyV/jjY9mIX6uvd8qvWmJrTgBgyqC7SesOAYlvLgB/xI47YxIopGzzxQKDwNc3/LXWZ5RpZHeI178qeA1Fvq37oRPsB3k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637522; 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=qg0W39r2mo/rnzZlazUt1rPQcD3Ep4F8/ignnOJ6J8Q=; b=JI7VZBtVdYVIxa5PYx137+U4cmri1vdjRLeRoCz9UB3f9PQ2u6ULOz4JmPCROEd9bVFxaZn0MoIZW2q8j5kpfSQbAMEpueHDOhA1m3RJBEVQxKB7WT+UB9DjzEbHwfrEah/LlnigWbTc/VE6T10mSSwTXL++Ozuq1J8OYeLJ7e8= 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 175463752227584.54897415509458; Fri, 8 Aug 2025 00:18:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMU-0002L0-Vt; Fri, 08 Aug 2025 03:17:59 -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 1ukHL1-0006xc-F2 for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:38 -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 1ukHKx-0007Kj-D1 for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:26 -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-584-6KO54gb1O8m5_mIzyQbj-Q-1; Fri, 08 Aug 2025 03:16:19 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b38d8ee46a5so2021917a12.1 for ; Fri, 08 Aug 2025 00:16:18 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.16.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:16:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637381; 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=qg0W39r2mo/rnzZlazUt1rPQcD3Ep4F8/ignnOJ6J8Q=; b=EA+PHlj4XmgADW+7qUnKsCf5XsCn/nMwuE+Y3C7MqvBe3ICK3YA9Wr6ssGzuzGEb89e78b 6S2btuxj2O/SpJ71KJZgflRusTaYorEg4FQafZt4YiXIP2hCsCVuIa0I2F4ZFoHZLcqwSw 0Nd0YDYCHm85KY33LzlDw0k8K1XT7WQ= X-MC-Unique: 6KO54gb1O8m5_mIzyQbj-Q-1 X-Mimecast-MFC-AGG-ID: 6KO54gb1O8m5_mIzyQbj-Q_1754637378 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637377; x=1755242177; 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=qg0W39r2mo/rnzZlazUt1rPQcD3Ep4F8/ignnOJ6J8Q=; b=Sc7vuYMbvykezzot7gxTo9GPtL7bUg4coe4ZcELer7XFiymYT3e5+VMEswZojrJpsV eEs01FNTIJTHyDjPhlIHRLSle9ET8FgiMW2OuSUvY4bnqSRMsq551HR/yHFdMnz3Kp5+ peKsXF97p3MGZxmXLBT86/OGofBb6Wa+6EFQNTnVhFCVx8MIs6EyGjWbrRNuljdLtLpL hNBBAagXQGvROAhL/u1HbfqrQ86nkwNKbQZcXLybXTz5xeS345cFmh6xrX6+E3eRhYHV SwkjeOkP/inmxXos/PbHqMk78Py5sJaOm49Fj/Yq7S6oljpc3/YPtmY3Tw8M4akW83z9 ChIw== X-Gm-Message-State: AOJu0Yzfld3euh164s5S5/ALfogdkcf2rXk9xBDkerqcH0B6uGsrtLJZ D9r49YcneQBV30IODTFTx4gFl0PrYoQ9MqG4w7RK4Q8aU9xrMaf2RTfw6QGjW4YHEKGahuElGvo N5GM+keQC3rF02VU1ZgDUV4og+FXHjkb7g6G/GfJEf2a89cwd6mRoNvqA X-Gm-Gg: ASbGnctgXZQTTpTYzBmxWkObVMjO/g5rNs33M3JvnOWDCSM+hTNXXkyfdU4fuzIQVEo Vomn1R/AYO3vQiF6dl8w/z9TzsMFlYuthpiKpIoNDBcSFc0p3v+Ntk9GPcycFTVIVEO2zVkRk6+ cu47GGeWU7xWCFIJyeoxKzosf6+5xWIln6OcsnVRgx39Yx5TdK7m1Ij5eqV7BLvaKNPq3PESUBn W33z2/xObmNlDHWfNURhA/lvi52kbvd7M/1BbNe8lNE07hSLiVTx0Rji1u1r5SbSVszGRbbJtyo 45FVNCzhYLm/MJjNgFfr5+2TOFvmkADkhVSOtHPo9JewaH/CsYbfbw== X-Received: by 2002:a17:902:e84c:b0:23f:ed0f:8dd4 with SMTP id d9443c01a7336-242b07940a6mr87643335ad.23.1754637377549; Fri, 08 Aug 2025 00:16:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEv2pd04n/jOnPh3Y7E/cm6lrPwEcyLp+TiuS54f19hvUK9BinNDLuu1SeGGE0CA7JleG2COw== X-Received: by 2002:a17:902:e84c:b0:23f:ed0f:8dd4 with SMTP id d9443c01a7336-242b07940a6mr87642755ad.23.1754637377118; Fri, 08 Aug 2025 00:16:17 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:37 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-11-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=3132; i=armenon@redhat.com; h=from:subject:message-id; bh=D1WGxvbr0zI07Zh7yOUn/XDO1OJxdzpwKqlFCxErDts=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVdD95vcCZmy9nvH6tarPryqLK0lZ++8nK9auOXYN s/pm2bc6ihlYRDjYpAVU2Rp+Bog2xRQGBFp+/I6zBxWJpAhDFycAjCR8z6MDJc3bOD/9ftOdZXy xc/rPmT1d/Fm/la6KPfeWzt5vrXv/MWMDCu/5KS/+9H8eeUOKzeDy9fVq09smJI28dzCApOfX/5 kl7MCAA== 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.001, 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: 1754637524346124100 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. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 6302e1cdc3bca0c16f64dc0f35a17e4d9b7705ea..ff2e4f75e070d0f452414f28435= 905928b1480a7 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2806,8 +2806,9 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype, 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) { + ERRP_GUARD(); bool trace_downtime =3D (type =3D=3D QEMU_VM_SECTION_END); int64_t start_ts, end_ts; uint32_t section_id; @@ -2818,8 +2819,7 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) =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 @@ -2830,7 +2830,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 savevm section %d", section_id); return -EINVAL; } =20 @@ -2838,10 +2838,10 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t t= ype) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se, &error_warn); + ret =3D vmstate_load(f, se, errp); if (ret < 0) { - error_report("error while loading state section id %d(%s)", - section_id, se->idstr); + error_prepend(errp, "error while loading state section id %d(%s): = ", + section_id, se->idstr); return ret; } =20 @@ -2852,6 +2852,8 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) } =20 if (!check_section_footer(f, se)) { + error_setg(errp, "Check section footer error, section_id: %d", + section_id); return -EINVAL; } =20 @@ -3110,7 +3112,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; } @@ -3134,9 +3136,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637681; cv=none; d=zohomail.com; s=zohoarc; b=XTvVxba/kNUx6blcQfS3lRzvzdVZLCjdxj6/SRF6hRrJU95bbDM9SjnVAxq0CEJelWnwviiCfyAeqvr5VnPP1Q3hfFR0rmNr/ndhWlMm/DNHZ01Qnba0UrYNyPP6c6ACpp9FHopyc6gaOA6M+ROVMrsPEPW3phfCc3TL+IWP3T0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637681; 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=x1eMFN91bkPJ9opz18JD2ZG/30haYOSJYxe/Rl0M8C8=; b=Dmn23fikGBWSmTIbq46NiXBaBUFH8AOYpa//0Lvd0Pq6DVx4LIXDD83a09e6NtZ8qMPNR+qChUk8ONvYnHPtseNSjWb9pv01F7TlqU3OaR6qrAMQgDrQKTzo52p4buTRsOR4/Xr8Jb8xz8kALn9erQkReuXrP3dQGmzPOAc6tbU= 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 1754637681919468.20347578605947; Fri, 8 Aug 2025 00:21:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMX-0002Yh-28; Fri, 08 Aug 2025 03:18:01 -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 1ukHLA-00073n-9P for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:41 -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 1ukHL7-0007Ln-Sh for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:35 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-207-GFUtMEwhM72SxQE2rcFo2Q-1; Fri, 08 Aug 2025 03:16:27 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2403e4c82ddso15600655ad.1 for ; Fri, 08 Aug 2025 00:16:27 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.16.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:16:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637393; 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=x1eMFN91bkPJ9opz18JD2ZG/30haYOSJYxe/Rl0M8C8=; b=OCgVKrlRVCusH1JMBbVFc4nsLqENSbaZnVrJIR0e44xxCriv3eod4yMjYgcEGEJdnNjWPK DPm1SpM5134Tz2ey2HrVs8+hAxp8Bbs+EsExjo6RO0n6GZLt0fpZkKnfTeaOLWRbHTgD05 qJiUfn2fO+KbdwqtAm9RtJPli6NEvek= X-MC-Unique: GFUtMEwhM72SxQE2rcFo2Q-1 X-Mimecast-MFC-AGG-ID: GFUtMEwhM72SxQE2rcFo2Q_1754637386 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637386; x=1755242186; 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=x1eMFN91bkPJ9opz18JD2ZG/30haYOSJYxe/Rl0M8C8=; b=A38lhIztwf1g9TUr438i5HPQkksMoekpBqqkm573qwMgbSAK2MBg14D/3tzaQ+jSlO yO6E3jbJhLZzMEWWNtoDAt26t17aS0h9xStDax5aKuh3A81Mj1xaPLLAwC18J/qglzpd B60pt5FN0LamrXngoSb0o2356FrR4LpSb5IDCsHMcf8DFhkJk7/YZ3PVys/75tA+rPyx oRBMt6cOCtyiJfOPDR6tM7IoNVKqdercXOpwmNxDKmpoZiQOaZPjziFCpct2rAK3uTfl zKqgIjEei7xqI+6ThQSZg99Ym1FNzMcKbbiXfgy4qJ0OLQo1rXTkizZJwDImptxouTyL jlCw== X-Gm-Message-State: AOJu0YwWgkWJqiXaiGpfmfAC/t4w28GibOtXsBoy/h+J/YOeRTpFcV/E GnQnDNGP4ROAgc3aGWGueAFR6IaNbOhYn9XtTvszb+93j5ykSI/V7d4E0ekN0CVZCnlePW8b7vh xcMehhz5F1xvxUFUSu+4mDSR0ogcuqwKtKitpbI0QMgaEQmyErVe/Nng7 X-Gm-Gg: ASbGncutvk+tg0lTQTMt4lovtz95RoaHgcsMzchlhNruzkha1yIuZakIf32LZ+YYLRw oFqtQ0uTKKncXyX4RUoDeEG6ZOKRMxYbcWHrBG0NVF2XNzGntsiZaROvrbsozN6jbf8rswk87cj Tp3TZLy0jC5ByoDk9NRQ4peJahw8N0bfJGN0XtQzssHncpdUu9sSYCYU+NI5XaJ5Ofz57SlPFT4 uhXV51UIfIRQf0tLHpnmQhpzWBwzgH1WLthUR/UchL+143BG22ivv1cohFGqYOi40HHl3lIZBc9 8DZ57qdLQp7h2iLgaNbPnCMpk3iGeECWDKrnWODSmy3el/YTRgGOMw== X-Received: by 2002:a17:902:f70c:b0:235:f143:9b16 with SMTP id d9443c01a7336-242c2240276mr27925065ad.41.1754637386475; Fri, 08 Aug 2025 00:16:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHNW3SnXvDaeDtDDX5OUsfGRkmd+Wq4Z8hJPWlseW4LPgO2lOAw0xi+TTGF2v5i8EgDKl0UIg== X-Received: by 2002:a17:902:f70c:b0:235:f143:9b16 with SMTP id d9443c01a7336-242c2240276mr27924565ad.41.1754637386097; Fri, 08 Aug 2025 00:16:26 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:38 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-12-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=3858; i=armenon@redhat.com; h=from:subject:message-id; bh=2DVEmxxtErqxySrYa+Ux2h1Cq14PJ7w1dCm0qxcYpfU=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVcrL07V5eRb8ezPvt/lWx9t6bFZ0P2NjVvKe/Gy2 MOlV2+86ChlYRDjYpAVU2Rp+Bog2xRQGBFp+/I6zBxWJpAhDFycAjCRBekM/2OE1kgc3jy3Mbx6 UkQjf+rtgt8qnxNndpfEfpn1rf1M7m2Gf2p1CrGZTSzLi1h9MjRq3K3z8+8JThGc4nSg+rrWvMN bOAA= 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.001, 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: 1754637684250124100 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 Signed-off-by: Arun Menon --- 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 a96e4dba15516b71d1b315c736c3b4879ff04e58..71842c798a1dbbea6a7ccf8cb64= e2c836c0f574c 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -850,10 +850,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 c6768d88f45c870c7fad9b9957300766ff69effc..35f769bc55c235134abb5554ed0= 1b94787d4bf78 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2647,12 +2647,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 @@ -2661,8 +2658,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 */ @@ -4011,10 +4006,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 ff2e4f75e070d0f452414f28435905928b1480a7..ce5be8f0b95c798d3740d0949d4= 68d7cbadf7020 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2590,10 +2590,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_report("CMD_OPEN_RETURN_PATH failed"); - return -1; - } =20 /* * Switchover ack is enabled but no device uses it, so send an ACK= to --=20 2.50.1 From nobody Sun Dec 14 02:02:08 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=1754637471; cv=none; d=zohomail.com; s=zohoarc; b=DMf+PLj1x452EEbOBz6IbNZapm8sbXaXDIBAQhWmPTK7Iaf49AyMUDKxwmXC6xFY/Lf0Q3MS4BnEwlSOsNp2cAarFwQ6HaZt1aA+86Fuyvmoz/gQ73+bW5ZnWU6bE5J7C4aqb3glr8YMz0USVHSCfajkogB4wjt5+FHUPmJ/t9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637471; 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=amzKuTkXsl7R/UHJRMqWOtsNkEHBgFBs+aAFF8D3A0U=; b=mezSEUwA/dhs94ZgCpzQSfMVoKlYdiBnswPKwjAvWtkFo0elc6DLyxPUW7HTjHSzskx0H70EKGCQWGgxSilx1tnQcfhTl6fCeoXSSIs3tCFunAUBi2Irp2uF0ETSagXdsdQRwhLp618KvkCNWHgsWdWlWPVVg2YAtVB/k9NGLVc= 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 1754637471419873.7877245717061; Fri, 8 Aug 2025 00:17:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHLq-0008Dg-2x; Fri, 08 Aug 2025 03:17: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 1ukHLI-000763-Mg for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:46 -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 1ukHLF-0007Mi-Oj for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:43 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-645-z8mmBUuVMC6PRk_0pR_gqA-1; Fri, 08 Aug 2025 03:16:37 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-23fe98c50daso15747035ad.3 for ; Fri, 08 Aug 2025 00:16:37 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.16.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:16:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637400; 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=amzKuTkXsl7R/UHJRMqWOtsNkEHBgFBs+aAFF8D3A0U=; b=fSbD+IHlVQpiwRM/3PvHY1+CL1Hk1dGlEmn5xJao+7uZi1O4NAZl98TPaFzwumNVMVNMSI V3PeSUkHX/XXNt3tFaCKnRzZWr5f6bySCLfDNsl5IKDmz3H4tWZdd7DwdJqOP0ISLdVSsw CnkZZLTjgYORUCTI90c+r9n/U2+bFFg= X-MC-Unique: z8mmBUuVMC6PRk_0pR_gqA-1 X-Mimecast-MFC-AGG-ID: z8mmBUuVMC6PRk_0pR_gqA_1754637396 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637396; x=1755242196; 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=amzKuTkXsl7R/UHJRMqWOtsNkEHBgFBs+aAFF8D3A0U=; b=AvY33SKFhnufxqQzYLqarHFcUfjjGpzSoOFjzgCCNnUKZPjVODoYr44SJP02QVbVKI 5SkhBjSHMnhG6VYhVmmNgeYep6YsbCWvuUbmn/scpdVP5J2evzGfrhh7Vn9tOOPwjk+1 axr8etRdRoW/izFTqkCk9rOq2SK56ZcuR+J7bvy8hfSfLl3sU0UfWkusAb+F4V3cd6bH 3Rt6GoFaYKOrPyTcj32xm9zu10akLSi/jL4Z+lPl7aHBbiWYYJrEsWns5tQ/OtDzcqd1 UCSTigYbG0kAKEiZwu51gl35mU2PvdKz5+OYbw7bfcnnd0IEiG3t5BC7dRuGJ+wJj4sH dy6w== X-Gm-Message-State: AOJu0YwaRrC0km4tUBbhn7TG/PoUq43Lyl8Taf39T8KyvExraiJa0W3z Fg83SUPtjdqaBz9o1XtAgx31bt2c54mMfQSnzMtuNkYfFLWEJggbegsWTkNmR5Y2WCuOZclpMkF 5GVi0QCqRzyqNEz+AliknwvxDfM445+sOBOpkxNfU2o4uEmaJBtq7ReBi X-Gm-Gg: ASbGncuTPiDzcGZY58PwBS0mFa28R3Wo1aNpOepzWqxrLVViOOkWNgfjaKmp6iQxF+c 58NCv4v3wdMRa8PKXOPprNMjyx+GKQjivqK6JkUrpYqoz0oSqRAwboPLc7kNwJgdyHVQ52AFUyB O45QyxCfz/+3M0vh2/KhRYUeQMWa0DpcRmYIL4Nb/Qg/o3TKdsPInkcJuq+XJsr/sQppvNookzA cusT+k3SkKJYKePEHHx/83rLNHqr+qdIAth6/1HiH6ZCPJjxTmF1AtJTUVxokecIa2JiYPCDy5f 4PENMH20+CrHB3kQYcmSvTfmUvakst+NqNn7kTkwJGIDWG7wWDTvLg== X-Received: by 2002:a17:903:18d:b0:242:bfdd:4100 with SMTP id d9443c01a7336-242c226ee95mr30029775ad.47.1754637396354; Fri, 08 Aug 2025 00:16:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG4G9xBtTmqeQPtB1y5xUJut5oCP+eKxYtNWaEb7P68V/HDbgMCR5Zwu4To1SFFqeL98nGurg== X-Received: by 2002:a17:903:18d:b0:242:bfdd:4100 with SMTP id d9443c01a7336-242c226ee95mr30029275ad.47.1754637395870; Fri, 08 Aug 2025 00:16:35 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:39 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-13-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=2006; i=armenon@redhat.com; h=from:subject:message-id; bh=29coSXNbzWH67exh9WDq539ziVC1mp+QMBuk0dbIxOo=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVfzLG5z2/Xwu3xvu1iyU9tsj8LK60pZ8St2HJ9x7 84SoQVhHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACYSxMrIsPM5q03EzWlS3ybM rYz7HrxvzZJSZ42ehQ0eTh8l1lzb08nIcMdTaNv0hKecz35+b21rP6mw4PO7MytcV3ZuDCl+I2+ zjhUA 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.001, 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: 1754637473895124100 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 Signed-off-by: Arun Menon --- migration/savevm.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index ce5be8f0b95c798d3740d0949d468d7cbadf7020..41e9533f985b0b9d69fb704d957= 938e2dae4781f 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 /** @@ -2649,7 +2647,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637609; cv=none; d=zohomail.com; s=zohoarc; b=nxBueO6RD7/75Ss6LzVxTrUQuXLydfVnUNVsH/6YrBEh+Dq5iaX9YADnLX4w4E6RGWni3DNs3CP4/MT/N38tsiLwHTMSOgYPUr05QdiPS5ywk3pD9kv3COrwxXcvchOVpfG+n9jgOLm4+XcEBo/0401ZlqbXtXOm1amnW69BIag= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637609; 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=uRhybXxEqTNSGknAGEpHdFP2njDEP5BIaNiXDB4HopY=; b=YrHcbI1IwU9AcrXhQnq1/kJvN+5GRn6dHJZEFu3rCrEAf6b5grPeLi/W2xITpcDPhUaxtCuLYnkxl0GZJgZwYACJ67qqceaj1I+jZfoTV1i9GdV53EbJ3GMSB64KkC7olk/bxVfsz6Bs8nQ0H6aHlmofZOMuOclunqA0g4ERIO8= 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 1754637609077800.3255298035039; Fri, 8 Aug 2025 00:20:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMb-0002ta-6Q; Fri, 08 Aug 2025 03:18: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 1ukHLR-0007Au-8g for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16: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 1ukHLN-0007O7-MR for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:16:52 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-155-v6DPOzMUM5m_ozum-uU1ag-1; Fri, 08 Aug 2025 03:16:46 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-23fd8f85dd2so16761445ad.0 for ; Fri, 08 Aug 2025 00:16:46 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.16.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:16:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637408; 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=uRhybXxEqTNSGknAGEpHdFP2njDEP5BIaNiXDB4HopY=; b=dbiW18SqJ8UYK1ra7lOYDtHLXmtcb+3jMiRvvqGfbJEa+8IWyA+vtLoFXk6iuyAg543G0a hLTxGs7Zk0YtXjbxdkwQdFyk6WjhMp8vbwX+Fe/erKAgeuyHOeF2tQLBoNrXWMDlLwXonm PIHW8wEmWg7xrUfBna0vERJ6IVajrh0= X-MC-Unique: v6DPOzMUM5m_ozum-uU1ag-1 X-Mimecast-MFC-AGG-ID: v6DPOzMUM5m_ozum-uU1ag_1754637406 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637406; x=1755242206; 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=uRhybXxEqTNSGknAGEpHdFP2njDEP5BIaNiXDB4HopY=; b=dtynhb+uDxsE6fOcE8jkEamAJY3Ovk4nKJTNN/zSMY9l5z2UjWuL+jpbhEKSP0udQm FypOuNaAkPYBJp3Ebw4K3MC2s4QuRPRKJnsEJa6FrWrO9qemg4X7SutYwuJ6u/L/8siV LrQBy1hcXED/e9+5d3TvHQ9A/pAC/aZIs7T76vYEusErjok+2u07OXs4T/AFSxhxk88H hLP5XuEIAI9XJJZcGsCKzy4EXvJ/x1ZyUJ5cs522DT3X3VuKDVSPLRLZ7xEKdimbuX6U 466dBR0NNvgSTXCStKurA+Oo2QBEznwhtxCApK6Yy3wpDnFczrbCN5KoX64wUISAi15s efqg== X-Gm-Message-State: AOJu0Ywd5uqmD3/PssHu7TKYOptItUS3EPZRxCad/UY5Qsj9U2u+HETc jrQP1n2HHIx3LW5MHU7rcFZ23G1ZTVrw7coBxTzgjY7a1Y7hVQPv4flUpAtLVl6QSlkYTN7y/FR O0knFxmZrRgJuQ5kjzZ70qvHQWqfidYl+JjgkCbKE3sr0HeInkWhq63l8 X-Gm-Gg: ASbGncuS9QUvkcP3ScC7R/SJFCSptIonsoi5Jk4aSOxOsSvw11PpI5adNTQ3dzppJvN Lm75fQPliwpPGygZrnDG5FkZwX5OFehfBNDp26eYePXGlpFD5Zz89ARxVHGC5zAO1fkRlmdn16V 3xGy7T/mn8Nx0b0KVSyZnItBrGazUAgFXlXOuY78tAJsfvRN5kDauuT4rWp0Lut+C+msIZgwkH6 /KM4HqhNcsdrinmI2ve81feqUhl5tfMsKPpwmAhf+TFqTm1fYVbFwHlat4bThsZ8eWWBgGqDaxC jexc2LRalQnWifphwya7C0uaGk5HYYAq85KiAAsN4msORw9Mjwutng== X-Received: by 2002:a17:902:ebc9:b0:240:725d:c396 with SMTP id d9443c01a7336-242c21e05a1mr32390255ad.34.1754637405757; Fri, 08 Aug 2025 00:16:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHLOOBpjDoreP0dpbddEaI9CzViqDCnoE442ya1v4t76/Oms4vfMFSorxmi9/JXWFzJ9Qj1dQ== X-Received: by 2002:a17:902:ebc9:b0:240:725d:c396 with SMTP id d9443c01a7336-242c21e05a1mr32389665ad.34.1754637405300; Fri, 08 Aug 2025 00:16:45 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:40 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-14-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=4760; i=armenon@redhat.com; h=from:subject:message-id; bh=HJd1s9ppefA7shhe6hHIGrJaOm2mh/5lDOnqNO64hYM=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVfztjRMu7xT9siiW4YiJsn27RveHVHu/Hjk4lpmm z+LSvS/d5SyMIhxMciKKbI0fA2QbQoojIi0fXkdZg4rE8gQBi5OAZjImw+MDI+Yr3nOtxSXV9MQ /+piuEnLt569eMOXkMn2Aud/PZTM/8rIsKFKdaqbaUjshv3xE+5+4Zq4W/bQG6VVute98u7ODjn 7lRUA 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.001, 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: 1754637611484116600 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: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- 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 41e9533f985b0b9d69fb704d957938e2dae4781f..1f502f1cb15c951a0845dd27a4d= ee34fcea3f753 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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637705; cv=none; d=zohomail.com; s=zohoarc; b=kLZUWyUfvvl5TfSiC3LyQ1MLmwY+/2iLdGO2FZr9lSn8S58kWM6J84Kc9/Uka81I0PX2WoNlf5lfyQZZG7hCapU45MZaqwTl0Xn2zu4d/j04fVLcdGLBtR860XsEvxKpRAjNPeSfrSibRJwF0BbRxUOAbbhRo9Qb6nTAdhGVyH4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637705; 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=GeeC3t4cXCVe4GY2cImcQMLvhFUnSsPhLhudMTgdDFY=; b=jgEUOfZQ2ZCjWBIHX/97hr/LdxotMs6kDoUIQIesAhIZXeorCt6mnMZb3cfYd5Ye1g11B1b4SpHC/Gsw59lL9lNBie4BZ8YYdeAq6GFM8fEHGyA/L9krdPeYl3ZBQoMsQBzMKB8Kdv80V20OrGaxstdRsaSVIRx6cyrUGz2s7ro= 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 1754637705292849.5307238681635; Fri, 8 Aug 2025 00:21:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMT-0002FE-N4; Fri, 08 Aug 2025 03:17:57 -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 1ukHLZ-0007Fl-76 for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17: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 1ukHLX-0007PY-7U for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:00 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-646-mA2DN2hmPwyKV_hRwJBtFw-1; Fri, 08 Aug 2025 03:16:55 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-24011ceafc8so16018935ad.3 for ; Fri, 08 Aug 2025 00:16:55 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.16.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:16:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637418; 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=GeeC3t4cXCVe4GY2cImcQMLvhFUnSsPhLhudMTgdDFY=; b=gY0N5Mh0HdhtfWLWdG50BZlX9CeYDr1/8QtN6n6t8115uUEmEd9N0dGflrg+51nUduQQEF 69BC1BRe1n148tpoTuq+kQSt1DV+NddLJbimcseAnIrmEX0QZNnhGnSymSE8OtD6yCfirJ GHPsB0Q5A+2dt3ZFr4tqSUBrxWf5H4w= X-MC-Unique: mA2DN2hmPwyKV_hRwJBtFw-1 X-Mimecast-MFC-AGG-ID: mA2DN2hmPwyKV_hRwJBtFw_1754637415 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637415; x=1755242215; 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=GeeC3t4cXCVe4GY2cImcQMLvhFUnSsPhLhudMTgdDFY=; b=FeSWoJjcyjhD2aGyTZwiIqhihMBPJot5LA29HQoKam+F9rTRaAVFQ8I8c8Ow+6UyuC zpwvuU1ss+2nu1TrpdXFeVU6Mfr7DjyXqZQt7leX+xzGrIgO8OYT0pnKEPwOM058KWvD rWeFiOnOxjm0mp1NAMTsnbjVyJ5dOgeT3qH0BUHV3NtS4IGBtI12cxpSQEHhnn1Sxgd1 wxcQXjWXguCBkX4n84ryTlYLiR4Q6otCLntdnuB0Z3Xxj6nOCsA3hxI0wXZGUdS+jcWJ RTBYop6dXbv9jg6dynBrYOISvGDo14Tn5nCuyjdVDfPAq2Nx7+lA4KF4lS0+e8xcBkOP grsQ== X-Gm-Message-State: AOJu0YyhK3qfZc17d717NY82z5LBfmnTzSgILYfZhMAQ/eX7JW4MBF6B bnfoAqOuUe8IsZxXIP0Qc8WCD2k6atnC86GWnzzYXTIexcSjHkYD6+pgjElX/y9ot4xKuNkF4JZ s814mVyqa5APkeVPekDV6P4gYeaAOaSnvfei9112Zy87Sz392zYfhjkvP X-Gm-Gg: ASbGnctTp3pLz65i8c75XVEg1BopzTWapdKUnAovx1adXesKXf8NgfCbHTozPtsaiL2 fbGPz4k/uJntK2jip5EEjAIDUjIDFCFH6bClZh4jfkc0dAYfIG2iNVPXJiASmziK17C2eW2LQqE UxgpjuUPBxWwlk+HsQocypECmDhK2iTxDnTbfCrzdW40SKg15FD/MwBBMJBjvrmHB/4FjYaj40B lcBe4SlbT3bN7dvHEjUdIbw1a/mgp1bTBd8stmKfqpPhGKBiP8ICXt6vDe7F8w3eoxjWXjGijN0 cLV9tOVTb3Nht8l5buX6wl7qzxvQzwbmoGXwaoUja9kO35v67fUj8g== X-Received: by 2002:a17:903:41c7:b0:242:b315:ddaf with SMTP id d9443c01a7336-242c1fdc0a3mr34539085ad.7.1754637414818; Fri, 08 Aug 2025 00:16:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGxtBkDZ69Svpemiyv8oORXgonpZzt8jubH4urFiqXxL+xMTvKKYpvMbbPR8oBxUkGRzFIFrg== X-Received: by 2002:a17:903:41c7:b0:242:b315:ddaf with SMTP id d9443c01a7336-242c1fdc0a3mr34538705ad.7.1754637414389; Fri, 08 Aug 2025 00:16:54 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:41 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-15-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=4792; i=armenon@redhat.com; h=from:subject:message-id; bh=Mtu+Ybq+gxv/VQ3achH/Q1vShwUDXfGo7Wkn116W0K0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVe/CKarbs/KLPzvcTegKDWt28PgX8G/+B1zb7BE/ n+Yv7e7o5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwEQmvGH4Xzox7WWW3KRkEyHB frfrXOF2bz3F2CMfZ9XdUXxZ9iiGjeF/5Ny3baskTCYznWR5YD5LWnXdqtbEZU7i9aLXOBesC1v EDwA= 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.001, 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: 1754637708445124100 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: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 1f502f1cb15c951a0845dd27a4dee34fcea3f753..69c482b6fef5afca9ca02f9ac86= 339ffe1524e2a 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 @@ -2619,11 +2621,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637683; cv=none; d=zohomail.com; s=zohoarc; b=kgFJcxB9mad5ENdpM/lw6fr93RnrqMzlD8ScjxwEEN8HriW7TiE4JYwhKV1U7J5voiXc0zyuidVSo35Qm8O11cOHCAMoEwaGOz+QpqBh9kQsS+KFTIdwrXzJCU0xAhkeXVHpTNrWAQEfJ4GrjZxNTFV1gRC60G0eWIP/gZiJz0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637683; 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=JGz+pEiXmUMAsQVHsZAatBKd/T5a110fAjdAVhA6b0c=; b=NIl3ZrYh/+D85DX6ol1/wfeAjghBEQY3ZPyDcuwc2F/gnQuex/GG8wFFn29AoMjzm2ikTfyAFEwiFHDxb/K0P+6QZZneRF+UsyS4HdE+3IrR9z40E4GfcwA7IxLj/gKmkCzI52PFscy3ec9Qqg4B3cC+P6lLmMzC1UT3Fml7rxo= 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 1754637683477370.573380309708; Fri, 8 Aug 2025 00:21:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMQ-0001yI-U9; Fri, 08 Aug 2025 03:17:55 -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 1ukHLi-0007T0-5F for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:10 -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 1ukHLf-0007Qn-9m for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:09 -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-77-_eYIjW-6Py2L3TCIwAj9-g-1; Fri, 08 Aug 2025 03:17:04 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-3211b736a11so4057664a91.0 for ; Fri, 08 Aug 2025 00:17:04 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.16.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:17:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637426; 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=JGz+pEiXmUMAsQVHsZAatBKd/T5a110fAjdAVhA6b0c=; b=Bg4yrTiTSQBDFvPNxT6yZ/gN7SGZGkC8fgC3l9Iny2vn0lUX14CBatRskfKarWEbHeRhCR QBx7TmcmRuUpTcB/Mm0hWcoUfAZsAu5B7Y7VfTNIVaFAUND7nSuUXtCvu/qd5E2VFQ7DoR yMe+JYH5/K2hUU06WtjmFbh/J65Fy3s= X-MC-Unique: _eYIjW-6Py2L3TCIwAj9-g-1 X-Mimecast-MFC-AGG-ID: _eYIjW-6Py2L3TCIwAj9-g_1754637423 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637423; x=1755242223; 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=JGz+pEiXmUMAsQVHsZAatBKd/T5a110fAjdAVhA6b0c=; b=NyjfSIwc3KD+q+CyWj6WpamBpKUI7CdX3nBKtRXB7ls4TTCdCpt2VXfzXDdBvHEMm4 JbuvrfY78JOfi0KM76hzG106Jl2/V2qCAzUKnWzUgQcRf/lJ5WVtdhHDCsiVbGjSCRq+ MwGjg3XsdvCavfnvr74YNOxPHn7HRSVF17bhe9ku5TPTsE9SrIRvXkhAirCnHgBBg3ad 5BCGvHEW3kdO8xK2Wxr/ADFUbE1q1xbA0I81E+DXk8uQmClIM9ATAMVDaIiPDnYBrjcv I9uJzJ5Ofy9WpKW/9j53VVaLYLnTWqiI9GhYWdJs16NKeEsgRIxKqG42NztcoKuhwks1 RHKQ== X-Gm-Message-State: AOJu0YztyrmWRMXGnqVKH9kFKCG9q8ozIR+yUjWuL0SlGXdWB5HQieCP C41OcQHHiXppKUHGJeQvZla1NrX592hamkl09eoDTdnMAyhNxJEr6QW+SpyCfF8aBT+nQmXjC3B Sjxy0YxcZi4YSdFvkO23SnCtaNxV4f5CUBL2b2E4i0Jf0qwasMryTgAmf X-Gm-Gg: ASbGncsEP+Fk8mHiIAsgUb7SgfaFQCBFZ+dIecSpfPr49hAJVAiEJ57KK+6OfVHZKBU iKuwrB1GVq6V+HnDiPpdg50COGEdQTQTZRrIGfFQuLj8ftVKYbdA4zCW8QnkVMMP5pZKyY5YTvC TuR9png9koRq1GcwYPvMQYwGve0nhSJkFFGD1pX+po8WK3BbxoGsZ3kfkZZY4i389ekeZzFRqp0 TXSuutZHxVYvjq842JOdz6LxTtGFilAvjLzbHlDXBjzWwiZgSUIDrxtk25RF5AJfmdrDXqTZQum vdfX0V9tzsAa2bwIxwxIkzCpv3MZReuqeU4GUBO7L6/GH1QaludKZg== X-Received: by 2002:a17:903:1a44:b0:23c:7c59:c74e with SMTP id d9443c01a7336-242c19aaf6dmr26443445ad.0.1754637423459; Fri, 08 Aug 2025 00:17:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEqNBLtNYG5TbfwSVJqO+yyHBT8LSNhXqnEktVEw9A8ooWaxYEORAIWhZJeOMlayjJ36TpS8A== X-Received: by 2002:a17:903:1a44:b0:23c:7c59:c74e with SMTP id d9443c01a7336-242c19aaf6dmr26443125ad.0.1754637423088; Fri, 08 Aug 2025 00:17:03 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:42 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-16-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=2705; i=armenon@redhat.com; h=from:subject:message-id; bh=vBw3qJ6drqDLoD5OBi9CYCpF6NZ6n0rBrGUXpYaRnMA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVcnsvtHuG/QVt2jcbpgwpedZ999rz3CfNZow8I1v oITXh9S6ihlYRDjYpAVU2Rp+Bog2xRQGBFp+/I6zBxWJpAhDFycAjARzQKGf2YLZ0/4vnhehZCH dYIA6ztlq/R45kYvFyNdbvuwGXcSGBj+u1YfjU6qMzuwPrN+/pKZ3vMeHH5cs9w5a2n+c5vTYZN P8gAA 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.001, 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: 1754637684556116600 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: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 69c482b6fef5afca9ca02f9ac86339ffe1524e2a..d5082ee1cbce6a870871aaf78ed= 47707787ffaed 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 @@ -2624,11 +2625,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637470; cv=none; d=zohomail.com; s=zohoarc; b=mjxte3h7nAaGtYLiUDTEsQJ1L5FO7i5JqttoPtN86mLqteNaN7sdf6qyH2u4xn8pd3kL9qP0Hmwmma2hyyK/j2ggZhDapXftz7MBiJ7tZ/1EyUZ46/Z94Ol038N9mEITw5OSeep0LkJG57vF4iyEBnZeKct7Ug6EPKUigUm7a/U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637470; 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=xR8D/56i1iOxWYX8XCYXfSWlMrLCcRRefnU7ZWTReBE=; b=dgol3Nrmr6ppNw/HpLYKKZhI1XXtB/Q1cC91+3jtfD/gGgEeuE5gz5vaaAEFscI0DLsDrSE8CqEKS4T/CUpZGELuJaz/UMWhnONCcDVpKZO6uoFPYTdWTjdv1RiJY38xdpDDnvTTXQrh4GRW+QnPgUJS+LQqnSLb8WlrDCMYXRo= 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 175463747097225.63046025698884; Fri, 8 Aug 2025 00:17:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMD-00013c-EU; Fri, 08 Aug 2025 03:17: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 1ukHLw-0000D3-Of for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17: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 1ukHLp-0007TD-JP for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:24 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-266-KzUbm2NLMsSDCjLY3bCgsw-1; Fri, 08 Aug 2025 03:17:13 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2424aaa9840so19921735ad.1 for ; Fri, 08 Aug 2025 00:17:13 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.17.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:17:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637436; 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=xR8D/56i1iOxWYX8XCYXfSWlMrLCcRRefnU7ZWTReBE=; b=dRxC/hBVz8827Cq+PMWROJ2tKd6RT4z+qpVLfoGgljIDLTxI6MFhdRkWAQZ3kQBaM5Vw8B +qEZVDtL/e9Nc/eBJGU7Ro99qCWbZjM8aHlg3+QX3wEIU9FC8q0Buo13Mpg2o5mub245Qg k/Crwl/O85IRE7A5iHgKiRNp8L6fDG8= X-MC-Unique: KzUbm2NLMsSDCjLY3bCgsw-1 X-Mimecast-MFC-AGG-ID: KzUbm2NLMsSDCjLY3bCgsw_1754637432 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637432; x=1755242232; 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=xR8D/56i1iOxWYX8XCYXfSWlMrLCcRRefnU7ZWTReBE=; b=mmDcKWbW40W4EzY3W0bKISACWTiMCEHCAqPH+TlajKZZ/Uu7sX5Za7BxMldbK80InV cn9rQqARzqH68kZGznpn0EpsBaQBPOj18vMHckwd0xETG4Y1wppCY26L06BeZoZpd8Ww wShlfZFmuRDceQJ66x5Qsv/JMHpYnAHN/3KYrZHuJ3TfIS3EIUnX+fLo54CTevV4kNMD Kc6pGLnbtSvIDolsKzKCy5sYpaLltTFmP4X3NJDO5+fqXDdfwO7kuJgmffH/g9TH5Pn7 4zFQg5+LIUZ06upYkFGgvuZyTMxMSfYDiMv6x7hUNVX9RyNA+Tw2qcExBFwu7Z5ymBuJ y4Ng== X-Gm-Message-State: AOJu0YyM9U73u9Lw9TJ8Ki8JLkW+A2CVduQzEaFpzDWuH2kFwf+c14h5 f6zQ2qycUr3C8fjLnn/gz2uI5JQGv0w5dVourkHulmJMaY5mnnBX8mIQ1HE3V6iAyxoh8OofHMc gQ8DVo8ifoDfG1pGnM9nimXKV8FqewYGn64x0hhU3+UH0bDaJ9Jzqf1/o X-Gm-Gg: ASbGncski04mh7UOfXhgPa0NaVq5qZVAH0RwwJDlglIBLhJARiC3raWBJoiZU5WGGMU Z4wSZAAueGBeBx9xNVUaiBu2doowJ2V4/1AIzNaIOrcmYwE0WWJObItjoQNeR2z+mRI+O9Qwtua 2JgK39dyZ20EJYVdxDNzjOQ2EagT2p/gT5VXihWKDrgM8dAQASgaJSKMm5pSwMEjKN7HRl8ziqn l2N2ItYRgillwZQ2jEDyg38qIp1aGcEXLJw8qo+L3U1gMpJr6pHfBYkCYvqcXSqAj1RArgIc6mM PheiDSc80sQ7Y5zCeDWwl/dMiotc0vbSjc5lAQqsJB+PH1nlFBIjVw== X-Received: by 2002:a17:903:110f:b0:240:3584:6174 with SMTP id d9443c01a7336-242c205e73cmr30044345ad.21.1754637432447; Fri, 08 Aug 2025 00:17:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF7nG0vSxX+dzoskW1hYMKv5WaHMaQUdvMyZh5bcwYZTChgHpi7bvledH4OQhTOwQYz+BXo3g== X-Received: by 2002:a17:903:110f:b0:240:3584:6174 with SMTP id d9443c01a7336-242c205e73cmr30043985ad.21.1754637431756; Fri, 08 Aug 2025 00:17:11 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:43 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-17-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=1842; i=armenon@redhat.com; h=from:subject:message-id; bh=gc/oopHWfeZQvmdbFG7kGiD+HQ0JqNNV+Ba/P3FzgFA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxVfj13/sebjU6znvBocv+66u65M8Z5d7zOn+t8W2b zZ8UplztaOUhUGMi0FWTJGl4WuAbFNAYUSk7cvrMHNYmUCGMHBxCsBETrEw/E9kXWuv/cFQVjjO fkmRiuGnuivWkS/lF4pu+Zs0fTfjORWG/xkuPFVhVm8mvtj8Xmt9b4qfz5U3pvczY25ur702fWL PITYA 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.001, 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: 1754637473907124100 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: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index d5082ee1cbce6a870871aaf78ed47707787ffaed..18ca11e14aed906d0b1a7190acd= 6449f3f117e91 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 @@ -2628,11 +2628,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637613; cv=none; d=zohomail.com; s=zohoarc; b=Ul7qaNCm7PdEtfHhQnmZlH3IVSCkB1hyqlM0aN3TDNOo29s+6uuav2uT3IUEKjzfFrmz7VvnoRDw4x5AVrtE2XpsEM9OTuazm6FDS2fGQiXbkvkSF72VCJvg5mB57Q22o8xdriLQm6p6N17nk5ci99j3dZCAVCFAEqqVaIyADQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637613; 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=VuZFKU3Jg6irtyxMzzHZyLIIYiPtf1tnCGXgXD8zn2Y=; b=aDcPoppJ53+sqNp42j/53csESm/LEqC1qu4cm8r7/berYZ1rJmoCHkRYNfJzO1OFKhW/NzDXISWGlBuB3gtPmREYLYn23x9l3bWpoVNjY7vsrOi25mloaW204Wl4WahPUpsOdNeSWeQBcyfPUHtcsEFt+Rjvy9wqfvsKTBQSFto= 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 1754637613100187.8545422039466; Fri, 8 Aug 2025 00:20:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMY-0002dY-7S; Fri, 08 Aug 2025 03:18:02 -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 1ukHM3-0000SU-0f for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17: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 1ukHLx-0007UT-1T for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:30 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-44-Q0pzjQmtMEuNGSWJv_HzaQ-1; Fri, 08 Aug 2025 03:17:22 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-242a1390e9eso38572495ad.2 for ; Fri, 08 Aug 2025 00:17:22 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.17.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:17:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637444; 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=VuZFKU3Jg6irtyxMzzHZyLIIYiPtf1tnCGXgXD8zn2Y=; b=exEOl0tAq9hGzVUDYU0WsqaMCa92WKW0ihVwMKZ3h/hvq5koqTmtimyRWvWixra7OCVtU6 /ZW3lN9SNAGvh6u06QnYLdpq9Y0XwnDqAzZ8e76eKJbNy1xb9EGrJvfd0e86hmUPIUotW0 wXYkytChShXCWtu+6xbLOq9gsAzlz7M= X-MC-Unique: Q0pzjQmtMEuNGSWJv_HzaQ-1 X-Mimecast-MFC-AGG-ID: Q0pzjQmtMEuNGSWJv_HzaQ_1754637442 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637442; x=1755242242; 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=VuZFKU3Jg6irtyxMzzHZyLIIYiPtf1tnCGXgXD8zn2Y=; b=m1J2XbZH0CSTgwAXfaD5VcV43/kacpWLXtey705yLse8LcvivX3yhsshVR0SFaaVme DtT/mN15RSSMuC6KvhxaY1eQVS02oR206t15JqeH75i4H4tmjCJE5AJBYNgP4AJj8xVy 75Ak7VejcbonIKqJavcQr2Tmczw2Y8yjO4pycbW6IiB0bcdScDJTDp3sERUI66S8crlN DEeynQrigje9c/lu2kxRKHpeiK7vgAVahz2LxkE+rCPznw6VmY+ydvAJqgPifzD57rUw zk/mySfuxn6nkG7mhJlkQt7oU2wjz/MJT28/MNa4BN3FjnNm76VPHoEtT7+v/Lb4Ec0p 53jQ== X-Gm-Message-State: AOJu0Yy2q8DK+f9jWAVBdN0yCI9RyyqddcWt+E1dMYVOBft/qrb0/aa3 lPUsVxFoBZ//wVx75Yem5mASSEzT/GK/X3spWhLDUV44Z88g3QQNrW15Xovfcez1xzdm7Es8LAp S4hwy40DuBooCPA4B5c673sRrk470C/AHNyfa+tyL+s5jlE+k3sisv1Qe X-Gm-Gg: ASbGncutF0QKvyKgE1Iry/fnGWqaMKF6Mu0Gg0vbJ8QBCt+5sn5mBf+kku3ZoRzbigh m0ukDMHiXH1HMrm4OeOjiIwJj2JfF280K6wxqbT6yKJgHs1bLenjJwI4eFYtUgOHmgloMEuTCXH JO2n9S0wzDw076hBfEpY2kirV6iZpi6sxbWiArzb6lJ8qwu4TCh+1GF2uvQHsEf/OikjfpHAjtX xeq0xnHogYvpsIDnItHmgym7uYPTgYsdAOjCH0/nWoNMyRAx8Qck5val4IewC1XebTRVkFk40W7 JLbXRuS/M4A1d7gArP0XXUgOdrCNPUVKT4vC2Qx0/tXi6O/Sdxh25w== X-Received: by 2002:a17:902:f543:b0:240:6406:c471 with SMTP id d9443c01a7336-242c1fdc70fmr24830165ad.10.1754637441647; Fri, 08 Aug 2025 00:17:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHqThrVl7mh9dk9HiCSrkgsfdWDieqAna3Deo2yk1LqZkP6EdRBEe1/XonRml65w2A9GqMboQ== X-Received: by 2002:a17:902:f543:b0:240:6406:c471 with SMTP id d9443c01a7336-242c1fdc70fmr24829685ad.10.1754637441200; Fri, 08 Aug 2025 00:17:21 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:44 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-18-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=4283; i=armenon@redhat.com; h=from:subject:message-id; bh=RIny+MVa8NwcBOwJOpnRsRtDdNQCfAqkefsPQQZuy50=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxdd2szMUrv7DNFnko1LXevF3ojPq14r48c/WV3Y7s Hsf56KvHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACayuZKRYfatBb8up59KulW3 8ecfySPC1yJbDnyyvF9+TOeDjWr0vS0M/5TzXub9P8T3gV8mgtPj2BTmA9pTuVPZCubKL+itW8W 5kgEA 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.001, 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: 1754637615370124100 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: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 18ca11e14aed906d0b1a7190acd6449f3f117e91..9098c4bd3394d7b9ed77e20afbb= 26fd9c9be6550 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; } } @@ -2631,11 +2635,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637607; cv=none; d=zohomail.com; s=zohoarc; b=QsxG0u8WJ/2SWd7v7/q7eW8rgWEXGXrRpqHZb3wOCRN4kev0Ku2g/uVDtBskruyT+tclT6Ouu6XTDJg0Djmat+wTsGwhXAeZyFK5YoTCgEtYAWHbetwKVVwM0MiXI/QVeCcP7KUZ7/pflH6ZJZORWEpAHE3VwcW+fN9IZgSQ6Dg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637607; 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=eu+DxJs1BSeNduampGqfs17K2lrTwCheyveRHInPudo=; b=LZkBbqL7kOu/jp4iClgN+7EgcF5OtQzkgzuflPQm4LbDBs/bc8+Ob0FyAraBygumrGBYp3z4lbPbuidCB+qG3pJAwgmXm7sY7DBPOPxaOuoGdhorm+z/gQYoI44OjVx1OraXe46X5NO25paskXr6Yx3asiZdAKrVescPHbZJTv4= 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 1754637606972942.4763463628645; Fri, 8 Aug 2025 00:20:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMq-0004QM-7w; Fri, 08 Aug 2025 03:18:20 -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 1ukHMF-0001Kh-3t for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:46 -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 1ukHM9-0007WA-43 for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:42 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-155-dkRJw5ZMMZ2yKXRY0VBm2Q-1; Fri, 08 Aug 2025 03:17:31 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-23ff6e5c131so15400065ad.2 for ; Fri, 08 Aug 2025 00:17:31 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.17.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:17:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637454; 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=eu+DxJs1BSeNduampGqfs17K2lrTwCheyveRHInPudo=; b=BkWm/qLCY6Dvr+e2E4pxphv+PFiRGTjh2ctAgdiaUvsTH2ntVOl1BaLP1OXjaya8kQRMOQ GMEBVBt3DDGeTc4xTh+gLEZSHLxfb1ayKbPI0t8XTEm+UdQ57O+LdvOS7Nmnp56sWGIWgD vVAuYNIMtKXeTSt+qRsXMOhWSKudWWE= X-MC-Unique: dkRJw5ZMMZ2yKXRY0VBm2Q-1 X-Mimecast-MFC-AGG-ID: dkRJw5ZMMZ2yKXRY0VBm2Q_1754637450 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637450; x=1755242250; 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=eu+DxJs1BSeNduampGqfs17K2lrTwCheyveRHInPudo=; b=s9jZ+RE3n5ppeplzvatzZycWwG+zXPSgNImi8x7KJ4y99TEE9cmGuD2h7BcJW36emz ZrImRBQYxkQSOie21ZH/wp28mTb4p+F0rzD9GB+p8241WtCmtva3pdD7mGf7g3GyE5jk 7AN0YYCg3tJ/y8Mu2HLVR30fj/I9UDxfb119LnYN1Q6ADpEp5rbpJu49rG5HYTwRH9v1 VDO66x325MF8B6sRMIZWI0JWHZVmIJdjlNp9sHgxhAV4RDyX50n/gBBt8xyBzipZkxfT rj+0d/NrqpUV5vBQsyZUkaejDDZV6OuvZsP+JEXJ6hmdzTc+rsTzzImAPhDmgRXYY3D4 qEpg== X-Gm-Message-State: AOJu0YzRUIllSfm7vrCoanUkEMTYyjDCahZEXAPHJ8q/Ts3+ksOtXs8Y 6FKmZMyWSe3B3KvH4q7Teo7KqhNpvp9LCk7L8gFcvATCpoNfaMtrX3b/a+POf9QJ4GMsgFtv9sn +nrZMkgVSaOkOLHxdmraEbfmewELxSNB4EBxU2ZIX40vK2E5udgde6s6o X-Gm-Gg: ASbGncuev75mqtyeqEWKRp1MvellNfeYPnwhRr7HfcoPQEKXPfdzrQQiEd2X1uVIB9h KIZVPmT29UMTc/Ad65ZQqcpBql56NtyGOX/njtvlO4UfoGEiEJW1CsRDg/ANKIrzoV50L8BmQIj A7PTnuDTv8Ch7ltsJS8+vvsDLlgzsC6NJXfKqTLe+KYBXeOqLxXUd27eIVKx824k4BjD0nDHY2a 7lo9iPhoyYbomhoJrBp8V+cQQWCC1yo8akSvhXSF0lX6a2cWdQ1YaFUwAXn1Y0Qr1QgRvSugCie VRpLjAFe0Us3Vv+GjZOCUjtd9bUbllt+zG/2fLaKX+f6GCk7ZWorww== X-Received: by 2002:a17:903:1a90:b0:240:4d19:8797 with SMTP id d9443c01a7336-242c20074b1mr34129865ad.22.1754637450392; Fri, 08 Aug 2025 00:17:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGemC7iQ7O0BrvbpGtL+M+66HUW48UKdhlQ+z2m4fnJaJjeKXbJtFEcXXamDc9KeqN9hMMfrw== X-Received: by 2002:a17:903:1a90:b0:240:4d19:8797 with SMTP id d9443c01a7336-242c20074b1mr34129305ad.22.1754637450032; Fri, 08 Aug 2025 00:17:30 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:45 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-19-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=2614; i=armenon@redhat.com; h=from:subject:message-id; bh=74qopHTRjtnmkfH588NqXXJeVZqDEAzpYH9EdbLScjc=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxdeSN1lEZ+yo4n/nG5M6T7h6rsBOPq/pwX0fmo3tD blUPm3uKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMBG56ww/Gact2F0zOetr4QyP VxOFH7uGCIkLVSgL6D03XrXi4nr3A4wMfyp8VjreUNGpvHFFp2vRXaksEz9nxhDzWx7PPfd79wU wAAA= 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.001, 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: 1754637611402116600 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 Signed-off-by: Arun Menon --- migration/savevm.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 9098c4bd3394d7b9ed77e20afbb26fd9c9be6550..a7aede1b3df9164e322e68f3889= df7c4166876f5 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2480,32 +2480,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: %s", 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, "migration stream has 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 @@ -2642,11 +2645,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637614; cv=none; d=zohomail.com; s=zohoarc; b=LVCg6QSBfB/9KssQrQkTjX6bvMCFwffY/0UnU8jCKvDIB1dBYK57OB2gYd+eCzSrwSMrvpjFQO/LyRBXCeM+6vRDtXk2IGfOgkYUAxDCLejESuTBrIFCPCMRxb1rz92Z8yfNbeir38SbRzSaZ2P7lhEOFWUR7mtGjyptW5UD7Pk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637614; 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=9Hr1xq017ATqgOHRripH8YNVyaWvaNlyBe9lB1bdJLA=; b=Sk782ckZn1rGS0qW6rVQXpyhpzPKT3VI7qwyOxJnML2rsUKxxRylnH1eTzKt4gRIk8NwWnmLXVwH/WB1UCvyhHv79aK3UPMvIMkdFLiJRAJOGVGLg1+r+dmpF8GIyQObye3xIL0H8GiUWxMZbS0n6sKr8eHtp2MH/iAcATyneHY= 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 1754637614001541.8410077811079; Fri, 8 Aug 2025 00:20:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMc-0002tt-8O; Fri, 08 Aug 2025 03:18: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 1ukHMI-0001QF-DJ for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:46 -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 1ukHMF-0007X2-HC for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:45 -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-333-lHcvIUNhMUmESebDC0Hf-g-1; Fri, 08 Aug 2025 03:17:40 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b3f38d3cabeso1494349a12.3 for ; Fri, 08 Aug 2025 00:17:40 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.17.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:17:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637462; 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=9Hr1xq017ATqgOHRripH8YNVyaWvaNlyBe9lB1bdJLA=; b=Gnk6sFr48SEbAhr4yT50d5wHSPVCwxw/aaUrUKnbhYKD24c1tTkelV0tIYWKkSNEQpMO2f 6+Os1UiPcGuDdjrYsFks8g7KjJw+HIF8lhAqBqTiL6sR2CP93A1cTybZQLCcTR/rwEYfEQ hBq0v/9aTgA6DHGpcAELQdPHGLvpW74= X-MC-Unique: lHcvIUNhMUmESebDC0Hf-g-1 X-Mimecast-MFC-AGG-ID: lHcvIUNhMUmESebDC0Hf-g_1754637460 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637460; x=1755242260; 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=9Hr1xq017ATqgOHRripH8YNVyaWvaNlyBe9lB1bdJLA=; b=d8ThAoaMi7RFKAA7VrncWc71CXcUE+RBcOvESxdanUh6AJjhFMXVIqsy38Y3rqq1Jl liwZs7HNYH4If1FOx+6iqEVBY7EhtOCVClaL2hG/YfnLBjxSYayqikJ3rosR+RfBzDY7 uIEOkrdk9Q8NDp80EwoN35sFa8VZ/2UsnfoAWa6Mq6BacUcbIt+QnENbCFNlCDydU3Tt aXkZosG5T7DAQOG956roJrOh5pSGneshtBq00+4QncOrFDuCv92kYTeh3omrMFdA9EG3 CkfnUptFQXWtkUTYJlm6/CTB/yPtR3H1io60KM5o5F1h0+jlNGNaaIsDo5fnjgjsvbGH 50yg== X-Gm-Message-State: AOJu0Yyr8uoMxTUwOcRSgMFUB258OxhfQnqaNTZCpRJBIossxgWZl1/z MsGPOdmi1cvQAA6SzSGB8aydzG1pgFHX9jyN6mjZGZF6jbM1kG7d/P76q08NO+PkFuKp8rY4JXl T/0USuUsynhKjz+87T6RCeV0StLZEZje7G/tq+pgYzbFnPoAcEmSJmilv X-Gm-Gg: ASbGncsVd3BkoEl53AmlsHpUXUgOAyTeo5F5sOVFxHH9yunzcqeiEDUvC89YlEPOoUD N8YqpiimW4G4+I9fuk2kPmUXfGwP/sLLUxkY3Pc5xx7Viwz0M8vD2Ys55eAvLTz2ixtUqKe7wsZ TnBFyA68j3KzpvZ6QCrTu0RSRsGDMmhEZsf4u0sVrRUJ03RtngA/XX6CVaD0CrV6w++1HrlBK0y 7Y8a7Qpns91hpfdWbGvudjUJnCmip5+nDoy4lRyquZXn7u227IzEYY2iJ8Btc5lOicHViKnBj0c c8R7Tujbws03MwNSFbykihY5L0tLut0znWfqB9/mBVEmtMKOr97D8A== X-Received: by 2002:a17:903:1b66:b0:240:7753:3bec with SMTP id d9443c01a7336-242c228e4e1mr28444125ad.51.1754637459683; Fri, 08 Aug 2025 00:17:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHg9QpvMKsPSqdiPnUvaSIgKXT8yIxg2F3REG4AHfWCvrngHZwGBuwPslaHpGez3bkQifCQqA== X-Received: by 2002:a17:903:1b66:b0:240:7753:3bec with SMTP id d9443c01a7336-242c228e4e1mr28443665ad.51.1754637459212; Fri, 08 Aug 2025 00:17:39 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:46 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-20-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=1551; i=armenon@redhat.com; h=from:subject:message-id; bh=+A43aE4QGjzjKoNQN+TnSj5Fed4DOQR/ypVBqBxUdgs=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxdduajP9eyRyNPn609aVf+bWLfBh1bFimPh54b5c+ 0eyK6wlOkpZGMS4GGTFFFkavgbINgUURkTavrwOM4eVCWQIAxenAExEw4ThN0tiq3lCileBWyR7 JZ9XPMtRdqFr2XcFX84xYrios71oG8N/35Pdy2WvmBZem7hCfeWRMl3V6a0N4oveB1tLfigUtF3 ABQA= 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.001, 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: 1754637645923124100 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. Signed-off-by: Arun Menon Reviewed-by: Peter Xu --- 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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637495; cv=none; d=zohomail.com; s=zohoarc; b=Znc69ZSnaLfrjkpF6ed4i4mLetwrpaDoOTXOGByPr2TIraTi66KGW6afSf5D/NrT3KbczJ9v6IzkEDkVT177xncmFJxV0shQq2YkxQuB5VGiSBifoO9Ma0RUynPoEf0WWOU/HDgRfYx2Diom3QiI4S0e1JZoiWjqk88sHY12iZk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637495; 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=Zc6KGC9gLPRi6q/fK9uTYSORlFiBhURFQtRCjdrDpz8=; b=MHlEvUcK0MrhZqOlc99BRQPtDL7TwQcFB/ssa1tBbLJhI7vk0PfilDJuNr/veDKXsBVlKH9FyMBILWVK7SJp5brwWMQ92a/rO0BLJV087IZ2MHcDyk2yMNWW32WLvICpJJ7KYP8UEU3tWqsI3VRwx04der7z6wBcQZRhkAIwOjk= 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 1754637495063894.6229870805569; Fri, 8 Aug 2025 00:18:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMS-00028r-DR; Fri, 08 Aug 2025 03:17: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 1ukHMQ-0001yp-Iy for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17: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 1ukHMO-0007YO-5n for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:17:54 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-28-bNQA5oUUMV6m0EDManpkxA-1; Fri, 08 Aug 2025 03:17:49 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-24011ceafc8so16025675ad.3 for ; Fri, 08 Aug 2025 00:17:49 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.17.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:17:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637471; 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=Zc6KGC9gLPRi6q/fK9uTYSORlFiBhURFQtRCjdrDpz8=; b=XzIYhaWppaAXyXDKUv0myHxHknZWpniolXQNvk/d9jRfuQiwAQuSCqCe3QcrIf7qHzKXUm msmR8XjyPtDaDx/otkejuVpinnHcfEYQ1OGXQoRgADPyMVkM7EgGohHT2BmONO/WvIIpoB 5/ZJWpXVOmhdn12Y+SR5R5NIQ22zVCQ= X-MC-Unique: bNQA5oUUMV6m0EDManpkxA-1 X-Mimecast-MFC-AGG-ID: bNQA5oUUMV6m0EDManpkxA_1754637468 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637468; x=1755242268; 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=Zc6KGC9gLPRi6q/fK9uTYSORlFiBhURFQtRCjdrDpz8=; b=tOKzuKZOL7UqZk8cMc21IQ3lXXTk87Xr86IhIlcaykzDw7Vip0TO3p64oeFVRY1I8m ME/AFQfwxcin77kQ/h5vPHUJXJ31fKF3NP1yBdr/4QISSiJed/0CP7UyqW995GAKWGwU rt558KbPO7QEji8Dl/nzPx3WLQU8yN6NpMYEfnfmeu47tEvC4yHHFWN/2Jqeyx/X9QG3 KbWDapIhUGlV707SpgxE8Gp3MqbIRlPTRcZzzvsU5NktXWGlhaMiGvmB1QIdnL+JJniD vR/tG7K+j7guBHEZSbXkN6lykLuAb35MmWancvvgeIy8naT0r+H8M8j7vRHs39DL3R/Q v7gQ== X-Gm-Message-State: AOJu0YxXLY9zxWKcblYCS83NaCOqSVRd8y1LO6aV+uNmy7hXIuDOnqbl qK2oZCiBPWGRWg5xSU778zi6rJZgpOHNKKD5BgB4FNoiiMPM0k0nnmuE8nBhJAPZ67LTweRuzZu Pa4rhhj2NiVNDGn9DwZsQywH7IsC0od3i3oNfpQ4ngYyZWTMBujSHRDJo X-Gm-Gg: ASbGncuVplQN2JxLMoPQPjP7cqoUcCPFj4sxEkk3939tirF2qugk+I+JTheKH9O4G/5 Y0tA7rLIZvqlUz+Vzc5dkQatCWojTP7D/3//5PV/5r/ECh1NeSkhRWgC9KwPpw4OjniYW+6yLn+ mC11BLCu7A2R6LCfSrXrjjY8q/7wpRp60miyzhbYW8yOTShELYSdunnObSeBEcpiOVKP/jnUnA5 EYkRBseHmWyeMC1C//FMbawH3uUGMt1jW2ZuKZPC2njAlD3M0L5mrjFJdRCdLyyII9vBbWOhfOV vQAYro/96m+NqLZSkK3ZyLPI796ybpgNLdMf82LhZ2Q/KUgoipAN1Q== X-Received: by 2002:a17:903:19ce:b0:240:cd3e:d860 with SMTP id d9443c01a7336-242c220df9cmr27243935ad.41.1754637468220; Fri, 08 Aug 2025 00:17:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE9KAVLpGwFNYG2bSaShhaR1b2jiMAmB+ahxcRFnGIfTjtpcMTK9FVy0HLkfyyV55PczCDEjA== X-Received: by 2002:a17:903:19ce:b0:240:cd3e:d860 with SMTP id d9443c01a7336-242c220df9cmr27243575ad.41.1754637467836; Fri, 08 Aug 2025 00:17:47 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:47 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-21-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=5954; i=armenon@redhat.com; h=from:subject:message-id; bh=LREnjd+zirEQOcTJ5PyBLt5tOajL0klZWFfTSsXGi5Q=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxdcE9vzL4P+WufD6cZWdqhnlvOkPW9RjJyztd7Gck Krcvz6zo5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwET4RRj+OyTPspbZ+nwvD0uq pr/4rQDjf48EegtXbJLtUoz6laRzgJFhwYe2s3s+PW6ZenxD0eZlBW1XPr4//+VzRc2FbfPq/D5 95wYA 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.001, 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: 1754637525531124100 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: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- 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 35f769bc55c235134abb5554ed01b94787d4bf78..39d6142abccf90c3a35e6c2df3d= f245052eb0bcf 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 a7aede1b3df9164e322e68f3889df7c4166876f5..c5566199d00893c4e083ecd27a5= 5da832e2df574 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2519,15 +2519,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; } @@ -2648,11 +2654,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637613; cv=none; d=zohomail.com; s=zohoarc; b=PVZrR50pyRsDQ4jmco+v27niv+yPrZbq2WNicaVNJrqBOTNmQKQ0somJmYqx8NLyGRfWqm3/efvXQhItFcAKO6ZCFvlgiFdb/ojpVsQ780H9QvLCYp3WAStECuSHCj6fS0dZPZWWNZ52r/M/01Q1AuYgByqgAhke8lq/yJo5AIg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637613; 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=KcsB3EUMJsqI9BIo2c/GAiLUjrJplvjvOwLkJgmi5Nk=; b=AE9i21kXZCtKUFqhA4fgsFV2wNpUxZ7kEgB//UmhIFJhsTSCExKjHk8IlGp6+yDqfTpgEcGKZUqXMcRpSBoki2sEgM0zOHBTj47ZizfzqAtKLDjCpa5cgYhT8JOjNsz1Bz8M1rXoOctUrFJvFdXnRl98sIDqULPF+jv1zOTr4NI= 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 1754637613900631.8362588949474; Fri, 8 Aug 2025 00:20:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMo-0004Cx-9q; Fri, 08 Aug 2025 03:18: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 1ukHMf-0003Md-Um for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:10 -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 1ukHMX-0007aI-N6 for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:08 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-97-F3DtmRbJPrW5tMlhAVnx1Q-1; Fri, 08 Aug 2025 03:17:58 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-240607653f4so16422945ad.3 for ; Fri, 08 Aug 2025 00:17:58 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.17.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:17:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637480; 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=KcsB3EUMJsqI9BIo2c/GAiLUjrJplvjvOwLkJgmi5Nk=; b=J3Tb5SmhcX24dcHLRf1U/kMIRXRMVKdI0wUR2SKnmZM0jbniBH+x8PT6t1CsrGPxnKpvfa 5m3aqWXoni46oi2mYLVrINcA0De4ohs08uk3wtVlR89qUNO7T2Q1oFx3HrqDDZg1W6aei3 1KlVB9GHv4x98vltPSyOC2aqXHX+L/Q= X-MC-Unique: F3DtmRbJPrW5tMlhAVnx1Q-1 X-Mimecast-MFC-AGG-ID: F3DtmRbJPrW5tMlhAVnx1Q_1754637477 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637477; x=1755242277; 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=KcsB3EUMJsqI9BIo2c/GAiLUjrJplvjvOwLkJgmi5Nk=; b=ug5vpeJ2VVymX1/K7cX8Oa/ZbL5CgXGCPXbAF9PLVAH3DOQkk0VpvYMA2adiXke8qY 8oF5fH/1p0XOnyQ/XXVtdWumazDSmETgHg1J/Mkr/wUP0rFaeH9YhgSK0dBCzKR4L3RJ KUF4zUJZJ5voqzEa2376EJnZgwRlAhLQrfnYcJT53LULeStjPGCRAXeg/tlcoMD4Vy9Z NZA3Xc23MDs2pjwCEququAtCUffuGEjoOiggtTETunjsE1nxGxciKX2qt0WFhc+mpMbs L38KRQCv0JtHR7/WKzwnsYsPlsvSgtKblzByXXajjOq+rAp9XfhZrsSB2LCWMHHEA3VF vRQQ== X-Gm-Message-State: AOJu0Yyt9ojNa6kh6Rf3+duBSr8rFVZsgZ6g+KP1aCoBBuQ7qKfxv2AL dZo/JLfQL9OxDquC76yCJZREQkK2xVSYEzSfXc4b6GfRKxG0GWIeR9CU9/w8IguEKXhYqPNdPP7 z5IfA/TZfrbstBhAXsvcf4PV/28rqyXw0fijGr9QnuwNvgXApfbWifeeo X-Gm-Gg: ASbGnctNxyMqY/6B3n9YBZz+44XGrw5PoVzmmhLi5i0I9j/CVGXJedzOls9rmWgPCBc K2MJ8wt+RX5kuZfdZSXNYtCox4+ejmpnD9lR/Kz2zWCVAQmGpnHjU7omefQ3uCK+DedV2uAEEa8 njAf0fC+kG22/l7rZiqWgboOBUuEYDSTU3gWNte1ISdWvvDsGQXXhHZhJWIy+g2lS7VH7aC1Hd5 C8cQsghIwudi//M/K11n50q25NZjLOngRTu0hwda2u/0N9KgMAR8S/QzRVTxRFBGSgf1/OSeENd 553sIt2xnqUbPnbBDhjPLYu8bj2q+DtF+6I8JLtkw9V+cZjIl5yvPA== X-Received: by 2002:a17:902:d488:b0:240:2953:4b6b with SMTP id d9443c01a7336-242c1ecbcfcmr33146505ad.2.1754637477209; Fri, 08 Aug 2025 00:17:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE3hN7DujYoM9+TSxoyb7NDlUo8+hhp4rkWTuxmwSBc98GpZlC3ymThD8OTtI3wY5jdGrC5Lg== X-Received: by 2002:a17:902:d488:b0:240:2953:4b6b with SMTP id d9443c01a7336-242c1ecbcfcmr33145995ad.2.1754637476777; Fri, 08 Aug 2025 00:17:56 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:48 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-22-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=1701; i=armenon@redhat.com; h=from:subject:message-id; bh=Zu5RGittsHxfQZbv0Y5N+WqZG4at5pwqsOTAvATRu44=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxdeijR8yGlWvDhXfo3ad3yPEa/LVxpP2J+rezTCrf 9Qrs9+8o4SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwERyTjD8z3Rut7g7/bHfJbmX c+VfCjBe2/Ls1Amd6g3yslt35lqZ/mL40aQnfKG44cn7BX9P/mpcuOmj5lutvv8GB39Vb7u+8IE TMwA= 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.001, 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, 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: 1754637615392116600 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: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index c5566199d00893c4e083ecd27a55da832e2df574..de2bce276faa863a0f25deedafb= 0b784f10559d7 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2538,7 +2538,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 @@ -2551,6 +2551,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; } } @@ -2657,11 +2658,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637564; cv=none; d=zohomail.com; s=zohoarc; b=fX7a22P5yCegvQ3JvoGqraDoXVriPHtzu8fLCPfOpaSO9D8u56ufnd2+/7u+wC9laIx8uyfUQFx5T1tjadA3PhBLI0yzqfYWin4fC+0p9xliAwD1jl/2K9rCy2g8jCROIqwgjfHaOlfK2RDGGtpbmdv7NqqEXsRxtstaVvV9bHo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637564; 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=kbMZj+sBG4f9RIqMEyWNKSRMh91cMhuYSoiYPz9zI4U=; b=c/b3RDUvelWe9EiSnwAvKrUQSgeqNcWjgg7MPsyctAQ9QxmWD61t7ZXUkg7sm3Hu/fPVrIS4+PJu2LF/LFsEUlvNcW0w1ENHyvCK33BIyA8UhtyiQ/2equmwUv2yNM1IbiqyHX5LvTIV4D6/tH4BOF0QfYYOLmBawwPjwchJZGg= 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 1754637564972529.087061709815; Fri, 8 Aug 2025 00:19:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHMs-0004Ze-3Y; Fri, 08 Aug 2025 03:18:22 -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 1ukHMm-00048F-QJ for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:16 -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 1ukHMg-0007bb-LH for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:16 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-463-tmfBXtRgM2CZawv4oceVnw-1; Fri, 08 Aug 2025 03:18:07 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-240012b74dfso14846995ad.2 for ; Fri, 08 Aug 2025 00:18:07 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.17.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:18:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637488; 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=kbMZj+sBG4f9RIqMEyWNKSRMh91cMhuYSoiYPz9zI4U=; b=GIk9fn1lNi4xajrQfdrGw1jFqx/lNVGjxffYk/ziD4xCTuThe5KjyNDZ2jNu+0GKqAJFoP PYjHnQHoH+w8mviGUQC1ET6ABvekN8OsyUFh47NtoCH3F0htRe0bBPZY7Irafdn9p09iCR UWvhlMYsr9eaG/PXU6A8e2zsQugvukY= X-MC-Unique: tmfBXtRgM2CZawv4oceVnw-1 X-Mimecast-MFC-AGG-ID: tmfBXtRgM2CZawv4oceVnw_1754637486 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637486; x=1755242286; 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=kbMZj+sBG4f9RIqMEyWNKSRMh91cMhuYSoiYPz9zI4U=; b=ERttwn4e/QxlYXTq/jjHWYEIm803v+2utBbV9SuGFRUqXAJuFhr4NoNkNazO8qY+fc BoBiJeRBsME3Cz0rKrp6OFc0NSgQixWdA75YIzIKi4gvY7XxQIMKt1RbZ7nz+WQG4tQ5 zNZFH+05+BJ0RA+4ZcCDxwjOzLVGxDqWdJ4sdHsCGkTdOdIZp6S1eoSeh8s3inBYbTDM 8Gp5d/ezfN3xn05KVBKReY6nJjcf+dglQ09h6bxIdLJpe/lp5hT7M2yvZtWe2QvLcfbF hnEIDf0tMU3RSj5qLTwnbTRz9XkE/2z4R3C2KhacFbDSZXYoZqO/XsjKSp1aeB0rdRnr dmWQ== X-Gm-Message-State: AOJu0Yxfj2F3eXHjcvWXCELQGWXYz4SffkQbsoF8n9pVak/Z/XqclQrR S8ixg517JJJDjofJCC8zczkXg8zKNI7Yl64kxw+wO6iReD+heoWFCSPl8l5c9wGETa2Zdc53Tlh 1k3TOCoJUdlltO1TRklNh658FgdCEMGvuzNCwT+2MUyofoTi/ALngZbm93RDSTS/c X-Gm-Gg: ASbGncs5VK9nm3tecDCABBRHYaYJ3jqnmyZsfPyIATLxwcDfGi6obdopLOin6u6p78g Dyo7w6b0qxdHpVIgyubMeMG3YNe4ZCnV7H8g4Kq5Z+Tgb2B1w6prZx+0mzdUYfLula7Gee1hZEs FWsPqe99mo7UfkMlksxMP3YnkHxX0CtmeIm1gUdg+6Qi58RJGDSkFHfeMKKzyjJF2w3JP4r6Bsi lWDK6hQbHzEbnxXh8Ss9zy7Y2It7B0JQdNS2wd1IRatdO2W8G3oomnRvH3qJAV0UXS47UY+MD3l pWaJ/0YJAlgfgC3Qwl03UWFMgE2tG3eFx04+2Aw/IkcjcWKIVpQoTA== X-Received: by 2002:a17:903:2345:b0:240:58a7:8938 with SMTP id d9443c01a7336-242c1ec9e7cmr33543585ad.7.1754637485818; Fri, 08 Aug 2025 00:18:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEGhebWRhTxzJ61E3LzQpVxhx97OwHa4NdAGxpl8PL0ki8SKqV/cZCGTMYY0EwFJHTElZINOw== X-Received: by 2002:a17:903:2345:b0:240:58a7:8938 with SMTP id d9443c01a7336-242c1ec9e7cmr33543155ad.7.1754637485410; Fri, 08 Aug 2025 00:18:05 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:49 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-23-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=2111; i=armenon@redhat.com; h=from:subject:message-id; bh=t7X0faJK5S0/xZxPw69RJ1/qcJmmzgO/i/W5ZA7JsoM=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxdemd8xRZYu2n6LCF/zq8f93a/dP4dNpUTDf78x2l 6vwUYBBRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIkITWdkWDPrZ4XOFNeHIUYO dy/GeKj6BmoKR/8sjb7cxNkTlrJDgJHhqv7eLb3pBuGdN1OYPAOmyNVOuH2xf9mqHw+EGBsdPvZ yAwA= 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.001, 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: 1754637566955116600 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 Signed-off-by: Arun Menon --- migration/savevm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index de2bce276faa863a0f25deedafb0b784f10559d7..c3187ca9ae8534870d47056fff0= 511426ed08fb6 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,12 @@ 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); + if (local_err !=3D NULL) { + 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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637610; cv=none; d=zohomail.com; s=zohoarc; b=KDEGNcom2myMzGwc/GK7MV5fvnMxPBY8gSpWgOPqFnL8q59MOvhOwm21SN8FaAX8U7ppwSdnKVgPa3EwbJTsX9PvCW3ubITYEn17MFN4JO7FJm7uR9ZNDwhGo9HUj2HJxknWWYGIvMvCTmKZcKt2gkywPenLdpUDA+tP07j+lzs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637610; 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=kdJIwQWRjJdgSFjThN7WsD8UV7gf4FkX35TZaDUeuj4=; b=D+4lQ4p8Cpsc785861nNnLUAL+TeRcQWbG0YUxWGRJqZDj+bwZY1fmNoPIsqzKwnWpTWBu/h7uwmKSlGXjbOvP8PCJqR+mXRsMfAa44nSPSvgEM0e1Khqu5461peu0jvCWvy0XICrHizobhOHz5vSeNwYDDV/u0bkFu6967gv7E= 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 1754637610812164.0170128519519; Fri, 8 Aug 2025 00:20:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHNh-0006CB-0w; Fri, 08 Aug 2025 03:19:13 -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 1ukHMv-00050h-2v for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:25 -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 1ukHMr-0007dO-TW for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:24 -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-284-rj_mURrlNR6vRd0Jvks94w-1; Fri, 08 Aug 2025 03:18:17 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b42ebea2f2aso168837a12.0 for ; Fri, 08 Aug 2025 00:18:17 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.18.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:18:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637499; 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=kdJIwQWRjJdgSFjThN7WsD8UV7gf4FkX35TZaDUeuj4=; b=EGqsIzd8j1eap1kW/qwFGmsaPoV+9zehWay/jC6vHm/HcMDEd86QjckzzxWZMOPBKJHt0X o51iy+kdIQVPXB+mboatCX/3ShlOQFOB1dHGDExOeHsOvRPC1d7v9XFCeDho8CypmsQlXK tcVOOCUNdWdA9MU7vAjx8JChtJ+bRJ4= X-MC-Unique: rj_mURrlNR6vRd0Jvks94w-1 X-Mimecast-MFC-AGG-ID: rj_mURrlNR6vRd0Jvks94w_1754637497 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637496; x=1755242296; 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=kdJIwQWRjJdgSFjThN7WsD8UV7gf4FkX35TZaDUeuj4=; b=lXEQZPNuWe22G+JFVNE0VWNVvVl7aF8FfSDhp6zo7ojJMS8tl4cBV0pB8MwhWL5gZN eQaugM6gwN3mDU6fP9y641nPzIPsdpHuJMvitDutlmmWV3z8TXYIOKDueOX5XIXhl+ZZ H1h9kcjHGOCQPzpBfn2H+sRticgkyQJ7j+DZ1fMNXfFsg+FtwpKqgGPoz8/LBcS24HgN BySfxjbyqjKAfYKwngrRM35O0fQ8hCmlwJDdtEt3wEgh8th8iUCKhDoqyHO0xBWWth+T Qpa4JaWzlUpgDDUTjHHwZxazUuQTV9+8+zlQp6W2irCPWTXyn1QekbyZnF6oaPvxaHok l4JQ== X-Gm-Message-State: AOJu0Yx06vpYHZ4RV6b5HQu3PIY4yarqm7GwYJB7V2EfJqwPhur7S1s7 wrTimup8LzeFZnQK+q2aAOEIHVwWOkc3ZeuwMMnLmlI+sEN1qSwrCykGczc3ZBMr298WGDM8NLo zz2jyRU2Fk7lxZgIW6OFfXjoTwfMjmpQVZZeYvgQZyEbez+S4QtJr9C0C X-Gm-Gg: ASbGncuMsREihFvkmsq8lpVxcYQsBPiE7vvhZj9ixNfoMzQGD6i/5xCak2xgNkiI1YX lgFXrUg/IKuJl7V9kCUIPQ/VFVKNMR6gsVj83BAZhuoEIq4gPmR/mLuh1yzuA2JMXYwEa+BSl+j IFuPPmd1BifnbetP0Gj5EzN6gJiHGFCs5kKir6AL7FJiM3+xhELMvpExx6pqH2kzM+6x4d3XUF/ TCJnD2Tlp+2YmE9xEuJSFZaVTUPk/h/cheyA1coQg559SVs2IUOnGfJk/N6px04F0UHt1Cx/lOy Xo5jmBmH5fT2du00i2v+aSuC4fpeGJlYiSr+2pOHXpRUD3qbuICGiQ== X-Received: by 2002:a17:902:ce90:b0:226:38ff:1d6a with SMTP id d9443c01a7336-242c2003629mr30422735ad.7.1754637495664; Fri, 08 Aug 2025 00:18:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFa7aE0nuwtT1TzGtVq/iK2DPv0yLPDW9FgqQ7PgBMUyAiYd9BsmxNlmWYhskIb1dAT2u+0Ag== X-Received: by 2002:a17:902:ce90:b0:226:38ff:1d6a with SMTP id d9443c01a7336-242c2003629mr30421875ad.7.1754637494701; Fri, 08 Aug 2025 00:18:14 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:50 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-24-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=16459; i=armenon@redhat.com; h=from:subject:message-id; bh=mKo6xoNHTAGi3qZ//iY63FCMqz0hq9OcaTNyTNUA4CQ=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxdeuXN93jWXG8t55Xg6/tE+vut243cl34v2J/fdWl z5I4z+a2VHKwiDGxSArpsjS8DVAtimgMCLS9uV1mDmsTCBDGLg4BWAiklaMDHtORL193rTjfM2y zkPi1a/9zKb0Pez/897wh8J6vcuhLa6MDP+uT3uzx/DmZL6ktmSdDG3DJ1uvFe/9vnTbPKZDKne nrOYHAA== 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.001, 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: 1754637613455124100 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. Signed-off-by: Arun Menon --- 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 | 4 ++-- include/migration/vmstate.h | 2 -- migration/cpr.c | 5 +++-- migration/savevm.c | 7 ++++--- migration/vmstate-types.c | 12 +++++++----- migration/vmstate.c | 14 ++++++-------- tests/unit/test-vmstate.c | 8 +++++--- ui/vdagent.c | 3 ++- 15 files changed, 38 insertions(+), 34 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 5ff9f5e6dc0b6b112e36170318c900f893a73c5e..bddb26fa21312e5d0b2b6412cdf= 2a6c28dd06eb3 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_warn); } =20 static bool virtio_gpu_load_restore_mapping(VirtIOGPU *g, diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 80545189980f176ca6a3dc9abce7043c8bc2708c..f7fb3931ff190c25ffa665ba80a= be7737dbefdb6 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_warn); /* 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 bafcb9b76d81749925e31b5a0a1320b3332ad2cf..14304fd3e8901d28a7788266df2= c7ef7334b691c 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_warn); } =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 a4812afd0cc7c495080ef03a531c7d279af29b33..2204beb40c7cdc827db2bf86fb8= 612d8c09999ed 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_warn= ); =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 04d385d7674f444844beeee7364ee0424f762758..8e2b6d611de8efdf98235355226= f5e5a6fd87b19 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2780,8 +2780,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 f14f0487fec3ed30d2cc3aec96950c2121265716..58957990743f061e78d0eafcfcb= 6cc5989252edc 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_warn); } =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 07f144d6d1bfbb561b28015de71762601080dc23..0826399cdfbf09b5b3f9acd9967= de3417858c9d2 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_warn); } =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 c73d1c5a3b790eb96df0de4d84c134ac68e326ff..7792c23be71944e7607bbc3917d= 2874c0a869473 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3035,14 +3035,14 @@ 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, &error_wa= rn); if (ret) { return ret; } } =20 /* Subsections */ - return vmstate_save_state(f, &vmstate_virtio, vdev, NULL); + return vmstate_save_state(f, &vmstate_virtio, vdev, NULL, &error_warn); } =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 bdb24736f44e91ba59b6e622a315597c97e7f64d..d48f013dac21b531e41a26f4bb3= 3eefe32097757 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -163,6 +163,7 @@ bool cpr_is_incoming(void) =20 int cpr_state_save(MigrationChannel *channel, Error **errp) { + ERRP_GUARD(); int ret; QEMUFile *f; MigMode mode =3D migrate_mode(); @@ -182,9 +183,9 @@ 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); + error_prepend(errp, "vmstate_save_state error %d: ", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index c3187ca9ae8534870d47056fff0511426ed08fb6..06cb9c465a24fd7f96bd36735fe= aeeddf268cc87 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; } @@ -1303,7 +1303,8 @@ 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, vmdes= c, + &error_warn); =20 if (vmdesc) { json_writer_end_object(vmdesc); diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index e2020a733d0921d748b6f832a193e5de8d302d5f..2b88dc145ab32072f09845cee95= b79aad7ac3cb2 100644 --- a/migration/vmstate-types.c +++ b/migration/vmstate-types.c @@ -564,7 +564,7 @@ static int put_tmp(QEMUFile *f, void *pv, size_t size, =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, &error_warn); g_free(tmp); =20 return ret; @@ -675,7 +675,7 @@ static int put_qtailq(QEMUFile *f, void *pv, size_t unu= sed_size, =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, &error_warn); if (ret) { return ret; } @@ -712,7 +712,8 @@ static gboolean put_gtree_elem(gpointer key, gpointer v= alue, 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, + &error_warn); if (ret) { capsule->ret =3D ret; return true; @@ -720,7 +721,8 @@ static gboolean put_gtree_elem(gpointer key, gpointer v= alue, gpointer data) } =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, + &error_warn); if (ret) { capsule->ret =3D ret; return true; @@ -856,7 +858,7 @@ static int put_qlist(QEMUFile *f, void *pv, size_t unus= ed_size, 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, &error_warn); if (ret) { error_report("%s: failed to save %s (%d)", field->name, vmsd->name, ret); diff --git a/migration/vmstate.c b/migration/vmstate.c index 60ff38858cf54277992fa5eddeadb6f3d70edec3..4a6a33d5258cf271a0c58661b8a= 367eed2210601 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -403,12 +403,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); @@ -509,7 +503,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, @@ -518,6 +512,10 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDes= cription *vmsd, } else { ret =3D inner_field->info->put(f, curr_elem, size, inner_field, vmdesc_loop); + if (ret) { + error_setg(errp, "Save of field %s failed", + inner_field->name); + } } =20 written_bytes =3D qemu_file_transferred(f) - old_offset; @@ -671,7 +669,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 807deb3531f3079864ac99567d4dece7122571dd..5f31ed4b6969c4ebf72b298f965= bcbdc752ff87f 100644 --- a/tests/unit/test-vmstate.c +++ b/tests/unit/test-vmstate.c @@ -69,7 +69,7 @@ static void save_vmstate(const VMStateDescription *desc, = void *obj) QEMUFile *f =3D open_test_file(true); =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, &error_warn); g_assert(!ret); qemu_put_byte(f, QEMU_VM_EOF); g_assert(!qemu_file_get_error(f)); @@ -429,7 +429,8 @@ static void test_save_noskip(void) 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, + &error_warn); g_assert(!ret); g_assert(!qemu_file_get_error(fsave)); =20 @@ -451,7 +452,8 @@ static void test_save_skip(void) 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, + &error_warn); g_assert(!ret); g_assert(!qemu_file_get_error(fsave)); =20 diff --git a/ui/vdagent.c b/ui/vdagent.c index b9a22a689d9acfeafb862ae73308db6fbd52331e..e0fc7ff71468bfe667613853876= 53c742c375f05 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_warn); } =20 static int get_cbinfo(QEMUFile *f, void *pv, size_t size, --=20 2.50.1 From nobody Sun Dec 14 02:02:08 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=1754637571; cv=none; d=zohomail.com; s=zohoarc; b=LX7ezialyVMBDID5zzpi1XIf9J6uyK+o8ONbJHU0nVKDJSgimKXzK9d8p3BIfxs7iqJu9VVu4WdQfCmP0rmQroiQV6l7fIsNGUiekUwqV+bUDMWN0ffEcdgMLQwjh67EcpOF4ip6ZFnWcK1SMuhOGLhVVNgK+k7ja26RNmXLsug= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637571; 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=f8etomzJDv74aPooKldxhhsipey+f0WbhDyhekbvx0g=; b=SRxtctLSDa3saDxlf7JEJXOAAOpKEklInj0p7Z27kSAziMJ4XiXhafx0OYMfJtcfJ9oOoWlNU4JtaHiAWCLGk1K7Yr9dyRUpUjk07dpmRrBn1oOLC6iKPu4590rDKRPysZqpRQ1cvOQs3ooBynnXFdzkoEHbo4kQroEXv02+BCA= 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 1754637571949539.888020415574; Fri, 8 Aug 2025 00:19:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHNU-0005kn-5c; Fri, 08 Aug 2025 03:19:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ukHN0-0005Q0-SR for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:34 -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 1ukHMx-0007ec-9j for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:30 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-615-ioPqAN6rPVOnKwQHG1QGig-1; Fri, 08 Aug 2025 03:18:24 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2425e41424cso23569665ad.1 for ; Fri, 08 Aug 2025 00:18:24 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.18.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:18:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637506; 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=f8etomzJDv74aPooKldxhhsipey+f0WbhDyhekbvx0g=; b=JoFzikBrv+BMFpBWFC/BEhysGWiwSKvwWqH0EJf8qrkxeaf1RVkRQgZPeHGRnQSBBvZzRb +qGEDpflrLqfJRD2dl+sJamd9/gSt8yQ3Lx+HwlfzjIfnwIPrbgO7iVLXHWXwwPhO6FPBr jTB8ADZub/AxTUpZw6xvnEKNsAA4Lx4= X-MC-Unique: ioPqAN6rPVOnKwQHG1QGig-1 X-Mimecast-MFC-AGG-ID: ioPqAN6rPVOnKwQHG1QGig_1754637504 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637504; x=1755242304; 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=f8etomzJDv74aPooKldxhhsipey+f0WbhDyhekbvx0g=; b=o1uf2BAvuCP0Y66ome5mP2v6pitseTElSlueAkTn+etc5NifTe/JQy9o0ptBtwfW65 VS45JmajduB5yJQ7hn9CC2ZQIrpJgFHS1Tktuz60wMeQvSv9KLkg4i+RBeeYPNy4wsNH u9xrOySOL2chkmISsjt88rz1HlyuNfNBJn1FKXVKWkb12tQy8noPO4GvCHFtkrNKPPv5 WtpKsUqoBwN/0lv/CRD6luBdnMDFetiBiCOfAgAS10LwvJu31v6BhWEqY7g1zx+Q/uRt /W/pKgGJ+f6D4Up/sq4fhKYi53Um9wbhQc+aweLQp0o+wzuGPwNqRhs0Bo/iK2WQm2lq NHBQ== X-Gm-Message-State: AOJu0Yw+Umqi6OXi6GWZu2kg8XPXSceIPSnz2Bg1pE74290xw6nzA4y6 rRnOs91tWF+y17ZkkOUEIdqJ0R8HLeVPUuU1lM6E9rtB2zp+y8ypLb9ZBUQKPg8iYDy6FWgFaq/ EaDAvlhVkBvMYEGNlFK0O6td/MGUwkpkft0GNo9m14PQwMLavxAPf/aub X-Gm-Gg: ASbGncsNBsnMdVMASCiZ6h/CkLu02r5uDMlKgUfWJ61cLVDU2u35wsG+HGaDZF1n77g 0SmueqzkewXOsqPeqm+bTJKkJc/PieRpj+Di6FbOLUEOxYsbU3jUfEoMuquApqVaVE/COFQnOdk TJP3d70gLYh3tOC9hsBebpWLtWIPVB7msTKG41T/Pdc3PfLjolNnOtNEVXevYXiHz1pfLrCaWs2 41GoYOLF/bPwVaudTFGhOsF3hENyuG2Am5c9gG2WB5Gqy8h0WIczHtmnr+sr2skf/m7zZBeWkzm XqDDVrg49zQjNq/EqByyNv12LSiI/yAx36bXpG1uX9HHgAyVRoVuWQ== X-Received: by 2002:a17:902:f212:b0:23f:f707:f97e with SMTP id d9443c01a7336-242c2007364mr21604575ad.17.1754637503653; Fri, 08 Aug 2025 00:18:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEyzpcc0M2rIiQ1ydsux6Curq+mzHrOFUV0FU9oP12FFgBUnKpal5oEYwy0OElv8Bh741iLwA== X-Received: by 2002:a17:902:f212:b0:23f:f707:f97e with SMTP id d9443c01a7336-242c2007364mr21604095ad.17.1754637503190; Fri, 08 Aug 2025 00:18:23 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:51 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-25-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=6394; i=armenon@redhat.com; h=from:subject:message-id; bh=4QJ5KiGWeQW+4m56rX5HJhHjSkDszitwwdaUAPTZaW0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxdfcmg89PvZjPqtu5Z5l/088Cnou/ZBvgZyrv6V98 u1vfCasHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACZSs4CR4WKb1QT+Wy+eHq2f 6P3AjWtdKVPsErGzAUf0OnUco+duNmX4Z2Zg/OvZAYmo7iVyvbN1/9x6/KNSKyT63qczLnfktJl jWQA= 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.001, 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: 1754637573039116600 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. Signed-off-by: Arun Menon --- 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 06cb9c465a24fd7f96bd36735feaeeddf268cc87..fabf948e74e471eb9f29ee10055= c0041f399956e 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 4a6a33d5258cf271a0c58661b8a367eed2210601..fdb8c118721a11dd88d55eadb47= 1a61788c3eee6 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -530,8 +530,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; } @@ -558,12 +558,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 6986915bee876402c1bd2efb92f41ca1298c66a3..d070114da15de85fd50af71e1d8= caa84f25846d8 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -903,15 +903,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) @@ -1048,7 +1046,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637708; cv=none; d=zohomail.com; s=zohoarc; b=e3hNuuIZ5fb5AFTQlQ1fMNOfdH5BI9n9QPQCdZgM0x3zGM8bPW7evmcIIalkJhyp+i0ezoJ1UeFOf8uhR600zwFR7KMwC5IwNCnFD1W9WSEBR9bjF7ECP46H8yc+hk5n0PxByDxp5YkaSnY5QL1Rzs3MumqZbS6U3qGg9AJGsgs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637708; 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=dhef1bWqCBnHsqo81IOYSvfjFHPgxwE/BpAV/qv/2F8=; b=YbzfAmg03DhHnjT7un1G0yLTSoTY9nA03SnH4Hh0jbFTmx4i/OArPKaaJFNWR28M8VB3EImTpU4cxk0EP9wILy2GfO27nt1HNIPilSbVo3FpMUGjxlitdsposmHAVCMflw08o/vKZuOVg0FGAsEb6ipDX9HvI+/oq10Zr7gmq7w= 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 1754637708178387.54143679408264; Fri, 8 Aug 2025 00:21:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHNn-0006pQ-57; Fri, 08 Aug 2025 03:19:19 -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 1ukHN8-0005dg-K0 for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:46 -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 1ukHN6-0007gD-Ik for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:38 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-479-GLtpF3hGMiyWT0NyOLob0Q-1; Fri, 08 Aug 2025 03:18:33 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-23ff063d087so16746715ad.1 for ; Fri, 08 Aug 2025 00:18:33 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.18.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:18:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637514; 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=dhef1bWqCBnHsqo81IOYSvfjFHPgxwE/BpAV/qv/2F8=; b=ct2SNZuQfC+m+6ASbV7GpotVG7jmCKxnHsuRsDeXXM1pH+qM1BcXx14cpGWZNkG9uWR73j mnF4TUyEo7R9L/k1e0W5Rzl6aL68CMQ07pL6DG7iXTN2QqGx3TbhuO72E+SrKxFMbxrKgW JiHHlL7EDvQqVntP0oQHYzg23nQW9IQ= X-MC-Unique: GLtpF3hGMiyWT0NyOLob0Q-1 X-Mimecast-MFC-AGG-ID: GLtpF3hGMiyWT0NyOLob0Q_1754637512 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637512; x=1755242312; 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=dhef1bWqCBnHsqo81IOYSvfjFHPgxwE/BpAV/qv/2F8=; b=WfYwDR8dVRN8UaP72x/8xrWbCviX2t2KFuF2l/KTs95iNMpkpXsamby4D1+amCczMR 0bH/R2qts0Pp2fph5yJb8CwolU3JKT2ByxaUQy/qpBhpdlQrLuY8k3JiGTy1UhR+64He tbxJrlpg5x+jURPJGSmkkPUmYEvZLFipqFvYYGE523KPZbMqVyhYSmvKZwiiaK37KWKa qriKnVo4BCkLoTCprmltkixyAcktediLTIdqMDfZB66L304Y4JZvsOMzmFDfYhOuaSwD 8kVkukAapK6f4CvqLESMEY+YPHIrsxoK8k+5cnVhpD2NiAeWvEw588mqAYIZzXAE+0hA wVJA== X-Gm-Message-State: AOJu0Yzs8rBsrZGZaX9HU6D8X1G1DK/+2SfbHmGJrtayn03vp4GpPL/Y opicag5YUv7Qyh2zKXAn9UYGd/wmEIA9D+XbbXrnduAkOopieEkFYypvnLSEqynRToZDfDUUIXC Mfw5LUVtb+7VWrXswi26E6lqK7Nexgf5Vq7Tf9aKBXGWuKDReSeXdaEDj X-Gm-Gg: ASbGncu8JF+N9kVqP15O00YfzgZKNAUVt8ag+Zl2vCWCIpO2hwJ5iBFuEisKNEOTjno NWe1wp4rqcX1IAOipquuHgNnjMz7H2Duhcnxs7mY7WSVeLpm43f35bvJ497dLh5faR99q39Ynu3 fQE7vhy05u9QrAvGgnXADbl69jjkWbgpQIGSFuhvvC0Z9qKRRvQiM80TjlBXxk5F0YtDg2TB2MC eCL9R8iAvCgoTUKK6feNufY4ogCPE6TMiadnqL5bkn+fr/i9ajsLFAPZsuFS0fB3PhOL+pF4cM1 3Lmo0SjX/XzHSoz5E2hl4oKBGxZUaQvdi3ay9daIFKGZln/QVOKwFg== X-Received: by 2002:a17:902:da85:b0:242:b14b:15ab with SMTP id d9443c01a7336-242c224335amr35195375ad.42.1754637512336; Fri, 08 Aug 2025 00:18:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFhBt04nK4ds6+acJefUIh+9hAZTw5/MfkA8h4Id3AvzNSD954pghMqn77ZF11N8vbXht3jAw== X-Received: by 2002:a17:902:da85:b0:242:b14b:15ab with SMTP id d9443c01a7336-242c224335amr35194755ad.42.1754637511713; Fri, 08 Aug 2025 00:18:31 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:52 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-26-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=6567; i=armenon@redhat.com; h=from:subject:message-id; bh=W/Hlf0gBooyL6AaFAjxmJF/O13Y4+R8MIdYD0ZBo0ZU=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxdciTtyWMYzYsLkpyX7+6su7L65/8k2txaJWRn+eR V7PeZmFHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACbikMXwP/Dy2z4T/a4jOt3Z d86UFBpdPbpE/Pz3KUtttrfqflt5vJfhF9NjtzXMBdvSzHYaHrN/q36jZhqj5dNLm2Ny0ld5agk 3MAIA 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.001, 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: 1754637710481124100 - 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. Signed-off-by: Arun Menon --- docs/devel/migration/main.rst | 19 +++++++++++++++++++ include/migration/vmstate.h | 14 ++++++++++++++ migration/vmstate.c | 30 +++++++++++++++++++++++++++--- 3 files changed, 60 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 fdb8c118721a11dd88d55eadb471a61788c3eee6..1724d198a85df06a42111622d30= 8f202a3f350a1 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -152,7 +152,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, "VM pre load 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, "VM pre load failed for: '%s', " @@ -242,7 +251,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, "VM Post load 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, @@ -411,12 +427,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.50.1 From nobody Sun Dec 14 02:02:08 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=1754637598; cv=none; d=zohomail.com; s=zohoarc; b=eQScpGSTB1nVYyivXSzOJiHuG5m2kPzhwOe3OVcGwzmYTgqc82NeeF4f4jQoblQzd9xaTypftYVZoBZG3tZgRbdh7imPwVc/hpg0/5pqBWs1QK5N96Iu7t0LQg2vzQufju8m7O+uiOYXkZHa7Jkf9TbacNhopPIdm8SfA16A2eY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754637598; 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=IrmyOFbIa0k81LCSi2crfagyGp2pAVLdS4CCVD46SsM=; b=hUm0oGzDYlMJqlMtYDY/4zNihe8/tBrJca/Xv+nDSe1xgenzfYKJE3qimh5tJZKYG2D94V7Vpm2Lpn76VW+pP0Paal6fDMAY4uw7W4ahMERuUW/89tWQEEji66Rf5OifHgg2mtuVTK++Qkmr80nII8N97B7ZOoNX8e4v56dPLBQ= 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 1754637598234176.71785999431188; Fri, 8 Aug 2025 00:19:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ukHNh-0006D4-Fi; Fri, 08 Aug 2025 03:19:13 -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 1ukHNG-0005g0-QW for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:49 -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 1ukHNE-0007h0-NM for qemu-devel@nongnu.org; Fri, 08 Aug 2025 03:18:46 -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-166-ot2Vc4ODO1OssiTVa95pcA-1; Fri, 08 Aug 2025 03:18:42 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b3510c0cfc7so1448969a12.2 for ; Fri, 08 Aug 2025 00:18:41 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.101.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241e899d347sm199659385ad.140.2025.08.08.00.18.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 00:18:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754637523; 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=IrmyOFbIa0k81LCSi2crfagyGp2pAVLdS4CCVD46SsM=; b=VQ3/0TpW91BAfmABgMB08zXwnBreoYMLBzea+v1WIWCRaHw0h75FR97nohFHO8zkFTQ64p ml1YMdDmdDLsa8p8ly13DJWIj/GXbx5zX8XhgqY5IOKorC9N5AYBuAVXYSc/URGHLFL2Ml XXqrgU5md8F+4c0PpLsjAP8KpD9GNl8= X-MC-Unique: ot2Vc4ODO1OssiTVa95pcA-1 X-Mimecast-MFC-AGG-ID: ot2Vc4ODO1OssiTVa95pcA_1754637521 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754637521; x=1755242321; 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=IrmyOFbIa0k81LCSi2crfagyGp2pAVLdS4CCVD46SsM=; b=aXBzekfS9X36kWMV44hCZmNpZz/Vju8MG+Q0v3r6t/gDnOsx9FON2GRb94dG7tuNwT PNya/5bum9gg8F7mmURaxPnVXbTWGxIQWYNA0rC2lTXrxOTTeJDZx5UsVDHJYgy0nEEp 0pHJgu9q6zLCUD4LJ4AZKTkjDFmyv0RFPvToOFMYoOzJ4zN+om9mmr5ZnJ2Ysn/phXbX SRH8h37RZkGG7t4cIsqK57YqcovQEQdobw2f96Up+/46L9HiAdqjXE05uXcVoJUL36UJ /dTa7j4e5VLQhskv6kDGuyitou1hGvDqFy6ZqeUmlmo2bvxtNP0UpFaFz/rJaM3JDfVg mhFQ== X-Gm-Message-State: AOJu0YxNQF7PYjYJMUpxBEZINZ9aceRwz2m11LmLdM9DQ/+yhsr7TmJJ d2iRKbWk1NjpXEDdSzGih9TYk6OtSqS6iCHqb2N8F7zn9enflWcLC7dZk0yQWdzOzafsjpc51tm YypHlLQtEvMuyPffaTI/OTTDqAek+PYFahMV0Y3utLpmH9H/1PCAWhw2W X-Gm-Gg: ASbGnctE9A3KKWBQ+k0FKOl7FkAC4SLXCT9ncoD41o7mKhvnJ+Sv8JiR2AK2Ln8l+lK tGSrTWEKy5dBOy7Nq59wDwOeoRsIKx/n0or3HqP8Ru89VjfBI1Ymqd2gfT3nRLPLJD/LnsLEoza aOCi8Q2pKbV1Fy8tEHnwPlfxSo+D6bgZ0arlwuOiFMxmwrcXIMw5TizHmxymN4masCUjx8jsJyx PEiAPb1vxe2iRwmKIIokrvByVsNY2Ggni2vY8FPLNxarGcC2ANj1SL+thF2B+upikjv8Riyttt+ hlRIFK2vFmy4o32HegEKNKITxiLWhMUm7VTEEm8pRV8+UGNrtkZI3A== X-Received: by 2002:a17:903:228b:b0:235:e8da:8d1 with SMTP id d9443c01a7336-242c1fdbfeamr25500065ad.8.1754637520978; Fri, 08 Aug 2025 00:18:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEgz4KCTbP/K0Jimapi/eR1PeFrNrZ93XCRTyx0/8bn21dz+LvpqCkQy1qqd9l19+5HHQFX0Q== X-Received: by 2002:a17:903:228b:b0:235:e8da:8d1 with SMTP id d9443c01a7336-242c1fdbfeamr25499555ad.8.1754637520527; Fri, 08 Aug 2025 00:18:40 -0700 (PDT) From: Arun Menon Date: Fri, 08 Aug 2025 12:43:53 +0530 Subject: [PATCH v10 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: <20250808-propagate_tpm_error-v10-27-3e81a1d419b2@redhat.com> References: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com> In-Reply-To: <20250808-propagate_tpm_error-v10-0-3e81a1d419b2@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=6695; i=armenon@redhat.com; h=from:subject:message-id; bh=qkfEA7ojmGiLCP4BOBgR+X9tFhQoPaG7uEYFJBJjL/Q=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8bUxddmnF1avtRZ7b69UumBRctZZnk3PXy4cYkqw5XFh nIKl9nPdJSyMIhxMciKKbI0fA2QbQoojIi0fXkdZg4rE8gQBi5OAZiI9g6G/8EbtgTPVvj3S32R gu/FDcH3d+RYLAtas0Voy1Ym4Z2dorMZ/sqEqE/rWnn3y7r+ZLH/Rt+qj+2eabu78tjx6uuBou0 vmtgA 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.001, 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: 1754637615946124100 - 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 Signed-off-by: Arun Menon --- 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.50.1