From nobody Sun Sep 28 16:28:06 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=1756570265; cv=none; d=zohomail.com; s=zohoarc; b=beUP5dBJhdTfiqI7cTEOBA8G047QSHepoFK7JQ1wLbmtgB+hzugQTCN0RSL2I2DcbZnwbbpUt5BqYA9TFvqLn+5FC63anEGq1LAD61Qccr/X+abdMDRrzxsngSZ/VxJf6pUEm8NwVcsydw5387GYdiRi3M0DPTcgOJb6HP6dc9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570265; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8x1fPRiLk+q98Zq/PxzJ1EQGy5pEsHLkUkWHdcN4ADk=; b=c7WCqzxLa5cG1XjqxQMcHnI4dDgHmdpKcuqT+mLpgKQ5Oi962WmWH4sBEDDtoWeNIGih1yNtvOuRXF3Alj2riuBqELdoslISw850ZfPhwMWtEMEFbjzrmDy8TTD3h1eexk953ZxlBD3Kb5qz3zBV29HRiRfqfTb2VnD0Ll7jh+M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17565702653491002.71578449422; Sat, 30 Aug 2025 09:11:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNbH-0005cL-FK; Sat, 30 Aug 2025 11:34:43 -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 1us5JD-0004jz-Sc for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:02:51 -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 1us5JC-0004X5-17 for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:02:51 -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-266-QQdiOrX6NOWLdHlHsVrEmg-1; Fri, 29 Aug 2025 16:02:47 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-248abeb9242so23077385ad.1 for ; Fri, 29 Aug 2025 13:02:47 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.02.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:02:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497769; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8x1fPRiLk+q98Zq/PxzJ1EQGy5pEsHLkUkWHdcN4ADk=; b=MqAzg+bnoj+cQFpDO8l7lhd5bjgSA2NJ+zA6FC77oJTn8jsSDZawDOMyyT/z7Qa1fkvt+H rptlKAKRImC5HgG0LsQS9F65jFIAMvP8EHU+88Kxjm5OCAXhAhgSn5vtlm56Tpq9GKIvBP VBWGA7siV4tFO7YfXGIwTzcV8Q/bSyc= X-MC-Unique: QQdiOrX6NOWLdHlHsVrEmg-1 X-Mimecast-MFC-AGG-ID: QQdiOrX6NOWLdHlHsVrEmg_1756497766 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497766; x=1757102566; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8x1fPRiLk+q98Zq/PxzJ1EQGy5pEsHLkUkWHdcN4ADk=; b=pDf6zFprMgoeJapkWV5zE63LaM3EAWfJkQ4t/Vz6pGKSnvUe5wP7AQBukYGmPhxiCH GBCtvW2b7CJUHsYHhgerBsygiv5rnZfeQBYxNX2NxGJiiCMJrxFVNp2WXcI4eWkodPFv QuinU5YTH2K3IYjvUv8IhxpSlCgosJnuDPGwFxxZJSx1rKbJIsn54uXf1tweNVjRn0JG EMDl602j8j5m8EKWDwfdqUSEahXdnZd4OZ+2w2cNW/S643gRdPxw6XrMsVQinoGQ4UcV anfMBoYDNo8ENz+TCx9DgkfbZEUIh3pyuIHkiN8Y4RpXOQWxBK1b6pPpNWuuvbaD67PC e7HA== X-Gm-Message-State: AOJu0YxnmsBvZ0wnCwq59VNsttOmmFX5161H3l5xYnj0OfWk//t/wduR X4X0SWp4uEM8XValhtvcbxjDfXY4tdb7L9N8KIx0Ffk1zmCopqMy+mFv6JzZJqQuTqgLiUIwL3N vjBSIiY6AsEI0YdDzyYpFeUPeL9zppGOHU5haqZYmvU2fPliMtvBfyIhb X-Gm-Gg: ASbGncvvM75TB41Q75RGKsGXjRh/YzllmMDlp4V1X9FfdOIL/xMMOIPlwFb95DGuZzT vgKejwqF/4Wb33/SFo1rNYeSc0xtGyMa05tWBjblG25tJ4LrHmJSKjX0Pe2sfzBFbxwYxgRYpIk flhT7AdxGO8RA/Aq5V09lwg0dH/rDoq4D7A9Brc9tnfqu1BFurQaNm+8RANjlXVtQZaIuTK4qxP OUnAqznqO2+QEnAkmVGbmRUxCRbEOFsosjXhqtt0rMtf/E0oMDINiqsAqFSBFXqnhVSev7hBHxA SlskEEvQyAZixS4bI8jMxN/vBfIa/bji63FpatktzBDK26Ir3Pnt/A== X-Received: by 2002:a17:903:248:b0:248:7018:c739 with SMTP id d9443c01a7336-2487018c906mr209827405ad.28.1756497766260; Fri, 29 Aug 2025 13:02:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFNe5QOPLN1Yo6gm4lYifmN3xBc+lNgtzX73UgXZg0qiORH0O8SGsaZsJwVtwaVaxd90xxcLw== X-Received: by 2002:a17:903:248:b0:248:7018:c739 with SMTP id d9443c01a7336-2487018c906mr209826865ad.28.1756497765759; Fri, 29 Aug 2025 13:02:45 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:41 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-1-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3492; i=armenon@redhat.com; h=from:subject:message-id; bh=jjVnj4GpDkFjmsw4frYXnt3FkfLdgzOUkOtwV8FPcDs=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdu+2d5N4f3Ux2Xl5yMqqbg7Q3nvLXKXpyB6x00r5c WKnt6h1lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmMhML0aGe8l/Pxw4FfEhc/oa 9o+c5T9mJ3wLfvFN+9e5ZLWt7xSOb2P4X+EZb9h/woJx9ZMHXeI2PRlalVJatoox7/k2Xr67/ek 7FgA= 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: 1756570266884116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that vmstate_subsection_load() must report an error in errp, in case of failure. The errors are temporarily reported using error_report_err(). This is removed in the subsequent patches in this series, when we are actually able to propagate the error to the calling function using errp. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/vmstate.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/migration/vmstate.c b/migration/vmstate.c index 5feaa3244d259874f03048326b2497e7db32e47c..08f2b562e3a5ec0e186336215cc= fb378a7675f0c 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -25,7 +25,7 @@ static int vmstate_subsection_save(QEMUFile *f, const VMS= tateDescription *vmsd, void *opaque, JSONWriter *vmdesc, Error **errp); static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *= vmsd, - void *opaque); + void *opaque, Error **errp); =20 /* Whether this field should exist for either save or load the VM? */ static bool @@ -136,6 +136,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescri= ption *vmsd, { const VMStateField *field =3D vmsd->fields; int ret =3D 0; + Error *local_err =3D NULL; =20 trace_vmstate_load_state(vmsd->name, version_id); if (version_id > vmsd->version_id) { @@ -225,9 +226,10 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescr= iption *vmsd, field++; } assert(field->flags =3D=3D VMS_END); - ret =3D vmstate_subsection_load(f, vmsd, opaque); + ret =3D vmstate_subsection_load(f, vmsd, opaque, &local_err); if (ret !=3D 0) { qemu_file_set_error(f, ret); + error_report_err(local_err); return ret; } if (vmsd->post_load) { @@ -566,7 +568,7 @@ vmstate_get_subsection(const VMStateDescription * const= *sub, } =20 static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *= vmsd, - void *opaque) + void *opaque, Error **errp) { trace_vmstate_subsection_load(vmsd->name); =20 @@ -598,6 +600,8 @@ static int vmstate_subsection_load(QEMUFile *f, const V= MStateDescription *vmsd, sub_vmsd =3D vmstate_get_subsection(vmsd->subsections, idstr); if (sub_vmsd =3D=3D NULL) { trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(lookup)= "); + error_setg(errp, "VM subsection '%s' in '%s' does not exist", + idstr, vmsd->name); return -ENOENT; } qemu_file_skip(f, 1); /* subsection */ @@ -608,6 +612,9 @@ static int vmstate_subsection_load(QEMUFile *f, const V= MStateDescription *vmsd, ret =3D vmstate_load_state(f, sub_vmsd, opaque, version_id); if (ret) { trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(child)"= ); + error_setg(errp, + "Loading VM subsection '%s' in '%s' failed: %d", + idstr, vmsd->name, ret); return ret; } } --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756570553; cv=none; d=zohomail.com; s=zohoarc; b=CJD5QagaJDxkGmBCzeC6tCoIZ4FFyp712DQbWxfJjv0/SaY9M8VdY8ZaaF7QkRxIZOJQQKLhZnQoTke9NQ9REQqdzNkAg0XBVF7tVB2cFZDr/PaXlavdTWiUidKAksYF+aT5QUyzG78dy5+sZM+ysj8ts+pNE/G7PhpT28aNIGA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570553; 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=uH6LVeMFAudE82ipYumqSCuF2xFssi28jRQibLB4aXI=; b=aEYK9Y2y8lEOJmaiDqpJUSferptdQzIiJF+eDAe8Uv+5di+lXocsGugB4GtikdEq9xGzeqa7RJK1PhcjlVNLiyuxqbkWsn6IiIJHrFINt1IWHWDKAc+Ocn+jx9z4PaOjJ0L81m1j0fPfLpwbsS+wqAwTSZD0kOUTihXuqCD/5sA= 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 1756570552908946.1479869520631; Sat, 30 Aug 2025 09:15:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNdu-00023C-CB; Sat, 30 Aug 2025 11:37:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5JT-0004pg-0Q for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:03:07 -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 1us5JN-0004YB-Ev for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:03:06 -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-427-2eyq41oCM8-Uldu1b5UX3Q-1; Fri, 29 Aug 2025 16:02:58 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-3276575ae5bso2540688a91.2 for ; Fri, 29 Aug 2025 13:02:58 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.02.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:02:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497780; 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=uH6LVeMFAudE82ipYumqSCuF2xFssi28jRQibLB4aXI=; b=buNvGbaQTL3wT3sHhdfHlr+qVscYr68bFXeYMw1sdrZOcCs9qFswJl+c0sK38x6lPWimby PJBwd/YqgtctfSsVmE0SKKrpcLPUEsbeGLgmLYmLO2vUaGS3HXuLkN0HGRtQHOsNjMmdDv GkDkAsM998zeMReI1eInBxEUXRepyJ4= X-MC-Unique: 2eyq41oCM8-Uldu1b5UX3Q-1 X-Mimecast-MFC-AGG-ID: 2eyq41oCM8-Uldu1b5UX3Q_1756497778 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497778; x=1757102578; 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=uH6LVeMFAudE82ipYumqSCuF2xFssi28jRQibLB4aXI=; b=H/1EKmTjzypyGsINDtmH34O56nBboi8e2KEXF6ucX9qf7e75wx1wKOT/OECa4N6VrX KkYpl7p/4Hb8p+2BVf3J5wEglgWVn2LSkxKtpS979BGQi2W9hPzUTdssVkHeF+kHeP7W pcviD52bHgRPEUTaJB85ZyA3CvIg6QD2Cy5DKsQevoo8wyKnQ3osAXQyFS2Mw/UHjGla Cfi0TQ9eESfvYL6g3zPbwQ4Ud04Jsd/Lv1ZgDJkdc0SdjVmMEmi8HbuJC+khKlUswKmc +JnstQ3Mqbb0pC9sRCbQGa5FfSvIml1YHuhuGXLB4AaqP6AMs+y78e3bLAQy691+1+q/ wqpg== X-Gm-Message-State: AOJu0YwftEDZ0HRMQU5E11nIUatsuumG/knQA6oCRXs6QB3o8NrHf/ue Oyj+PM2DX9JKz1H3cVNaUF6jpBVyrei787qAG6/+qu9snxXKaBvYxSDxDcBZxtbl1Hcs4G6u2t4 ArvsoyI+8NJ6cgl8zmp+PInRi7JnnAICXZGGpsiFzg0hFwekY+llk67Cr X-Gm-Gg: ASbGncsSFucleg+RGP7Gpd/4KLc/fxe83UCRk6uBBsXoT547CA1TzPJrBt7hudJqzzI Foj2iSCdns/5EviKFxDBYVOwE8U/XmxLA1JyX+Cc/PLJlBTKgFYOl8Q1LW7vJYT156u7echPzgZ IIjzjXLhUjD6Vo9yCGZfr10fnQpgrRvm7FzwgZiFGESknaTTgtlNq6vOiu7VV7ZXgm8LiVXYQWK RxGPIN8kbXn+SAxG0A8X9anG9mkCcuTVT49Y+6GUZsRZJNM/M+VPm+Dxu57PXyxSF7wBOn1/RS9 GRmSSdqxzJ4NyKOPxzhnRGzFaahWogcsiTpT7q8vCk0l+pQ6XK915Q== X-Received: by 2002:a17:90b:258c:b0:323:265e:d9d6 with SMTP id 98e67ed59e1d1-32515edd530mr39117049a91.6.1756497777294; Fri, 29 Aug 2025 13:02:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHw2G44B3zuNLPqz9B7kNUYaziYGz/r2TEqLubfYiUQCtcPNSjGQgjAluC4do/ViUeUrGJR+Q== X-Received: by 2002:a17:90b:258c:b0:323:265e:d9d6 with SMTP id 98e67ed59e1d1-32515edd530mr39116975a91.6.1756497776701; Fri, 29 Aug 2025 13:02:56 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:42 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-2-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@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=28766; i=armenon@redhat.com; h=from:subject:message-id; bh=xUFoAGFxuO1QvW0+5VTxDLte+BbQrhM41F0bxjOCXT8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdp+Z+4129QtK/FT6fayKz4uRf/GjndL9PGvXXs4/8 aCweltNRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIlI8TD8Zt0lzn6hIHWZZU/b CtdJVZfDzep81/AFM3oWyxt+mHbSh5HhaP8TXq/eTwe5T7Z9lM87685jXPlafvnib5J/8pfJX/7 BCQA= 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: 1756570554763116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that vmstate_load_state() must report an error in errp, in case of failure. The errors are temporarily reported using error_report_err(). This is removed in the subsequent patches in this series, when we are actually able to propagate the error to the calling function using errp. Whereas, if we want the function to exit on error, then error_fatal is passed. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- hw/display/virtio-gpu.c | 2 +- hw/pci/pci.c | 3 ++- hw/s390x/virtio-ccw.c | 2 +- hw/scsi/spapr_vscsi.c | 4 ++- hw/vfio/pci.c | 5 +++- hw/virtio/virtio-mmio.c | 3 ++- hw/virtio/virtio-pci.c | 2 +- hw/virtio/virtio.c | 7 +++-- include/migration/vmstate.h | 2 +- migration/cpr.c | 3 +-- migration/savevm.c | 8 ++++-- migration/vmstate-types.c | 28 ++++++++++++-------- migration/vmstate.c | 61 +++++++++++++++++++++++++++++------------= -- tests/unit/test-vmstate.c | 63 ++++++++++++++++++++++++++++++++++++++---= ---- ui/vdagent.c | 5 +++- 15 files changed, 143 insertions(+), 55 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 0a1a625b0ea6cf26cb0d799171a57ed3d3ab2442..5dc31bc6bfb0272e29a4364ab10= de2595a4bedf7 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1343,7 +1343,7 @@ static int virtio_gpu_load(QEMUFile *f, void *opaque,= size_t size, } =20 /* load & apply scanout state */ - vmstate_load_state(f, &vmstate_virtio_gpu_scanouts, g, 1); + vmstate_load_state(f, &vmstate_virtio_gpu_scanouts, g, 1, &error_fatal= ); =20 return 0; } diff --git a/hw/pci/pci.c b/hw/pci/pci.c index c70b5ceebaf1f2b10768bd030526cbb518da2b8d..6be932d3bb67ff0c4808707db2a= 7b6378a90e82b 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -934,7 +934,8 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) int pci_device_load(PCIDevice *s, QEMUFile *f) { int ret; - ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id); + ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id, + &error_fatal); /* Restore the interrupt status bit. */ pci_update_irq_status(s); return ret; diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index d2f85b39f30f7fc82e0c600144c0a958e1269b2c..6a9641a03d5d3a38a4de7ceb9de= ffc0cc303bcff 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1136,7 +1136,7 @@ static void virtio_ccw_save_config(DeviceState *d, QE= MUFile *f) static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1); + return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1, &error_f= atal); } =20 static void virtio_ccw_pre_plugged(DeviceState *d, Error **errp) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index 20f70fb2729de78b9636a6b8c869695dab4f8902..da173f48676395cc02bd00cb3ef= a248afed4581b 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -642,15 +642,17 @@ static void *vscsi_load_request(QEMUFile *f, SCSIRequ= est *sreq) VSCSIState *s =3D VIO_SPAPR_VSCSI_DEVICE(bus->qbus.parent); vscsi_req *req; int rc; + Error *local_err =3D NULL; =20 assert(sreq->tag < VSCSI_REQ_LIMIT); req =3D &s->reqs[sreq->tag]; assert(!req->active); =20 memset(req, 0, sizeof(*req)); - rc =3D vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1); + rc =3D vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1, &local_= err); if (rc) { fprintf(stderr, "VSCSI: failed loading request tag#%u\n", sreq->ta= g); + error_report_err(local_err); return NULL; } assert(req->active); diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 07257d0fa049b09fc296ac2279a6fafbdf93d277..1ecf150ed8218e8815655d3665f= 14ebac4382cf9 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2799,13 +2799,16 @@ static int vfio_pci_load_config(VFIODevice *vbasede= v, QEMUFile *f) PCIDevice *pdev =3D &vdev->pdev; pcibus_t old_addr[PCI_NUM_REGIONS - 1]; int bar, ret; + Error *local_err =3D NULL; =20 for (bar =3D 0; bar < PCI_ROM_SLOT; bar++) { old_addr[bar] =3D pdev->io_regions[bar].addr; } =20 - ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1, + &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 532c67107ba1d2978a76cf49f9cdc1de1dea3e11..0a688909fc606a3c9fde933667a= e8c309ab527d0 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -34,6 +34,7 @@ #include "qemu/error-report.h" #include "qemu/log.h" #include "trace.h" +#include "qapi/error.h" =20 static bool virtio_mmio_ioeventfd_enabled(DeviceState *d) { @@ -619,7 +620,7 @@ static int virtio_mmio_load_extra_state(DeviceState *op= aque, QEMUFile *f) { VirtIOMMIOProxy *proxy =3D VIRTIO_MMIO(opaque); =20 - return vmstate_load_state(f, &vmstate_virtio_mmio, proxy, 1); + return vmstate_load_state(f, &vmstate_virtio_mmio, proxy, 1, &error_fa= tal); } =20 static bool virtio_mmio_has_extra_state(DeviceState *opaque) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 767216d795998708f5716a23ae16c79cd90ff489..b04faa1e5c91b5cef40e54ec41d= 92422d16bfc13 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -161,7 +161,7 @@ static int virtio_pci_load_extra_state(DeviceState *d, = QEMUFile *f) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy(d); =20 - return vmstate_load_state(f, &vmstate_virtio_pci, proxy, 1); + return vmstate_load_state(f, &vmstate_virtio_pci, proxy, 1, &error_fat= al); } =20 static void virtio_pci_save_queue(DeviceState *d, int n, QEMUFile *f) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 9a81ad912e013fc254899c4e55cff1f76a6112a4..018803c80d13107eb4e5e63914f= 9c1f837ab1b19 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3235,6 +3235,7 @@ virtio_load(VirtIODevice *vdev, QEMUFile *f, int vers= ion_id) BusState *qbus =3D qdev_get_parent_bus(DEVICE(vdev)); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(vdev); + Error *local_err =3D NULL; =20 /* * We poison the endianness to ensure it does not get used before @@ -3327,15 +3328,17 @@ virtio_load(VirtIODevice *vdev, QEMUFile *f, int ve= rsion_id) } =20 if (vdc->vmsd) { - ret =3D vmstate_load_state(f, vdc->vmsd, vdev, version_id); + ret =3D vmstate_load_state(f, vdc->vmsd, vdev, version_id, &local_= err); if (ret) { + error_report_err(local_err); return ret; } } =20 /* Subsections */ - ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1, &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 1ff7bd9ac425ba67cd5ca7ad97bcf570f9e19abe..056781b1c21e737583f081594d9= f88b32adfd674 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -1196,7 +1196,7 @@ extern const VMStateInfo vmstate_info_qlist; } =20 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, int version_id); + void *opaque, int version_id, Error **errp); int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc); int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, diff --git a/migration/cpr.c b/migration/cpr.c index 42ad0b0d500e5de57faf0c6517e216b2d1c0cacf..8abb6db76d2474157f804ece4c3= 5ebfc8c22d21a 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -233,9 +233,8 @@ int cpr_state_load(MigrationChannel *channel, Error **e= rrp) return -ENOTSUP; } =20 - ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1); + ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1, errp); if (ret) { - error_setg(errp, "vmstate_load_state error %d", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index fabbeb296ae987d0c06ba6dafda63720205fecfd..f5a1ab91016dba51f9cd1dee19a= 1c7ba31417423 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -969,7 +969,8 @@ static int vmstate_load(QEMUFile *f, SaveStateEntry *se) if (!se->vmsd) { /* Old style */ return se->ops->load_state(f, se->opaque, se->load_version_id); } - return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id= ); + return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id, + &error_fatal); } =20 static void vmstate_save_old_style(QEMUFile *f, SaveStateEntry *se, @@ -2817,6 +2818,7 @@ static int qemu_loadvm_state_header(QEMUFile *f) { unsigned int v; int ret; + Error *local_err =3D NULL; =20 v =3D qemu_get_be32(f); if (v !=3D QEMU_VM_FILE_MAGIC) { @@ -2839,9 +2841,11 @@ static int qemu_loadvm_state_header(QEMUFile *f) error_report("Configuration section missing"); return -EINVAL; } - ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0); + ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, + &local_err); =20 if (ret) { + error_report_err(local_err); return ret; } } diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index 741a588b7e18c6d37724b08a0101edc8bc74a0a5..c5cfd861e3aa5391245ef46bec9= c90106c467e6e 100644 --- a/migration/vmstate-types.c +++ b/migration/vmstate-types.c @@ -19,6 +19,7 @@ #include "qemu/error-report.h" #include "qemu/queue.h" #include "trace.h" +#include "qapi/error.h" =20 /* bool */ =20 @@ -543,13 +544,17 @@ static int get_tmp(QEMUFile *f, void *pv, size_t size, const VMStateField *field) { int ret; + Error *local_err =3D NULL; const VMStateDescription *vmsd =3D field->vmsd; int version_id =3D field->version_id; void *tmp =3D g_malloc(size); =20 /* Writes the parent field which is at the start of the tmp */ *(void **)tmp =3D pv; - ret =3D vmstate_load_state(f, vmsd, tmp, version_id); + ret =3D vmstate_load_state(f, vmsd, tmp, version_id, &local_err); + if (ret < 0) { + error_report_err(local_err); + } g_free(tmp); return ret; } @@ -626,6 +631,7 @@ static int get_qtailq(QEMUFile *f, void *pv, size_t unu= sed_size, const VMStateField *field) { int ret =3D 0; + Error *local_err =3D NULL; const VMStateDescription *vmsd =3D field->vmsd; /* size of a QTAILQ element */ size_t size =3D field->size; @@ -649,8 +655,9 @@ static int get_qtailq(QEMUFile *f, void *pv, size_t unu= sed_size, =20 while (qemu_get_byte(f)) { elm =3D g_malloc(size); - ret =3D vmstate_load_state(f, vmsd, elm, version_id); + ret =3D vmstate_load_state(f, vmsd, elm, version_id, &local_err); if (ret) { + error_report_err(local_err); return ret; } QTAILQ_RAW_INSERT_TAIL(pv, elm, entry_offset); @@ -772,6 +779,7 @@ static int get_gtree(QEMUFile *f, void *pv, size_t unus= ed_size, GTree *tree =3D *pval; void *key, *val; int ret =3D 0; + Error *local_err =3D NULL; =20 /* in case of direct key, the key vmsd can be {}, ie. check fields */ if (!direct_key && version_id > key_vmsd->version_id) { @@ -803,18 +811,16 @@ static int get_gtree(QEMUFile *f, void *pv, size_t un= used_size, key =3D (void *)(uintptr_t)qemu_get_be64(f); } else { key =3D g_malloc0(key_size); - ret =3D vmstate_load_state(f, key_vmsd, key, version_id); + ret =3D vmstate_load_state(f, key_vmsd, key, version_id, &loca= l_err); if (ret) { - error_report("%s : failed to load %s (%d)", - field->name, key_vmsd->name, ret); + error_report_err(local_err); goto key_error; } } val =3D g_malloc0(val_size); - ret =3D vmstate_load_state(f, val_vmsd, val, version_id); + ret =3D vmstate_load_state(f, val_vmsd, val, version_id, &local_er= r); if (ret) { - error_report("%s : failed to load %s (%d)", - field->name, val_vmsd->name, ret); + error_report_err(local_err); goto val_error; } g_tree_insert(tree, key, val); @@ -872,6 +878,7 @@ static int get_qlist(QEMUFile *f, void *pv, size_t unus= ed_size, const VMStateField *field) { int ret =3D 0; + Error *local_err =3D NULL; const VMStateDescription *vmsd =3D field->vmsd; /* size of a QLIST element */ size_t size =3D field->size; @@ -892,10 +899,9 @@ static int get_qlist(QEMUFile *f, void *pv, size_t unu= sed_size, =20 while (qemu_get_byte(f)) { elm =3D g_malloc(size); - ret =3D vmstate_load_state(f, vmsd, elm, version_id); + ret =3D vmstate_load_state(f, vmsd, elm, version_id, &local_err); if (ret) { - error_report("%s: failed to load %s (%d)", field->name, - vmsd->name, ret); + error_report_err(local_err); g_free(elm); return ret; } diff --git a/migration/vmstate.c b/migration/vmstate.c index 08f2b562e3a5ec0e186336215ccfb378a7675f0c..8d1e9eb62bb9a7506604016b0ed= 858855e685776 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -132,30 +132,33 @@ static void vmstate_handle_alloc(void *ptr, const VMS= tateField *field, } =20 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, int version_id) + void *opaque, int version_id, Error **errp) { const VMStateField *field =3D vmsd->fields; int ret =3D 0; - Error *local_err =3D NULL; =20 trace_vmstate_load_state(vmsd->name, version_id); if (version_id > vmsd->version_id) { - error_report("%s: incoming version_id %d is too new " - "for local version_id %d", - vmsd->name, version_id, vmsd->version_id); + error_setg(errp, "%s: incoming version_id %d is too new " + "for local version_id %d", + vmsd->name, version_id, vmsd->version_id); trace_vmstate_load_state_end(vmsd->name, "too new", -EINVAL); return -EINVAL; } if (version_id < vmsd->minimum_version_id) { - error_report("%s: incoming version_id %d is too old " - "for local minimum version_id %d", - vmsd->name, version_id, vmsd->minimum_version_id); + error_setg(errp, "%s: incoming version_id %d is too old " + "for local minimum version_id %d", + vmsd->name, version_id, vmsd->minimum_version_id); trace_vmstate_load_state_end(vmsd->name, "too old", -EINVAL); return -EINVAL; } if (vmsd->pre_load) { ret =3D vmsd->pre_load(opaque); if (ret) { + error_setg(errp, "pre load hook failed for: '%s', " + "version_id: %d, minimum version_id: %d, ret: %d", + vmsd->name, vmsd->version_id, vmsd->minimum_version= _id, + ret); return ret; } } @@ -193,13 +196,21 @@ int vmstate_load_state(QEMUFile *f, const VMStateDesc= ription *vmsd, =20 if (inner_field->flags & VMS_STRUCT) { ret =3D vmstate_load_state(f, inner_field->vmsd, curr_= elem, - inner_field->vmsd->version_id= ); + inner_field->vmsd->version_id, + errp); } else if (inner_field->flags & VMS_VSTRUCT) { ret =3D vmstate_load_state(f, inner_field->vmsd, curr_= elem, - inner_field->struct_version_i= d); + inner_field->struct_version_i= d, + errp); } else { ret =3D inner_field->info->get(f, curr_elem, size, inner_field); + if (ret < 0) { + error_setg(errp, + "Failed to load element of type %s for = %s: " + "%d", inner_field->info->name, + inner_field->name, ret); + } } =20 /* If we used a fake temp field.. free it now */ @@ -209,31 +220,40 @@ int vmstate_load_state(QEMUFile *f, const VMStateDesc= ription *vmsd, =20 if (ret >=3D 0) { ret =3D qemu_file_get_error(f); + if (ret < 0) { + error_setg(errp, + "Failed to load %s state: stream error:= %d", + vmsd->name, ret); + } } if (ret < 0) { qemu_file_set_error(f, ret); - error_report("Failed to load %s:%s", vmsd->name, - field->name); trace_vmstate_load_field_error(field->name, ret); return ret; } } } else if (field->flags & VMS_MUST_EXIST) { - error_report("Input validation failed: %s/%s", - vmsd->name, field->name); + error_setg(errp, "Input validation failed: %s/%s version_id: %= d", + vmsd->name, field->name, vmsd->version_id); return -1; } field++; } assert(field->flags =3D=3D VMS_END); - ret =3D vmstate_subsection_load(f, vmsd, opaque, &local_err); + ret =3D vmstate_subsection_load(f, vmsd, opaque, errp); if (ret !=3D 0) { qemu_file_set_error(f, ret); - error_report_err(local_err); return ret; } if (vmsd->post_load) { ret =3D vmsd->post_load(opaque, version_id); + if (ret < 0) { + error_setg(errp, + "post load hook failed for: %s, version_id: %d, " + "minimum_version: %d, ret: %d", + vmsd->name, vmsd->version_id, vmsd->minimum_version= _id, + ret); + } } trace_vmstate_load_state_end(vmsd->name, "end", ret); return ret; @@ -570,6 +590,7 @@ vmstate_get_subsection(const VMStateDescription * const= *sub, static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *= vmsd, void *opaque, Error **errp) { + ERRP_GUARD(); trace_vmstate_subsection_load(vmsd->name); =20 while (qemu_peek_byte(f, 0) =3D=3D QEMU_VM_SUBSECTION) { @@ -609,12 +630,12 @@ static int vmstate_subsection_load(QEMUFile *f, const= VMStateDescription *vmsd, qemu_file_skip(f, len); /* idstr */ version_id =3D qemu_get_be32(f); =20 - ret =3D vmstate_load_state(f, sub_vmsd, opaque, version_id); + ret =3D vmstate_load_state(f, sub_vmsd, opaque, version_id, errp); if (ret) { trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(child)"= ); - error_setg(errp, - "Loading VM subsection '%s' in '%s' failed: %d", - idstr, vmsd->name, ret); + error_prepend(errp, + "Loading VM subsection '%s' in '%s' failed: %d: = ", + idstr, vmsd->name, ret); return ret; } } diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c index 63f28f26f45691a70936d33e7341d16477a3471f..4ff0ab632f7e08b922dfcf565f3= 1b0e63c17f59e 100644 --- a/tests/unit/test-vmstate.c +++ b/tests/unit/test-vmstate.c @@ -30,6 +30,7 @@ #include "../migration/savevm.h" #include "qemu/module.h" #include "io/channel-file.h" +#include "qapi/error.h" =20 static int temp_fd; =20 @@ -108,14 +109,16 @@ static int load_vmstate_one(const VMStateDescription = *desc, void *obj, { QEMUFile *f; int ret; + Error *local_err =3D NULL; =20 f =3D open_test_file(true); qemu_put_buffer(f, wire, size); qemu_fclose(f); =20 f =3D open_test_file(false); - ret =3D vmstate_load_state(f, desc, obj, version); + ret =3D vmstate_load_state(f, desc, obj, version, &local_err); if (ret) { + error_report_err(local_err); g_assert(qemu_file_get_error(f)); } else{ g_assert(!qemu_file_get_error(f)); @@ -355,6 +358,8 @@ static const VMStateDescription vmstate_versioned =3D { =20 static void test_load_v1(void) { + Error *local_err =3D NULL; + int ret; uint8_t buf[] =3D { 0, 0, 0, 10, /* a */ 0, 0, 0, 30, /* c */ @@ -365,7 +370,10 @@ static void test_load_v1(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj =3D { .b =3D 200, .e =3D 500, .f =3D 600 }; - vmstate_load_state(loading, &vmstate_versioned, &obj, 1); + ret =3D vmstate_load_state(loading, &vmstate_versioned, &obj, 1, &loca= l_err); + if (ret < 0) { + error_report_err(local_err); + } g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 200); @@ -378,6 +386,8 @@ static void test_load_v1(void) =20 static void test_load_v2(void) { + Error *local_err =3D NULL; + int ret; uint8_t buf[] =3D { 0, 0, 0, 10, /* a */ 0, 0, 0, 20, /* b */ @@ -391,7 +401,10 @@ static void test_load_v2(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj; - vmstate_load_state(loading, &vmstate_versioned, &obj, 2); + ret =3D vmstate_load_state(loading, &vmstate_versioned, &obj, 2, &loca= l_err); + if (ret < 0) { + error_report_err(local_err); + } g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); g_assert_cmpint(obj.c, =3D=3D, 30); @@ -467,6 +480,8 @@ static void test_save_skip(void) =20 static void test_load_noskip(void) { + Error *local_err =3D NULL; + int ret; uint8_t buf[] =3D { 0, 0, 0, 10, /* a */ 0, 0, 0, 20, /* b */ @@ -480,7 +495,10 @@ static void test_load_noskip(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj =3D { .skip_c_e =3D false }; - vmstate_load_state(loading, &vmstate_skipping, &obj, 2); + ret =3D vmstate_load_state(loading, &vmstate_skipping, &obj, 2, &local= _err); + if (ret < 0) { + error_report_err(local_err); + } g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); @@ -493,6 +511,8 @@ static void test_load_noskip(void) =20 static void test_load_skip(void) { + Error *local_err =3D NULL; + int ret; uint8_t buf[] =3D { 0, 0, 0, 10, /* a */ 0, 0, 0, 20, /* b */ @@ -504,7 +524,10 @@ static void test_load_skip(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj =3D { .skip_c_e =3D true, .c =3D 300, .e =3D 500 }; - vmstate_load_state(loading, &vmstate_skipping, &obj, 2); + ret =3D vmstate_load_state(loading, &vmstate_skipping, &obj, 2, &local= _err); + if (ret < 0) { + error_report_err(local_err); + } g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); @@ -744,6 +767,8 @@ static void test_save_q(void) =20 static void test_load_q(void) { + int ret; + Error *local_err =3D NULL; TestQtailq obj_q =3D { .i16 =3D -512, .i32 =3D 70000, @@ -773,7 +798,10 @@ static void test_load_q(void) TestQtailq tgt; =20 QTAILQ_INIT(&tgt.q); - vmstate_load_state(fload, &vmstate_q, &tgt, 1); + ret =3D vmstate_load_state(fload, &vmstate_q, &tgt, 1, &local_err); + if (ret < 0) { + error_report_err(local_err); + } char eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(tgt.i16, =3D=3D, obj_q.i16); @@ -1115,6 +1143,8 @@ static void diff_iommu(TestGTreeIOMMU *iommu1, TestGT= reeIOMMU *iommu2) =20 static void test_gtree_load_domain(void) { + Error *local_err =3D NULL; + int ret; TestGTreeDomain *dest_domain =3D g_new0(TestGTreeDomain, 1); TestGTreeDomain *orig_domain =3D create_first_domain(); QEMUFile *fload, *fsave; @@ -1127,7 +1157,11 @@ static void test_gtree_load_domain(void) =20 fload =3D open_test_file(false); =20 - vmstate_load_state(fload, &vmstate_domain, dest_domain, 1); + ret =3D vmstate_load_state(fload, &vmstate_domain, dest_domain, 1, + &local_err); + if (ret < 0) { + error_report_err(local_err); + } eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(orig_domain->id, =3D=3D, dest_domain->id); @@ -1230,6 +1264,8 @@ static void test_gtree_save_iommu(void) =20 static void test_gtree_load_iommu(void) { + Error *local_err =3D NULL; + int ret; TestGTreeIOMMU *dest_iommu =3D g_new0(TestGTreeIOMMU, 1); TestGTreeIOMMU *orig_iommu =3D create_iommu(); QEMUFile *fsave, *fload; @@ -1241,7 +1277,10 @@ static void test_gtree_load_iommu(void) qemu_fclose(fsave); =20 fload =3D open_test_file(false); - vmstate_load_state(fload, &vmstate_iommu, dest_iommu, 1); + ret =3D vmstate_load_state(fload, &vmstate_iommu, dest_iommu, 1, &loca= l_err); + if (ret < 0) { + error_report_err(local_err); + } eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(orig_iommu->id, =3D=3D, dest_iommu->id); @@ -1363,6 +1402,8 @@ static void test_save_qlist(void) =20 static void test_load_qlist(void) { + Error *local_err =3D NULL; + int ret; QEMUFile *fsave, *fload; TestQListContainer *orig_container =3D alloc_container(); TestQListContainer *dest_container =3D g_new0(TestQListContainer, 1); @@ -1376,7 +1417,11 @@ static void test_load_qlist(void) qemu_fclose(fsave); =20 fload =3D open_test_file(false); - vmstate_load_state(fload, &vmstate_container, dest_container, 1); + ret =3D vmstate_load_state(fload, &vmstate_container, dest_container, = 1, + &local_err); + if (ret < 0) { + error_report_err(local_err); + } eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(eof, =3D=3D, QEMU_VM_EOF); diff --git a/ui/vdagent.c b/ui/vdagent.c index c0746fe5b168fdc7aeb4866de2ba0c3387566649..bc3c77f01332a4b594cba00f3f9= f9a5bca4d739a 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -1001,6 +1001,7 @@ static int get_cbinfo(QEMUFile *f, void *pv, size_t s= ize, VDAgentChardev *vd =3D QEMU_VDAGENT_CHARDEV(pv); struct CBInfoArray cbinfo =3D {}; int i, ret; + Error *local_err =3D NULL; =20 if (!have_clipboard(vd)) { return 0; @@ -1008,8 +1009,10 @@ static int get_cbinfo(QEMUFile *f, void *pv, size_t = size, =20 vdagent_clipboard_peer_register(vd); =20 - ret =3D vmstate_load_state(f, &vmstate_cbinfo_array, &cbinfo, 0); + ret =3D vmstate_load_state(f, &vmstate_cbinfo_array, &cbinfo, 0, + &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756577137; cv=none; d=zohomail.com; s=zohoarc; b=geAPDuFiNOemJxSCMlPA0yzN/t3yJBwx8rd514lz4RqV49D3wafZ2tRua7roUnZ8J8x7P8ihXF2Wi//GCYZPQ+5qe1VgW3PHukmLX4noLcVrj6gWdL0KAkk07dfDjVtTvdTTIfX0t5sIWxLZHfatK2t9UNq/d2RT19lCqR405nU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756577137; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oOSafeLF/cdHj0WUrje7Rzs54rhm0NEYGyektqV3rfY=; b=YdWwus3KT7BZT/GVBTnBbz0AuVK9dyMJ88qDfKfGOqQQVz8Brp5AmRH7w0OtDcL4sOGjOrtJMBdEeYNbQRXRVg3LsHWPTTPaO0HQgkIJNT4/aE+rR/HPqDD60i1diSxnj9OAH1ZkWIV/8+/iyMNsRMP5zexHvVTDWu2AKJ6Q/88= 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 1756577137721183.17004326047413; Sat, 30 Aug 2025 11:05:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNbN-0005kh-5Y; Sat, 30 Aug 2025 11:34: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 1us5Jb-0004tg-Ek for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:03:15 -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 1us5JZ-0004ZM-Pi for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:03:15 -0400 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-627-PQSVp_BtMjGdC61lsnmxNg-1; Fri, 29 Aug 2025 16:03:11 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3235e45b815so2915220a91.0 for ; Fri, 29 Aug 2025 13:03:10 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.02.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:03:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497792; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oOSafeLF/cdHj0WUrje7Rzs54rhm0NEYGyektqV3rfY=; b=UvMki49I244pyN+/W9oF5kelqgrmC8zx9Xw2lF2AzS92nWF0fIAv8h46Xn/eVDqnQ6mEd8 0MrqO+yRdLSqhEyZD6prk47ipfsVfIl5OiCV0qZfoeUEcjG3bfrB8PcbBJCg3M4MFCkSwg JNgWOYDLh6Gv5h6NN+SudIIouT7NKm0= X-MC-Unique: PQSVp_BtMjGdC61lsnmxNg-1 X-Mimecast-MFC-AGG-ID: PQSVp_BtMjGdC61lsnmxNg_1756497790 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497789; x=1757102589; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oOSafeLF/cdHj0WUrje7Rzs54rhm0NEYGyektqV3rfY=; b=WX64tI17lcJ5iqeTb5N+pCRhEE44pFuoLewQR1bJc41l/bytxsgsXe2YUXnj97TkOa pZjP9t/mLS35C5pDWKrac8or3Zf+abuoVFw65CjNWLrKna/ORGU+GwkO4+SedpK+vbbK F8vRl6CcDmd1zjytqnOWqQvouH37NEj+FWcEQjB0pNW9TZqrpLj7yOyUsx76AGomOG2K P/H5lshp7yViWdmm4mfuZbJRcPTS9Qu2PavClDyesZFUELG8sGXVzqDhrLTFzGCfE25y B0zoYgzmztGFptAmiXHBqbF9Ev8H2LSePCnZg6uxRUr+FtLRGwHO54EC8uxvaNaDKC1n v5+Q== X-Gm-Message-State: AOJu0YxD/Dgkj2svDNTjxUVxZANN6ZdEbYfb7iOd30rAk4kd6D7HzaJI 4/L24bHIFWorIr53sHZe8C33vuj1oU8AyXRf6NCGOJaqb2cbhccgsEKMDubJvL4WME+V60ZNdCd QC3h4BWS0j234UBOAomgh2s9OiCX8T8BpQ9TT5PojZ31Z3zpNcp9QEGPtZJtsIIG6 X-Gm-Gg: ASbGncsJfhMWXEnGSu8P8YhNLGAvWolPV2gm8qfmmgxNKtKpIwqXpEsrQzYnxvGOxBC C+kTFI8bFzP/wrJInAKDd+typl2M8Z69zhig1I9zz9uPQ5b4Ej9DYANoc77/rTfuyHzCNtzDjFJ 4MTR9gcZ1zqs2ToGVJbsYstuQaJBF6E0BCaOhdu/JJDftGHpHRdlMoEuGNpTtolJ7TBJcpAVgzp /7k1ABmtAUgLe3d9wzx+SPamTSg9k0Cd93COsNnHmmNm4OGEs/6Izye8iy3mcl7yt4bjWOK/kKj mlWrRioSfzkrwZ37MVvOqIUZ2CKLzK0S+RQEzynbxZhA1AkMxihr2A== X-Received: by 2002:a17:90a:d2ce:b0:328:a79:9f1 with SMTP id 98e67ed59e1d1-3280a790bcdmr1380415a91.1.1756497789574; Fri, 29 Aug 2025 13:03:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHFAFrNTt5uGgjI5rTVWUW0yqi4Q0YqnFQ2MhqOfDyua7LrwsJvjm7FWu1xsftHgk9cjztQqg== X-Received: by 2002:a17:90a:d2ce:b0:328:a79:9f1 with SMTP id 98e67ed59e1d1-3280a790bcdmr1380360a91.1.1756497788997; Fri, 29 Aug 2025 13:03:08 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:43 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-3-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2973; i=armenon@redhat.com; h=from:subject:message-id; bh=08fs5yPRSN3G4fsuHEbQFA8WwDnIkqC0cHdPyjoW6j0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdp//1XvLpi1Luxj+8Vv5vZglM23Uc1bFNr2XmXjKZ KfAUf6yjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABOZqsfIsDjJJnti0JU7oVyq DnVXOPMKAnpXdj32tFh7fIFN69G3gYwMR7f8SgliyX4+i2tlZCOPY5nb5M2/VweuDJ+koJT6QN6 PFwA= 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: 1756577138989124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state_header() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index f5a1ab91016dba51f9cd1dee19a1c7ba31417423..0c445a957fc99f826e6753ed379= 5bcdd51f1e3f5 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2814,38 +2814,43 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t t= ype) return 0; } =20 -static int qemu_loadvm_state_header(QEMUFile *f) +static int qemu_loadvm_state_header(QEMUFile *f, Error **errp) { unsigned int v; int ret; - Error *local_err =3D NULL; =20 v =3D qemu_get_be32(f); if (v !=3D QEMU_VM_FILE_MAGIC) { - error_report("Not a migration stream"); + error_setg(errp, "Not a migration stream, magic: %x !=3D %x", + v, QEMU_VM_FILE_MAGIC); return -EINVAL; } =20 v =3D qemu_get_be32(f); if (v =3D=3D QEMU_VM_FILE_VERSION_COMPAT) { - error_report("SaveVM v2 format is obsolete and don't work anymore"= ); + error_setg(errp, + "SaveVM v2 format is obsolete and no longer supported"); + return -ENOTSUP; } if (v !=3D QEMU_VM_FILE_VERSION) { - error_report("Unsupported migration stream version"); + error_setg(errp, "Unsupported migration stream version, " + "file version %x !=3D %x", + v, QEMU_VM_FILE_VERSION); return -ENOTSUP; } =20 if (migrate_get_current()->send_configuration) { - if (qemu_get_byte(f) !=3D QEMU_VM_CONFIGURATION) { - error_report("Configuration section missing"); + v =3D qemu_get_byte(f); + if (v !=3D QEMU_VM_CONFIGURATION) { + error_setg(errp, "Configuration section missing, %x !=3D %x", + v, QEMU_VM_CONFIGURATION); return -EINVAL; } - ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, - &local_err); =20 + ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, + errp); if (ret) { - error_report_err(local_err); return ret; } } @@ -3121,8 +3126,9 @@ int qemu_loadvm_state(QEMUFile *f) =20 qemu_loadvm_thread_pool_create(mis); =20 - ret =3D qemu_loadvm_state_header(f); + ret =3D qemu_loadvm_state_header(f, &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756570482; cv=none; d=zohomail.com; s=zohoarc; b=l2nJWPUOR1IM1HLZBuE6/6hK6mwe3qoDy/YXwXAIHSiJi6JVUd3zrwe4xmb1uUWvror1LupOGRBsw/tEW5voJyFoUUvNlVb8pbLw6fTZz3NXPuXkV/e4iQdPuSbGwdi475prGPBwOMgHXZWh0irtOF5K3I/uGxLd3h2aDzT850Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570482; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sFESQmOnhzZW2+hXaXl8rxhwnVtiVIyzJTwYSrM4JVM=; b=i2E+dZoG6RRZYeACV/JfgnyRiSWHOQjvoN57N86o7EYrtiySugfsQmwFHkGB+ssNk8CLktOSO3W07JpCW+aS4X1CA4tyoLdyTdhl/op0wwt52vvzjy0xYa7Q5HlZFSQr08+DmXxoePmkzLNGwgtroDpOxzTD67zFDvmNnbd+xEU= 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 1756570482452233.1331699936958; Sat, 30 Aug 2025 09:14:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNbu-0006FL-5w; Sat, 30 Aug 2025 11:35: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 1us5Ju-000508-40 for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:03: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 1us5Jr-0004bv-VQ for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:03:33 -0400 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-477-ODsUMfikP9G8-Q0jL-VRdg-1; Fri, 29 Aug 2025 16:03:23 -0400 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-3235e45b815so2915478a91.0 for ; Fri, 29 Aug 2025 13:03:23 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.03.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:03:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497811; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sFESQmOnhzZW2+hXaXl8rxhwnVtiVIyzJTwYSrM4JVM=; b=bxT+r/Q9d3I+4bWSV7dCe18omnGNUejgiz9Ef+gKLy7wKPHEaVYXHDb1PwZpzQombTJESW CaPP0L5UuxJrlBkS/jZv6GpqBKJNkU63Q5ktpBxz97i1bi9vQX+bawP5E9R+YXIFL36p/x 27QKV3DnURMopoyBrRq+ZpKgyC1pPeY= X-MC-Unique: ODsUMfikP9G8-Q0jL-VRdg-1 X-Mimecast-MFC-AGG-ID: ODsUMfikP9G8-Q0jL-VRdg_1756497802 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497802; x=1757102602; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sFESQmOnhzZW2+hXaXl8rxhwnVtiVIyzJTwYSrM4JVM=; b=H0rLC8HYcFlOJP7XwHyCS/KFFVywd5mBylKEd89sYQf1NmcCeGVEYGXucGKkpw06S8 CVN22XSfyfvvCF5JhkIm2K6K8yyKG5nWj9N2geo9AuNpOoI/ug03BL4/u9nbxMp2RL0u keFtkOBcmoXxh0m/7VYPSP1ZgRaC3vBxsjNVmac8lLjvkhEj/hWht+TRci65/9M4u3dD LH2HHdstKAkopTGILeQbZ0faK3oD270bVk7qquBTlQB+lfN+QkNzQComzoMnH4vR/pob +yfqObPGmyAY4ivBwpg3DZyeq9f/fU6kBdz+p39BLMc3cOtY3ss6eqzyNH2zkOWKDQZL oxuA== X-Gm-Message-State: AOJu0YyAInaKtToC3Qx0KGMN2wleBSNIEkGi+l62XETUAuNrG7JXIVSv 7SnzWkugK4NMJVWZUVRJnrh0vPQwTqgxDHBPNvRQayKO2bDXbNZv2tN7K8t4nZHOKRc038kZNIT ++WIoTNiUZpRc7qYA9ihXEq2uDEqd9puHnYk24MyY+y0saBI/r2Y7E4Oo X-Gm-Gg: ASbGncuLOD16T6z+5FfGP70bcLNNwAxFzNkEI2ensCUeoVdMvAqbYHEHx2VkFTcd0Bs gRwBIWqrUD+PPxsHCdQqfk590XmE1vzwneuPQijpeoIg0AKdEXvxVyjDlUzjSHDSZtb/eAdFQvg l/6nwmjjjKDQY/msEcXlhqa7h4KDxJUVkh9uPHvWDprzo+DBIf2KRU3fM+TzKrqtYrcUi3Xmy4H vC2fyJbyXMtUGTBAYlSuIW+ZwDIvDCdJjmzD5vTiVwsWYTKSFaLJ4fu9lZAJaiR+QIvg9yZz7ge zXd+bGiQrxNz0aKBroe5VPfdDPclg3qRLdTl7boQOM4BMyEMrQ6svQ== X-Received: by 2002:a17:90b:5623:b0:327:531b:b85c with SMTP id 98e67ed59e1d1-327531bbae0mr20325789a91.35.1756497802090; Fri, 29 Aug 2025 13:03:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG8A8uS0uqOelXhs9DBp6fb5ZkfvkmxeLH2gvetngK75nnlCPkyySJrntUu8N1qe1W2sPzaNQ== X-Received: by 2002:a17:90b:5623:b0:327:531b:b85c with SMTP id 98e67ed59e1d1-327531bbae0mr20325744a91.35.1756497801696; Fri, 29 Aug 2025 13:03:21 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:44 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-4-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3264; i=armenon@redhat.com; h=from:subject:message-id; bh=XNWOL0PRpe00C/2zRFfhJytxVRezN65+i4XThQwPhbg=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdp8J1vnT36vJ8F/ZU2R5qqSq2uNau8f1GUvTFdVSr ntwFBR0lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmMh9M4b/sVea6pJ+LmpLftjj pBQ5KdatfYePs4y4Xyz/Ol+fS9a+DP8LWoufT+STe/mxrUucc0pQXdW2ou6v/8WTRb6WhUfYS7I CAA== 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: 1756570483698116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that vmstate_load() must report an error in errp, in case of failure. The errors are temporarily reported using error_report_err(). This is removed in the subsequent patches in this series when we are actually able to propagate the error to the calling function. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/savevm.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 0c445a957fc99f826e6753ed3795bcdd51f1e3f5..40dae406db22dc9ddbff2f5ada9= 2a32626b58e3b 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -963,14 +963,20 @@ void vmstate_unregister(VMStateIf *obj, const VMState= Description *vmsd, } } =20 -static int vmstate_load(QEMUFile *f, SaveStateEntry *se) +static int vmstate_load(QEMUFile *f, SaveStateEntry *se, Error **errp) { + int ret; trace_vmstate_load(se->idstr, se->vmsd ? se->vmsd->name : "(old)"); if (!se->vmsd) { /* Old style */ - return se->ops->load_state(f, se->opaque, se->load_version_id); + ret =3D se->ops->load_state(f, se->opaque, se->load_version_id); + if (ret < 0) { + error_setg(errp, "Failed to load vmstate version_id: %d, ret: = %d", + se->load_version_id, ret); + } + return ret; } return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id, - &error_fatal); + errp); } =20 static void vmstate_save_old_style(QEMUFile *f, SaveStateEntry *se, @@ -2692,6 +2698,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) SaveStateEntry *se; char idstr[256]; int ret; + Error *local_err =3D NULL; =20 /* Read section start */ section_id =3D qemu_get_be32(f); @@ -2741,10 +2748,11 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se); + ret =3D vmstate_load(f, se, &local_err); if (ret < 0) { error_report("error while loading state for instance 0x%"PRIx32" o= f" " device '%s'", instance_id, idstr); + error_report_err(local_err); return ret; } =20 @@ -2769,6 +2777,7 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) uint32_t section_id; SaveStateEntry *se; int ret; + Error *local_err =3D NULL; =20 section_id =3D qemu_get_be32(f); =20 @@ -2794,10 +2803,9 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t ty= pe) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se); + ret =3D vmstate_load(f, se, &local_err); if (ret < 0) { - error_report("error while loading state section id %d(%s)", - section_id, se->idstr); + error_report_err(local_err); return ret; } =20 --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756570731; cv=none; d=zohomail.com; s=zohoarc; b=SNKy/pxxKYKqq6G/sJhQ5LyklqXvRxYWO6MJX3AR0WX3J6lyN5ngjCbwodcQUUk1rNQlrihn0iur8JRZP8zC/fxF/ylknuZo4tF55laLCctEUa8navGN9aACVcCeRMCyUVgDA03sn1kvPLMyjivE2WsVv2Tx5jiK/p9jCVvrOQA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570731; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uj4H8KnUuiQwP+qdZY3377j43+Z3u9M3mu/jrKpfZ4I=; b=XbpxVIR2in4I1ZVUE4IRpQCVyNmTJy/xql9BpPvkMAYAM6RGhpo1gH81OjR2SoGzKSzBxRDNGHBZo0gCzKkF6aQ5cjw8Ujg1LUFnUuhdw0+iFcnYOYJmaSDA5UDkdZqkQc0uP/tfKrT2XAt5LICgQaAQYSkdGobvidpqTCtPSLI= 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 1756570731694569.1508094078936; Sat, 30 Aug 2025 09:18:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNe4-00033D-0n; Sat, 30 Aug 2025 11:37: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 1us5K8-00054J-6r for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:03:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5K4-0004dG-UJ for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:03:47 -0400 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-226-SiNpw6o_O16bKRA52vRKnA-1; Fri, 29 Aug 2025 16:03:35 -0400 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-327b289e8easo2184037a91.1 for ; Fri, 29 Aug 2025 13:03:34 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.03.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:03:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497823; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uj4H8KnUuiQwP+qdZY3377j43+Z3u9M3mu/jrKpfZ4I=; b=euJYz599iBXiqJ+2rqrUHeDSMNibfdpQEebfqRFClL+OOW/APK3O28633BUbnTxMm2peaB xOIQ10SW6QKuGDPMCHl8BOmiRv7Rbn7wjcjNyJLm49Y9RGI+0oUFFnlYggN/FgaUSmmOH0 dKUvIBFGoBAHWj7sTtXY7ixQ2BBqv7o= X-MC-Unique: SiNpw6o_O16bKRA52vRKnA-1 X-Mimecast-MFC-AGG-ID: SiNpw6o_O16bKRA52vRKnA_1756497814 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497813; x=1757102613; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uj4H8KnUuiQwP+qdZY3377j43+Z3u9M3mu/jrKpfZ4I=; b=fzQocUXlp1o3D4NKz9bKwElyk8d4RMh34z2WxViyD7CFdjBZpuCqNNEcAzgs9cc/DE RwyNy2SpnqPxEE6gFxsHY6qWpO3VJ4svkiZsJ09S9kYqj6gNUmjXrYZ8A8vmt2tzyUFD 28/sCPev/ysDIh97jv1LKtzma3rffaBVk7RtJ95nEuxbzR1EWQBzTd8ZrE74p7bLG+aG 6KTsgFCxG+W23QjqB7U53OhhcHf4fXXCcB2cRY0avBX+R3dXAiMepdgVJcgGwdGB6SAU 9iJAmAa9fuks4qqzub355rdBUd6fh0uq5FrrsbqJgcc1p2EkW4MimB1sfpfN5PvGxprE K81g== X-Gm-Message-State: AOJu0Yzo9yHx8hbJGzLWoQWYIlUN5mgMkuKg83GSbe45evw/Rz49TUYW k+kAXXrhrEk8+TwCr2xHjCqWTm04qArbxcSc25e4/+y9KxpA5rgaPBQlhFatu0tVAOdACPG9QhZ L082mC1RPAmPJsF16d03cp81L4FdT5IuNHT0NSTzEv1EjCOPiNztv03ET X-Gm-Gg: ASbGncuXrCVjf0UZm+YoMgrKmy86UVZLRATLeC8om3dKftG6SUMnYKU9rNuHeZUqUiN aKIElBwRskALvcaUkf861F5jyDnmA8zzscEpsjEoMpX6rS8HOVAcw1wmEdUcCWhGnXEE9tYQFta ARPcyGMqTO4zdcSM0q0jDK98WEr91MD47qA9N0VFZ3jbgVsKCr+3vTEWGSmsskmkGcqyVF+3MFP 6GXXmJqpMHDjIvQwRZ41kLKOW0Hokx8ORji+70buT1AjPMTdp08Al7xxD2AmdiIMaSzlHdw6shD dSpID+NgpAj3RH8azO3QKLluSsUxok9L16h8IzEzrgxjri68vhCeYw== X-Received: by 2002:a17:90b:1a8b:b0:328:650:4e7a with SMTP id 98e67ed59e1d1-32806505120mr2267118a91.3.1756497813417; Fri, 29 Aug 2025 13:03:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGX7ppUrs4hGuz8FCUbJeORE/9NWU0IKJpRa3jaWUfsdfptBH+7rj1loqt6iVIjqHiVLY3Xyg== X-Received: by 2002:a17:90b:1a8b:b0:328:650:4e7a with SMTP id 98e67ed59e1d1-32806505120mr2267079a91.3.1756497812975; Fri, 29 Aug 2025 13:03:32 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:45 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-5-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7155; i=armenon@redhat.com; h=from:subject:message-id; bh=qSL0t7f4wG7F7+1wOstaO87epuFS+Gl9p/u+kXVLec8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdh+1fz+LtVZ9W/q4483C2E169w7lnHkZ+itJgHX5S r3KjQsndJSyMIhxMciKKbI0fA2QbQoojIi0fXkdZg4rE8gQBi5OAZiImgUjw7X5G9gPvFssNvlO +8p0DS6OY29OxkZHrypI1KisZeU+Nofhv6tT8eSTwnKOT1rCg9fwsivLBUU/Oivw9XTb2yWKjRX NrAA= 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: 1756570732637124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_process_command() must report an error in errp, in case of failure. The errors are temporarily reported using error_report_err(). This is removed in the subsequent patches in this series when we are actually able to propagate the error to the calling function. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/savevm.c | 86 +++++++++++++++++++++++++++++++++++++++-----------= ---- 1 file changed, 63 insertions(+), 23 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 40dae406db22dc9ddbff2f5ada92a32626b58e3b..0e9935aea3e1a214cfa0ddd0e30= fa5cf925373e3 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2546,32 +2546,37 @@ static int loadvm_postcopy_handle_switchover_start(= void) * LOADVM_QUIT All good, but exit the loop * <0 Error */ -static int loadvm_process_command(QEMUFile *f) +static int loadvm_process_command(QEMUFile *f, Error **errp) { MigrationIncomingState *mis =3D migration_incoming_get_current(); uint16_t cmd; uint16_t len; uint32_t tmp32; + int ret; =20 cmd =3D qemu_get_be16(f); len =3D qemu_get_be16(f); =20 /* Check validity before continue processing of cmds */ - if (qemu_file_get_error(f)) { - return qemu_file_get_error(f); + ret =3D qemu_file_get_error(f); + if (ret) { + error_setg(errp, + "Failed to load VM process command: stream error: %d", + ret); + return ret; } =20 if (cmd >=3D MIG_CMD_MAX || cmd =3D=3D MIG_CMD_INVALID) { - error_report("MIG_CMD 0x%x unknown (len 0x%x)", cmd, len); + error_setg(errp, "MIG_CMD 0x%x unknown (len 0x%x)", cmd, len); return -EINVAL; } =20 trace_loadvm_process_command(mig_cmd_args[cmd].name, len); =20 if (mig_cmd_args[cmd].len !=3D -1 && mig_cmd_args[cmd].len !=3D len) { - error_report("%s received with bad length - expecting %zu, got %d", - mig_cmd_args[cmd].name, - (size_t)mig_cmd_args[cmd].len, len); + error_setg(errp, "%s received with bad length - expecting %zu, got= %d", + mig_cmd_args[cmd].name, + (size_t)mig_cmd_args[cmd].len, len); return -ERANGE; } =20 @@ -2584,7 +2589,7 @@ static int loadvm_process_command(QEMUFile *f) } mis->to_src_file =3D qemu_file_get_return_path(f); if (!mis->to_src_file) { - error_report("CMD_OPEN_RETURN_PATH failed"); + error_setg(errp, "CMD_OPEN_RETURN_PATH failed"); return -1; } =20 @@ -2594,11 +2599,10 @@ static int loadvm_process_command(QEMUFile *f) * been created. */ if (migrate_switchover_ack() && !mis->switchover_ack_pending_num) { - int ret =3D migrate_send_rp_switchover_ack(mis); + ret =3D migrate_send_rp_switchover_ack(mis); if (ret) { - error_report( - "Could not send switchover ack RP MSG, err %d (%s)", r= et, - strerror(-ret)); + error_setg_errno(errp, -ret, + "Could not send switchover ack RP MSG"); return ret; } } @@ -2608,39 +2612,71 @@ static int loadvm_process_command(QEMUFile *f) tmp32 =3D qemu_get_be32(f); trace_loadvm_process_command_ping(tmp32); if (!mis->to_src_file) { - error_report("CMD_PING (0x%x) received with no return path", - tmp32); + error_setg(errp, "CMD_PING (0x%x) received with no return path= ", + tmp32); return -1; } migrate_send_rp_pong(mis, tmp32); break; =20 case MIG_CMD_PACKAGED: - return loadvm_handle_cmd_packaged(mis); + ret =3D loadvm_handle_cmd_packaged(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_ADVISE: - return loadvm_postcopy_handle_advise(mis, len); + ret =3D loadvm_postcopy_handle_advise(mis, len); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_LISTEN: - return loadvm_postcopy_handle_listen(mis); + ret =3D loadvm_postcopy_handle_listen(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_RUN: - return loadvm_postcopy_handle_run(mis); + ret =3D loadvm_postcopy_handle_run(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_RAM_DISCARD: - return loadvm_postcopy_ram_handle_discard(mis, len); + ret =3D loadvm_postcopy_ram_handle_discard(mis, len); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_RESUME: return loadvm_postcopy_handle_resume(mis); =20 case MIG_CMD_RECV_BITMAP: - return loadvm_handle_recv_bitmap(mis, len); + ret =3D loadvm_handle_recv_bitmap(mis, len); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_ENABLE_COLO: - return loadvm_process_enable_colo(mis); + ret =3D loadvm_process_enable_colo(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_SWITCHOVER_START: - return loadvm_postcopy_handle_switchover_start(); + ret =3D loadvm_postcopy_handle_switchover_start(); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; } =20 return 0; @@ -3049,6 +3085,7 @@ int qemu_loadvm_state_main(QEMUFile *f, MigrationInco= mingState *mis) { uint8_t section_type; int ret =3D 0; + Error *local_err =3D NULL; =20 retry: while (true) { @@ -3076,7 +3113,10 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f); + ret =3D loadvm_process_command(f, &local_err); + if (ret < 0) { + error_report_err(local_err); + } trace_qemu_loadvm_state_section_command(ret); if ((ret < 0) || (ret =3D=3D LOADVM_QUIT)) { goto out; --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756571557; cv=none; d=zohomail.com; s=zohoarc; b=MP515SBLZVaBP9r8zHzIBVWscBKMjWZrBo2it/Cf0rcw8EUqqWA2SGlfuihliWGDnGIX8cJtpnkK+VfJYtcdg8dmgFMDDiBHvxx3qVf4ZUSz7gftQ2cmNXRea1OHTFgMSuXkjNSx9UQS/Yr/w4JLdqAEzh2oKzL7FiqUz0QiVD4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756571557; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dfMeHNkHXITJfT3smIrT5NGNTBXHlf78w/tF67kcbe4=; b=feJhqCpSg5V9bTVpHmW/+m0qyXZ87XErE6redNHxNLzlxCkil2Klgx5G8NZJfaWImlqi5Wkya1yriDGMOgIIMuOtrYGOklR2OUEHhkoTYCcXsk5qg2mpQk5s6e73WFebuRsA3PgpDwb1AVlt37tCu4AzHUedoncB1dKyEOif4lI= 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 1756571557068119.31646830406214; Sat, 30 Aug 2025 09:32:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNcJ-0007Mw-N9; Sat, 30 Aug 2025 11:35:48 -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 1us5KI-00057P-HS for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:04:02 -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 1us5KD-0004e5-HC for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:03:54 -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-643-9-lBHKbWPy6pJvqzwnYtMQ-1; Fri, 29 Aug 2025 16:03:50 -0400 Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b4cf03610fdso1736725a12.1 for ; Fri, 29 Aug 2025 13:03:50 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.03.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:03:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497832; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dfMeHNkHXITJfT3smIrT5NGNTBXHlf78w/tF67kcbe4=; b=RTjV1jP4bsvVmjbBOsawct+qIzT0N2Qdd/6uWafvrtTVxmfiI25FY02bc4d/L6+HU77Ljc Bqx4gfBGDV2rvD+/2EIDRZXt8jANP1HphYpSAExaU0VBAlRbD8bdPUpQGbaPfIGgnC5Pku QKug7ZTeiVSt4IaaGmm9RrLCkCnmxBc= X-MC-Unique: 9-lBHKbWPy6pJvqzwnYtMQ-1 X-Mimecast-MFC-AGG-ID: 9-lBHKbWPy6pJvqzwnYtMQ_1756497830 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497830; x=1757102630; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dfMeHNkHXITJfT3smIrT5NGNTBXHlf78w/tF67kcbe4=; b=iX9+YaDJCsbeq8G67+CpNHVM+xxOgEEQnK8VjFnPvpDfsnfdclkX2VfAbnsNSAQE+C logVYwotlUf4PiOUWUJUIPmV5zME+M6p7Cc81LW6JNtaRh0Tuld30CRaWNJpW1NkoP30 kP2oGTonZvM+uup+kRJNiA/mGRt4MtwYHRxt8ARepa3ezaG6oex20CmINC8kebI1ZOx5 +evQbPaKTK5TFtMefoPP7cLEd0HqGNDojP6CITxJunr3xOWfGzkJxTAmJi7slgmkEyUi 0UP3wSV2ui+Jkw6TQ9CiqxCFBTj9pJ92JruPJrp4z0jqr70exmMBuhE4+6f2Ac5H4ccy 4H/Q== X-Gm-Message-State: AOJu0YyaKHKBhJanIb/ieKuqr8lYtTKgib+GMCq5FpRl3tN+GUq7DA39 WqWINmTDM/cC5Fm7y/Sft5gjar/DC7hcqUrzbXyWmC+Sx8bQjNK/VP2JWiVpXZC5SWuyLUf1Zb+ hR23Y+Z7DzpRDTk4i73V+Aqw4AtVcywkEAzFO4ven4Ih1ITMKXCQx88Rm X-Gm-Gg: ASbGncuNy1rXES3A2jlb2J9FXTgg0UlTuuZJU7lEt6HV18n9OBWCR8UqVjYeybY/GGl aUZOTe6kVy6ixF0JhF5AEydp9ZBdh2+JHR0cZMWmxI8Q/Z+FHOBUJFasSxO9AuHgItZPg5wouci cuiwN1RBuXqak4aOiOg/T4i7cu8b2NrWcYs/s6K5STvqS2UtFlm2xhc02uqgWYhpmPikAhVvKTN D/skvSToEDdeZnFrf9iiareAWl9+WMImfbdyW5cuUSCP73yzbVi0sPDBHbAh718zBbGGXP00aYr 61r3U7ZHOyWwYN9VBbkk6EHquWVY7YXoewXjTcVTL7cS7xMrdre5wQ== X-Received: by 2002:a17:902:e842:b0:248:a054:e1cc with SMTP id d9443c01a7336-248a054e4f0mr164100335ad.18.1756497829566; Fri, 29 Aug 2025 13:03:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE/u/2jQwqQMHkTeHCVnTsAKIIwK2w9E+j8uY7H6sTVbbry8MjhrOJE4nCLVjcKS+L+NI4+wA== X-Received: by 2002:a17:902:e842:b0:248:a054:e1cc with SMTP id d9443c01a7336-248a054e4f0mr164099935ad.18.1756497829169; Fri, 29 Aug 2025 13:03:49 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:46 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-6-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2769; i=armenon@redhat.com; h=from:subject:message-id; bh=EGno3AsWvaj5rUCkbXjfvd8MsWC3MPQGycacGbWUg0A=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdp9nvTF3VV8Hyj24yL31mmrxv8kB0xbxTbfL/jh14 d4Cr7bHHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACay/hMjw+GlG05Mbp+lzaBY +/4U7zxzHS4W7rRwUVGnfl3xLNMZ4Qz/M1rVWdd5PpH4eFDlrNorDjYfq7e5LZmuij+FE0VnPK3 gBAA= 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: 1756571560029124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_handle_cmd_packaged() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 0e9935aea3e1a214cfa0ddd0e30fa5cf925373e3..de5671ffd1cd06e728227a3056c= 3f895d3a6e6f3 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2405,7 +2405,7 @@ static int loadvm_postcopy_handle_resume(MigrationInc= omingState *mis) * Returns: Negative values on error * */ -static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis) +static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis, Error *= *errp) { int ret; size_t length; @@ -2415,7 +2415,7 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis) trace_loadvm_handle_cmd_packaged(length); =20 if (length > MAX_VM_CMD_PACKAGED_SIZE) { - error_report("Unreasonably large packaged state: %zu", length); + error_setg(errp, "Unreasonably large packaged state: %zu", length); return -1; } =20 @@ -2426,8 +2426,8 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis) length); if (ret !=3D length) { object_unref(OBJECT(bioc)); - error_report("CMD_PACKAGED: Buffer receive fail ret=3D%d length=3D= %zu", - ret, length); + error_setg(errp, "CMD_PACKAGED: Buffer receive fail ret=3D%d lengt= h=3D%zu", + ret, length); return (ret < 0) ? ret : -EAGAIN; } bioc->usage +=3D length; @@ -2457,6 +2457,9 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis) } while (1); =20 ret =3D qemu_loadvm_state_main(packf, mis); + if (ret < 0) { + error_setg(errp, "VM state load failed: %d", ret); + } trace_loadvm_handle_cmd_packaged_main(ret); qemu_fclose(packf); object_unref(OBJECT(bioc)); @@ -2620,11 +2623,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) break; =20 case MIG_CMD_PACKAGED: - ret =3D loadvm_handle_cmd_packaged(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_handle_cmd_packaged(mis, errp); =20 case MIG_CMD_POSTCOPY_ADVISE: ret =3D loadvm_postcopy_handle_advise(mis, len); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756571018; cv=none; d=zohomail.com; s=zohoarc; b=j6u01WNnxLMvtKrF6X/aA1cARE1O+/wocW9kwmnOmICwmBNkQOiDxUUr0wg4UDSoR12SVSInQw+wpio0WuWVNt8Ueiqx2FjPsrwte1+Hpe8NfmMa/FlYJjOzz/d693hDKO5gbK/bRHwJ9Wx60YsPd2mUfuqrMtLoz4cCNCDGc8Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756571018; 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=hzdNOf8zzxvjomLYvsuCU0Lt7DcL5gQpQtfllQdQY4w=; b=n90eOGTuK84ZLCiEe8vIjnK7CYq1ePjsYSn2j9hn2sHFVe8MRwEFsJEp2a1K8/pwlSIFLcpVYrI2llzIdMW+wCg0vxvTiFSXzRjBNQ0A95SDxQv1V4wvQKZQUCj/hIe/EHGQGvYskLu+Q7IZ41VilRCkTVTi32RNUvp8mp9BZWI= 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 1756571018208112.06108054361118; Sat, 30 Aug 2025 09:23:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNby-0006nx-FN; Sat, 30 Aug 2025 11:35:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5KQ-0005BH-FF for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:04:06 -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 1us5KN-0004fN-Sh for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:04:05 -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-45-THAkC7D2M-yCeyJcHqDU-g-1; Fri, 29 Aug 2025 16:04:01 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2445803f0cfso32546995ad.1 for ; Fri, 29 Aug 2025 13:04:01 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.03.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:03:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497842; 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=hzdNOf8zzxvjomLYvsuCU0Lt7DcL5gQpQtfllQdQY4w=; b=Le1dup9jwX9MboCmSdf7cgzfZcEVu7rIQK5EUrR9vw16K1ZNBtKjQrnGY2ITnAEMUK9KKW M9HQ8z9D2z1wOdNY1IvYDA0LzEECIJVBmLyzHWWReB+jhdyYqnAZdG7JonVV4rZawymSOH Jm8e/qqbaL8lBgwp447t27z/8Wp9k54= X-MC-Unique: THAkC7D2M-yCeyJcHqDU-g-1 X-Mimecast-MFC-AGG-ID: THAkC7D2M-yCeyJcHqDU-g_1756497840 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497840; x=1757102640; 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=hzdNOf8zzxvjomLYvsuCU0Lt7DcL5gQpQtfllQdQY4w=; b=okCIJHlBhoFMAQpCnIWziwGBeHBbW5iSPPmpQ22tDJ3OREhNA9MmJiyArWXmH0cwgt TJjbKi2ino9pjywNZtgoNGFfMBcz73xdSuVwqow44DFG7EsyWmPuyoKBdW2T9r1HXD3K eaDPO1HDP5QCsJiraBblpPIoiTP7Djc5UotakYAGsKZsmBBwPNsTH7fTvEBMCPQHGwHF HLj6CM/mEah79HQH4KxCqr99HkN7m8+0R4B2o6MwltDBgY2TaHqsyCIjR07kFdLBEKZX GzY3uTbWX8Ez5gtBZXXwkGkXMXUxLdIOiC0DtOp5luHH3Nu9MZ5xvA/u6PjwIuVVVw13 3rDw== X-Gm-Message-State: AOJu0YwD4fjWN4wpYWxe9SXepR0RVLAC9gmUmK4afHEztYJb951spc0O 5TqZlAwwSfzi0F+1mydTZyGcsx1c1OcRsYDSTARZ2nsoAQj029quYfz5p8N+r/sY5GroZGnmBcx u/NKQ5Fv0vY7iks2pEmNNanjcqjoFlAdZpiyeS9ecC8Vm7bZpXuIuKMXt X-Gm-Gg: ASbGnctDeRgGNqmkQUtvf9tnIGyXlUnL0QAIDYU9UOKLgIH/XeBZzh7PUuQ+TvqMaB0 VIDzJRzmVWEOxDydntIw/f5WisY1znjcGKqx5hShB9Go9cSbLv8l4hw6xz+8C38OVOy+Jlhyjqt L25eOt5MRXB5yVO3/UtwIHl3MRiC54rq6C5WrahzVaDtlNvKFKOJvlsBqme7qlzIuQLqhyyrzBs bS66RJYqx0IAaBxmHRmzrGcEhpkjFT3R7p/iV22JuRmVGrJ9VG9LLqHp+cqGQ7/2ZLGqg56fnM1 ORQ0idmIeFp/1SLWSTPRpVRYS6iJy8WriLNhDiQa6t3+hW4MWIUBKA== X-Received: by 2002:a17:903:1a08:b0:246:a8ad:3f24 with SMTP id d9443c01a7336-246a8ad4130mr289475855ad.7.1756497840289; Fri, 29 Aug 2025 13:04:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEIdBfEhqde6egTrP85UhZ19uWsBqeHUQq0a7BHCgN9dqKu1f+7ga0vRMZV5fg0G3pUMM0ESw== X-Received: by 2002:a17:903:1a08:b0:246:a8ad:3f24 with SMTP id d9443c01a7336-246a8ad4130mr289475045ad.7.1756497839716; Fri, 29 Aug 2025 13:03:59 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:47 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-7-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@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=6212; i=armenon@redhat.com; h=from:subject:message-id; bh=dyNvSpvRJq2Ak2gyyk/K9PCSOAs1pmbL+bOe9B+V1/g=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdh/f3xmF6+9lfXMqid/+9lL0o5DCafzOL5bopVnez vleW6zSUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCKfTjH8D5mxsuYId9m7nBlW WSGCBhmeu3x8DnT1LnXO3n3vtQHHckaGCeaTskXMzx6PONweUOA08ZTwvGXfRNkX6rGoijsfm3S HBwA= 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: 1756571019885124100 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 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/migration.c | 9 +++++---- migration/savevm.c | 30 ++++++++++++++++++------------ migration/savevm.h | 2 +- 3 files changed, 24 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 de5671ffd1cd06e728227a3056c3f895d3a6e6f3..0087fca15ce108685667d380835= 0d80d37b807b1 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3159,28 +3159,24 @@ out: return ret; } =20 -int qemu_loadvm_state(QEMUFile *f) +int qemu_loadvm_state(QEMUFile *f, Error **errp) { MigrationState *s =3D migrate_get_current(); MigrationIncomingState *mis =3D migration_incoming_get_current(); - Error *local_err =3D NULL; int ret; =20 - if (qemu_savevm_state_blocked(&local_err)) { - error_report_err(local_err); + if (qemu_savevm_state_blocked(errp)) { return -EINVAL; } =20 qemu_loadvm_thread_pool_create(mis); =20 - ret =3D qemu_loadvm_state_header(f, &local_err); + ret =3D qemu_loadvm_state_header(f, errp); if (ret) { - error_report_err(local_err); return ret; } =20 - if (qemu_loadvm_state_setup(f, &local_err) !=3D 0) { - error_report_err(local_err); + if (qemu_loadvm_state_setup(f, errp) !=3D 0) { return -EINVAL; } =20 @@ -3191,6 +3187,9 @@ int qemu_loadvm_state(QEMUFile *f) cpu_synchronize_all_pre_loadvm(); =20 ret =3D qemu_loadvm_state_main(f, mis); + if (ret < 0) { + error_setg(errp, "Load VM state failed: %d", ret); + } qemu_event_set(&mis->main_thread_load_event); =20 trace_qemu_loadvm_state_post_main(ret); @@ -3208,8 +3207,15 @@ int qemu_loadvm_state(QEMUFile *f) if (migrate_has_error(migrate_get_current()) || !qemu_loadvm_thread_pool_wait(s, mis)) { ret =3D -EINVAL; + error_setg(errp, + "Error while loading vmstate"); } else { ret =3D qemu_file_get_error(f); + if (ret < 0) { + error_setg(errp, + "Error while loading vmstate: stream error: %d", + ret); + } } } /* @@ -3474,6 +3480,7 @@ void qmp_xen_save_devices_state(const char *filename,= bool has_live, bool live, =20 void qmp_xen_load_devices_state(const char *filename, Error **errp) { + ERRP_GUARD(); QEMUFile *f; QIOChannelFile *ioc; int ret; @@ -3495,10 +3502,10 @@ void qmp_xen_load_devices_state(const char *filenam= e, Error **errp) f =3D qemu_file_new_input(QIO_CHANNEL(ioc)); object_unref(OBJECT(ioc)); =20 - ret =3D qemu_loadvm_state(f); + ret =3D qemu_loadvm_state(f, errp); qemu_fclose(f); if (ret < 0) { - error_setg(errp, "loading Xen device state failed"); + error_prepend(errp, "loading Xen device state failed: "); } migration_incoming_state_destroy(); } @@ -3569,13 +3576,12 @@ bool load_snapshot(const char *name, const char *vm= state, ret =3D -EINVAL; goto err_drain; } - ret =3D qemu_loadvm_state(f); + ret =3D qemu_loadvm_state(f, errp); migration_incoming_state_destroy(); =20 bdrv_drain_all_end(); =20 if (ret < 0) { - error_setg(errp, "Error %d while loading VM state", ret); return false; } =20 diff --git a/migration/savevm.h b/migration/savevm.h index 2d5e9c716686f06720325e82fe90c75335ced1de..b80770b7461a60e2ad6ba5e24a7= baeae73d90955 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -64,7 +64,7 @@ void qemu_savevm_send_colo_enable(QEMUFile *f); void qemu_savevm_live_state(QEMUFile *f); int qemu_save_device_state(QEMUFile *f); =20 -int qemu_loadvm_state(QEMUFile *f); +int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); int qemu_load_device_state(QEMUFile *f); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756569813; cv=none; d=zohomail.com; s=zohoarc; b=m3vURIiYags9qd+kV2QEr7Hym6Y6FdLjijH6G9SI+sl05O/oZoli1GgixpJ5kHxVMiN78UBM/En/5l73UKndxGZgIGjodAbCnBm7PFI0E7Hy+cNeXTIK+aCwX3mwmPmpBzk6FD9cidcv8XNiJ/6cERWfT+Fam8sClQe1HaQcEWU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756569813; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BaRoLgnvXipTQIwgmh18VwtQRJZMUjxN2HSv+RmjctM=; b=TE2FDnc89NxOVWWT/SyPD5uyHpiD7MOciRX3QhBtWHDyVZiGxZObUETwb9nlym+mphCgXluafeFzZ7BbUZqjCZPviZ0H1Tgdv5mbN91F+GgDL+TsHutm0a33Nd4oLEdoj4guEcNr99Nuq6gL9qnB3WxCVfDVWvTRz4bl+b5EKw8= 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 1756569813434873.6394957343614; Sat, 30 Aug 2025 09:03:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNcH-0007JF-5v; Sat, 30 Aug 2025 11:35:47 -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 1us5Kk-0005ID-Sh for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:04: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 1us5Kj-0004hu-9q for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:04:26 -0400 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-361-azPTDkVIPuqPE9Se0v-ELw-1; Fri, 29 Aug 2025 16:04:17 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-324e41e946eso4300922a91.0 for ; Fri, 29 Aug 2025 13:04:17 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.04.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:04:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497864; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BaRoLgnvXipTQIwgmh18VwtQRJZMUjxN2HSv+RmjctM=; b=M6L/mDHzPI5dhA8fCwqCXPlw8c/oN3UxFgMgL5qvVXrv5/omVKoMeQpIcJ/OzXbCst0Qks afHO/im8DMGeZ5623wjix//tnhKKijUidPjcBZSUl7sdcOZFlBlWpYkHyPNknwd9TjQSgJ TSdqi17IkzbajdkVKV8LVWElNLwaNTY= X-MC-Unique: azPTDkVIPuqPE9Se0v-ELw-1 X-Mimecast-MFC-AGG-ID: azPTDkVIPuqPE9Se0v-ELw_1756497856 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497856; x=1757102656; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BaRoLgnvXipTQIwgmh18VwtQRJZMUjxN2HSv+RmjctM=; b=IH5FNmKK0c7dN+upDIsbvsxexjXi9QWezz/6GM092DCkMeJlEo/G97UjOFUEhU/dFZ 2N64KOTVFc6WSBLwqtZcVbfD07oc1pmuQPwef5TYe4uI6gAJcNYczvAq5YMOf1oLks2m GCrD489tRyGagBo+2Ym5YeqF+xUETZerF/ULmxUBGoyVces8j6dx8f0iUnv/sWA6EFv4 JwJof+k4/6HtPf2Ubcay/vYD6xkEcT9xh2Wy9E8oeB/yrfQhR9S+serKULWTEZkUHGW5 dC7fS35DIZdsPN1sebnZ6L7p0B/wM3lENwsv+sDbwKfVqSXp+wdp5tWX1yABnDtCfajg ZJWA== X-Gm-Message-State: AOJu0YzMEPCu7QyuKyLR+FMW+2wUCg9ef6nceCpvKF2CS370K8DdOJqN 7uxNUOMYAq79152WtfIZHEKmPk0G3gG9aFQtg/2FRTUSoqKFZAZ48s4gI3Uh4Vq8jtcwjVXA0EC AUDIcOsMNcxGDNjGHcGbKM87i73f3WTspuGEzBaUD23OJtAdYT/llp1ic X-Gm-Gg: ASbGnctSBCLwGKPqidizZqws4MueOPiySd6qVQNzYmXXBFpGy3qEEa/QRlGh/gMrw4r tIB7z+jF2LPdjmLzg8th41AYCZD2wbZQPsuWE2MZ5ZOWcFGt/QEdX7/vz0/f65hyxF7r0PbTnDa VuYykhZoxuNXWLzILPV+oXNeD7UanYnQw0HG8M6khqk1cvRYszKH3069EQuoIt2qty0znZ1PAM1 i8twPMFgDktXdJWwKA+hCmSV0r/bOD1X2rtSKwvwY+u3RnRcbD1GDRFTVMuHhz+gIYQ++jCHBhg mgNWf1ZjLSyv7OMXctIenqoz7T5G0DI9VrSkoCI40M998UaOxshp3A== X-Received: by 2002:a17:90b:4f44:b0:327:9e81:ebb1 with SMTP id 98e67ed59e1d1-3279e81f451mr10353648a91.31.1756497856042; Fri, 29 Aug 2025 13:04:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFv8H08IlwNFTAlmeU6lJUrkYSJCahYKGC1k6IyFM9h8UDI6KXXimddarHwebX8ROKAiGzzvw== X-Received: by 2002:a17:90b:4f44:b0:327:9e81:ebb1 with SMTP id 98e67ed59e1d1-3279e81f451mr10353590a91.31.1756497855550; Fri, 29 Aug 2025 13:04:15 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:48 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-8-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2697; i=armenon@redhat.com; h=from:subject:message-id; bh=UirhkFM9zKCc9fAhhyz10Rt0EBJQI4cJF89hFF4FZFs=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdh9esW5F1f1R1hM1t7EcnrL48Lpvtm5ht2tEq/r43 wkv3Dipo5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwETOnWdkOP95m8njJWaqns9d dt9Z33uwZUIyk8H54MNOk2zfCMgdCWBkOO+pusv8/spZC6X1lqsv/Ol8eY/NiZR0Dl7LtQcT/7v yswEA 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: 1756569815301116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_load_device_state() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/colo.c | 3 +-- migration/savevm.c | 4 ++-- migration/savevm.h | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index e0f713c837f5da25d67afbd02ceb6c54024ca3af..2f524b19e6a79dcfe3861f1dfb7= 68222f65a718a 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -729,9 +729,8 @@ static void colo_incoming_process_checkpoint(MigrationI= ncomingState *mis, bql_lock(); vmstate_loading =3D true; colo_flush_ram_cache(); - ret =3D qemu_load_device_state(fb); + ret =3D qemu_load_device_state(fb, errp); if (ret < 0) { - error_setg(errp, "COLO: load device state failed"); vmstate_loading =3D false; bql_unlock(); return; diff --git a/migration/savevm.c b/migration/savevm.c index 0087fca15ce108685667d3808350d80d37b807b1..5462eaff0dcec1fa207c08da612= 4fe91656201ac 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3264,7 +3264,7 @@ int qemu_loadvm_state(QEMUFile *f, Error **errp) return ret; } =20 -int qemu_load_device_state(QEMUFile *f) +int qemu_load_device_state(QEMUFile *f, Error **errp) { MigrationIncomingState *mis =3D migration_incoming_get_current(); int ret; @@ -3272,7 +3272,7 @@ int qemu_load_device_state(QEMUFile *f) /* Load QEMU_VM_SECTION_FULL section */ ret =3D qemu_loadvm_state_main(f, mis); if (ret < 0) { - error_report("Failed to load device state: %d", ret); + error_setg(errp, "Failed to load device state: %d", ret); return ret; } =20 diff --git a/migration/savevm.h b/migration/savevm.h index b80770b7461a60e2ad6ba5e24a7baeae73d90955..b12681839f0b1afa3255e45215d= 99c13a224b19f 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -67,7 +67,7 @@ int qemu_save_device_state(QEMUFile *f); int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); -int qemu_load_device_state(QEMUFile *f); +int qemu_load_device_state(QEMUFile *f, Error **errp); int qemu_loadvm_approve_switchover(void); int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, bool in_postcopy); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756569370; cv=none; d=zohomail.com; s=zohoarc; b=Z1TVZjatrweVXiBSQx4SfuurSfmdKJW0aaT7S2tKxq1JTC9xn6UmuTtR958cMV5M7X36JH3pFLGR9ocWyYKYky+kVmAbSbhjJP0y7mAcnKU+qLiUK1I53XcE1h8gUGHkHFkoxUB8c6zYjxK1QRXRd4YsV9xc2NBCO7ORn4iaoPM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756569370; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UTHY4yYhUKE3D/jL5Fi7j9W8F5eZAPi88KnU28ha278=; b=Woixlaxvd3peAGibgldrUgEMawof1ZS6cTuRwztfCvqC+SknPbomb/w2E6+JOWGGKhGevncXoYBL44MtK9ZzoZuAxmDdupLQm5IkK9l09KP+gpL2n6Etq2Zmg38WPDuUayE7MMetCuKgvxl+a/8fhPaD9D2EMy8OOCwTZSTbo8I= 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 1756569370840452.0384873854798; Sat, 30 Aug 2025 08:56:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNcg-00009K-0S; Sat, 30 Aug 2025 11:36:10 -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 1us5Kv-0005MC-H7 for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:04:37 -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 1us5Ks-0004ih-D6 for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:04:37 -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-591-71DpL8ZWNqqpQZU5vCSo5Q-1; Fri, 29 Aug 2025 16:04:32 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-32811874948so13939a91.2 for ; Fri, 29 Aug 2025 13:04:32 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.04.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:04:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497873; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UTHY4yYhUKE3D/jL5Fi7j9W8F5eZAPi88KnU28ha278=; b=aHtT7HPoKdlhCZ0Bc/1AiMpst8RsK+EaxvLgPgnP9/lcT8gn67NrIuaRBLzyrHb/jemTHj +o6Gzmwb7C80fGVVBwuo6YwCH2+Ue//4HI7az97pAveNG1j95nt07Ylx6qdXVe3FkUfa5W U9kSyDO4TsHUW9e3cJFTL/n+Vx6AvSs= X-MC-Unique: 71DpL8ZWNqqpQZU5vCSo5Q-1 X-Mimecast-MFC-AGG-ID: 71DpL8ZWNqqpQZU5vCSo5Q_1756497871 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497871; x=1757102671; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UTHY4yYhUKE3D/jL5Fi7j9W8F5eZAPi88KnU28ha278=; b=iQiGiR5aVm2tOlVzkV/MYAu1FW04bE/NxBcQYQBh9rassTh1ggzl73J6CEVcHOaflU VcLY4WflnfJqBHszaMR7fYR8E8uvEPWZo84xzfJ2hJoJXim0hoZ+MXg7V+MgmDLD7A4F J5sO6tnuiX9AiuaDAIKx1CKwuf2ddMDh/4Fb9XhYNpm8zRNyeIRe1tGc/yfjMBCV16Pa EokA62khbw1OcxqXuMs7Af0W8ubPgjnWcYlJS5WEL1p/EoxbFGBG/FPqxy83o4nzjqhs rPdZYWhoDnbJkVVxayA94MbmXxOS+NLHSm1l7rBhCZXKOz8nBXyEtNbgbR6jmei+jGFK oRbA== X-Gm-Message-State: AOJu0YzRMrh8g2GZtb7Vt5Yz4vimqqZFFCSBRNqEw88y42ak9E3IBqkp HPukipJ0OP3CvPgYW0SDWSVQUgWenOwS3dSBMJzuUeyuktQaH+saxpWd0TotWzoZ6Ljgen34WXw HjWXuS2Cz52B5ZSRSARTVKblSd1vYNVk4pdwCjjD1ftWO+TFNXhHyj3AT X-Gm-Gg: ASbGncuySv6NqJA+q2dPw7wlDSk5lKnnif1FNDKSbnHck26WWRB9L5UKqLth/jtXVv2 W8iVQgi7sGsK/9By3SKVqGeakezu9/5+XO8YzRQ5m/m7imeZp6A9EGl0akqBYZh3HP+U8GULPuD ucQNpK+By9cgTOsX9BG1Q44DzkBKG8Zs2w9kM5PZaYF6hG+g7DSGFvtRV3DhRY0JjYE3ODI3MrZ 8qVuEH8yAus8uSFddaxo0oxK0xHFNhyD/gNL7Bo17MzjaqeJC0LeUhXhiLGPB4+2wpHsPGgmohG D1KBZbSCHFexf2pw5GXuiHDodlm4euVNz80bOXU5aB8LbDcsaOpfag== X-Received: by 2002:a17:90a:da86:b0:31e:3f7f:d4b1 with SMTP id 98e67ed59e1d1-32515eaedcdmr40026850a91.24.1756497871004; Fri, 29 Aug 2025 13:04:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGelJva5c5otfsIn61RpE3WdkMDE2+BG1i5oIhnSuHzqYQlqhjb6YRpmb1cNb9hrht9ztaGkQ== X-Received: by 2002:a17:90a:da86:b0:31e:3f7f:d4b1 with SMTP id 98e67ed59e1d1-32515eaedcdmr40026810a91.24.1756497870615; Fri, 29 Aug 2025 13:04:30 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:49 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-9-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6326; i=armenon@redhat.com; h=from:subject:message-id; bh=CbE6WDTGoaxyx+hpN6RrbB5sFr/ZitwM6OvQ3jqdjKk=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdt+rKzzV3Av+BwTWH0jf1OybtPb/rYVtZ60OKsx9K /XiCve2jlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABPZM4/hn6X9Hcl03yXbf9xv fHuS7ew22Qu2GaKc94r+8pQusLe+9Inhf1HNYYFrfr6fMrWFWjZ0TzvXwGsgfGL6zq9VeyzZ9on ysQIA 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: 1756569373319124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state_main() must report an error in errp, in case of failure. Set errp explicitly if it is NULL in case of failure in the out section. This will be removed in the subsequent patch when all of the calls are converted to passing errp. The error message in the default case of qemu_loadvm_state_main() has the word "savevm". This is removed because it can confuse the user while reading destination side error logs. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/colo.c | 3 +-- migration/savevm.c | 36 +++++++++++++++++------------------- migration/savevm.h | 3 ++- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 2f524b19e6a79dcfe3861f1dfb768222f65a718a..642d17487d92c0a9508e599ca3b= f524e80b6fd46 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -686,11 +686,10 @@ static void colo_incoming_process_checkpoint(Migratio= nIncomingState *mis, =20 bql_lock(); cpu_synchronize_all_states(); - ret =3D qemu_loadvm_state_main(mis->from_src_file, mis); + ret =3D qemu_loadvm_state_main(mis->from_src_file, mis, errp); bql_unlock(); =20 if (ret < 0) { - error_setg(errp, "Load VM's live state (ram) error"); return; } =20 diff --git a/migration/savevm.c b/migration/savevm.c index 5462eaff0dcec1fa207c08da6124fe91656201ac..eccb3f63f8dfc070263a1d19ec3= 415684e8fa60e 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2105,7 +2105,7 @@ static void *postcopy_ram_listen_thread(void *opaque) qemu_file_set_blocking(f, true); =20 /* TODO: sanity check that only postcopiable data will be loaded here = */ - load_res =3D qemu_loadvm_state_main(f, mis); + load_res =3D qemu_loadvm_state_main(f, mis, &error_fatal); =20 /* * This is tricky, but, mis->from_src_file can change after it @@ -2456,10 +2456,7 @@ static int loadvm_handle_cmd_packaged(MigrationIncom= ingState *mis, Error **errp) qemu_coroutine_yield(); } while (1); =20 - ret =3D qemu_loadvm_state_main(packf, mis); - if (ret < 0) { - error_setg(errp, "VM state load failed: %d", ret); - } + ret =3D qemu_loadvm_state_main(packf, mis, errp); trace_loadvm_handle_cmd_packaged_main(ret); qemu_fclose(packf); object_unref(OBJECT(bioc)); @@ -3080,18 +3077,22 @@ static bool postcopy_pause_incoming(MigrationIncomi= ngState *mis) return true; } =20 -int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis) +int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis, + Error **errp) { + ERRP_GUARD(); uint8_t section_type; int ret =3D 0; - Error *local_err =3D NULL; =20 retry: while (true) { section_type =3D qemu_get_byte(f); =20 - ret =3D qemu_file_get_error_obj_any(f, mis->postcopy_qemufile_dst,= NULL); + ret =3D qemu_file_get_error_obj_any(f, mis->postcopy_qemufile_dst,= errp); if (ret) { + error_prepend(errp, + "Failed to load section ID: stream error: %d: ", + ret); break; } =20 @@ -3112,10 +3113,7 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f, &local_err); - if (ret < 0) { - error_report_err(local_err); - } + ret =3D loadvm_process_command(f, errp); trace_qemu_loadvm_state_section_command(ret); if ((ret < 0) || (ret =3D=3D LOADVM_QUIT)) { goto out; @@ -3125,7 +3123,7 @@ retry: /* This is the end of migration */ goto out; default: - error_report("Unknown savevm section type %d", section_type); + error_setg(errp, "Unknown section type %d", section_type); ret =3D -EINVAL; goto out; } @@ -3133,6 +3131,9 @@ retry: =20 out: if (ret < 0) { + if (*errp =3D=3D NULL) { + error_setg(errp, "Loading VM state failed: %d", ret); + } qemu_file_set_error(f, ret); =20 /* Cancel bitmaps incoming regardless of recovery */ @@ -3153,6 +3154,7 @@ out: migrate_postcopy_ram() && postcopy_pause_incoming(mis)) { /* Reset f to point to the newly created channel */ f =3D mis->from_src_file; + error_free_or_abort(errp); goto retry; } } @@ -3186,10 +3188,7 @@ int qemu_loadvm_state(QEMUFile *f, Error **errp) =20 cpu_synchronize_all_pre_loadvm(); =20 - ret =3D qemu_loadvm_state_main(f, mis); - if (ret < 0) { - error_setg(errp, "Load VM state failed: %d", ret); - } + ret =3D qemu_loadvm_state_main(f, mis, errp); qemu_event_set(&mis->main_thread_load_event); =20 trace_qemu_loadvm_state_post_main(ret); @@ -3270,9 +3269,8 @@ int qemu_load_device_state(QEMUFile *f, Error **errp) int ret; =20 /* Load QEMU_VM_SECTION_FULL section */ - ret =3D qemu_loadvm_state_main(f, mis); + ret =3D qemu_loadvm_state_main(f, mis, errp); if (ret < 0) { - error_setg(errp, "Failed to load device state: %d", ret); return ret; } =20 diff --git a/migration/savevm.h b/migration/savevm.h index b12681839f0b1afa3255e45215d99c13a224b19f..c337e3e3d111a7f28a57b90f61e= 8f70b71803d4e 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -66,7 +66,8 @@ int qemu_save_device_state(QEMUFile *f); =20 int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); -int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); +int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis, + Error **errp); int qemu_load_device_state(QEMUFile *f, Error **errp); int qemu_loadvm_approve_switchover(void); int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756576289; cv=none; d=zohomail.com; s=zohoarc; b=RsI4S/g2S6ItO3lTf4un0I3mNmBIIDgTaThwMPNPqSirDXT+FHpDrIean9/jtKTYtbl294BDwkBNLKaMlx2WZeaS9e8aqfZO6H96yDjkmgLtJQIrLJsuuHxXBZ5QLkyLy5n0Gckdb8sPc0jNRfukGLAQk5BrZ0HsfohLkyImws8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756576289; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FsBBzucx8y5i9VHunk1XF83aX/5bi21WNzwEAMu8Vec=; b=EJtfUZdmSLMqc1atiYkz4CYbJm4U6YW+KL8+UTqVvFHAGHpqfniC9Hv302ljETZjPLvXM3hwq8FVNDJq9bgd9zsjtWplnFXtrtDmipOnV6e9R0rbMd3yPEpqsjyvD4+UyexPmUj0Vsl63NDubEmqsIDZv4z1bEKc+8e5jIAU8Mc= 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 1756576289219382.89712849545504; Sat, 30 Aug 2025 10:51:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNcQ-0007yu-Hz; Sat, 30 Aug 2025 11:35: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 1us5L5-0005Pb-KB for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:04:47 -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 1us5L2-0004jq-5w for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:04:47 -0400 Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-220-2zAYbtZTM2eVBBSvcGz0rA-1; Fri, 29 Aug 2025 16:04:41 -0400 Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-323766e64d5so3102183a91.0 for ; Fri, 29 Aug 2025 13:04:41 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.04.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:04:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497883; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FsBBzucx8y5i9VHunk1XF83aX/5bi21WNzwEAMu8Vec=; b=NGSinLqOpIumPS72NpwdirUr/G/IcKCiU+odqG7dW2cMwbxFl7LEiyxLpflK9XXW+Szb5j LV5UypliaSuBVTdZybtwSWuR7siyO0zmY5tTtnrRkw18zqSOQMmNr0lCGFQn/6fIlDuCDR XKnxr2S7kuwrZYr6FYZk7OrW6zlY2dw= X-MC-Unique: 2zAYbtZTM2eVBBSvcGz0rA-1 X-Mimecast-MFC-AGG-ID: 2zAYbtZTM2eVBBSvcGz0rA_1756497881 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497881; x=1757102681; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FsBBzucx8y5i9VHunk1XF83aX/5bi21WNzwEAMu8Vec=; b=bsGHe0mdJM1alR85SnTuR7HrKDP4PsqpV8mWLaPI2PqmjRu9ilrVHb4uMhT2OY7Y9O HmLnsVIgZHm5+gzAWJ25WZJg0uMg8sRhAzBVGkshlcUfKT7zDo0thu9GytuGwSGXiWxf 1DxV27HRQru6AKIif8ga0KcInA7sIWosRR6ADCCDpMpla8hN+ApU2/wadQwTAL7bSabN OaUS09tSTc2CwswqStIikYrgJyYkP8tBO2EdGv11MjtthvqqZoebGOfvb7zRR+IliH/M SDMzv1q3pK1lYVc8qDaPNaXcI94HSphZ+ZMKQdWDH+0j0usST36YMK+7vlEgnjwOhaoV XnJg== X-Gm-Message-State: AOJu0YxWxwu+jZUrw6rSyUO6ubu/+aZ2S5pZAHuZ3DxQPj9Iu0XhNRVA NHcbUPTN97zC+g9LmkAunYc/4ySYKsUkPMF4c4ipsSaurEwb+COt+Q+/eS2YOWyWgadF6E3Gvz5 QLDQhNTPJiIi7GuwYPF/ouw9pdnGHeqqEmvP9ppZM5FDbRekpt/Frm0Ue X-Gm-Gg: ASbGncsCcFVse8sSHXXfbUtONpm5Fd6vdOApstPhdtVTcqrx4cDJtIOzdBhYepo5Be1 geJxQ0+Bl0y2nYJcxF3DFRmuGtDEqNFbOsktJ+Ne+7EdaZMWmQ9HjsUGdt/3X26MM4qrt4wS2CS CiGPZ2rwVU1mqRNggmlBS1ZsM/A+QNA8riqt5ALdQKBKHTS0PUm+/5XU/aaJ0cSkkZmv8t6HRer S+EYrWQH8dPFgZ+48CisDBTuwaGA4UMjgCm3uX/o7C7Opsi2NZWQfhgQb1kAUg8q/vJe4vh6uAM x2joxZzqMFJdtLaJ2+HcTwunsvTcLENRx5IBcrPOuC32/ST0Z1SmOg== X-Received: by 2002:a17:90a:fc4f:b0:325:8fba:708d with SMTP id 98e67ed59e1d1-3275085db6cmr19128348a91.18.1756497880481; Fri, 29 Aug 2025 13:04:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHgxvP8ns5R0YWDPu/saa6ZtVs08PC4P1eKJfga9WhW3stQRNH6XdbyEcYVMqRcKMICqey6pw== X-Received: by 2002:a17:90a:fc4f:b0:325:8fba:708d with SMTP id 98e67ed59e1d1-3275085db6cmr19128298a91.18.1756497879866; Fri, 29 Aug 2025 13:04:39 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:50 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-10-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4798; i=armenon@redhat.com; h=from:subject:message-id; bh=mjhvRtOfCNflzXKsd7LfnW6aMa0TrUuxLNhD6rtfZNc=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdt8CjnwHG1NThjs8yZ2fEo5KGJmrXykIr5+kpblM4 fSVOY86SlkYxLgYZMUUWRq+Bsg2BRRGRNq+vA4zh5UJZAgDF6cATOR4IsM/1SUTyjzeTl3I2SoQ +zVm4tb3qvG9MZZVGqcnnWmcX7asnuE3m5vSn9Xqny0drOPWcb+1uB99uTZ6zTUF4d2OsdKJe3e 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.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: 1756576291567124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_section_start_full() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/savevm.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index eccb3f63f8dfc070263a1d19ec3415684e8fa60e..01e1a9739aa784d90f80bf2b561= fd62f5e4678f8 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2722,21 +2722,21 @@ static bool check_section_footer(QEMUFile *f, SaveS= tateEntry *se) } =20 static int -qemu_loadvm_section_start_full(QEMUFile *f, uint8_t type) +qemu_loadvm_section_start_full(QEMUFile *f, uint8_t type, Error **errp) { + ERRP_GUARD(); bool trace_downtime =3D (type =3D=3D QEMU_VM_SECTION_FULL); uint32_t instance_id, version_id, section_id; int64_t start_ts, end_ts; SaveStateEntry *se; char idstr[256]; int ret; - Error *local_err =3D NULL; =20 /* Read section start */ section_id =3D qemu_get_be32(f); if (!qemu_get_counted_string(f, idstr)) { - error_report("Unable to read ID string for section %u", - section_id); + error_setg(errp, "Unable to read ID string for section %u", + section_id); return -EINVAL; } instance_id =3D qemu_get_be32(f); @@ -2744,8 +2744,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) =20 ret =3D qemu_file_get_error(f); if (ret) { - error_report("%s: Failed to read instance/version ID: %d", - __func__, ret); + error_setg(errp, "Failed to read instance/version ID: %d", ret); return ret; } =20 @@ -2754,17 +2753,17 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type) /* Find savevm section */ se =3D find_se(idstr, instance_id); if (se =3D=3D NULL) { - error_report("Unknown savevm section or instance '%s' %"PRIu32". " - "Make sure that your current VM setup matches your " - "saved VM setup, including any hotplugged devices", - idstr, instance_id); + error_setg(errp, "Unknown section or instance '%s' %"PRIu32". " + "Make sure that your current VM setup matches your " + "saved VM setup, including any hotplugged devices", + idstr, instance_id); return -EINVAL; } =20 /* Validate version */ if (version_id > se->version_id) { - error_report("savevm: unsupported version %d for '%s' v%d", - version_id, idstr, se->version_id); + error_setg(errp, "unsupported version %d for '%s' v%d", + version_id, idstr, se->version_id); return -EINVAL; } se->load_version_id =3D version_id; @@ -2772,7 +2771,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) =20 /* Validate if it is a device's state */ if (xen_enabled() && se->is_ram) { - error_report("loadvm: %s RAM loading not allowed on Xen", idstr); + error_setg(errp, "loadvm: %s RAM loading not allowed on Xen", idst= r); return -EINVAL; } =20 @@ -2780,11 +2779,11 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se, &local_err); + ret =3D vmstate_load(f, se, errp); if (ret < 0) { - error_report("error while loading state for instance 0x%"PRIx32" o= f" - " device '%s'", instance_id, idstr); - error_report_err(local_err); + error_prepend(errp, + "error while loading state for instance 0x%"PRIx32" = of" + " device '%s': ", instance_id, idstr); return ret; } =20 @@ -2795,6 +2794,8 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) } =20 if (!check_section_footer(f, se)) { + error_setg(errp, "Section footer error, section_id: %d", + section_id); return -EINVAL; } =20 @@ -3100,7 +3101,7 @@ retry: switch (section_type) { case QEMU_VM_SECTION_START: case QEMU_VM_SECTION_FULL: - ret =3D qemu_loadvm_section_start_full(f, section_type); + ret =3D qemu_loadvm_section_start_full(f, section_type, errp); if (ret < 0) { goto out; } --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756570504; cv=none; d=zohomail.com; s=zohoarc; b=cYB+/3ahgZT6NQurstiBGTIyyAXhe/ZjCDBQIRJ/g7KoiTeIRn7o6aYk2K86vKDd1YXj9OQoxgAaGLXuGyLx+i1b8aADSbrASmwHG5dAYAz7BP1BLcAUkpzXfQ9XBRoWPWTArzcTWHciK3bTw1c3tstALKQDyqU+AdhwPXQPukg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570504; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Wm02YWFPgXK6tLalWRdl7gepF4qWtk92F6eyDxpJHBE=; b=ALABCeMDwaSZrjiMd04vzrBhm7oNKyA4K82R8enHqApnBjjG9amoW1bPRG32W1hwIYkSAXBeoEw03CJ6xLoiatH2SXoz0Ik5VO2zhQTTHdELL2fSty3BJvklBo3/y7yiPjtxzgztAWhSZ1KIcV4B7Zs48Hf0duSBGLbH3wAmUXA= 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 1756570504178305.4463650961736; Sat, 30 Aug 2025 09:15:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNcu-0000tM-Op; Sat, 30 Aug 2025 11:36:25 -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 1us5LV-0005Wt-9u for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:13 -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 1us5LS-0004x3-75 for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:13 -0400 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-108-xxBHHK7OMbC31dCVouphoQ-1; Fri, 29 Aug 2025 16:05:07 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3259ff53c2eso3589053a91.1 for ; Fri, 29 Aug 2025 13:05:07 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.04.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:05:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497909; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Wm02YWFPgXK6tLalWRdl7gepF4qWtk92F6eyDxpJHBE=; b=eHq1xw9tq5jUwlNmIm5jqkM1bK0tzqrhpfVou42+H1rJDVAcXJHXiZrrxFxr/NVqIKkvlE N7z0drgMKlFbQgf1EfQesVprn8y+BvdRzAeDs3qo3qvcoLuBPevwEEOsT4TwCEaJPAb6A/ kdryxZMRIcuj2JB+TbanTbzHrDeXMpE= X-MC-Unique: xxBHHK7OMbC31dCVouphoQ-1 X-Mimecast-MFC-AGG-ID: xxBHHK7OMbC31dCVouphoQ_1756497906 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497906; x=1757102706; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Wm02YWFPgXK6tLalWRdl7gepF4qWtk92F6eyDxpJHBE=; b=okKN5cCYlqMZmXelrVmeUqQtZ1aHX99KO96LEM+csHBKtqUgkKsegmA2g461G6h5j3 BDRKxbpwSdT5IQsyz+19TOK/i7H34VUrGpDOrf5iu2h2UVA0gr5VmWmwTRKZg05mR9Xo 644smQz8OW+kwi9KCaITDABLp4OtfFMUOB/NJ+mjnqw6vMeRhpxi6FevvAVT/CG95zsD U3YAfKKPLiGm0h7SEk4H4/URf82eh4Bdd2Q5otg7tS6VkqeHRr6AzqI4qcHkl3INZdMt e49OBTrRLvejQ90KXMAlq3xme10Lxrhg8h9M5RKeupY9e8Edta1ZSLh85prThS0bnDSH gdpA== X-Gm-Message-State: AOJu0YzFRFLbgczIPsH1/lPs0+8gjyOIPg26Szh3CxP6H+/gzcXmC9mt O2r0p1mxXSgOyEsjrXJdmppMH/txjRqlijrCXFey0RI95+to5mrzvlZtWxotcPf6gkNxXdqSe53 rPFRwpWyU2iCycAdLm5zbTx1ivvt5vTWOP1+fHUao0FMtCtz2a+ohOOiN X-Gm-Gg: ASbGncv8dbcOvJikgcpikdDbIY2jLfPtWzXtEoXSIyoluQUdeK6MHw/lMC5ghxr4eOA MGvuO2DKlHkCZKlyuVUCNbgiJuW6IhjDQylHCOso1ZJ1myUMOhHYWFDNRDdqoWRxQpd3uRGUmDB ozf9ORd7r/eqPY1leU323z8W98piYRQAnIplbx/ymmUiLLSEbnjidOomkInQkgSV7pIOFWVjvKn 1EY1EnHmdiuHXEO7m6YXiefpqiv4LauNjERc+SLDUk1WesIWO3pCs6ctImt1D9O/r3Qke2XALMo kydpo1tWfDMsi2vFnEbuMoOcaxbHOJooRVtXviMvGm2wJaexo6F5yA== X-Received: by 2002:a17:90b:5627:b0:31e:ec58:62e2 with SMTP id 98e67ed59e1d1-32515eaafdcmr40744262a91.19.1756497906038; Fri, 29 Aug 2025 13:05:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGlLHP+tT/LriDsdFC737V2EcYVvDdYR+0Tbu/PHzwEggq5Qw/fGkv9NeBWXVjw8VDQTAu+TQ== X-Received: by 2002:a17:90b:5627:b0:31e:ec58:62e2 with SMTP id 98e67ed59e1d1-32515eaafdcmr40744196a91.19.1756497905451; Fri, 29 Aug 2025 13:05:05 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:51 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-11-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3094; i=armenon@redhat.com; h=from:subject:message-id; bh=CgLPVCj6slw8FkUxePJRDJzlIhYmWPhKwDSIMzJ0/CA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdl/Wz1qhOT+auW8d+f9ap8nmVEhhjPdL9elLNTIWq 6xUT9/ZUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCKxfYwMB3VWZS44I7HwT/Id jy23q1+evpa53SNFfdGSSl+3JxazLzL8M4097hE54+Zc3/a+Da3nju5385pxLfMur13Z70zdDCM FHgA= 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: 1756570505995124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_section_part_end() must report an error in errp, in case of failure. This patch also removes the setting of errp when errp is NULL in the out section as it is no longer required in the series. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/savevm.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 01e1a9739aa784d90f80bf2b561fd62f5e4678f8..c8234f2ef7f413b207aebae7192= c82f1f4d6d91d 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2803,21 +2803,19 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type, Error **errp) } =20 static int -qemu_loadvm_section_part_end(QEMUFile *f, uint8_t type) +qemu_loadvm_section_part_end(QEMUFile *f, uint8_t type, Error **errp) { bool trace_downtime =3D (type =3D=3D QEMU_VM_SECTION_END); int64_t start_ts, end_ts; uint32_t section_id; SaveStateEntry *se; int ret; - Error *local_err =3D NULL; =20 section_id =3D qemu_get_be32(f); =20 ret =3D qemu_file_get_error(f); if (ret) { - error_report("%s: Failed to read section ID: %d", - __func__, ret); + error_setg(errp, "Failed to read section ID: %d", ret); return ret; } =20 @@ -2828,7 +2826,7 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) } } if (se =3D=3D NULL) { - error_report("Unknown savevm section %d", section_id); + error_setg(errp, "Unknown section %d", section_id); return -EINVAL; } =20 @@ -2836,9 +2834,8 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se, &local_err); + ret =3D vmstate_load(f, se, errp); if (ret < 0) { - error_report_err(local_err); return ret; } =20 @@ -2849,6 +2846,8 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) } =20 if (!check_section_footer(f, se)) { + error_setg(errp, "Section footer error, section_id: %d", + section_id); return -EINVAL; } =20 @@ -3108,7 +3107,7 @@ retry: break; case QEMU_VM_SECTION_PART: case QEMU_VM_SECTION_END: - ret =3D qemu_loadvm_section_part_end(f, section_type); + ret =3D qemu_loadvm_section_part_end(f, section_type, errp); if (ret < 0) { goto out; } @@ -3132,9 +3131,6 @@ retry: =20 out: if (ret < 0) { - if (*errp =3D=3D NULL) { - error_setg(errp, "Loading VM state failed: %d", ret); - } qemu_file_set_error(f, ret); =20 /* Cancel bitmaps incoming regardless of recovery */ --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756571052; cv=none; d=zohomail.com; s=zohoarc; b=UbIYqrI6oQGpq//uZnB9gNZnzoUw/VPQBh+Xt2S3oIHNJmaTRAlf8aUkX9hH6M8ixBWJAjswN6QwTAsbRYtIP+ELsirEoalbwMEpuDAz/rgvc/XWivfBCXtoTqJlujDc/Ehcpc/RcHOiVrxwHjO4AFjcfIxF8FJraiuAWaUn6rY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756571052; 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=Jz5BpGNEzo/txk0fwJKaeZgorVoPWniz9Wyv+M1UrT0=; b=CduRscBghK97thH+q9YRO6BoqUZhFi/5qbT3YDaUMTfidFFEmOJ/vW6fIQk8CJXQwTWQDQpUUdxtncNQPJqYF8z/iaPKTd/+RwsDAmY5xaZVz+4jXqkK+BCZjAc/y1HHKTdbXKMezaWmeZ3pJ2u8YSyTdZzCa0C7dZLS8fxJ7SY= 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 1756571052251619.0492534743456; Sat, 30 Aug 2025 09:24:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNf1-0005GU-Aa; Sat, 30 Aug 2025 11:38:35 -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 1us5Lr-0005mM-Rf for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:35 -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 1us5Lm-0004yb-Pi for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:34 -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-562-Wmpla72iOWOyYRB54y1eeQ-1; Fri, 29 Aug 2025 16:05:21 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-327b289e8easo2185052a91.1 for ; Fri, 29 Aug 2025 13:05:21 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.05.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:05:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497922; 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=Jz5BpGNEzo/txk0fwJKaeZgorVoPWniz9Wyv+M1UrT0=; b=K1GfM0gm3be9PQpteR1pATKumhVvtrv7Xcf+TZf49QAF6HCEBn7LbkVppVs37djqQk6ixG jk5ec40hBrrvd7p5NBXGdOU5JwfjyK/6/UJx7QWyQdXbvvqbrBkVGTKc+rvb9EprxmXoiV 0bBjeZtJnQUD9aSLTCR6NZCxTl5/bro= X-MC-Unique: Wmpla72iOWOyYRB54y1eeQ-1 X-Mimecast-MFC-AGG-ID: Wmpla72iOWOyYRB54y1eeQ_1756497920 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497920; x=1757102720; 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=Jz5BpGNEzo/txk0fwJKaeZgorVoPWniz9Wyv+M1UrT0=; b=GDvJInb2BxYHcWcCCIZ+kQsqQIVLP/afOVImqIkLLuTThJU8mhnwNnhOvmk21zOZl+ Z3+/MLE+MGKiSMvcvcp4Odf61FnogbZTE74uQ1DIhoM1QRChX3swZZ/MxXhVOKZ+++jD zmmY6HwwT6ju+P8MIBsU+ECG6aWaT8fg1DkL+IG/Sz8kyXho3Gax1vhkZyNGNpA2i17W Y5wPSi9AbFeXUpeFUd5V6sGZadO0J3WUSx2wu8PzfSHcvowlXU0x56mHhySvWi+PgTxh QAJgPbkAVmO3LLKY1a4RzpvPKGnFvSNecRNC6LbSTfQiQEqm8b1SvVA+hRP1EsnELBgn v9ew== X-Gm-Message-State: AOJu0YyeO9bYpfFgjlG8xYSC+FbBNK8fm9E3G2GQ7Siry8KoSb0fBvkG EjZ6mH4FQY7pq/hVReFpQMbzwaTQnY1unaku+4RkeaswkInzFlN/1tVAhJDGjjrX86n1AgRY5kg IjRrXzPRokGb/aOM/QJ+TCNdmCzThszPKSmlJfCtbOt3mRpRzW2j7yMjQ X-Gm-Gg: ASbGncss0XWb/dUENEWNvf7Xq1AKQ7hhLOAiMWQfw96KhpPq/bRvyuDnXLAkF6nbZxC fsdjhd64SvFJPVdfOTKTxWYlHYOH+3TptT+jQ7DHb00hjpFj10ra/p6WTbaZavUagQIbEsGHZTZ pw4RCvUq3V0X+fefB7kYAkWZs+IXEaEosLtw6DGuJp076KCZiYjKP2zOYQfqJKjYeEo/PKxsctv /D/+jaPbVzXWUY5P+6OfkwggGTTWT3E61wf4U7na/8HdgI7Kb0gmHU5deBoc2dnCoUyY+egKT24 O7EItFu5hAf7cKBShzWDuqSobpOGxSMx/VkJ/y3bxAML33NELiK7Tw== X-Received: by 2002:a17:90b:4e87:b0:327:734a:ae8c with SMTP id 98e67ed59e1d1-327734aafacmr14669209a91.10.1756497920005; Fri, 29 Aug 2025 13:05:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFGN3T+VDS5qm4suy07Tcc7/56fOvY6Eok6DyW8tUvsG7+AKLnAHJmdWajntXIIPDS6fyOrBQ== X-Received: by 2002:a17:90b:4e87:b0:327:734a:ae8c with SMTP id 98e67ed59e1d1-327734aafacmr14669147a91.10.1756497919518; Fri, 29 Aug 2025 13:05:19 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:52 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-12-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3908; i=armenon@redhat.com; h=from:subject:message-id; bh=2JbqiM5+ARKDi5QVvK8q/nOAQN+0N3zVUkcy/4NxTCk=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdl+nNUarONy0uT7ffHfa1Sek5FlqeNz5PrcQ0/9cA f5V1RwdpSwMYlwMsmKKLA1fA2SbAgojIm1fXoeZw8oEMoSBi1MAJpLzj5Hh4bP08qCbLTcOtzuZ zinYc0jwoOGhr7LPnmV8rlj0b8oNXUaGwwl7/gbI7LziEXrvXQbjYYniHc7P5Xo3nnVy3el6a89 LTgA= 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: 1756571054170116600 The documentation of qemu_file_get_return_path() states that it can return NULL on failure. However, a review of the current implementation reveals that it is guaranteed that it will always succeed and will never return NULL. As a result, the NULL checks post calling the function become redundant. This commit updates the documentation for the function and removes all NULL checks throughout the migration code. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/colo.c | 4 ---- migration/migration.c | 12 ++---------- migration/qemu-file.c | 1 - migration/savevm.c | 4 ---- 4 files changed, 2 insertions(+), 19 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 642d17487d92c0a9508e599ca3bf524e80b6fd46..07a32044b58541eb9bd7c5e63eb= 6ca598f8a8933 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -847,10 +847,6 @@ static void *colo_process_incoming_thread(void *opaque) failover_init_state(); =20 mis->to_src_file =3D qemu_file_get_return_path(mis->from_src_file); - if (!mis->to_src_file) { - error_report("COLO incoming thread: Open QEMUFile to_src_file fail= ed"); - goto out; - } /* * Note: the communication between Primary side and Secondary side * should be sequential, we set the fd to unblocked in migration incom= ing diff --git a/migration/migration.c b/migration/migration.c index 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 c8234f2ef7f413b207aebae7192c82f1f4d6d91d..d54028b1be4d7a1e4615c2b0561= 1535bd7478e2b 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2588,10 +2588,6 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return 0; } mis->to_src_file =3D qemu_file_get_return_path(f); - if (!mis->to_src_file) { - error_setg(errp, "CMD_OPEN_RETURN_PATH failed"); - return -1; - } =20 /* * Switchover ack is enabled but no device uses it, so send an ACK= to --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756576770; cv=none; d=zohomail.com; s=zohoarc; b=ZBhWKnXC25Eko04D0u+OOP+yi3lIhmoRktxSnbtngJ6HjQGOD1+FY9d/odQMh28t/wos2sRqN62evruDr1r0ohxtOO5rymakeKo8V9UdUorv2UN9YkDgbYrxWPd90ttoE9z+HWG+bJDXaiQ1dVgW1WO8EAwott9n+mWnSNTTUmI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756576770; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=E61UbPQ98vkxoeM+8ySKgPLne5BO/4Y70dZrTRJJ2TY=; b=SFkD4bUBDdliylZSbm/jPmMWiw99ZCu/QvF2+LSJT38RIGEjUj7iTcj/TNMG/dqW9WKCERLZXPMEWDRcn+4Qb22YeXsUNDSakKBbTQwPeVjrZYbOfyU5p5ACeXP9dYjSBzyCclQ1jAtQZx4Z+Hbbaf65cfnFPg6nnWRK91pGIZ4= 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 175657677088067.73620463683233; Sat, 30 Aug 2025 10:59:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNdN-0001iY-VL; Sat, 30 Aug 2025 11:36:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5Lu-0005nt-ID for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:38 -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 1us5Lr-000501-Kv for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:38 -0400 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-631-wLP9lAiuNjaHeWe59bCA8A-1; Fri, 29 Aug 2025 16:05:31 -0400 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-327706e0642so4042168a91.3 for ; Fri, 29 Aug 2025 13:05:31 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.05.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:05:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497933; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E61UbPQ98vkxoeM+8ySKgPLne5BO/4Y70dZrTRJJ2TY=; b=Zp3z5ruN9KWOKMJMNX3KB1mOxQ6VksEIooK82U9IAy30UaXz345elSncu5E3FklCDrm9P1 KA8Q3fig08DmKffwJtbFawVmB9dkjWTIjvznjGfWshpc8xRkyBWXGpKZWdqLBNeohDV9Co Wz1d+EmL9n0o4DuTWfsFtBGXMQypvH4= X-MC-Unique: wLP9lAiuNjaHeWe59bCA8A-1 X-Mimecast-MFC-AGG-ID: wLP9lAiuNjaHeWe59bCA8A_1756497930 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497930; x=1757102730; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=E61UbPQ98vkxoeM+8ySKgPLne5BO/4Y70dZrTRJJ2TY=; b=UFQ031dcp6/h2fQqwCgW+bOkVYHuFAvAbwK4tr40Ii4HeWSggaStVGO91ynimQD44J k5MqBVrI/cy+5N0s6KLDfTdQmAVRiZzcW2Pz3YrYV8M8aJddno1HRmMeD78zw725zS1T 8C683iKPeqYNkLQJvqvAbQ1SAtmPy3OWC24DclRwh0aq8jguLUtBlrpvi9jZGoJfYoT8 jGJful681Dav49n2EYhMfvZvnthow9g7powDyjRiDQ+okOkejygkJWt0rR6uAMKIYeXG n/xY3fsOhME8gxb5rlVlLt0u4oeABy+vDN6FiI+hlYiEFhDD0yds65RATWqgPtyAiuut ZgPw== X-Gm-Message-State: AOJu0YwtQqR8cjmZKdSwS9db+xQBZGIAp32t3ZCZtutTRrYj8XC0z8aM QfRW+DkX//K9I73UePDmpMMvWx8HN7wvVJAQAvlL92cVzSBrqYfIPZScnBzlbPgXacEEsZ2NtYO 15RjayjEYjWPOKkP/cPwDdembok9n9myGkFpYQdtiB6AnFqOV4lkvJSw+ X-Gm-Gg: ASbGncvRvGac+pxMFT34uNhMBvJbUGvFjof6WIE008qh7zhCXMNrRXaFzuHks5UXArU 4Jr8ppNWBNt9BR5jU6uElC7DZBTc9MR4psFbclz474OTMnlEqASzmDVj9OmULC+RJzOjl+Yafgs D0mx0Ybp4FJyorJ2qvX/oY1MKuq8xeKis1QtqReDhlJedjKYpl5kPKpxzV4pVihkgY4y8ITsoTB CRJAl7mgMrm4ORsKtnXipB0q3T3yLzPFOmQZ9U1u3M4xXE82gmIiARxH58Io58yJfEhLlchrWC5 Mbcl7zFIk+nWTfJMr/bLROMNyMRHT4nsrR/htQS9bYlJ7o/YkmkOlA== X-Received: by 2002:a17:90b:3b43:b0:325:c492:1541 with SMTP id 98e67ed59e1d1-325c492175cmr22835607a91.28.1756497930079; Fri, 29 Aug 2025 13:05:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGuX/BrZGUS172oogpgm5e6mzBTOhZOlFtQqbEyr0ARMKNzXC53YQE91AW8LSA472NHdtRa3Q== X-Received: by 2002:a17:90b:3b43:b0:325:c492:1541 with SMTP id 98e67ed59e1d1-325c492175cmr22835556a91.28.1756497929609; Fri, 29 Aug 2025 13:05:29 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:53 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-13-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2052; i=armenon@redhat.com; h=from:subject:message-id; bh=J3tCTCrF6nSfsNZa6QUxbIzpTTI6Us9gYinavq3Uol8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdt/ciOUuZSfElEo/hXLe3BQ6kSdq/bYj2WuSj8tua 9a+xj2to5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwEQEWhn+6R77/EEq7FXO3nf7 zm3VmHqp6XfGp8+yyx1EUw96Hv9wQ56R4eiDt8fvT94s/2CP1Fl31e1uIpY/1ig2WUyT+msyJ2z 1TiYA 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: 1756576772486124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. Use warn_report() instead of error_report(); it ensures that a resume command received while the migration is not in postcopy recover state is not fatal. It only informs that the command received is unusual, and therefore we should not set errp with the error string. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/savevm.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index d54028b1be4d7a1e4615c2b05611535bd7478e2b..c079942b7ecb959b3b668b97717= 4d906f73c2777 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2334,12 +2334,12 @@ static void migrate_send_rp_req_pages_pending(Migra= tionIncomingState *mis) } } =20 -static int loadvm_postcopy_handle_resume(MigrationIncomingState *mis) +static void loadvm_postcopy_handle_resume(MigrationIncomingState *mis) { if (mis->state !=3D MIGRATION_STATUS_POSTCOPY_RECOVER) { - error_report("%s: illegal resume received", __func__); + warn_report("%s: illegal resume received", __func__); /* Don't fail the load, only for this. */ - return 0; + return; } =20 /* @@ -2391,8 +2391,6 @@ static int loadvm_postcopy_handle_resume(MigrationInc= omingState *mis) /* Kick the fast ram load thread too */ qemu_sem_post(&mis->postcopy_pause_sem_fast_load); } - - return 0; } =20 /** @@ -2647,7 +2645,8 @@ static int loadvm_process_command(QEMUFile *f, Error = **errp) return ret; =20 case MIG_CMD_POSTCOPY_RESUME: - return loadvm_postcopy_handle_resume(mis); + loadvm_postcopy_handle_resume(mis); + return 0; =20 case MIG_CMD_RECV_BITMAP: ret =3D loadvm_handle_recv_bitmap(mis, len); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756570213; cv=none; d=zohomail.com; s=zohoarc; b=DCFmyvc1n0Cme2omPzq0QSfXmWyacs+ENQN2Mce1UClrepRiTPJ2OxQy6udvP7EkvKN7cl7yf6JLJTrYaiMJN3vh0bzkHXP4d10Z5g2N8TcnisGd/QlFjD0ioaIooPU1R1yESP3ERMq0svFIQhvHs1pJ3raOuE1kL9HBFV5l6pc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570213; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sTWUNM+v16RdqicPQUSVUg/HZymrt0SY9y6hBqA0bZE=; b=I/jHy/fmROzSkneUhqqVVs4/909cE5B2Rz3Wio8qlnXJ+astb6Gv/MT9+tvjS3m9HfswlyLlx4HwSIdyITu/nsk5ZOOV6D5m3FpphjGdUkyPiGxaKOL4+sLfTlRcAsYDfT2EqhORMpSyuKxElAEGjjl0B+NMdSi9cOuLshiwRsI= 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 1756570213380203.87267361719705; Sat, 30 Aug 2025 09:10:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNf7-0005f2-5u; Sat, 30 Aug 2025 11:38: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 1us5M1-0005rV-Rs for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:46 -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 1us5Lz-00051o-Jp for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:45 -0400 Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-464-r03f-ciVP_aZeFkpSEAwyw-1; Fri, 29 Aug 2025 16:05:40 -0400 Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-327b289e88dso2294182a91.3 for ; Fri, 29 Aug 2025 13:05:40 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.05.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:05:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497942; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sTWUNM+v16RdqicPQUSVUg/HZymrt0SY9y6hBqA0bZE=; b=R7qHIomNg9/HNnucYYOIOJ1sYN22fo1zYrQ4ktEb27TNzm+OtlVDaKWOoq6NuqYkxuoK/W s0q7OXeN0ssDD/xF34xP1X/hkbgW+Hy3NCGxF4kkhQpEuQSdvNHBkoHCs4ZftGrEAHO2NL OlpOaYOqnZ/rnplEKFBaw4j+o0Eu+LQ= X-MC-Unique: r03f-ciVP_aZeFkpSEAwyw-1 X-Mimecast-MFC-AGG-ID: r03f-ciVP_aZeFkpSEAwyw_1756497940 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497940; x=1757102740; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sTWUNM+v16RdqicPQUSVUg/HZymrt0SY9y6hBqA0bZE=; b=B6rFk/L+QV533WTIJ1AXBElWh/5pyOgu+Iyep2mZljz1L9LJ7WYZVA/knkop8Xp+bd 497VvtAGl7Klyw5C93QrjHZ99dkJ8PQfXW5pLYDnvW3pz12GSUz6xcb6gBncwvCyq0UH 8bF3crR/qLZ3LaDOPEnqlTBCMsK7IIBrFgFkGxRH/pTwzS1ie4JsGtKda8u/On5k7Xmw zXHcSjZXyZ164zJkExWUqaMThwu5WfFB3CqgW0JDVAdeLN6EOfs4J8P98tydj5v0PUVB ZXuwcpow0D0iCguhtOUTIukt1wX1BhT5azh6vkiopp+rxFGsiCmFc5YtslwV9gdBO5QQ dcAQ== X-Gm-Message-State: AOJu0YwPOBvAImTnjL8XUMJzK0rDATdYCJmJNcTds8W2cVnMxWWx8CrW ESGQNPe1XSAlAgLV4iBOniR4dnJCYEV+eUTBIJnfynEaQ6Sd4zBMkkRBU2kxKMgjQBaEhEB/GPO T3285ZMAGiZ3tBHWdHX+mCwnRiXxwzKUpNuxJq9UCexUk22gTv2PHfpSy X-Gm-Gg: ASbGncs1ivsqiSJzIvXe3lwF9RqjkrC+gsPLaVa7AZiqkPPClxQIX9UflduQr2NzYca Q+V07MoYQ3GbNBXruSbt8VMT3FfdU0c4u/0+FalHwnL0NaagJ2fnUZtBr3ddgcP0UUB1Sw/Wb2+ zdUDUVf70WRrEKaeWg6Xbe9K8Jp6B5EsQSWT1W+jymsMzEB6RuzbfcyhFBy6aM10eZsYA1anoiS 6V48Gnn9pVTXVrfoDG/dEHX2ohmesCxbVWPfzkbDSt+hn6wXtRPRE/Nxoc7W/T4yyWDU+BdvTd+ 2WqaMiU4iNqypHIwjOjxqXLTC20ttd38XWC7jzNZm1xgdmL+1MlJaQ== X-Received: by 2002:a17:90b:2c86:b0:327:96dd:628f with SMTP id 98e67ed59e1d1-32796dd64f9mr10922209a91.28.1756497939368; Fri, 29 Aug 2025 13:05:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEgVab+QOhAR+6X6vdJhhvygp82NI/aZxt1hAmYJpSx3vTSKy/iFMJANAZWdLV9cPqWoc1BhQ== X-Received: by 2002:a17:90b:2c86:b0:327:96dd:628f with SMTP id 98e67ed59e1d1-32796dd64f9mr10922176a91.28.1756497938950; Fri, 29 Aug 2025 13:05:38 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:54 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-14-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4806; i=armenon@redhat.com; h=from:subject:message-id; bh=NxHIEIcsn6ki3pjI+1SDVs7doJTeFpfWjxBGpIKPSXQ=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdt+fYf6c+Ze0zV//Kt/B9/9ebUWQTV3ztaVpfPms8 v+vPbnQUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCJJZxkZ2qxnV5b8CRU0a7YO 6v9f3m502JXvxO4Nl1+z571wz4rcysjwNXtttGeva0L340X1/N45wu88T1zQccm2m7LM8oCHYTI fAA== 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: 1756570214339116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that ram_postcopy_incoming_init() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/postcopy-ram.c | 9 ++++++--- migration/postcopy-ram.h | 2 +- migration/ram.c | 4 ++-- migration/ram.h | 2 +- migration/savevm.c | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 45af9a361e8eacaad0fb217a5da2c5004416c1da..05617e5fbcad62226a54fe17d9f= 7d9a316baf1e4 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -681,6 +681,7 @@ out: */ static int init_range(RAMBlock *rb, void *opaque) { + Error **errp =3D opaque; const char *block_name =3D qemu_ram_get_idstr(rb); void *host_addr =3D qemu_ram_get_host_addr(rb); ram_addr_t offset =3D qemu_ram_get_offset(rb); @@ -701,6 +702,8 @@ static int init_range(RAMBlock *rb, void *opaque) * (Precopy will just overwrite this data, so doesn't need the discard) */ if (ram_discard_range(block_name, 0, length)) { + error_setg(errp, "failed to discard RAM block %s len=3D%zu", + block_name, length); return -1; } =20 @@ -749,9 +752,9 @@ static int cleanup_range(RAMBlock *rb, void *opaque) * postcopy later; must be called prior to any precopy. * called from arch_init's similarly named ram_postcopy_incoming_init */ -int postcopy_ram_incoming_init(MigrationIncomingState *mis) +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp) { - if (foreach_not_ignored_block(init_range, NULL)) { + if (foreach_not_ignored_block(init_range, errp)) { return -1; } =20 @@ -1703,7 +1706,7 @@ bool postcopy_ram_supported_by_host(MigrationIncoming= State *mis, Error **errp) return false; } =20 -int postcopy_ram_incoming_init(MigrationIncomingState *mis) +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp) { error_report("postcopy_ram_incoming_init: No OS support"); return -1; diff --git a/migration/postcopy-ram.h b/migration/postcopy-ram.h index 3852141d7e37ab18bada4b46c137fef0969d0070..ca19433b246893fa5105bcebffb= 442c58a9a4f48 100644 --- a/migration/postcopy-ram.h +++ b/migration/postcopy-ram.h @@ -30,7 +30,7 @@ int postcopy_ram_incoming_setup(MigrationIncomingState *m= is); * postcopy later; must be called prior to any precopy. * called from ram.c's similarly named ram_postcopy_incoming_init */ -int postcopy_ram_incoming_init(MigrationIncomingState *mis); +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp); =20 /* * At the end of a migration where postcopy_ram_incoming_init was called. diff --git a/migration/ram.c b/migration/ram.c index 7208bc114fb5c366740db380ee6956a91b3871a0..6a0dcc04f436524a37672c41c38= f201f06773374 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3716,9 +3716,9 @@ static int ram_load_cleanup(void *opaque) * postcopy-ram. postcopy-ram's similarly names * postcopy_ram_incoming_init does the work. */ -int ram_postcopy_incoming_init(MigrationIncomingState *mis) +int ram_postcopy_incoming_init(MigrationIncomingState *mis, Error **errp) { - return postcopy_ram_incoming_init(mis); + return postcopy_ram_incoming_init(mis, errp); } =20 /** diff --git a/migration/ram.h b/migration/ram.h index 921c39a2c5c45bc2344be80854c46e4c10c09aeb..275709a99187f9429ccb4111e05= 281ec268ba0db 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -86,7 +86,7 @@ void ram_postcopy_migrated_memory_release(MigrationState = *ms); void ram_postcopy_send_discard_bitmap(MigrationState *ms); /* For incoming postcopy discard */ int ram_discard_range(const char *block_name, uint64_t start, size_t lengt= h); -int ram_postcopy_incoming_init(MigrationIncomingState *mis); +int ram_postcopy_incoming_init(MigrationIncomingState *mis, Error **errp); int ram_load_postcopy(QEMUFile *f, int channel); =20 void ram_handle_zero(void *host, uint64_t size); diff --git a/migration/savevm.c b/migration/savevm.c index c079942b7ecb959b3b668b977174d906f73c2777..a1b606318f2ae8feff42b759ad3= 08ebbd07318b7 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1989,7 +1989,7 @@ static int loadvm_postcopy_handle_advise(MigrationInc= omingState *mis, return -1; } =20 - if (ram_postcopy_incoming_init(mis)) { + if (ram_postcopy_incoming_init(mis, NULL) < 0) { return -1; } =20 --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756572228; cv=none; d=zohomail.com; s=zohoarc; b=IICPp6CQ3s4eNs6z0ZaGl/WlhAOjO+eMh3IGrb/F2Ekmg2lqott3hDRAboi0g9btonUofqZZ/s+3Wd/xvNObUBPo6cCL1LYRPes1X4XrzHR8dqAKA7kwrrKOAxeJuqvQQtkQy+9dgLPfApYxswu3qbOfYpifzJ9qf7sAiMgHWcE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756572228; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=k9sqDXkDqoF2sK/YqGONtbwmKp3jZKoCMKUxLstVdcU=; b=EflraoH0QnlbslpfxpwRJDmsS1HqowCo0Q7MBvBTK1UQPLDUfW2MbSBFAEhv0vlDrJxIfwEQ6M23YEPgyRq8445VSXRlhlIDZfGt4jbM/shMuCzR6OeE9/1vRFPgbfPvybJZ+z10KkDqHsMsybziYuQjE0Ff/EIu2/KTeKpece4= 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 1756572228160713.4294004669372; Sat, 30 Aug 2025 09:43:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNdc-0001p6-W3; Sat, 30 Aug 2025 11:37:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5MD-0005v1-Tr for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:58 -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 1us5MA-000539-MN for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:05:57 -0400 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-538-BM0k4S9uNi6yqAha-pNFcQ-1; Fri, 29 Aug 2025 16:05:52 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-327b289e88dso2294329a91.3 for ; Fri, 29 Aug 2025 13:05:52 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.05.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:05:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497953; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=k9sqDXkDqoF2sK/YqGONtbwmKp3jZKoCMKUxLstVdcU=; b=fEzhATkzHA2aImkYLG3UnsQun+U1pO3hCOVMLUhSb4EauSz2FRtvIiQwMkyZuhKsvo1/r2 4/rJV+Bp4ADxOLE7VsJMScX6rsq12ujMxhOQDo+tl6g74UtGmuREJgxqVMC8uG8u+S9JX8 zwUGF2gLcgoN5gbd/7TuMxH5+6lWfug= X-MC-Unique: BM0k4S9uNi6yqAha-pNFcQ-1 X-Mimecast-MFC-AGG-ID: BM0k4S9uNi6yqAha-pNFcQ_1756497951 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497951; x=1757102751; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=k9sqDXkDqoF2sK/YqGONtbwmKp3jZKoCMKUxLstVdcU=; b=sgokE1+gSc0mMk/IJ6nwmp6l5Ju44yVygf0EL7SkQskMaxJuH9TiZihenT6vvaIJLD 2Q/Xt6ARTwvTH39qdUf9s1Ortimr5+ABV1VLeo0DkYqTED2rcOtHrPYFWZK7IweEcMvb gpX2AfM/+Qpc56LAbJfe6MZCKQd7z6GqO41BbnO3lPuJrb9tT0x0/wu6aYUPcsbIA8/E o3xJ/Zyahve+UcksxCFdGMCJJ7ce4h8xZGt6vWpJwp5r74XtAalmD1MpWjP9cQCaeJxi cYFNdkjEuggu7Op1/OahXsF0F6y8hiugJ6W/AxxOjHxN08njaBxKWIRsVjC4ASC/7lyq hjNw== X-Gm-Message-State: AOJu0YzdGkevcBuTYv6tP0nLcOo6WedWRkuX1mgGY5DISOTlX6b3S1rk H+KTehK6a0lG/g2l9Krp9tLANhfnVSfjzICeo3HmNgW27Q3X4YZoYXf2qcCG1ci54HP9Ymqioba iXXCyoXTbh7ZKzXXDnvhS5+0CW1hBVGNb6OMo3beW8k5v2i794kFH99zH X-Gm-Gg: ASbGncuRs8XwfXE0CW94gAgarCJaI12CJnEjuehefQUNLf6ik+2wQm+j/Tk0/syhoxE Q37tVNqPoNA0yd4ibOx3zzGDvl2BNzN/jogGt8M0z9jsTxvGhnqtK4/7jkduKQAJvv8pnXEGL/8 gOf9r23rcXdfjA3pNYLskawO3apz10OB6o5S/e6EAG09cPF2/u8gDhGqkBuCqDAP8c21s3CQVDr 48bxaA47I+iJgx3MGNKz0LMPOwpRcSDNzZc1PYjIKKmeV3tGsZZ4ClUzfqBridRj09pza76GbNL ZLyTanXm6o//Hqs/FsaZpgee3sLHB9Ja0qFmRAvZlJuONWz7yBdohA== X-Received: by 2002:a17:90b:17c6:b0:31e:beae:2934 with SMTP id 98e67ed59e1d1-32517749976mr35533622a91.18.1756497951380; Fri, 29 Aug 2025 13:05:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGUTgyfBkFNBqM9oui5JhhrtQilsuvW2FzY8uWg+vJjyy/8WGXhyhbm8a3EJVw0hiLu5ccUDg== X-Received: by 2002:a17:90b:17c6:b0:31e:beae:2934 with SMTP id 98e67ed59e1d1-32517749976mr35533589a91.18.1756497950920; Fri, 29 Aug 2025 13:05:50 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:55 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-15-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4838; i=armenon@redhat.com; h=from:subject:message-id; bh=YIrBpYmjnNrlQEW0CrE8o05ulfKM6YeYARhM3eBobvY=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdt9lh13S1bgOB+kGm9wQid21NGyf/g57jZTdgf9yy kRs3O52lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmMjzuYwMD1RVnvD+Eb0X/I3Z +tCTMI5Cq2frtyiefTFT7Vj7u4tyTowMvYp3H/OpSd2c9PtQ3o3Hgc6KgZHfU7/HfVlfUTc9bCo rIwA= 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: 1756572231223124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_advise() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index a1b606318f2ae8feff42b759ad308ebbd07318b7..680f6e1c4bbc979f779d9fde28a= b71ae234b5891 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1912,39 +1912,39 @@ enum LoadVMExitCodes { * quickly. */ static int loadvm_postcopy_handle_advise(MigrationIncomingState *mis, - uint16_t len) + uint16_t len, Error **errp) { PostcopyState ps =3D postcopy_state_set(POSTCOPY_INCOMING_ADVISE); uint64_t remote_pagesize_summary, local_pagesize_summary, remote_tps; size_t page_size =3D qemu_target_page_size(); - Error *local_err =3D NULL; =20 trace_loadvm_postcopy_handle_advise(); if (ps !=3D POSTCOPY_INCOMING_NONE) { - error_report("CMD_POSTCOPY_ADVISE in wrong postcopy state (%d)", p= s); + error_setg(errp, "CMD_POSTCOPY_ADVISE in wrong postcopy state (%d)= ", + ps); return -1; } =20 switch (len) { case 0: if (migrate_postcopy_ram()) { - error_report("RAM postcopy is enabled but have 0 byte advise"); + error_setg(errp, "RAM postcopy is enabled but have 0 byte advi= se"); return -EINVAL; } return 0; case 8 + 8: if (!migrate_postcopy_ram()) { - error_report("RAM postcopy is disabled but have 16 byte advise= "); + error_setg(errp, + "RAM postcopy is disabled but have 16 byte advise"); return -EINVAL; } break; default: - error_report("CMD_POSTCOPY_ADVISE invalid length (%d)", len); + error_setg(errp, "CMD_POSTCOPY_ADVISE invalid length (%d)", len); return -EINVAL; } =20 - if (!postcopy_ram_supported_by_host(mis, &local_err)) { - error_report_err(local_err); + if (!postcopy_ram_supported_by_host(mis, errp)) { postcopy_state_set(POSTCOPY_INCOMING_NONE); return -1; } @@ -1967,9 +1967,10 @@ static int loadvm_postcopy_handle_advise(MigrationIn= comingState *mis, * also fails when passed to an older qemu that doesn't * do huge pages. */ - error_report("Postcopy needs matching RAM page sizes (s=3D%" PRIx64 - " d=3D%" PRIx= 64 ")", - remote_pagesize_summary, local_pagesize_summary); + error_setg(errp, + "Postcopy needs matching RAM page sizes " + "(s=3D%" PRIx64 " d=3D%" PRIx64 ")", + remote_pagesize_summary, local_pagesize_summary); return -1; } =20 @@ -1979,17 +1980,18 @@ static int loadvm_postcopy_handle_advise(MigrationI= ncomingState *mis, * Again, some differences could be dealt with, but for now keep it * simple. */ - error_report("Postcopy needs matching target page sizes (s=3D%d d= =3D%zd)", - (int)remote_tps, page_size); + error_setg(errp, + "Postcopy needs matching target page sizes (s=3D%d d=3D= %zd)", + (int)remote_tps, page_size); return -1; } =20 - if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_ADVISE, &local_err)) { - error_report_err(local_err); + if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_ADVISE, errp)) { return -1; } =20 - if (ram_postcopy_incoming_init(mis, NULL) < 0) { + if (ram_postcopy_incoming_init(mis, errp) < 0) { + error_prepend(errp, "Postcopy RAM incoming init failed: "); return -1; } =20 @@ -2617,11 +2619,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_handle_cmd_packaged(mis, errp); =20 case MIG_CMD_POSTCOPY_ADVISE: - ret =3D loadvm_postcopy_handle_advise(mis, len); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_advise(mis, len, errp); =20 case MIG_CMD_POSTCOPY_LISTEN: ret =3D loadvm_postcopy_handle_listen(mis); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756570886; cv=none; d=zohomail.com; s=zohoarc; b=oDEvnJ7uz4SPARjBmB7WuOwKqzPRuzJconakWnrEPqMOK1+pus62XbvB29q25x0HS1O/qqWTK18iU8yPStuIzeSAWgZFTGFK6b33x00GO5reKZf+NqwtFspNbMPohdNHFG2azSB1QOYNeWQ+6KCvd4JNOQP3c9oYjNCBD4ZvJtQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570886; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Za1NNvSl7uFr3wDIymXqGWcBuLkcyiqwtqIRxvI2IEk=; b=OZG8sBuQeM6w6T81NNuLPOFSqjij/vn037w2/AE0b9vFrtnEX/Syd+w7H3w/fpo2tt2pfUkV17Ti+uUY0XYnr04MLljHSg8cfkLAhEwjMbZzSxk4DVTNvncaw6xy4peZbeuwYusGCuAiO6jdTEAh3w9FQuckw2Ey6Dhmbq+mZgY= 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 1756570886227341.42286392931146; Sat, 30 Aug 2025 09:21:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNdy-0002QI-4K; Sat, 30 Aug 2025 11:37:30 -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 1us5MT-00060i-AZ for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:06:13 -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 1us5MR-00055V-IQ for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:06: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-122-L_w5-HYUNiCrkCy4KqIoog-1; Fri, 29 Aug 2025 16:06:09 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2445803f0cfso32569585ad.1 for ; Fri, 29 Aug 2025 13:06:09 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.05.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497970; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Za1NNvSl7uFr3wDIymXqGWcBuLkcyiqwtqIRxvI2IEk=; b=BsqtvSMeTuAsEBI3iFuXXSa6fwb1vhNv8fQTcS/1CdKEyhS+DuTQrXG8ia6sxWCZDRVTUr O44FADbBXDPnH6Cg984i9gw7ECC1wMgqJIbxmRu5qp/91/rC2/gg0+jkiEhvDMsQhHBv1l VQeHUmneEOpcAeesyp2YOmwIu09PNOs= X-MC-Unique: L_w5-HYUNiCrkCy4KqIoog-1 X-Mimecast-MFC-AGG-ID: L_w5-HYUNiCrkCy4KqIoog_1756497968 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497968; x=1757102768; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Za1NNvSl7uFr3wDIymXqGWcBuLkcyiqwtqIRxvI2IEk=; b=ZyJ1hUat9Nt+/CwDPRVyN8u0ff7AF+90N8J2IIQnEnrU0qTES3j0GfkOnzUyJZjpCl H/0mYwXIf3FDG2EaqeZIdaE6doqheEgytaIAwQuQcA0qbFiKChVbIyunl5MLhqa6vlyK 0zShvUCy0ldZERMs/BTPkKjwE7KKdEMUW1nXF34oz3vSYXm0HRiwlu4KlcbqgMcWBzZZ ORYl1ulWmep9nJP/zPVJsIkzLXqfPa3bLcipbFkLsiSTwW0Fh/7NCMYxXAv9UixP0Cjo SrgWJf3ZPDgK0l48kHyYFOxkqoh3ieZag9hJS69xbNaZcHYyu5oIZepGDyjtz0+eXUVr twmA== X-Gm-Message-State: AOJu0Yx5Gv3yBv6OphR6jUY1mLybPYgUEUwVgJuvjwxwwGrDSP4hGqFJ UXQnJRXRaIBXzkVxGEFdeggXj1i0qY4padFtVx2mcGfmcgq6FMEtvNtFwwhlqKhRYUDWWCLGCIG jraYRg3HIYSSR4nglbJlY1UXRFXlPLWhlLb0mOh4km5hb7febpHcEXYqH X-Gm-Gg: ASbGncu+FN9uyXe7HvXncurq06St+5qkEqHidkd4pzDnovJw7MKqMO9U3zoGPb/j/lF VszKn7MEcZB/zrAtqpAOAYwHIq0ekhmLCoG6JV1tXq1OOKmN2QW1iIkDyzCIBCiLcKIm3deFxW2 MfoUKZywSGpXr02hOqzzWtlN78tNNARPAG73AJVoLzoaib/Q8cZDSqalf14PHiXxQtyWoAe7abT Rjo72aSogNIZZwcZYX3s9KCjZaI7KibNV+XXGXsElmBn99CiDQg8Q0aksj159yRZLQbgd5nmzFi s/l7NRaRLOu7G1qLZEgHyJPUlbwknq2N98/mt2cy8WPrJBOvYrECqg== X-Received: by 2002:a17:902:f70a:b0:248:cd0b:3434 with SMTP id d9443c01a7336-248cd0b3913mr129256455ad.36.1756497968200; Fri, 29 Aug 2025 13:06:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHT7tKzYbbRW8J8wAF+R2djLZuIkTNdGT9d35QTNoUfyVKA94bY+WKbDKxn4qCNUkMWeLeCQg== X-Received: by 2002:a17:902:f70a:b0:248:cd0b:3434 with SMTP id d9443c01a7336-248cd0b3913mr129256155ad.36.1756497967838; Fri, 29 Aug 2025 13:06:07 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:56 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-16-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2751; i=armenon@redhat.com; h=from:subject:message-id; bh=BsaDnW57QysoXysSxJ9DH2reNuwbEbmWWZabpe2MJIE=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdt9JLwJUHvwKVtv0ROoTB8O2hbbNXMf//3c49zLV2 bvMzO1URykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIl81GZkaOcK4qyx78sPf/nT ZMa/hMn3Pzyu7Zv4TYvvYJW6/7+YCQz/4+6tu7eiutVfNsZv3S1T7Z/nvz2YcPna7FXXKjZMvzz nFQcA 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: 1756570888024116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_listen() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 680f6e1c4bbc979f779d9fde28ab71ae234b5891..c681d6d21af356a97645f2a0d36= e7440e3bd95c6 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2181,15 +2181,16 @@ static void *postcopy_ram_listen_thread(void *opaqu= e) } =20 /* After this message we must be able to immediately receive postcopy data= */ -static int loadvm_postcopy_handle_listen(MigrationIncomingState *mis) +static int loadvm_postcopy_handle_listen(MigrationIncomingState *mis, + Error **errp) { PostcopyState ps =3D postcopy_state_set(POSTCOPY_INCOMING_LISTENING); - Error *local_err =3D NULL; =20 trace_loadvm_postcopy_handle_listen("enter"); =20 if (ps !=3D POSTCOPY_INCOMING_ADVISE && ps !=3D POSTCOPY_INCOMING_DISC= ARD) { - error_report("CMD_POSTCOPY_LISTEN in wrong postcopy state (%d)", p= s); + error_setg(errp, + "CMD_POSTCOPY_LISTEN in wrong postcopy state (%d)", ps); return -1; } if (ps =3D=3D POSTCOPY_INCOMING_ADVISE) { @@ -2212,14 +2213,14 @@ static int loadvm_postcopy_handle_listen(MigrationI= ncomingState *mis) if (migrate_postcopy_ram()) { if (postcopy_ram_incoming_setup(mis)) { postcopy_ram_incoming_cleanup(mis); + error_setg(errp, "Failed to setup incoming postcopy RAM blocks= "); return -1; } } =20 trace_loadvm_postcopy_handle_listen("after uffd"); =20 - if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_LISTEN, &local_err)) { - error_report_err(local_err); + if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_LISTEN, errp)) { return -1; } =20 @@ -2622,11 +2623,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_postcopy_handle_advise(mis, len, errp); =20 case MIG_CMD_POSTCOPY_LISTEN: - ret =3D loadvm_postcopy_handle_listen(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_listen(mis, errp); =20 case MIG_CMD_POSTCOPY_RUN: ret =3D loadvm_postcopy_handle_run(mis); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756572411; cv=none; d=zohomail.com; s=zohoarc; b=UreWzdMXCfPG56u/r72t5WUwfyC6A3uIPbYy3h7YvMO62UUCwvserbEF6Ynw8aGi2DltthnmdA2oONJLRb+kjPWOqrWX5x4BYARfq4HxlqeVLlNxc+U0+lDTJXHsA1/U9i3oVb8rRSaCE0jkRWb51aQvtxclKbldhWrmNBYYYFE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756572411; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EK8ZniS31eKfAuecJyHjMuA5swX2F7mkJn3tAORFulo=; b=N7OozuIO25iH2I9fxKn3C7enpeT9uTXD7G2/nsF5ZiEiHIlXnsedkz4jlh4G4Mj24L/sD8iSHMxahlMT/VsFSG0eKKKBqo5INMB2BXMGY4KTX8tLbe+pQ73A3LRwGZ0zCGiF+WgJSx/HuU/1diARILOZ4HMak1579u80RaQ3Mqw= 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 1756572411773815.5581739011444; Sat, 30 Aug 2025 09:46:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNe8-0003Qf-SY; Sat, 30 Aug 2025 11:37:40 -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 1us5Mk-0006Dt-TE for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:06:30 -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 1us5Mi-00058J-Lx for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:06:29 -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-283-RqJkaTMgNVaRqe3yMKCHDQ-1; Fri, 29 Aug 2025 16:06:24 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-24927876fadso9158145ad.2 for ; Fri, 29 Aug 2025 13:06:24 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.06.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:06:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756497987; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EK8ZniS31eKfAuecJyHjMuA5swX2F7mkJn3tAORFulo=; b=M4px4nUTRsIEXZwIWf+JXlb109l9UxDR/n/I745CdolcGsLmrjtkhOzLcY3voSDFvODW9x fXZsFMrIoZGXneQQjOLnyDv6X/IQoACSpEgrvmRu6GslGT2jaArfIYzQAMCZ4mrC0OoKhW 6GUzmHBKJ3cw/N7o378hTBd3rIpFEEM= X-MC-Unique: RqJkaTMgNVaRqe3yMKCHDQ-1 X-Mimecast-MFC-AGG-ID: RqJkaTMgNVaRqe3yMKCHDQ_1756497984 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497984; x=1757102784; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EK8ZniS31eKfAuecJyHjMuA5swX2F7mkJn3tAORFulo=; b=WZH/sDMw9GlqEtdS/vK/Y4Sz8soERo6JfmW0Zv7zpv6rfxy3LewTZTfW4fi96KUuF5 R7VCkfBNJktOx4kOoOVt59qqwGDwhNlY8NF28N9Uo2m4pYAvINmzOMJ9txmMM8SqDm6P HNdcbAhVt24guoOLwO8zPwrPBorN2ch+wDM8tqu2tFWGK/0g380WLetJyOuYU7M3VCJm LN8fFK0iZPCM5oJ11xFMRg0fL0aNqpNNHCuVtHaZLEflQJ5SEHvjFEqEiSKYMPGa2toK H8Dpo/IxkTlYj5029n/IL1Nekgh9ng+sn2WGc/0TjfivfdQH7BaPYAMNM6YcXHpEldi7 oz8g== X-Gm-Message-State: AOJu0YyoZEOfXN96lDPZg/uZcj2ndGfxzAexBSE06xBgSDo7YcJmkWgD P15Dy84O61xQEL5TFpTyO5XJvS60AVEIiuAcP8iF1HnqOmzaOrVLj7uJH1cdV/zYdMeu3BO7zFV E3TYqae272eWgXdYXUg3393NlahMBQxLoLRxpnezxfOCoo1C6iQIUoeqn X-Gm-Gg: ASbGncvV07thfrPH1zrEADRLVJtsg5VY9qla02u7smgah7tXszALpcqvx00lSPNnSYZ 1VA1UGNx0R10GhjzZJn0dPkHGn1k2opgG4aW03KjxoBOhkaMz0BEta/s/HrJoaxgEJmw+efuTVU +ORCjAH62Z/9wBse/2577I27SbsJbcUzF4PB2NoqOmVQzAeqKMovTZi5DUgnLS9xaFScx4bXL4g 8zvf49r7XiIro5BD92YAtHpRYTeR+ceJfWf7DsGzwQsMzD5RqhFjmWVMQdUmxEirt00CblFLoqn giJlEdmAJKdsNkYh4bAMeTpMPvJTKcxs4Onc/pMSLcYTGn7NG4p1bg== X-Received: by 2002:a17:902:e54f:b0:246:a532:3343 with SMTP id d9443c01a7336-246a5323a3cmr315115505ad.10.1756497983741; Fri, 29 Aug 2025 13:06:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGaksZqggjQ8NuqRcRP2WUGJ0hf1LDRm0cmz7dgENVz/im4xsVjGHviXLKSxNPegdTOKSJ8Wg== X-Received: by 2002:a17:902:e54f:b0:246:a532:3343 with SMTP id d9443c01a7336-246a5323a3cmr315115155ad.10.1756497983318; Fri, 29 Aug 2025 13:06:23 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:57 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-17-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1888; i=armenon@redhat.com; h=from:subject:message-id; bh=Bc7pNWeaQQJR7xn/IMqCNxln9K0U+dn3FXOfz+z8MlM=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdt/GP3zhWkejXE12KHN/+leSIp+5xzVJ8+iFtTJ7m N4XK8zpKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMBFHTob/Xjt4xSzzNwvsFtrx XK6QbbaTWdwlPf6Us4+vfLPS9/14hZFhxk57zj+3Q940P992LTsjZ/KJEwcPyNw58OaOlWbjpCv 7mAA= 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: 1756572414386116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_run() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index c681d6d21af356a97645f2a0d36e7440e3bd95c6..3ab20bd3de980ecfd79ab29697e= 3e1527ab3e73c 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2273,13 +2273,13 @@ static void loadvm_postcopy_handle_run_bh(void *opa= que) } =20 /* After all discards we can start running and asking for pages */ -static int loadvm_postcopy_handle_run(MigrationIncomingState *mis) +static int loadvm_postcopy_handle_run(MigrationIncomingState *mis, Error *= *errp) { PostcopyState ps =3D postcopy_state_get(); =20 trace_loadvm_postcopy_handle_run(); if (ps !=3D POSTCOPY_INCOMING_LISTENING) { - error_report("CMD_POSTCOPY_RUN in wrong postcopy state (%d)", ps); + error_setg(errp, "CMD_POSTCOPY_RUN in wrong postcopy state (%d)", = ps); return -1; } =20 @@ -2626,11 +2626,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_postcopy_handle_listen(mis, errp); =20 case MIG_CMD_POSTCOPY_RUN: - ret =3D loadvm_postcopy_handle_run(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_run(mis, errp); =20 case MIG_CMD_POSTCOPY_RAM_DISCARD: ret =3D loadvm_postcopy_ram_handle_discard(mis, len); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756570208; cv=none; d=zohomail.com; s=zohoarc; b=m2Z9B5RMENxHG3Jptc1QlU8HdHlmsDYvJpU19Lp8wsopkfznRERbPQ+0/QABI7ZOtgWtaM+kj9wfavKxMH+KITXUuRrwMz8ZTh8G3GMUAzieeHgcX5gv10li/U0F5uHj/GZH/cU083rW42/HLwJEgeVmuLEgSko5JM5SdIMMAQA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570208; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gj+j75kbzZRr8WyC+CT6yCwQ+uVU6b0xjRbHU07xHqI=; b=ilNvvleI0Zk97c+ITHHNkAoNlvaZmq9ZKxZ9L9LV7EX1rrELDrZZv/2huvJk/TvKF8Fom1iKOeafgqkMvfVrExjOYSy3K00QfzjrtsM9D+0ROLvcG+DA5TeH9c0pvy/5Xw7ct7vP7yEbfVsYmDT4hJyYY0sYemLhjb9Y6noUA0g= 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 1756570208583864.8132221788147; Sat, 30 Aug 2025 09:10:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNfA-0005vu-Ss; Sat, 30 Aug 2025 11:38:44 -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 1us5N2-0006JD-VN for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:06:48 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5N1-0005Ab-9g for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:06:48 -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-655-FRhV609rMVirrF9GbOw7UA-1; Fri, 29 Aug 2025 16:06:40 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2445803f0cfso32575285ad.1 for ; Fri, 29 Aug 2025 13:06:40 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.06.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:06:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498006; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gj+j75kbzZRr8WyC+CT6yCwQ+uVU6b0xjRbHU07xHqI=; b=Esl9wEhtarYM6tXyJBRZtu2X+lrRTJ2cnW3iUeG+AMPR42pgm0IDI1wJ4+qMZn6WLIvZ3x XApWuwxsb7cnIusjRlofjCfFh4WY2M0ZKaMZcLYDVWvd0H7BxhRwX9nUm6dfKZByDIaNl7 9qYFOJDngSFFNMkhs5OhhdHM9dbi/LM= X-MC-Unique: FRhV609rMVirrF9GbOw7UA-1 X-Mimecast-MFC-AGG-ID: FRhV609rMVirrF9GbOw7UA_1756497999 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756497999; x=1757102799; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gj+j75kbzZRr8WyC+CT6yCwQ+uVU6b0xjRbHU07xHqI=; b=ImRVxA74zhveBsQu+zBzwTh+fDl3dLvBUn7mk02oyCj7duj7hr9cELQKWvRAn1G9t7 W/wsEnhoT2GCzMNVBSDmv0hyrvv1vqUY5bspV5FydvBnuAdDY/eDPNAEEytIzGMRdDNQ uhepkZV84D9epEEnnUYczLGXyFOz6YoRFuk0RvqiQcYqYPyoBIp1kwB39YEHJcKGkw0q XNEqU3Mqn5tP1xs7U+gr0+d82KhiMIUx2aV/P5TFQPcav5cyJLEwrJBdM0sema5Om72A Hr7/KzsXH7cP2fKX97J03yFwKTmGxn4GME4wdGinN49BPZJLkw5jVvP+8jK73Q16Af6k t1Fw== X-Gm-Message-State: AOJu0YxLX2m6E20LAwUIy4EaHhhMPX56yHkloQ+iLUGhbZwaL35ww5wc OWJvj/U+mG6ucqIxi5xLUR/EWZQ3FsUOm3D6W1l9df7Vn7SbWvoq/4Or3AEu0IU9PgKeoiKwj44 4IFAuGTZX7M+fSG+7hHYhLzWvmpX6RZtlwYc5QbL7LGYjnvJJyyhXQtJT X-Gm-Gg: ASbGncsskrsRPAseLGqN3T3JX1vwbbGqC7C6oc1rZ/x53ChSHSjVAbYbxRLZZ1tCxqs IWUA6VHXcr8Vtp9MttunUDyH/a6mK20Dt0ek4gNoV9U5IfjU5cYcRtvec6V/ULPdIXFDTJWey7R nv42SRYhhI9qwuftMNF1JhQROHGVw9+lIfgKC8mjUhveH+Oj4DKUYZPKYFZrWBvwvIZCoh7c1ti Qyz577Qxbeui7rlNTIuuCOniuMG64zHXKxFd/Xt+5DCxrY/eOyH0KOz3vh6H9N0yugHEmRGlNks EeODkTamujIp32UBAEl0VnQhUPzyDLZt6SCwOEc5bmXX16Q9QGwRsw== X-Received: by 2002:a17:903:3d0c:b0:248:f55d:447a with SMTP id d9443c01a7336-248f55d44bfmr95115455ad.3.1756497999119; Fri, 29 Aug 2025 13:06:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFh2ZU31P8nEog5eR2YeSUb8M/iP6niwjTYkDYZ34N0QwuJtfh5AbNkf3nThrtGd+RIbPvDmg== X-Received: by 2002:a17:903:3d0c:b0:248:f55d:447a with SMTP id d9443c01a7336-248f55d44bfmr95114845ad.3.1756497998606; Fri, 29 Aug 2025 13:06:38 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:58 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-18-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4329; i=armenon@redhat.com; h=from:subject:message-id; bh=r7TvIL4ZIDOkRB8HrM5BHB1nfGTyTk+rEFu7cLDvTA4=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdl+9pRd7Gu5xCzmzPdI7v0bo7/rmp5K5R158/cmU5 ZHF+PZxRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIns6mL4zSpqyTJjX8CqLtG4 HuW1dY1FVsJLtrryt0efDFi99fbNBQz/Y/pmt2qKpnG8WMTCZahTc7QzW+32jDv1GrfkpuZfFvn BCQA= 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: 1756570210452116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_ram_handle_discard() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 3ab20bd3de980ecfd79ab29697e3e1527ab3e73c..01cc186b9e0324053e804c4fede= bee02d8df4052 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2004,7 +2004,7 @@ static int loadvm_postcopy_handle_advise(MigrationInc= omingState *mis, * There can be 0..many of these messages, each encoding multiple pages. */ static int loadvm_postcopy_ram_handle_discard(MigrationIncomingState *mis, - uint16_t len) + uint16_t len, Error **errp) { int tmp; char ramid[256]; @@ -2017,6 +2017,7 @@ static int loadvm_postcopy_ram_handle_discard(Migrati= onIncomingState *mis, /* 1st discard */ tmp =3D postcopy_ram_prepare_discard(mis); if (tmp) { + error_setg(errp, "Failed to prepare for RAM discard: %d", tmp); return tmp; } break; @@ -2026,8 +2027,9 @@ static int loadvm_postcopy_ram_handle_discard(Migrati= onIncomingState *mis, break; =20 default: - error_report("CMD_POSTCOPY_RAM_DISCARD in wrong postcopy state (%d= )", - ps); + error_setg(errp, + "CMD_POSTCOPY_RAM_DISCARD in wrong postcopy state (%d)", + ps); return -1; } /* We're expecting a @@ -2036,29 +2038,30 @@ static int loadvm_postcopy_ram_handle_discard(Migra= tionIncomingState *mis, * then at least 1 16 byte chunk */ if (len < (1 + 1 + 1 + 1 + 2 * 8)) { - error_report("CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", len); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", l= en); return -1; } =20 tmp =3D qemu_get_byte(mis->from_src_file); if (tmp !=3D postcopy_ram_discard_version) { - error_report("CMD_POSTCOPY_RAM_DISCARD invalid version (%d)", tmp); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD invalid version (%d)", = tmp); return -1; } =20 if (!qemu_get_counted_string(mis->from_src_file, ramid)) { - error_report("CMD_POSTCOPY_RAM_DISCARD Failed to read RAMBlock ID"= ); + error_setg(errp, + "CMD_POSTCOPY_RAM_DISCARD Failed to read RAMBlock ID"); return -1; } tmp =3D qemu_get_byte(mis->from_src_file); if (tmp !=3D 0) { - error_report("CMD_POSTCOPY_RAM_DISCARD missing nil (%d)", tmp); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD missing nil (%d)", tmp); return -1; } =20 len -=3D 3 + strlen(ramid); if (len % 16) { - error_report("CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", len); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", l= en); return -1; } trace_loadvm_postcopy_ram_handle_discard_header(ramid, len); @@ -2070,6 +2073,7 @@ static int loadvm_postcopy_ram_handle_discard(Migrati= onIncomingState *mis, len -=3D 16; int ret =3D ram_discard_range(ramid, start_addr, block_length); if (ret) { + error_setg(errp, "Failed to discard RAM range %s: %d", ramid, = ret); return ret; } } @@ -2629,11 +2633,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_postcopy_handle_run(mis, errp); =20 case MIG_CMD_POSTCOPY_RAM_DISCARD: - ret =3D loadvm_postcopy_ram_handle_discard(mis, len); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_ram_handle_discard(mis, len, errp); =20 case MIG_CMD_POSTCOPY_RESUME: loadvm_postcopy_handle_resume(mis); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756568780; cv=none; d=zohomail.com; s=zohoarc; b=YMVtQ4TKAZA8PvwmAvnCpIt+cKWhPlGZm6xhLre6SSlbZ+6XKfhZRntHd6O41tsm3QVY15NAw4FOJIpDnjGXive2owgBTdzi43Gsqpc/0sBjAwbGV2Hc6Fy9eai9zplY9PeCJi1qdYNnhuMobSwb9TaQXDlPk2kGkALz3ISBhbs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756568780; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yZ5qpT0ubEUqCdewMRwilIH2qM78jxpQ70y0QUZWscE=; b=MUY88IZIYXyKrdWyD+KSMmANav0+yuVAnIpYUObXXS314s5FdYH4F6m2iTcXOLYCjuZVfhPwEEQJqYcMu1/h2cShekvSYYrLF4PyfyijPjki0zOL/F+t994Z498NbdjW8gySzSg/Ix9It0hdQm2my3pAMkbKM5X8kH/NYhv9TXA= 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 1756568780382384.70471532987676; Sat, 30 Aug 2025 08:46:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNfG-00069F-82; Sat, 30 Aug 2025 11:38:50 -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 1us5N8-0006KQ-Nv for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:06:54 -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 1us5N6-0005BL-Pg for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:06:54 -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-173-NbF0hpLrN4Sj8d1mxoCNDQ-1; Fri, 29 Aug 2025 16:06:50 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b471737e673so3580097a12.1 for ; Fri, 29 Aug 2025 13:06:50 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.06.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:06:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498012; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yZ5qpT0ubEUqCdewMRwilIH2qM78jxpQ70y0QUZWscE=; b=W4x9QCsn5XwTYT+bGmfgkTAD6TiHRhYA2u9aiHjV6a/p9PVZ7LGjtS45zjwt/OTS8QGe+0 pVKekiK23O/FOmHuTgKodHEWQjgxTCBCu4aWHJ8fQRBJReBYjmAaA53HDPVLoSZax/Jtvp 5d6bikVunADPtHEV6r85p04uo7/bI3c= X-MC-Unique: NbF0hpLrN4Sj8d1mxoCNDQ-1 X-Mimecast-MFC-AGG-ID: NbF0hpLrN4Sj8d1mxoCNDQ_1756498010 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756498010; x=1757102810; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yZ5qpT0ubEUqCdewMRwilIH2qM78jxpQ70y0QUZWscE=; b=TNZNR5FFxRPPAJm6/1ZRWJqAYVOCkVXhqvDAPCzRL2JjQeaACVPP/0m5F8jPL+cUlj kh6DgAoSvxybhjdth3RAc8a83YomHBfNXaqsQXpA3r/McrlzNZnNQfP9gN8baugMtI31 OR+3tC1ToWAvyJ3VzTPVOV7DtxWKWOf4C3EjQ0CbRMbGoorjpen4psoJj36qaavczSLK +ssHrRYdQSxPsjn6xq9IOvXwoMX7+5zI1gKhsPyXFCK5PULZyb5WrOG+pW6KdlRrUm9S EyWFcCNxbaHke5a1LwEJVLjMg8FHjaEoE0qxiutRDfU/6XaknjJxbBJicAMLlH/xAqWb YlQQ== X-Gm-Message-State: AOJu0YyeJrWmjv8VS9Llg8H0ZFD6vxrSSvu1JCKKP5IAJn13ogw1YvtO oDWeJYDu8XLbbUbj3ac50DH/jgXzpgbFvALLx6zdsDTGZjZ2mhJocC8iAOW8kR2nkTW/e9Pfio5 ev/k0YbO9wloihWBb1ZYYxKqAVRZPt6tIOKcOQHox7XDCaSceZun3HbTZ X-Gm-Gg: ASbGncsQO7p3Xpx+k+Wmq6gDFTu8MnKmwY7hyCn6pLwq4fW37pPbGzge2CxHTeQNz8o d3qrsWacQq509J9KDXFHo/CFTKz8I7zXkzia642PcABRlFCAWzk68a1agAyMOkSOr+ZHBhgTZqN nIHP3aEJcYhepZZTdq3V1kZAM3Aj7nL3Hi1rA/Mgsk+/0JDKmx/OikojMYDP4ss/JrmZuroJOfS iHnKrDIfMHRivTKlGV9sF8hFkk+CI54JXUr3VVSLfNuUId45VMEpH3w120Hg+jD1Pes+O/OTgCF 9QcKTw0f6EkMQOS0LcS+Zf7Cy6XKT2sjKpnAY9900HWw9yWe1nTTow== X-Received: by 2002:a05:6a20:bf29:b0:243:9c68:a031 with SMTP id adf61e73a8af0-2439c68a272mr14163550637.57.1756498009691; Fri, 29 Aug 2025 13:06:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGzxD8C1zYL0rbc7Yjbu3zMPRGvor1m5j0HTq3pLV9i0V3YW5hxnfaaHWO++/fBbgZAw5zcaQ== X-Received: by 2002:a05:6a20:bf29:b0:243:9c68:a031 with SMTP id adf61e73a8af0-2439c68a272mr14163511637.57.1756498009263; Fri, 29 Aug 2025 13:06:49 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:31:59 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-19-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2645; i=armenon@redhat.com; h=from:subject:message-id; bh=sWsUM8lShaPXtDP2lf9BQ1xaS+5SyRjp1vtDn8Aau4A=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdt+Pv6RD2HUU3ftefjr82CNNWTIz+IWJ/Me/TReDS s7cFTvZUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCKukowMV35y8u88fI9Nx9jg +suWmSeP7HBtu+jzXeepyoZDFzX73jL8zzitMeFzda0/U3L17Lq9dZunTvvD9SmAR6L5u0Xc7E2 7+QE= 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: 1756568781348116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_handle_recv_bitmap() must report an error in errp, in case of failure. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/savevm.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 01cc186b9e0324053e804c4fedebee02d8df4052..13a809564aebf6346228f46fd60= f611ba6104bea 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2476,32 +2476,35 @@ static int loadvm_handle_cmd_packaged(MigrationInco= mingState *mis, Error **errp) * len (1 byte) + ramblock_name (<255 bytes) */ static int loadvm_handle_recv_bitmap(MigrationIncomingState *mis, - uint16_t len) + uint16_t len, Error **errp) { QEMUFile *file =3D mis->from_src_file; RAMBlock *rb; char block_name[256]; size_t cnt; + int ret; =20 cnt =3D qemu_get_counted_string(file, block_name); if (!cnt) { - error_report("%s: failed to read block name", __func__); + error_setg(errp, "failed to read block name"); return -EINVAL; } =20 /* Validate before using the data */ - if (qemu_file_get_error(file)) { - return qemu_file_get_error(file); + ret =3D qemu_file_get_error(file); + if (ret < 0) { + error_setg(errp, "loadvm failed: stream error: %d", ret); + return ret; } =20 if (len !=3D cnt + 1) { - error_report("%s: invalid payload length (%d)", __func__, len); + error_setg(errp, "invalid payload length (%d)", len); return -EINVAL; } =20 rb =3D qemu_ram_block_by_name(block_name); if (!rb) { - error_report("%s: block '%s' not found", __func__, block_name); + error_setg(errp, "block '%s' not found", block_name); return -EINVAL; } =20 @@ -2640,11 +2643,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return 0; =20 case MIG_CMD_RECV_BITMAP: - ret =3D loadvm_handle_recv_bitmap(mis, len); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_handle_recv_bitmap(mis, len, errp); =20 case MIG_CMD_ENABLE_COLO: ret =3D loadvm_process_enable_colo(mis); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756568520; cv=none; d=zohomail.com; s=zohoarc; b=cpfe/SmzCGRsnYDacqglEle4rlgEgW9WmwdVLIbiH7ph8nxZSyH4HD98PTadiZL2VWdmdMugM1Dp8gjoUIod+kOmKO0OfKqjX6ywLmfkT5NjN6TD119JHBjze+jBY6Zi+Qvncoq6Fd9ebWUDf1a1zORBsLWYsEVeAPkiio+QUPM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756568520; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LB9SXkQgOnyONEMwUfFwYKtNNWRhU5cy/RayQLcVHSg=; b=byZDpjmHgcBkmXOpF3vX1BJl46GjECnZYPr4to9Th/dObbF7DsEHy35PX2GLbyUVaTnamj+oQUCM65eL0A5kwSK1XwLuKSvrC7XIr5Ji5UEIIcf3PjYluV7XpTMpENdzxpSpyffjxpl3kxQi5GaRVYlZT6li35Be6KwEQpPRPl4= 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 1756568520481835.3886899149724; Sat, 30 Aug 2025 08:42:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNeD-0003oc-TI; Sat, 30 Aug 2025 11:37:45 -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 1us5NH-0006Nj-SN for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:07:03 -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 1us5NF-0005Cx-Kh for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:07:03 -0400 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-495-hw_w2nsQNVu81lpLsicrTg-1; Fri, 29 Aug 2025 16:06:59 -0400 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-3280d0d4d11so202756a91.2 for ; Fri, 29 Aug 2025 13:06:59 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.06.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498020; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LB9SXkQgOnyONEMwUfFwYKtNNWRhU5cy/RayQLcVHSg=; b=XVASe4h79U+BQIllt//0HclBLXSDSoQSmElx9ukZwcbLRXCjjoNgU64m4oyEw9AU2GIQNA dXT3Wn4hdAMvGx1tJQlM2GYaKEQ4tuWc+0Qb55sKMXHSelSNbmasKgsZGUI2AIgK1AFdwl crZvx2bVRseLOef6rPEb915DWxe273s= X-MC-Unique: hw_w2nsQNVu81lpLsicrTg-1 X-Mimecast-MFC-AGG-ID: hw_w2nsQNVu81lpLsicrTg_1756498018 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756498018; x=1757102818; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LB9SXkQgOnyONEMwUfFwYKtNNWRhU5cy/RayQLcVHSg=; b=Y6wdORTlBAPdTqag94952qRKi2XUJV12WMa/Hh21cdmMLKVpD44cm2oUhBCWjiosZO k8pcYUhF+trLyYw4ZUj0yV6370LCLYjXO3+b8TWSJTCEfynnpWcHsbKrLBm693gyqkxB b3Ee7ETxPqrHmDANM+JwqFoc+DU/y6Q1Oy7hgqlcV+7m63KLTqZtxS94OGpfLyM87qOH iV98XAHf6+EZH6wq5n9mb7RwTpzUQfdB1Dp6LAQ6ksa9TPQt0u/DQSB73BOwPnrmmdrz 2dP7hreXvcBvZKG5HSAhQ/8HEhE9F+nTjgSiKqWGPF1pxMOy2beWjYRBSId6yO6X2kHT Tk3g== X-Gm-Message-State: AOJu0Ywue04IbDJqKwdWL/b2UhtVp6cgRVokpRXGsq92PEP11f5RdvvB jh2muYqk0XoQ8vqLQnHzMdhJk8qCOEKXnHHvHH1gCsaHyF+7Oppq7ZNUwDRxPRYzGw925RbX0L9 LpiQp/qN0o3AUTjaAKxm5AmemVKAJW/LmcvGuZPabT9qQpaoBEJOyNHLp X-Gm-Gg: ASbGncvGUstHmAo3OO8Fbm4WOAKOD1siMBUl27uZEGg2SYUnzl/CbMJftvPqIfWMvwz sktArU6TFdrCkTAKbYGiLYJw8DK2aRgXNJKx1qTVtC7hhg2gaXWDTFEgEcr4mm6hR9viJvh9qyq 6HudYm5hLF0H2UNY3WHC/MKzuJffIp/oZ+FIR3t0Zth1ew4T+35tbqLWKyWhPsB7VdKEikXvFWN m8A0p0QjIROBEUsm3pY6/4BmLk4RvmLfX1ZkoPj/GarvkHncJn9ZIjkRSO5zaiIXYylwIRZKLlA GiU6AeGmJML/fXRsR1/bnM26Wr0r5J02V52nQF94ONgSDgD47SvEcg== X-Received: by 2002:a17:90b:3ec3:b0:327:9b36:87cf with SMTP id 98e67ed59e1d1-3279b36897amr11823652a91.30.1756498018312; Fri, 29 Aug 2025 13:06:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGzMPgOWkW3Z/4cS8GAbpm9n7G+CRS0xMZOkYARj7xvIwczkHhobX9mgYoAfwIenaYfThB81w== X-Received: by 2002:a17:90b:3ec3:b0:327:9b36:87cf with SMTP id 98e67ed59e1d1-3279b36897amr11823606a91.30.1756498017874; Fri, 29 Aug 2025 13:06:57 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:32:00 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-20-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1640; i=armenon@redhat.com; h=from:subject:message-id; bh=LbrL/8rC1j/1roMz22wMr5Cto4+KiN2vW7a+UxDKaz0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdr8jL2r0mK/qrVDmvbC9yLNL/Kc7f3X+b+HDQobhe WXa/lc7SlkYxLgYZMUUWRq+Bsg2BRRGRNq+vA4zh5UJZAgDF6cATOShNcN/v8883qyLDXu2fly7 76prgU3L0pl+rKd92cpPB2denJk7mZGhU3x6wwTVXzfMX51/dt25ozXgnUGPVp5Qu0XU1NW+67L 4AQ== 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: 1756568522011116600 The function colo_init_ram_cache() currently returns -errno if qemu_anon_ram_alloc() fails. However, the subsequent cleanup loop that calls qemu_anon_ram_free() could potentially alter the value of errno. This would cause the function to return a value that does not accurately represent the original allocation failure. This commit changes the return value to -1 on memory allocation failure. This ensures that the return value is consistent and is not affected by any errno changes that may occur during the free process. Reviewed-by: Fabiano Rosas Reviewed-by: Peter Xu Signed-off-by: Arun Menon --- migration/ram.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/migration/ram.c b/migration/ram.c index 6a0dcc04f436524a37672c41c38f201f06773374..163265a57f26fb1dc88d9797629= d58c278e9afb7 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3575,6 +3575,8 @@ static void colo_init_ram_state(void) * colo cache: this is for secondary VM, we cache the whole * memory of the secondary VM, it is need to hold the global lock * to call this helper. + * + * Returns zero to indicate success or -1 on error. */ int colo_init_ram_cache(void) { @@ -3594,7 +3596,7 @@ int colo_init_ram_cache(void) block->colo_cache =3D NULL; } } - return -errno; + return -1; } if (!machine_dump_guest_core(current_machine)) { qemu_madvise(block->colo_cache, block->used_length, --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756576733; cv=none; d=zohomail.com; s=zohoarc; b=Y8mKIXYCltC0482krMPRQLj6P/fIB+tMomSkI/7oXqFf19mw45fl2nhNy4Lbqqw04CwpIxvvUry7XJCP+Alo00tOEAS4SlqamlRoiJCkokdfcBwf9V792ZGsk8GQ1jk8LOrHPrTqY/uFC1DQaleNuTLFxrakrbiIIs7g/47lNJI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756576733; 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=na4sH+km3HYzwe61swwtwxTI4jRl6teeKdPTZ9vFC40=; b=UOnVzT+YTPxwBQ/eURhfil0BLXXZoVR5EbOGhUCuBhZQhSi5nJCnGFUIBtGZzdZu6a5lJgpiQU2wzrukm+aWC8qSQJYPaVgc57z2ezgmxzWOdpDuZGd3pHpw6xOZc1kal5uEL7ch7oZzM1CLNheYnotwWerFlElKBO7nmICWR6s= 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 175657673308139.4055758013875; Sat, 30 Aug 2025 10:58:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNeN-000497-H7; Sat, 30 Aug 2025 11:37: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 1us5NT-0006Sk-6G for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:07:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5NR-0005EH-AN for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:07:14 -0400 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-648-jBYoufvwP6qav5odHR5_pQ-1; Fri, 29 Aug 2025 16:07:10 -0400 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-324e4c3af5fso2783883a91.3 for ; Fri, 29 Aug 2025 13:07:09 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.06.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:07:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498032; 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=na4sH+km3HYzwe61swwtwxTI4jRl6teeKdPTZ9vFC40=; b=SVrFoXujynoifrOwtv6JhzUNpfc2xK0JELLz3wFHYZuVE0f7FuBN7fr8RDAHBJY3NnJE6C 1NBjL0wT7YiN3UjX4SNpO11NsOngeGzI7Fwx4eJrjFsFRgzE3JjJCZ7bquGA6xdC2tc0hp StICL6mCYM+vkQ2L0Ajab8Umgpo57nQ= X-MC-Unique: jBYoufvwP6qav5odHR5_pQ-1 X-Mimecast-MFC-AGG-ID: jBYoufvwP6qav5odHR5_pQ_1756498029 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756498028; x=1757102828; 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=na4sH+km3HYzwe61swwtwxTI4jRl6teeKdPTZ9vFC40=; b=JKhFFhw3MZwb7/mH40ubI0gkq/Qkio88s1jNruAyqEbNA9kdrihaEiLH9yT/wZus0j szqnNCKnQjj+rALmDnTBKpe2wx3blpqoL3CS3A76pp6kfJGBsR+zDNYQLmFsbs1lag5k wbw8FhQJA7Ym+CFkSJpjwEhtWuWe2I8tpejslrMu7EN5ukMX3eO/fdpdHCGZ0uouK0r3 CaOEvSk0nwhC5lnefWvwrJEKexok4Va7AbUmE0fWC6zELmRnJYtrpPgPcjipDyQl9XpM zEDwj1GnjtQZENTp6ka05ubcLO+jqWxzzGl4Y8WxL6jR7AIfaaoMzo6uEG/LnNitN1xY rs3w== X-Gm-Message-State: AOJu0YypirfmpTjW0p8QI4fB1KnUbzmi0LfNbrnrH2QNTgUg/2T+NLDT ju4pOwfwY0PnVlwQ79hfjDW9oNyeiIwNm1OytKMV+PN5dNRhohnNHcCYreK9QJMfa/ILdDmWUzM 6Ff/SfmXA3NNskhVGbYHC2/8jSdSpHWDHsicKPwuqnPgIzSvbfq125T2u/TC1D4Uo X-Gm-Gg: ASbGncsyDdBUWkc+oZgAYVZ8U4EZCPQesQlG5Go58URxoabX835AqeRrW/IMPPZh8L9 4IFPFEM4pQFGRxqId8vHgG/JFyFgqcWBw9MSHa7r+TMSEkHwi0YhuJPITKIIQgxF2vzTnyJXj1P pbW+kocbzOl6/EbzyhG5gtCAN+netZMABN09SF5Qd8FfXbukqP0WgtHz5NxR0meHdduCJfxteYT 7635EqRunFDaCk+6ZoECOFosEQXRn3AFFSpNamGzVZJPVd+GrbYAIJTb8K+GZa7BQw8jWnmNcmy 3Y1x+S9CBpBf9gDYrFi140IOI6PjpMqGmkSKw03yCFsJn0frui6u5w== X-Received: by 2002:a17:90b:2682:b0:327:e34e:eb0c with SMTP id 98e67ed59e1d1-327e34eed02mr6029466a91.7.1756498028385; Fri, 29 Aug 2025 13:07:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEy8+xmFbq4qVMB6F4VleKnbnm/T2NRAXU98aC/DPn+RhCiQWHW4cMMl9EEelpkwXQ7sNopCg== X-Received: by 2002:a17:90b:2682:b0:327:e34e:eb0c with SMTP id 98e67ed59e1d1-327e34eed02mr6029416a91.7.1756498028019; Fri, 29 Aug 2025 13:07:08 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:32:01 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-21-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6000; i=armenon@redhat.com; h=from:subject:message-id; bh=ot+hi4Fl01StiAWmhcGyzD+C9KopeNGMvcJMJork/3I=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdr8LHXz5TByqJxlPfrScmCfxNbtrqudKZsfXvrd7m adYa+/sKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMBHJywz/I/Rr5vNtPyOfpWXk OOPTkXua0Ruvf50ZeVTjpcYljaM+RQz/1I2OVzXvZMnWPXZ0zsudXEamKSxvrvydZi4Zcfva3xB 3VgA= 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: 1756576734393116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_process_enable_colo() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- 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 13a809564aebf6346228f46fd60f611ba6104bea..8e891243dc1e7f5d3bc3a4326c6= c4a2f5c32e1a2 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2515,15 +2515,21 @@ static int loadvm_handle_recv_bitmap(MigrationIncom= ingState *mis, return 0; } =20 -static int loadvm_process_enable_colo(MigrationIncomingState *mis) +static int loadvm_process_enable_colo(MigrationIncomingState *mis, + Error **errp) { - int ret =3D migration_incoming_enable_colo(); + ERRP_GUARD(); + int ret; =20 - if (!ret) { - ret =3D colo_init_ram_cache(); - if (ret) { - migration_incoming_disable_colo(); - } + ret =3D migration_incoming_enable_colo(errp); + if (ret < 0) { + return ret; + } + + ret =3D colo_init_ram_cache(errp); + if (ret) { + error_prepend(errp, "failed to init colo RAM cache: %d: ", ret); + migration_incoming_disable_colo(); } return ret; } @@ -2646,11 +2652,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_handle_recv_bitmap(mis, len, errp); =20 case MIG_CMD_ENABLE_COLO: - ret =3D loadvm_process_enable_colo(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_process_enable_colo(mis, errp); =20 case MIG_CMD_SWITCHOVER_START: ret =3D loadvm_postcopy_handle_switchover_start(); --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756568877; cv=none; d=zohomail.com; s=zohoarc; b=QCRx151DjaddwvNKKljusrZ/KOvaTMF0EnydmOHRuZhqKE3XezM55FqhHJkQzWyP4xVKhFNeow1oP8VIuX98r5VdST34nLZ2wKmE9lJ0aA4djjJwXAzuK2TqB/Iipn923qXo5PcTCrw22HoHJEYcUU/2UJJtEzaS03YHJ9+KklI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756568877; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wRbqiAPNISkqVRppZsP2Vwbcn9nh/EQ6BOnJNHC9Ojs=; b=Bf98xPgDOZ8DRqcjnVP05Th+AAH2PslLHEyLMTnf8ddJtDVRW+e9xU2mWp7tuISqsVLM4xMm3iB2fY/dAGgcHzGe13yei++E1Qyrt6MnzDM0IhJVzYs5T09ZB8nFmRqcw66CK5syB0QwpFzPes1XSVwn/mmKmauaunIUpb4NFcc= 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 1756568877533239.2162300192913; Sat, 30 Aug 2025 08:47:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNed-0004cz-PV; Sat, 30 Aug 2025 11:38:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5Nn-0006YV-Sz for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:07:35 -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 1us5Nm-0005GH-Cx for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:07:35 -0400 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-156-913E5fz5O8apV-G2DSBk4g-1; Fri, 29 Aug 2025 16:07:19 -0400 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-3234811cab3so2841511a91.3 for ; Fri, 29 Aug 2025 13:07:18 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.07.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:07:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498053; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wRbqiAPNISkqVRppZsP2Vwbcn9nh/EQ6BOnJNHC9Ojs=; b=QcYwMAB/AEJqJS8g+nlakOovtL0AFhQPMefZW6wLp90SpbLNUpS+Ahk9j0Duzpqj2PWo3w uryAdVueanKsUDGdASGAGE750h8nHXhyP/FzNrjrX5X+pkfOK1vz9zwtz/mYbeuZTTJ7R2 hlLdozfz+rTLYw6Uz7X/2gG0EZ3w0C4= X-MC-Unique: 913E5fz5O8apV-G2DSBk4g-1 X-Mimecast-MFC-AGG-ID: 913E5fz5O8apV-G2DSBk4g_1756498038 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756498038; x=1757102838; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wRbqiAPNISkqVRppZsP2Vwbcn9nh/EQ6BOnJNHC9Ojs=; b=p4K5H5+Pw9aWpo332Tjgqbi/0i8dlcqruEhqSZDUokca3pKaQ8zZOR6pWZoI9hD8jF 7vvy+WyvHfcMMlhVs3969lIABDN+W58wTL+FIwFfd7GJNrnTE/gAMPugNQyneu9s7fSx Q49mFVIrfyA3NPiVp9jdeGg0zq2gjbA4qobqBCjZW+OA4Nq97A22c2JIFKXhAKGWRrmB pLZgsR6hojux1BRdgWevU/LsR0sHzqzbVCtmd2Fmw/oVUoI2p8r5prqB3z7AvRxC+x7x BI9ciiRdBpgX4eFgq32sE6vpRGieOXnjf/O1qBcpl09n8lMu037jVlF17TxSP0YyHH/9 gHJg== X-Gm-Message-State: AOJu0YwCuMdRwYnrfSDK94P9aUpLMqss3eFfo2GuMPjOK8plbj1HkTpw hnZZieVVEwW+2NYb4xMxURccp9wSXcF6XhWDw6y4qbiaJE0YXMxX4g4tklRZQA/pOd+OmwfJ+qd 5FnumpdkUwTqE+cFnHdHksZQoC4DcaHW516vOcYhn7WQqS2gTSL/4cItQ X-Gm-Gg: ASbGncu/idzJwI23aDe5FOJRnPA0Vt8M5645uWZi1JpQ3QNLt4oPMT+BFsglNHqacF+ RB51DFLbj+VM9hVFOweBJwM2fRumm5MkiNEFv31KpsG/QU8M7dW8acuuBU81Bzwf4zoZtuWSmmP qxfgYcXL6R2GV6Xc4O923xdv7vVuMlnWAAp/muyjGg3iw9ioiCHeeB8RgJNlISW66PdWncPV3w9 W5/u/7B+k/4Liy5bXkLou8QiRWp55qzMXPlb3q5fGNOR2Wy6VA9yImNbBCvyVIwPjBX9yIsIYOx 7arSVxmTXA4wJaUHYdTy1ilyAS7KPzCJa6OGeFmiARh4tPaVPef2fg== X-Received: by 2002:a17:90b:3b86:b0:327:d8e1:faea with SMTP id 98e67ed59e1d1-327d8e1fc98mr7387291a91.20.1756498037785; Fri, 29 Aug 2025 13:07:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHSA+umRYBhjmB+zDANRnxaj/OjOFTsAMCJs0OV+MDGSzS572ruE5lu43L+hyLGvsXdaOOuVQ== X-Received: by 2002:a17:90b:3b86:b0:327:d8e1:faea with SMTP id 98e67ed59e1d1-327d8e1fc98mr7387235a91.20.1756498037260; Fri, 29 Aug 2025 13:07:17 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:32:02 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-22-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1747; i=armenon@redhat.com; h=from:subject:message-id; bh=x/yKec8YqQYPuuXzcHNbQkCBg0poQ6E8l/qo+33kxFQ=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdr8Yab51+V9UWAP5d9l792u0vJu+bltI+nkDafeUw k1ex6Q7SlkYxLgYZMUUWRq+Bsg2BRRGRNq+vA4zh5UJZAgDF6cATKSnieF/mcFiH9s7HAKJK2e+ OC/4svjp2a0VXfkbTPOUfJ7eXbRVmpHhnu/02Mui5yY6iMdYGuv9ehu/7fP1jZEW4ac38p3imbq NFQA= 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: 1756568879286124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_switchover_start() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 8e891243dc1e7f5d3bc3a4326c6c4a2f5c32e1a2..b0fd51d0f142c30ce21bdc02204= ce947283fea49 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2534,7 +2534,7 @@ static int loadvm_process_enable_colo(MigrationIncomi= ngState *mis, return ret; } =20 -static int loadvm_postcopy_handle_switchover_start(void) +static int loadvm_postcopy_handle_switchover_start(Error **errp) { SaveStateEntry *se; =20 @@ -2547,6 +2547,7 @@ static int loadvm_postcopy_handle_switchover_start(vo= id) =20 ret =3D se->ops->switchover_start(se->opaque); if (ret < 0) { + error_setg(errp, "Switchover start failed: %d", ret); return ret; } } @@ -2655,11 +2656,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_process_enable_colo(mis, errp); =20 case MIG_CMD_SWITCHOVER_START: - ret =3D loadvm_postcopy_handle_switchover_start(); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_switchover_start(errp); } =20 return 0; --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756573072; cv=none; d=zohomail.com; s=zohoarc; b=nzK1/vBgZa4gKiTpySeR3fn5paG0115Gk2JWPnGDSVCmGO+y8NgI0woqYjqbcamAalLj8Fm+HxaDM+Zbd8h/OdRYWyGERSDlCi9OH/kVjaEgBYjF/8eg9JB3RzjZhAIme3j2zzUhKtaoQVY9FhN/2N/ueIonwW1wrPLtAPjLubc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756573072; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ex70HvFHCA+0PjVijQlAjy4Lm+10k8XimyJ545WFrYo=; b=JRmwrDMWc3U5GTt+D6KuFATPG/PHLvFevDO7RNnoR9IRBFpW1/rBKGfJHSUUdB8QnjTJ6LEo7OQsASX3ZrxRo2WptNRJgIHGsyYrdydC3KDrK1mA5PF5sP8rh0rl0ZaAu/l33cQurCRKtMaV6iTNlAGzXpvo6ZYpYyRK4MT6oD8= 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 1756573072599568.5451270488954; Sat, 30 Aug 2025 09:57:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNee-0004ZU-9t; Sat, 30 Aug 2025 11:38:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5No-0006Yn-DR for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:07:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1us5Nm-0005GN-N7 for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:07:36 -0400 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-92-wGGqY8wANeOrQLDnxsLz2w-1; Fri, 29 Aug 2025 16:07:32 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3259ff53c2eso3591766a91.1 for ; Fri, 29 Aug 2025 13:07:32 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.07.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:07:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498054; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ex70HvFHCA+0PjVijQlAjy4Lm+10k8XimyJ545WFrYo=; b=Amei9wlAhTIKjdktelf+u/yQsCYT6Li5Gf2AEI0puykzLMdmuKj96K/SmP+EyTyybkAL31 uFaRKb0bOTtv8biymhLF4maOxIdFe88iyVAae9bYQxib314RjiQKmTgjiBMFAxwsb82lz4 MKz4zpl2HoYr33Lu1Bc0UZ9FMrpbH0g= X-MC-Unique: wGGqY8wANeOrQLDnxsLz2w-1 X-Mimecast-MFC-AGG-ID: wGGqY8wANeOrQLDnxsLz2w_1756498051 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756498051; x=1757102851; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ex70HvFHCA+0PjVijQlAjy4Lm+10k8XimyJ545WFrYo=; b=ZZbQdWG4qP1azye1xu71DT6ubCv0yWr3MdYN5ssXyLQsa/J29F4J3xuyveaqPHxer2 IDbUeI6Qebmu3OZ4SSujXlMFKSFM76tEerDN5URxBJnqUyzd6ylAaRI4moq2aOoRe2gT /IWk99hi02Yq4LJQI+QR5DgNBu7ikGDsHErgBYfiOYhsVZPoEthr2YYiTVkM4iyvbb8V HipdXx6y28a9yn6vpk80YMkTqomAs5Jg9VN4WmhdcIxNSCbupG1vpLXp+wsSyZjbgC+W HhWj6d0xRPP2zn0hAx6pMQCFCGayrMWz35ICHwk7LW8f/Munv54yFZdkBBLdQdCPPTPO 87aw== X-Gm-Message-State: AOJu0YwElU2Q9Si9eEWOKGkVSBVT0aM5e0qQI+BzmL1LYXLILkHIuHVp 9ieHL8zc/FcFDPXkJhz2HySTHV64999VxHpyK2XTZ04hE/Vl7SmqkYouuynXm03evddSLWrUU88 xxw0Blv+0DuwpnyAN1WbnRhRG9quQxpfOFk2+RP60nLSo/syKR8ZWK2vv X-Gm-Gg: ASbGncvPN+csJJ9hzYm4J35Xbp9xLRn9O19ew2NeIwWOagsp8FBr4RphCOoRKeyuJDF lglUgsrVAXGr0CMcc0aPcCJWeBvozpddhqddSL8zx0BikIQ9gTYm6Xord+xqNqWgDtasmlmiild r8kIRLfiOVgew4BPKJaoLt0aGcqRmnaS6fMOYmbpq5DuQCHhT2y9NuOf57zpCeGhacQfmvM3IXe itdD3SXXEhbrBjJQiBjIRWllbX+2NS43Vu9fgXLHchIywORYLNAyMjfvFxoF0j0/iDlddwz0VYt MxYDF0pQbmlUqmhBrqKYULEaEaSscC81U92uCW5XVUpiGroWzmHVOA== X-Received: by 2002:a17:90b:2f84:b0:327:e9f4:4de5 with SMTP id 98e67ed59e1d1-327e9f4506cmr4193729a91.23.1756498051465; Fri, 29 Aug 2025 13:07:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGRwbcsjVEx1dz1w0nWHcTpvNQLW93gmAhnSc1tPMLDrZo+IZNZizujRtPAZz9Vsrb4ds8I6g== X-Received: by 2002:a17:90b:2f84:b0:327:e9f4:4de5 with SMTP id 98e67ed59e1d1-327e9f4506cmr4193695a91.23.1756498051064; Fri, 29 Aug 2025 13:07:31 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:32:03 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-23-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2083; i=armenon@redhat.com; h=from:subject:message-id; bh=dpJRFzd7gm8KScLE3AM8NwdARIO3OP6+DoU1jE8PGBM=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdj+hxWJtefONk/7cWr6jvmz/lTtpd55YFAkuaeKzP V1fsfdaRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIn45jP895gSmx2wP9Doypft bznup3yLvLzp1RPNPYm/2LgYd4q6tTIyHFZMVZJi28MT+Ty6mDuv81KQ1rxPbqxs+W28vbn+Dgd YAA== 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: 1756573075119116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. postcopy_ram_listen_thread() calls qemu_loadvm_state_main() to load the vm, and in case of a failure, it should set the error in the migration object. Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/savevm.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index b0fd51d0f142c30ce21bdc02204ce947283fea49..71f4d8399349934134c2c02609d= 3ede6f61754f8 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2095,6 +2095,7 @@ static void *postcopy_ram_listen_thread(void *opaque) QEMUFile *f =3D mis->from_src_file; int load_res; MigrationState *migr =3D migrate_get_current(); + Error *local_err =3D NULL; =20 object_ref(OBJECT(migr)); =20 @@ -2111,7 +2112,7 @@ static void *postcopy_ram_listen_thread(void *opaque) qemu_file_set_blocking(f, true); =20 /* TODO: sanity check that only postcopiable data will be loaded here = */ - load_res =3D qemu_loadvm_state_main(f, mis, &error_fatal); + load_res =3D qemu_loadvm_state_main(f, mis, &local_err); =20 /* * This is tricky, but, mis->from_src_file can change after it @@ -2137,7 +2138,10 @@ static void *postcopy_ram_listen_thread(void *opaque) __func__, load_res); load_res =3D 0; /* prevent further exit() */ } else { - error_report("%s: loadvm failed: %d", __func__, load_res); + error_prepend(&local_err, + "loadvm failed during postcopy: %d: ", load_res); + migrate_set_error(migr, local_err); + error_report_err(local_err); migrate_set_state(&mis->state, MIGRATION_STATUS_POSTCOPY_ACTIV= E, MIGRATION_STATUS_FAILED); } --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756575257; cv=none; d=zohomail.com; s=zohoarc; b=kdQ/abwLjqavy9iselicRS7IiJRc34qNzoHlY1GKBLYsKtoDecizq/2XQsECQxQa89E3nUV6Ra6vFg63P5y2rbyCbAcr3yOqT0/sZAocI7tFKfHtbP0knQGfZQy99Etre495Rv45M4pzqlJj1Ea5f6gjlkUvTnJhKigkg+sOrG0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756575257; 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=a2Fm5+NKWTXNmbcMVUNijv6+ysMm9REmdd9pZ77LGmk=; b=XVECOKb24scHKQiy73oZiRktirpIvAoByPDCagB9k5sHaEZZF19TOTfy+VbHi6BrXDjFJ+IYxRl543wTROZJsQV3Mpnxdy0YUQ7fTBCPJYUnG7e81GZJu+LUkxD4qIXWPQir0WHaufwsQSmWFKFFd+16aHgyl7pCljqZ9xDDlhw= 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 1756575257932313.75332429796504; Sat, 30 Aug 2025 10:34:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNfT-0006VI-Gg; Sat, 30 Aug 2025 11:39:03 -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 1us5OE-0006fq-Az for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:08: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 1us5OC-0005J9-1k for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:08:02 -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-308-6wn0r6gqNPO9fqRX0dgNDA-1; Fri, 29 Aug 2025 16:07:58 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-325e31cece1so3633068a91.2 for ; Fri, 29 Aug 2025 13:07:57 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.07.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:07:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498079; 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=a2Fm5+NKWTXNmbcMVUNijv6+ysMm9REmdd9pZ77LGmk=; b=OOfjKHyQiPnVqcRNekwG6ACoHEbyYTzzMsQOr5ykO6umDDUWSuSxdgtONwx013DCtMV8g5 LWjU+2vRMaX6Ms8TlY8y5E7KLxL84O+rcWFB+T99rrjBH97dEF9vUAEt52t3JpSK8ialq2 2UsGsd9rg5GFzxZgEfBxeoaJ+qRzM6c= X-MC-Unique: 6wn0r6gqNPO9fqRX0dgNDA-1 X-Mimecast-MFC-AGG-ID: 6wn0r6gqNPO9fqRX0dgNDA_1756498077 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756498077; x=1757102877; 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=a2Fm5+NKWTXNmbcMVUNijv6+ysMm9REmdd9pZ77LGmk=; b=O5CYYNI1LTT6sCLM3oTMVIb0HotzcNCd53CJMGCJF/5fdQOv4v6U1YGMdeQHFqlTUV PCjBvZkwIDA4lai8eWfm5olr+8JEEe3ChkKpVHxBLY1h4+8Qzk+XVKKyM2t8TZogxG43 hyOZIDRXfu0BoTIy7p8GZyPRcoxS+y03amoZ12CZR/skKXXkkdTIWjNqBR3CSsWGHOra kPHl/cKoCUDV87XWbqetCfLI1ctI5qqIdBomd4JgFKOPM8FHVJaFrrSvUczYqBw0nxcH fqky5rwaqMf3YU9m7rN+ENPFJA9AqUwmtO04PBJxZGPkhhpikpcr+wh26ATRJXz7bdN4 UzWw== X-Gm-Message-State: AOJu0YwH3XZfjjZKqLiKeyxHBx8BF1Q4oD7ZwNdemLQ+SDx8nhbu1Jp6 0PKRGVgSdaKQHKk9l3TSBCOv2KOYgxkrYPBDqKuLCcbBSL8PWIrcHK9tNGcucOVjM9TWam6ztLM 5tFBbwIaRL1BmFvD/Ke/OPlE9X8+BDui26xraxGY5qq2UBLXnLuTb9kef X-Gm-Gg: ASbGncsw1lKCp2sU/9WAuBlVrr+4kKnI4RIa7juMYb+nAtF7/tqyg/n4drRX1QMK0b5 DbFzDUjC1qLbzJ4G/J0cDqlsrY8kWC8kW5QpE0DwiwQK8lwcPk0BG23Qf5hjv+NViRmg+SQ2eXP IzKULE9StB47HnDtSmgq14F/LNFuTy4l13p4JRxWASgJmQKcKWXPNJ55gtUqVFP5tUGbQ64HZ54 ezfBWvjEc/Y+nIJLl7P5sBTtxmJcMW/owJPQLWhGoMjr8iH0TdOTFyA4tG3Wc6rwSMg+QPTpa66 pY4fP8SxO2i9eMHTHNNbGnuWSbD2Uy2vshVySs6oVGo6fMowXBh2IA== X-Received: by 2002:a17:90b:2e4d:b0:31e:b77c:1f09 with SMTP id 98e67ed59e1d1-3251774b61dmr39677304a91.19.1756498074254; Fri, 29 Aug 2025 13:07:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGBpY2vjGIkl3mZJ3ALCGw3W7zmfq2ZrqVIEI1rdX9aWjbXQx3UegocbzhliExdBEQBCsmFkw== X-Received: by 2002:a17:90b:2e4d:b0:31e:b77c:1f09 with SMTP id 98e67ed59e1d1-3251774b61dmr39677164a91.19.1756498071636; Fri, 29 Aug 2025 13:07:51 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:32:04 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-24-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=18020; i=armenon@redhat.com; h=from:subject:message-id; bh=1hkl0TuxMtTDC0XdBgCz3faKw7v6xH3wc1VTiv0ES74=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdj+j2FVucTn9UpxrQnYfF2Jzm3Rkxs9zW188U1rP8 7Hr7Z3IjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABNx1mJkmLrpuJG6P9Mv3p+X 22bphaXe3BlbGc6ksCicTyQyOcR+GyPD+rrTy8z8P0lYfw4L+Z3V8e2WRWfdnMnLD8drVm+amWT CCgA= 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: 1756575259894124100 This commit removes the redundant vmstate_save_state_with_err() function. Previously, commit 969298f9d7 introduced vmstate_save_state_with_err() to handle error propagation, while vmstate_save_state() existed for non-error scenarios. This is because there were code paths where vmstate_save_state_v() (called internally by vmstate_save_state) did not explicitly set errors on failure. This change unifies error handling by - updating vmstate_save_state() to accept an Error **errp argument. - vmstate_save_state_v() ensures errors are set directly within the errp object, eliminating the need for two separate functions. All calls to vmstate_save_state_with_err() are replaced with vmstate_save_state(). This simplifies the API and improves code maintainability. vmstate_save_state() that only calls vmstate_save_state_v(), by inference, also has errors set in errp in case of failure. The errors are reported using error_report_err(). If we want the function to exit on error, then &error_fatal is passed. Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- hw/display/virtio-gpu.c | 3 ++- hw/pci/pci.c | 2 +- hw/s390x/virtio-ccw.c | 2 +- hw/scsi/spapr_vscsi.c | 2 +- hw/vfio/pci.c | 4 ++-- hw/virtio/virtio-mmio.c | 2 +- hw/virtio/virtio-pci.c | 2 +- hw/virtio/virtio.c | 6 ++++-- include/migration/vmstate.h | 2 -- migration/cpr.c | 3 +-- migration/savevm.c | 11 ++++++++--- migration/vmstate-types.c | 25 ++++++++++++++++++------- migration/vmstate.c | 10 ++-------- tests/unit/test-vmstate.c | 20 +++++++++++++++++--- ui/vdagent.c | 3 ++- 15 files changed, 61 insertions(+), 36 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 5dc31bc6bfb0272e29a4364ab10de2595a4bedf7..477ec700a130d77ad93346c264b= b7eaa8bca76d5 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1246,7 +1246,8 @@ static int virtio_gpu_save(QEMUFile *f, void *opaque,= size_t size, } qemu_put_be32(f, 0); /* end of list */ =20 - return vmstate_save_state(f, &vmstate_virtio_gpu_scanouts, g, NULL); + return vmstate_save_state(f, &vmstate_virtio_gpu_scanouts, g, NULL, + &error_fatal); } =20 static bool virtio_gpu_load_restore_mapping(VirtIOGPU *g, diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 6be932d3bb67ff0c4808707db2a7b6378a90e82b..e53fd270118293ca82f40d45d8f= 97f62612736a1 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -926,7 +926,7 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) * This makes us compatible with old devices * which never set or clear this bit. */ s->config[PCI_STATUS] &=3D ~PCI_STATUS_INTERRUPT; - vmstate_save_state(f, &vmstate_pci_device, s, NULL); + vmstate_save_state(f, &vmstate_pci_device, s, NULL, &error_fatal); /* Restore the interrupt status bit. */ pci_update_irq_status(s); } diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index 6a9641a03d5d3a38a4de7ceb9deffc0cc303bcff..4cb1ced001ae241c53c503ebfd7= c90e336799c37 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1130,7 +1130,7 @@ static int virtio_ccw_load_queue(DeviceState *d, int = n, QEMUFile *f) static void virtio_ccw_save_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL); + vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL, &error_fatal= ); } =20 static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index da173f48676395cc02bd00cb3efa248afed4581b..f0a7dd2b882a13deec4a4c6d2eb= 4aae6d2fdbeb9 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -630,7 +630,7 @@ static void vscsi_save_request(QEMUFile *f, SCSIRequest= *sreq) vscsi_req *req =3D sreq->hba_private; assert(req->active); =20 - vmstate_save_state(f, &vmstate_spapr_vscsi_req, req, NULL); + vmstate_save_state(f, &vmstate_spapr_vscsi_req, req, NULL, &error_fata= l); =20 trace_spapr_vscsi_save_request(req->qtag, req->cur_desc_num, req->cur_desc_offset); diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 1ecf150ed8218e8815655d3665f14ebac4382cf9..7c41687e4bab9e35b382bfceff6= 6e82f68abaf56 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2789,8 +2789,8 @@ static int vfio_pci_save_config(VFIODevice *vbasedev,= QEMUFile *f, Error **errp) { VFIOPCIDevice *vdev =3D container_of(vbasedev, VFIOPCIDevice, vbasedev= ); =20 - return vmstate_save_state_with_err(f, &vmstate_vfio_pci_config, vdev, = NULL, - errp); + return vmstate_save_state(f, &vmstate_vfio_pci_config, vdev, NULL, + errp); } =20 static int vfio_pci_load_config(VFIODevice *vbasedev, QEMUFile *f) diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 0a688909fc606a3c9fde933667ae8c309ab527d0..fb58c36452730cfc92a0d26ff13= e01e2d6654960 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -613,7 +613,7 @@ static void virtio_mmio_save_extra_state(DeviceState *o= paque, QEMUFile *f) { VirtIOMMIOProxy *proxy =3D VIRTIO_MMIO(opaque); =20 - vmstate_save_state(f, &vmstate_virtio_mmio, proxy, NULL); + vmstate_save_state(f, &vmstate_virtio_mmio, proxy, NULL, &error_fatal); } =20 static int virtio_mmio_load_extra_state(DeviceState *opaque, QEMUFile *f) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index b04faa1e5c91b5cef40e54ec41d92422d16bfc13..d2595fbd55151aba2579bb01a59= 577c1a40b71e0 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -154,7 +154,7 @@ static void virtio_pci_save_extra_state(DeviceState *d,= QEMUFile *f) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy(d); =20 - vmstate_save_state(f, &vmstate_virtio_pci, proxy, NULL); + vmstate_save_state(f, &vmstate_virtio_pci, proxy, NULL, &error_fatal); } =20 static int virtio_pci_load_extra_state(DeviceState *d, QEMUFile *f) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 018803c80d13107eb4e5e63914f9c1f837ab1b19..0a68f1b6f1ddb97a968c9c03ed4= f37a38484d2f9 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -2992,6 +2992,7 @@ int virtio_save(VirtIODevice *vdev, QEMUFile *f) VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(vdev); uint32_t guest_features_lo =3D (vdev->guest_features & 0xffffffff); int i; + Error *local_err =3D NULL; =20 if (k->save_config) { k->save_config(qbus->parent, f); @@ -3035,14 +3036,15 @@ int virtio_save(VirtIODevice *vdev, QEMUFile *f) } =20 if (vdc->vmsd) { - int ret =3D vmstate_save_state(f, vdc->vmsd, vdev, NULL); + int ret =3D vmstate_save_state(f, vdc->vmsd, vdev, NULL, &local_er= r); if (ret) { + error_report_err(local_err); return ret; } } =20 /* Subsections */ - return vmstate_save_state(f, &vmstate_virtio, vdev, NULL); + return vmstate_save_state(f, &vmstate_virtio, vdev, NULL, &error_fatal= ); } =20 /* A wrapper for use as a VMState .put function */ diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 056781b1c21e737583f081594d9f88b32adfd674..5fe9bbf39058d0cf97c1adab54c= c516dbe8dc32a 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -1198,8 +1198,6 @@ extern const VMStateInfo vmstate_info_qlist; int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, int version_id, Error **errp); int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, JSONWriter *vmdesc); -int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, void *opaque, JSONWriter *vmdesc, Error **errp); int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc, diff --git a/migration/cpr.c b/migration/cpr.c index 8abb6db76d2474157f804ece4c35ebfc8c22d21a..038f48f810aceb66d7988852240= e2e5d9840ad1a 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -182,9 +182,8 @@ int cpr_state_save(MigrationChannel *channel, Error **e= rrp) qemu_put_be32(f, QEMU_CPR_FILE_MAGIC); qemu_put_be32(f, QEMU_CPR_FILE_VERSION); =20 - ret =3D vmstate_save_state(f, &vmstate_cpr_state, &cpr_state, 0); + ret =3D vmstate_save_state(f, &vmstate_cpr_state, &cpr_state, 0, errp); if (ret) { - error_setg(errp, "vmstate_save_state error %d", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index 71f4d8399349934134c2c02609d3ede6f61754f8..2c05b763148295d7e2095027aa1= 43f45bc4c4676 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1056,8 +1056,8 @@ static int vmstate_save(QEMUFile *f, SaveStateEntry *= se, JSONWriter *vmdesc, if (!se->vmsd) { vmstate_save_old_style(f, se, vmdesc); } else { - ret =3D vmstate_save_state_with_err(f, se->vmsd, se->opaque, vmdes= c, - errp); + ret =3D vmstate_save_state(f, se->vmsd, se->opaque, vmdesc, + errp); if (ret) { return ret; } @@ -1285,6 +1285,7 @@ void qemu_savevm_state_header(QEMUFile *f) { MigrationState *s =3D migrate_get_current(); JSONWriter *vmdesc =3D s->vmdesc; + Error *local_err =3D NULL; =20 trace_savevm_state_header(); qemu_put_be32(f, QEMU_VM_FILE_MAGIC); @@ -1303,7 +1304,11 @@ void qemu_savevm_state_header(QEMUFile *f) json_writer_start_object(vmdesc, "configuration"); } =20 - vmstate_save_state(f, &vmstate_configuration, &savevm_state, vmdes= c); + vmstate_save_state(f, &vmstate_configuration, &savevm_state, + vmdesc, &local_err); + if (local_err) { + error_report_err(local_err); + } =20 if (vmdesc) { json_writer_end_object(vmdesc); diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index c5cfd861e3aa5391245ef46bec9c90106c467e6e..a1cd7a95fa0148858dd883acf9a= 707b2b076d89e 100644 --- a/migration/vmstate-types.c +++ b/migration/vmstate-types.c @@ -565,10 +565,14 @@ static int put_tmp(QEMUFile *f, void *pv, size_t size, const VMStateDescription *vmsd =3D field->vmsd; void *tmp =3D g_malloc(size); int ret; + Error *local_err =3D NULL; =20 /* Writes the parent field which is at the start of the tmp */ *(void **)tmp =3D pv; - ret =3D vmstate_save_state(f, vmsd, tmp, vmdesc); + ret =3D vmstate_save_state(f, vmsd, tmp, vmdesc, &local_err); + if (ret) { + error_report_err(local_err); + } g_free(tmp); =20 return ret; @@ -676,13 +680,15 @@ static int put_qtailq(QEMUFile *f, void *pv, size_t u= nused_size, size_t entry_offset =3D field->start; void *elm; int ret; + Error *local_err =3D NULL; =20 trace_put_qtailq(vmsd->name, vmsd->version_id); =20 QTAILQ_RAW_FOREACH(elm, pv, entry_offset) { qemu_put_byte(f, true); - ret =3D vmstate_save_state(f, vmsd, elm, vmdesc); + ret =3D vmstate_save_state(f, vmsd, elm, vmdesc, &local_err); if (ret) { + error_report_err(local_err); return ret; } } @@ -711,6 +717,7 @@ static gboolean put_gtree_elem(gpointer key, gpointer v= alue, gpointer data) struct put_gtree_data *capsule =3D (struct put_gtree_data *)data; QEMUFile *f =3D capsule->f; int ret; + Error *local_err =3D NULL; =20 qemu_put_byte(f, true); =20 @@ -718,16 +725,20 @@ static gboolean put_gtree_elem(gpointer key, gpointer= value, gpointer data) if (!capsule->key_vmsd) { qemu_put_be64(f, (uint64_t)(uintptr_t)(key)); /* direct key */ } else { - ret =3D vmstate_save_state(f, capsule->key_vmsd, key, capsule->vmd= esc); + ret =3D vmstate_save_state(f, capsule->key_vmsd, key, capsule->vmd= esc, + &local_err); if (ret) { + error_report_err(local_err); capsule->ret =3D ret; return true; } } =20 /* put the data */ - ret =3D vmstate_save_state(f, capsule->val_vmsd, value, capsule->vmdes= c); + ret =3D vmstate_save_state(f, capsule->val_vmsd, value, capsule->vmdes= c, + &local_err); if (ret) { + error_report_err(local_err); capsule->ret =3D ret; return true; } @@ -857,14 +868,14 @@ static int put_qlist(QEMUFile *f, void *pv, size_t un= used_size, size_t entry_offset =3D field->start; void *elm; int ret; + Error *local_err =3D NULL; =20 trace_put_qlist(field->name, vmsd->name, vmsd->version_id); QLIST_RAW_FOREACH(elm, pv, entry_offset) { qemu_put_byte(f, true); - ret =3D vmstate_save_state(f, vmsd, elm, vmdesc); + ret =3D vmstate_save_state(f, vmsd, elm, vmdesc, &local_err); if (ret) { - error_report("%s: failed to save %s (%d)", field->name, - vmsd->name, ret); + error_report_err(local_err); return ret; } } diff --git a/migration/vmstate.c b/migration/vmstate.c index 8d1e9eb62bb9a7506604016b0ed858855e685776..ad8e5b71ae2ce78e66a6426602e= 5c20405ec57c0 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -406,12 +406,6 @@ bool vmstate_section_needed(const VMStateDescription *= vmsd, void *opaque) =20 =20 int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, JSONWriter *vmdesc_id) -{ - return vmstate_save_state_v(f, vmsd, opaque, vmdesc_id, vmsd->version_= id, NULL); -} - -int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, void *opaque, JSONWriter *vmdesc_id, Error **errp) { return vmstate_save_state_v(f, vmsd, opaque, vmdesc_id, vmsd->version_= id, errp); @@ -512,7 +506,7 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDesc= ription *vmsd, =20 if (inner_field->flags & VMS_STRUCT) { ret =3D vmstate_save_state(f, inner_field->vmsd, - curr_elem, vmdesc_loop); + curr_elem, vmdesc_loop, errp); } else if (inner_field->flags & VMS_VSTRUCT) { ret =3D vmstate_save_state_v(f, inner_field->vmsd, curr_elem, vmdesc_loop, @@ -674,7 +668,7 @@ static int vmstate_subsection_save(QEMUFile *f, const V= MStateDescription *vmsd, qemu_put_byte(f, len); qemu_put_buffer(f, (uint8_t *)vmsdsub->name, len); qemu_put_be32(f, vmsdsub->version_id); - ret =3D vmstate_save_state_with_err(f, vmsdsub, opaque, vmdesc= , errp); + ret =3D vmstate_save_state(f, vmsdsub, opaque, vmdesc, errp); if (ret) { return ret; } diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c index 4ff0ab632f7e08b922dfcf565f31b0e63c17f59e..cadbab3c5e2609e217e436d470d= 00356704f2c8f 100644 --- a/tests/unit/test-vmstate.c +++ b/tests/unit/test-vmstate.c @@ -67,9 +67,13 @@ static QEMUFile *open_test_file(bool write) static void save_vmstate(const VMStateDescription *desc, void *obj) { QEMUFile *f =3D open_test_file(true); + Error *local_err =3D NULL; =20 /* Save file with vmstate */ - int ret =3D vmstate_save_state(f, desc, obj, NULL); + int ret =3D vmstate_save_state(f, desc, obj, NULL, &local_err); + if (ret) { + error_report_err(local_err); + } g_assert(!ret); qemu_put_byte(f, QEMU_VM_EOF); g_assert(!qemu_file_get_error(f)); @@ -438,10 +442,15 @@ static const VMStateDescription vmstate_skipping =3D { =20 static void test_save_noskip(void) { + Error *local_err =3D NULL; QEMUFile *fsave =3D open_test_file(true); TestStruct obj =3D { .a =3D 1, .b =3D 2, .c =3D 3, .d =3D 4, .e =3D 5,= .f =3D 6, .skip_c_e =3D false }; - int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL); + int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL, + &local_err); + if (ret) { + error_report_err(local_err); + } g_assert(!ret); g_assert(!qemu_file_get_error(fsave)); =20 @@ -460,10 +469,15 @@ static void test_save_noskip(void) =20 static void test_save_skip(void) { + Error *local_err =3D NULL; QEMUFile *fsave =3D open_test_file(true); TestStruct obj =3D { .a =3D 1, .b =3D 2, .c =3D 3, .d =3D 4, .e =3D 5,= .f =3D 6, .skip_c_e =3D true }; - int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL); + int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL, + &local_err); + if (ret) { + error_report_err(local_err); + } g_assert(!ret); g_assert(!qemu_file_get_error(fsave)); =20 diff --git a/ui/vdagent.c b/ui/vdagent.c index bc3c77f01332a4b594cba00f3f9f9a5bca4d739a..ddb91e75c64a2af09d3f01e1b49= 00bd253513dd7 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -992,7 +992,8 @@ static int put_cbinfo(QEMUFile *f, void *pv, size_t siz= e, } } =20 - return vmstate_save_state(f, &vmstate_cbinfo_array, &cbinfo, vmdesc); + return vmstate_save_state(f, &vmstate_cbinfo_array, &cbinfo, vmdesc, + &error_fatal); } =20 static int get_cbinfo(QEMUFile *f, void *pv, size_t size, --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756570696; cv=none; d=zohomail.com; s=zohoarc; b=BH1KkIBsKnie5fD7byEVtQXL/BuCWwkqFWpK8YYcwcdN/aL8bwo8vHkGkRiOiQhLxuNkxNutupnWvRDNTJUY+K5gvu9aBPW34z55npm6/j8x4dc8f9XZr9n3aAjOG8U7vcEKCShXE/tkKmDEg4WJCNEgkOoeRQvXGoaWqIL5X2g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570696; 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=RIJWzM+9HmtrwS0tPhmUTm+5sifEW+9w36De81b4Bm8=; b=bniQABn2pDgpmCPU5bMV6EuUBUGlBkQQZY3sVCgbxj+vM5/w3oJtDiD2ZnO2V3yPyOXORRKpmo5oEkY2U4jlI2Ph1LghWv5vEfOBW5i/kAnkfmnQT6cZoBilXtjfDDQRVU0+WmF1ePBMOf0llBnXBj32aUU+oeBbgSW1/3hW31Q= 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 1756570696758919.8717999525611; Sat, 30 Aug 2025 09:18:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNf4-0005RH-H2; Sat, 30 Aug 2025 11:38:38 -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 1us5OL-0006iJ-7S for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:08:09 -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 1us5OJ-0005Jz-2P for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:08:08 -0400 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-591-rEJYVAYJPFmx0z2aXEBx0A-1; Fri, 29 Aug 2025 16:08:05 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3251961140bso2371412a91.2 for ; Fri, 29 Aug 2025 13:08:05 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.07.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:08:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498086; 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=RIJWzM+9HmtrwS0tPhmUTm+5sifEW+9w36De81b4Bm8=; b=iLoIlqgtGuXbYScHeBWumkcjyuIhEjt8Dlpl0pQzY3HZBd1ZLC26AqU9LcsnpL+h/io+cP r/zOfjct/vS59FWqqLfLYK6EoHMGvTRBN/Gljf5Mg1RVhOH0y4pB1Ha7vQq7sG/B4xpBhC gvz8mKXXk4tt5I/GvFv32Cmzu8bdasM= X-MC-Unique: rEJYVAYJPFmx0z2aXEBx0A-1 X-Mimecast-MFC-AGG-ID: rEJYVAYJPFmx0z2aXEBx0A_1756498084 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756498084; x=1757102884; 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=RIJWzM+9HmtrwS0tPhmUTm+5sifEW+9w36De81b4Bm8=; b=Etuhiud8iy/RE5raAFS8JoxXWhj8NM21uy4oriDQd9oUvd0mffHhWymMlSxn/RaFaF onTCk8rF7B9HY2nNn0xauBpz8xH28XOXwVuPTfvGirPOrY8JTFilviiepLN+tfjt/qZ0 9aaxRBwB5b7FdEVc5z21sxX0K3w2VeQVkDviIJ1U8P/6JDdD+/tfO+ZopOCIzdtMkdli eWlw0OovxW2kPYbu/Xy1zrDEWXRDo2vs2XjtdGkcqBSPiYLxoOA0E0A/EX/ddvPREi/s 98agbswKYmIbVzpY92f+7VORwRwPiqC0mYTNjHBvjidpK4AV9J9zC7bq0lWh+GFlSIWp SoIQ== X-Gm-Message-State: AOJu0YwidabfCP2BGKRkCBprnnz27cWnSLuplYeusVIk/b++m19F39HX Qs8VpVitsnyO7aWncMyX1Se/Pp9kw043zalfw0qCZiqlVLiXBneslH8vTUy7PNa+GM4I3Gezxsj Rh+Af5rFfY+mn9mjFxQGx9GvF48PFu+gYxIGcusjcUMLtG7oCFfeMCZtq X-Gm-Gg: ASbGnctd0fFPegy4GVErWl96to/5FY7uhBWKH7FyyVtMtx+eTiujNj5AoYhkCy2OMj+ A7wMwEvUINl8/8w1CreicoSMDvAz6Ccuo7Mk4+Z7vmAz3Qnxjbi/3NAyyv0c2t27D6uh+7Ccmc9 BaAJw24iE9UYCFwSHtMXIqMtqsPQSUV1VuL8QRvg0Cmd5NzMZH5fVYQcUxrdETnFBSpuv1Sm6hB 0J+eIhjLz5FzvOlY/9OVYdhvVNFOI9Q15b2lRW1X6B/dTrYagg6ffIQm1Gg/c0ZYklYBD3wnBDr 7ont4X1jrBN+cPBHNcOrYx1pNiRLgRBdVKjsRgKtJz9SKZn93qKPmg== X-Received: by 2002:a17:90b:2648:b0:327:83e1:5bf with SMTP id 98e67ed59e1d1-32783e10b79mr12610536a91.28.1756498084088; Fri, 29 Aug 2025 13:08:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFr7U8FzL+m7/jCRocI5RF71VOc6/69Njtxm9FXx7CFFkbaoLToigV1VKRugxWrzZED3Hot9Q== X-Received: by 2002:a17:90b:2648:b0:327:83e1:5bf with SMTP id 98e67ed59e1d1-32783e10b79mr12610498a91.28.1756498083584; Fri, 29 Aug 2025 13:08:03 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:32:05 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-25-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6500; i=armenon@redhat.com; h=from:subject:message-id; bh=74/dsKktNrtzX90Ti+uqvjJHnSL4vO0NIyRx84Chf/E=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdj8HhidK3T2391w4tKmTN23tNefV+XmZHbNr+lwnP ymbfHBtRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgImYCjP8U/23auOilooJvw26 82VWfNguH/wi2SHSo/1QZmtYbmbKC4b/VR9Pxy1geb/a95aPnfb/uOyPTP8COjqy9n+JTDw9y0C PGwA= 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: 1756570698072116600 The post_save() function call is responsible for cleaning up resources after the device state has been saved. Currently it is infallible, and does not return an error. It is called regardless of whether there is a preceding error from save or subsection save. That is, save and post_save() together are considered to be an atomic logical operation. It should not be confused as a counterpart of the post_load() function because post_load() does some sanity checks and returns an error if it fails. This commit, therefore, renames post_save() to cleanup_save() and makes it a void function. Reviewed-by: Fabiano Rosas Suggested-by: Akihiko Odaki Signed-off-by: Arun Menon --- docs/devel/migration/main.rst | 2 +- hw/ppc/spapr_pci.c | 5 ++--- include/migration/vmstate.h | 2 +- migration/savevm.c | 5 ++--- migration/vmstate.c | 12 ++++-------- target/arm/machine.c | 6 ++---- 6 files changed, 12 insertions(+), 20 deletions(-) diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst index 6493c1d2bca48a2fa34d92f6c0979c215c56b8d5..a39fec2e21c26c4315c0cf13b10= 5176d70679d4d 100644 --- a/docs/devel/migration/main.rst +++ b/docs/devel/migration/main.rst @@ -439,7 +439,7 @@ The functions to do that are inside a vmstate definitio= n, and are called: =20 This function is called before we save the state of one device. =20 -- ``int (*post_save)(void *opaque);`` +- ``void (*cleanup_save)(void *opaque);`` =20 This function is called after we save the state of one device (even upon failure, unless the call to pre_save returned an error). diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 1ac1185825e84ca908fd878f6cbe7e8cacac1d89..135265f075dff502af59fbc91ba= bca1f9a26c54d 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -2118,14 +2118,13 @@ static int spapr_pci_pre_save(void *opaque) return 0; } =20 -static int spapr_pci_post_save(void *opaque) +static void spapr_pci_cleanup_save(void *opaque) { SpaprPhbState *sphb =3D opaque; =20 g_free(sphb->msi_devs); sphb->msi_devs =3D NULL; sphb->msi_devs_num =3D 0; - return 0; } =20 static int spapr_pci_post_load(void *opaque, int version_id) @@ -2152,7 +2151,7 @@ static const VMStateDescription vmstate_spapr_pci =3D= { .version_id =3D 2, .minimum_version_id =3D 2, .pre_save =3D spapr_pci_pre_save, - .post_save =3D spapr_pci_post_save, + .cleanup_save =3D spapr_pci_cleanup_save, .post_load =3D spapr_pci_post_load, .fields =3D (const VMStateField[]) { VMSTATE_UINT64_EQUAL(buid, SpaprPhbState, NULL), diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 5fe9bbf39058d0cf97c1adab54cc516dbe8dc32a..c1d8e5b7a7d9d544fc8ce181372= 660f5538ef66b 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -208,7 +208,7 @@ struct VMStateDescription { int (*pre_load)(void *opaque); int (*post_load)(void *opaque, int version_id); int (*pre_save)(void *opaque); - int (*post_save)(void *opaque); + void (*cleanup_save)(void *opaque); bool (*needed)(void *opaque); bool (*dev_unplug_pending)(void *opaque); =20 diff --git a/migration/savevm.c b/migration/savevm.c index 2c05b763148295d7e2095027aa143f45bc4c4676..693f77b728604f2072fb40bd2ec= 268b217da9727 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -322,14 +322,13 @@ static int configuration_pre_save(void *opaque) return 0; } =20 -static int configuration_post_save(void *opaque) +static void configuration_cleanup_save(void *opaque) { SaveState *state =3D opaque; =20 g_free(state->capabilities); state->capabilities =3D NULL; state->caps_count =3D 0; - return 0; } =20 static int configuration_pre_load(void *opaque) @@ -544,7 +543,7 @@ static const VMStateDescription vmstate_configuration = =3D { .pre_load =3D configuration_pre_load, .post_load =3D configuration_post_load, .pre_save =3D configuration_pre_save, - .post_save =3D configuration_post_save, + .cleanup_save =3D configuration_cleanup_save, .fields =3D (const VMStateField[]) { VMSTATE_UINT32(len, SaveState), VMSTATE_VBUFFER_ALLOC_UINT32(name, SaveState, 0, NULL, len), diff --git a/migration/vmstate.c b/migration/vmstate.c index ad8e5b71ae2ce78e66a6426602e5c20405ec57c0..a7562a5cfd8627e20c90e286e35= c5e3429c48150 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -529,8 +529,8 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDesc= ription *vmsd, if (ret) { error_setg(errp, "Save of field %s/%s failed", vmsd->name, field->name); - if (vmsd->post_save) { - vmsd->post_save(opaque); + if (vmsd->cleanup_save) { + vmsd->cleanup_save(opaque); } return ret; } @@ -557,12 +557,8 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDes= cription *vmsd, =20 ret =3D vmstate_subsection_save(f, vmsd, opaque, vmdesc, errp); =20 - if (vmsd->post_save) { - int ps_ret =3D vmsd->post_save(opaque); - if (!ret && ps_ret) { - ret =3D ps_ret; - error_setg(errp, "post-save failed: %s", vmsd->name); - } + if (vmsd->cleanup_save) { + vmsd->cleanup_save(opaque); } return ret; } diff --git a/target/arm/machine.c b/target/arm/machine.c index 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.51.0 From nobody Sun Sep 28 16:28:06 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=1756568639; cv=none; d=zohomail.com; s=zohoarc; b=HxEZDhQaFFNplfHKVxUjyEHr9D6j65ilS6iRQvW+SI4krg620LCXwQAAqMcsB74JBSxApAFhqzcdCAHH0amzIGFSsoFcKT90lRvk5z6D24Z2NFJqfEu+WXbNtYy0eNn8nLpTi5Oabs26IGwsgg0SoG2L+iG67u3MEu6okFbv994= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756568639; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Vc9okNpMYt4DXDWcpMg2ynUqZTjLFOeZYVXE63oU0yM=; b=YMZOX/Iqp9bV5o8PHazEMzXPmn6rrSeimTOYMju3JOfMNPxpwkKLL6RuXNbLLVYnHIG9cKJaly5WHxxk+twhDw9b7yYV2O81ZZ1HFgVe2jS1DWv51LtT3bpwd+fsaHUU7hE5Z+2KIXuqA/n2YEbcq2lKrfuIUo0dmHbVW0Jdal4= 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 1756568639969432.76633147131815; Sat, 30 Aug 2025 08:43:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNfu-0006rL-E5; Sat, 30 Aug 2025 11:39: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 1us5OW-0006mM-Dw for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:08:20 -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 1us5OS-0005LL-LN for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:08:20 -0400 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-48-mB2ZTRDBMq-WoawYBuOfYg-1; Fri, 29 Aug 2025 16:08:14 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-325b2959306so4061275a91.0 for ; Fri, 29 Aug 2025 13:08:14 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.08.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:08:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498096; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Vc9okNpMYt4DXDWcpMg2ynUqZTjLFOeZYVXE63oU0yM=; b=Vak9cNNlln8L6RvqVDbiQLpqXYBKo53MKHm6ZmNM2TPdj5VTszUfDW3B2ljEfrZWxm1ixF DpDoFIFCZuLPy7mNiEYPe1QgNhPrM09wRrgCR/x/1Cv6hep2MreuU/4HKrxTOFNWC6Grk6 D9Z01ZE59n6fxAfzOELii/NPuzVLQDU= X-MC-Unique: mB2ZTRDBMq-WoawYBuOfYg-1 X-Mimecast-MFC-AGG-ID: mB2ZTRDBMq-WoawYBuOfYg_1756498094 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756498094; x=1757102894; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Vc9okNpMYt4DXDWcpMg2ynUqZTjLFOeZYVXE63oU0yM=; b=glFVy1Hy++d3gT85Cvm4nUbkePb10zNZ4zpKVEKidzYZ3d1wvGDOSgJbd9mDCvczez aOBLxeCrj4qhTMUD3cFjWWmvsSWVuneIbaIT3rICSZ4GzA7M+dZkZw2IL3QaPHyo5yZ+ ejn31uI4oueqd6Le3bmeHxYbJBB3UG1K1vTTBBLmDkMmFUqi8Q17Xt0aNXezJyOFqutl lum2jxyDPnu8sQFm415xPoboI/xjUiapzS9jK5Fhxsfj+aRcaaf5KdSJhjC1rCNiA0Bu PAfpELlUvC9rlSqMg2l/5pXJIlsyVGC/7lGA08LHG9O0PSBNExj5cbONzTW36UbDasWq sWIQ== X-Gm-Message-State: AOJu0YxM8iojXnduJzI8HQrow32R5IA+DK9FIqR9Djd88U0nniBSNVJ8 LnDTG8jYduFA8FTfJGhPE82HwGXDRH4mMoOs5Vaw7/mjHiogr4zKlo+lJq2GfiWi5imvqFWQU0w 2dAsf4HMqOBJUj5kQxD3hUnfMxpM0628V5p1LU27jC9rqpc4ZWHNG1b1G X-Gm-Gg: ASbGncuUT9bWPLJA5hwzlW+Y3z2LPSe5sG5DW+KmraJo0EyFKCUfssiECw+XHjso3Qg dVxS9gJEtBWX3RUsd17fUu65gtOyO1XJjvxkOR3PaEDkVamN8ZUO2mPQB5ZJO+a35CjzqtXNCTP swKht7gDbQp4JfkIaU/z0J5e6nNwjc1XAV/IpxrNUTH1pP3w1tQxTyrPhrXYXB89fG5qIhEkBOM ZYka7BEHhMBcw07v9aHTK2ds3GO7KTgRleNklSl9Hsf54/IhrUwZPdQnWbmwkfCLJDgfs6SYuAD m/x4zjkptautoDPHS2jdfoqu71ro2d1Xxemwpf8axGhR9RmWXPiDbQ== X-Received: by 2002:a17:90a:d403:b0:327:7334:403d with SMTP id 98e67ed59e1d1-3277334435cmr15906346a91.26.1756498093573; Fri, 29 Aug 2025 13:08:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHhhXSX2eCLxAvWt7EvUR1swwAMrlBlt350y/9PRxwjHXPTpxnRCJrDDncu9hYyB0LWMaCANQ== X-Received: by 2002:a17:90a:d403:b0:327:7334:403d with SMTP id 98e67ed59e1d1-3277334435cmr15906316a91.26.1756498093195; Fri, 29 Aug 2025 13:08:13 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:32:06 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-26-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6945; i=armenon@redhat.com; h=from:subject:message-id; bh=mV3iaTC209YJUAdA9bqx8Vyx3XlTmai9n7FrOGzxR9o=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdj+/nV3C61nVvXI3iCyO4BA6Wuz51FvC1vvg14Wt/ tH7TlV1lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmEjcSUaG/fHWLRtFZdXeCHQ+ 5P7+R9fJRD9s+Xv3QLsPvbp+Xil/GRkWVBfzJPya1WSh5adme6TGK2divO3RC6tiHnKa1+zI92I GAA== 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: 1756568642959124100 - We need to have good error reporting in the callbacks in VMStateDescription struct. Specifically pre_save, pre_load and post_load callbacks. - It is not possible to change these functions everywhere in one patch, therefore, we introduce a duplicate set of callbacks with Error object passed to them. - So, in this commit, we implement 'errp' variants of these callbacks, introducing an explicit Error object parameter. - This is a functional step towards transitioning the entire codebase to the new error-parameterized functions. - Deliberately called in mutual exclusion from their counterparts, to prevent conflicts during the transition. - New impls should preferentally use 'errp' variants of these methods, and existing impls incrementally converted. The variants without 'errp' are intended to be removed once all usage is converted. Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- docs/devel/migration/main.rst | 19 +++++++++++++++++++ include/migration/vmstate.h | 14 ++++++++++++++ migration/vmstate.c | 31 ++++++++++++++++++++++++++++--- 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst index a39fec2e21c26c4315c0cf13b105176d70679d4d..93620102ae875e7477af2e26eef= fe636ca0cdbca 100644 --- a/docs/devel/migration/main.rst +++ b/docs/devel/migration/main.rst @@ -444,6 +444,25 @@ The functions to do that are inside a vmstate definiti= on, and are called: This function is called after we save the state of one device (even upon failure, unless the call to pre_save returned an error). =20 +Following are the errp variants of these functions. + +- ``int (*pre_load_errp)(void *opaque, Error **errp);`` + + This function is called before we load the state of one device. + +- ``int (*post_load_errp)(void *opaque, int version_id, Error **errp);`` + + This function is called after we load the state of one device. + +- ``int (*pre_save_errp)(void *opaque, Error **errp);`` + + This function is called before we save the state of one device. + +New impls should preferentally use 'errp' variants of these +methods and existing impls incrementally converted. +The variants without 'errp' are intended to be removed +once all usage is converted. + Example: You can look at hpet.c, that uses the first three functions to massage the state that is transferred. =20 diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index c1d8e5b7a7d9d544fc8ce181372660f5538ef66b..647d7a35ce5f2c8b8ca5fdb15b5= 4c10a0896cea8 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -200,14 +200,28 @@ struct VMStateDescription { * exclusive. For this reason, also early_setup VMSDs are migrated in a * QEMU_VM_SECTION_FULL section, while save_setup() data is migrated in * a QEMU_VM_SECTION_START section. + * + * There are duplicate impls of the post/pre save/load hooks. + * New impls should preferentally use 'errp' variants of these + * methods and existing impls incrementally converted. + * The variants without 'errp' are intended to be removed + * once all usage is converted. + * + * For the errp variants, + * Returns: 0 on success, + * <0 on error where -value is an error number from errno.h */ + bool early_setup; int version_id; int minimum_version_id; MigrationPriority priority; int (*pre_load)(void *opaque); + int (*pre_load_errp)(void *opaque, Error **errp); int (*post_load)(void *opaque, int version_id); + int (*post_load_errp)(void *opaque, int version_id, Error **errp); int (*pre_save)(void *opaque); + int (*pre_save_errp)(void *opaque, Error **errp); void (*cleanup_save)(void *opaque); bool (*needed)(void *opaque); bool (*dev_unplug_pending)(void *opaque); diff --git a/migration/vmstate.c b/migration/vmstate.c index a7562a5cfd8627e20c90e286e35c5e3429c48150..86293593e0fbb8409409b22d3f0= 653327d727c32 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -134,6 +134,7 @@ static void vmstate_handle_alloc(void *ptr, const VMSta= teField *field, int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, int version_id, Error **errp) { + ERRP_GUARD(); const VMStateField *field =3D vmsd->fields; int ret =3D 0; =20 @@ -152,7 +153,16 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescr= iption *vmsd, trace_vmstate_load_state_end(vmsd->name, "too old", -EINVAL); return -EINVAL; } - if (vmsd->pre_load) { + if (vmsd->pre_load_errp) { + ret =3D vmsd->pre_load_errp(opaque, errp); + if (ret < 0) { + error_prepend(errp, "pre load hook failed for: '%s', " + "version_id: %d, minimum version_id: %d, " + "ret: %d: ", vmsd->name, vmsd->version_id, + vmsd->minimum_version_id, ret); + return ret; + } + } else if (vmsd->pre_load) { ret =3D vmsd->pre_load(opaque); if (ret) { error_setg(errp, "pre load hook failed for: '%s', " @@ -245,7 +255,14 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescr= iption *vmsd, qemu_file_set_error(f, ret); return ret; } - if (vmsd->post_load) { + if (vmsd->post_load_errp) { + ret =3D vmsd->post_load_errp(opaque, version_id, errp); + if (ret < 0) { + error_prepend(errp, "post load hook failed for: %s, version_id= : " + "%d, minimum_version: %d, ret: %d: ", vmsd->name, + vmsd->version_id, vmsd->minimum_version_id, ret); + } + } else if (vmsd->post_load) { ret =3D vmsd->post_load(opaque, version_id); if (ret < 0) { error_setg(errp, @@ -414,12 +431,20 @@ int vmstate_save_state(QEMUFile *f, const VMStateDesc= ription *vmsd, int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc, int version_id,= Error **errp) { + ERRP_GUARD(); int ret =3D 0; const VMStateField *field =3D vmsd->fields; =20 trace_vmstate_save_state_top(vmsd->name); =20 - if (vmsd->pre_save) { + if (vmsd->pre_save_errp) { + ret =3D vmsd->pre_save_errp(opaque, errp); + trace_vmstate_save_state_pre_save_res(vmsd->name, ret); + if (ret < 0) { + error_prepend(errp, "pre-save for %s failed, ret: %d: ", + vmsd->name, ret); + } + } else if (vmsd->pre_save) { ret =3D vmsd->pre_save(opaque); trace_vmstate_save_state_pre_save_res(vmsd->name, ret); if (ret) { --=20 2.51.0 From nobody Sun Sep 28 16:28:06 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=1756570432; cv=none; d=zohomail.com; s=zohoarc; b=nfIqxi74NUg8qsbnODAyKvzQwbL4nTPE2rwK9Y8gxJw4cj6vXkN/dcr9t9CU7/xb4Dwgw+qIgMW7cMnJIREqfGmFBwo7dM4YLTfJUE9+7lw1HHObYmqmj16JoLl1/iwQjJj50xqtZRaDxtuGL3F/Jxvz2WSq+kOWS9Fa6rXGiLU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756570432; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vFx1//LdCNq+XYf5MolNY5wtarm8we+wGLU/Uo30GXs=; b=XakeXinrKSLLnAkzvXqcOMtyFa9aVNpXCZBBQQ9x0g4uhwmJWBEn1ZmkuanxNMpm3tGa7KOZgoOLo6Mn49tD/YZcSRiFEViUgYOXpHQ+hvypvDZA3AgPJQjoewidLFkr9k3mG45kjvHIZ5ruJQmp0mbJndt4Eu1H2aF8+w6K9wo= 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 1756570432653318.46443899488634; Sat, 30 Aug 2025 09:13:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1usNf7-0005iR-TF; Sat, 30 Aug 2025 11:38:42 -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 1us5Oe-0006p8-VO for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:08:29 -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 1us5Oc-0005MN-QM for qemu-devel@nongnu.org; Fri, 29 Aug 2025 16:08:28 -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-474-rlU3zRLZMfClxLH4g1SueA-1; Fri, 29 Aug 2025 16:08:24 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-244581c62faso33574245ad.2 for ; Fri, 29 Aug 2025 13:08:24 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.195.108]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-327d8f66f16sm3570543a91.0.2025.08.29.13.08.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 13:08:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756498106; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vFx1//LdCNq+XYf5MolNY5wtarm8we+wGLU/Uo30GXs=; b=HLnA5PkJXCzVUKcOMxnijmBXlNg3MAjJEHOfEvhRGzFYjYBac/zbSB+TZ0FJ1GTVOHoTJZ DX4JXI+u+YTHEnaMf939ZpU1MpK0kLuEivJ4wFZDrBRgS3UesrJnOYotWbNf3owuTzKb/1 nOvOkHws6W9YaG2sT3CeGK07/ku/0n8= X-MC-Unique: rlU3zRLZMfClxLH4g1SueA-1 X-Mimecast-MFC-AGG-ID: rlU3zRLZMfClxLH4g1SueA_1756498104 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756498104; x=1757102904; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vFx1//LdCNq+XYf5MolNY5wtarm8we+wGLU/Uo30GXs=; b=MZlKUJnp+IxYC/YVNQPuyEfEm0lT+8f0rzhBjVpe8Hizk9bHImGU16y3GUQHFVfR4m FR78nLxb+KrfjQZJhyPKdPnU2QTtD8n4OSPQL0gt8zgZva7Ewv6KNBPIwnJ2BxbdYA3B WDyl8MMZ7yCIh57Kx8P4czu97wcNqt8kD1WgOOBa8w1SJjzXqcQsDT5nQAyIICRuQHyk P1ddd+PGCij1sTqemwsvJJhoGTRtcSRBhfJO+DiUyX1vMoKIn1tdck2qT3K5WYstYY+T 3HiUnsklnHqCKwPM4edsYu6dIPcPKIxkmGfe6bliV7gWMcg58wUc5vbmz4tfxJt9PJbr WM/Q== X-Gm-Message-State: AOJu0Yxi+JcF0IVLPBN1Mnuulz0nwAtxCuEtDBoik0X1Yq5aLcNh9UgO cKziMXLrMEBtYp98N75sVv2k6a9/x7OqbBNEb8H1JIAkuuhDIhgzX0KcCzj44ChcJ7Zvn5cABzJ YN7MikYmBlO7+15oMyCsi4U2+bUMfBGiSgQJwQfuPZJzLLj85ZCOKclCq X-Gm-Gg: ASbGncu0+RSJQ9ceFR83wIvFM2GByqAjq5ez2kNeBwSyMf9L6gr5WuJqZIVaO7d1XUV lnTPL6KneSzdqTG8C0t+633RFKK4f4I3qfO7L59HtnJpD5vJ0jchENmXXa2+n8DzP7p4ocR0lsj LUuo7DIlsJexeYQRjKZFv7VQGihfRQ8Zcixm+9vuAnFhu/tQlj9jlN5Agu0/yQuKvpfjQTniBHE /6l97aTnslDti4efmwCH4Ixx2Dh7GDh6Fn3UamXuP0rCsMoqEqfO+t/pNwB6pDdeW9X/H6lWHeI 4/CK1isPUNsSDYpMAFD7mTHTh+DqxPyRfnckNt/19V6UbgFAMwgBVg== X-Received: by 2002:a17:903:38d0:b0:246:2e9:daaa with SMTP id d9443c01a7336-2462edd744bmr431677635ad.2.1756498103661; Fri, 29 Aug 2025 13:08:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE6T6Du1EDUzjXwO/D95bgmt283f7NgPyWR8oL5hyg3xYqtiTFPllPJJFX6ZpkykJUC2AZxhA== X-Received: by 2002:a17:903:38d0:b0:246:2e9:daaa with SMTP id d9443c01a7336-2462edd744bmr431677175ad.2.1756498103240; Fri, 29 Aug 2025 13:08:23 -0700 (PDT) From: Arun Menon Date: Sat, 30 Aug 2025 01:32:07 +0530 Subject: [PATCH v13 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: <20250830-propagate_tpm_error-v13-27-a4e777b7eb2c@redhat.com> References: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> In-Reply-To: <20250830-propagate_tpm_error-v13-0-a4e777b7eb2c@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Stefan Berger X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6741; i=armenon@redhat.com; h=from:subject:message-id; bh=xJOfJwiqBhYlRBnodOx/pfgX2IXLy1xjBTSVIQV4ib8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8Ymdr9w+Q7WVe8ybHj3KnwK+n2ozc2Uf/qPm8+lE6XFv 5zPcZrUUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCKROgx/hQP1TZd0RXceZBE2 evJUMc1Qan9X16I/fw/brlu08MAeVob/AQfzXsTsEpnIeaznnFT70uNPFiznXfNl8acIxqmTXIy YOQE= 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: 1756570435216124100 - When migration of a VM with encrypted vTPM fails on the destination host, (e.g., due to a mismatch in secret values), the error message displayed on the source host is generic and unhelpful. - For example, a typical error looks like this: "operation failed: job 'migration out' failed: Sibling indicated error 1. operation failed: job 'migration in' failed: load of migration failed: Input/output error" - Such generic errors are logged using error_report(), which prints to the console/monitor but does not make the detailed error accessible via the QMP query-migrate command. - This change, along with the set of changes of passing errp Error object to the VM state loading functions, help in addressing the issue. We use the post_load_errp hook of VMStateDescription to propagate errors by setting Error **errp objects in case of failure in the TPM backend. - It can then be retrieved using QMP command: {"execute" : "query-migrate"} Buglink: https://issues.redhat.com/browse/RHEL-82826 Reviewed-by: Stefan Berger Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- backends/tpm/tpm_emulator.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c index 4a234ab2c0b19b2604bf0dd8cb5f4540c72a9438..dacfca5ab7eb0445ddc1ced9751= 3068501b468bf 100644 --- a/backends/tpm/tpm_emulator.c +++ b/backends/tpm/tpm_emulator.c @@ -819,7 +819,8 @@ static int tpm_emulator_get_state_blobs(TPMEmulator *tp= m_emu) static int tpm_emulator_set_state_blob(TPMEmulator *tpm_emu, uint32_t type, TPMSizedBuffer *tsb, - uint32_t flags) + uint32_t flags, + Error **errp) { ssize_t n; ptm_setstate pss; @@ -838,17 +839,18 @@ static int tpm_emulator_set_state_blob(TPMEmulator *t= pm_emu, /* write the header only */ if (tpm_emulator_ctrlcmd(tpm_emu, CMD_SET_STATEBLOB, &pss, offsetof(ptm_setstate, u.req.data), 0, 0) < 0= ) { - error_report("tpm-emulator: could not set state blob type %d : %s", - type, strerror(errno)); + error_setg_errno(errp, errno, + "tpm-emulator: could not set state blob type %d", + type); return -1; } =20 /* now the body */ n =3D qemu_chr_fe_write_all(&tpm_emu->ctrl_chr, tsb->buffer, tsb->size= ); if (n !=3D tsb->size) { - error_report("tpm-emulator: Writing the stateblob (type %d) " - "failed; could not write %u bytes, but only %zd", - type, tsb->size, n); + error_setg(errp, "tpm-emulator: Writing the stateblob (type %d) " + "failed; could not write %u bytes, but only %zd", + type, tsb->size, n); return -1; } =20 @@ -856,17 +858,17 @@ static int tpm_emulator_set_state_blob(TPMEmulator *t= pm_emu, n =3D qemu_chr_fe_read_all(&tpm_emu->ctrl_chr, (uint8_t *)&pss, sizeof(pss.u.resp)); if (n !=3D sizeof(pss.u.resp)) { - error_report("tpm-emulator: Reading response from writing stateblo= b " - "(type %d) failed; expected %zu bytes, got %zd", type, - sizeof(pss.u.resp), n); + error_setg(errp, "tpm-emulator: Reading response from writing " + "stateblob (type %d) failed; expected %zu bytes, " + "got %zd", type, sizeof(pss.u.resp), n); return -1; } =20 tpm_result =3D be32_to_cpu(pss.u.resp.tpm_result); if (tpm_result !=3D 0) { - error_report("tpm-emulator: Setting the stateblob (type %d) failed= " - "with a TPM error 0x%x %s", type, tpm_result, - tpm_emulator_strerror(tpm_result)); + error_setg(errp, "tpm-emulator: Setting the stateblob (type %d) " + "failed with a TPM error 0x%x %s", type, tpm_result, + tpm_emulator_strerror(tpm_result)); return -1; } =20 @@ -880,7 +882,7 @@ static int tpm_emulator_set_state_blob(TPMEmulator *tpm= _emu, * * Returns a negative errno code in case of error. */ -static int tpm_emulator_set_state_blobs(TPMBackend *tb) +static int tpm_emulator_set_state_blobs(TPMBackend *tb, Error **errp) { TPMEmulator *tpm_emu =3D TPM_EMULATOR(tb); TPMBlobBuffers *state_blobs =3D &tpm_emu->state_blobs; @@ -894,13 +896,13 @@ static int tpm_emulator_set_state_blobs(TPMBackend *t= b) =20 if (tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_PERMANENT, &state_blobs->permanent, - state_blobs->permanent_flags) < 0 || + state_blobs->permanent_flags, errp) < = 0 || tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_VOLATILE, &state_blobs->volatil, - state_blobs->volatil_flags) < 0 || + state_blobs->volatil_flags, errp) < 0 = || tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_SAVESTATE, &state_blobs->savestate, - state_blobs->savestate_flags) < 0) { + state_blobs->savestate_flags, errp) < = 0) { return -EIO; } =20 @@ -948,12 +950,12 @@ static void tpm_emulator_vm_state_change(void *opaque= , bool running, * * Returns negative errno codes in case of error. */ -static int tpm_emulator_post_load(void *opaque, int version_id) +static int tpm_emulator_post_load(void *opaque, int version_id, Error **er= rp) { TPMBackend *tb =3D opaque; int ret; =20 - ret =3D tpm_emulator_set_state_blobs(tb); + ret =3D tpm_emulator_set_state_blobs(tb, errp); if (ret < 0) { return ret; } @@ -969,7 +971,7 @@ static const VMStateDescription vmstate_tpm_emulator = =3D { .name =3D "tpm-emulator", .version_id =3D 0, .pre_save =3D tpm_emulator_pre_save, - .post_load =3D tpm_emulator_post_load, + .post_load_errp =3D tpm_emulator_post_load, .fields =3D (const VMStateField[]) { VMSTATE_UINT32(state_blobs.permanent_flags, TPMEmulator), VMSTATE_UINT32(state_blobs.permanent.size, TPMEmulator), --=20 2.51.0