From nobody Fri Nov 14 23:28:51 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=1759206006; cv=none; d=zohomail.com; s=zohoarc; b=e+0wD6h2UZmTXxtcxfgNcoYT6E3BNEtAbfBQ8PfijLdAx6LNG015/dP82HyCzUdZ+C6BIlH352FQAC7QC6QrIXeJ/9pr2r1DYpyBLFBwwl1B1g+lFn3M4JxFE+X9zdl078KqNeJz6abBRAoo+7XEw9WGJE9Kbf92NvBeoFl8xCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206006; 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=n3MHIDdNfc97WKh48J6xkwUmUQYbKad1LHr/M3AVUMY=; b=XjPyHkNUN0e0GaR+IygTZcrNeBjUdmyclRq5Ynpc2SqjWxmFek0WC3/ed2dqRCKW531d17363XoLS3J29ojSRRnFhB/Co/1uVcuQ22ayaL0O+OI+f7LjQOp5juOmTiMeevuyNyDitRCoi4IAJuyi9yledK+lbGxmITm24axZcHU= 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 1759206006513895.1614336673334; Mon, 29 Sep 2025 21:20:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rpo-0002TJ-3I; Tue, 30 Sep 2025 00:19:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rpa-0001pc-Lr for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:14 -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 1v3RpK-0002BI-7l for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:14 -0400 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-597-ah4IH0xBN86Af_TFw6N55g-1; Tue, 30 Sep 2025 00:18:47 -0400 Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-780f82484faso3933050b3a.3 for ; Mon, 29 Sep 2025 21:18:47 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.18.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:18:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759205930; 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=n3MHIDdNfc97WKh48J6xkwUmUQYbKad1LHr/M3AVUMY=; b=EdHi7mSa8G2dslsjbx+nHZt6PL6ZBhUA0D9V7fo/GSJo07EsaUOhl2ovr9QgeO5q52lqgh mUBnRTTR3WIf6gu4j8BGOCryTKp38C7lwmPr3EFhx331cfmA9+91WiQt/FDaeJQltz9LsE 4xlz3uA+e9Coi9Gol2k+laVg/XNLLUA= X-MC-Unique: ah4IH0xBN86Af_TFw6N55g-1 X-Mimecast-MFC-AGG-ID: ah4IH0xBN86Af_TFw6N55g_1759205927 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759205926; x=1759810726; 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=n3MHIDdNfc97WKh48J6xkwUmUQYbKad1LHr/M3AVUMY=; b=VdRcymEBqasf65mYeP/bQ+xifOepKL51ygF5hN+AZiut0+JZbtzNe818assw3eL2wQ 3CfkK8xSu39WdmSDrWLrp3g9TLRU6bzxWlEr4FMTH+1wtDeJBYdfbEcif76Tk0Xt/99Q zWrltzKWrA59Ij0kHshlj/urTqI3GIRuTglsmb03xOs8DxOdQX4uqOaUJk8oidrNut8h BTmqUOqAmFeSOnB6psw25O5lGFZq6OUA5zruOJvtgVr7ojEWrzjxOmfircENDoQxgac+ ztmQZ7Wp39FqNKdyyVPwZmfeej/hDN5WpK6gmX0PlfZtg724zvT5OSPCrcE+31WTDuHw KDDA== X-Gm-Message-State: AOJu0Yy0bbBoWs4VULfflE8z4dCKc+AcIuEiyTDi+7W+Y67bcnn7HWkh YO0iOJ+HraXpj6Hi43xMt6ffV5cd9enKMHvWeZVXkXr5Z32z4iDiDHeDLsTyhOvdHEJqgPxtJZL xi9xF1ih7PimcTmWSdvpUSz5q5Za81bQukoXmQk7QRHDUDiUzNTLlEvkv X-Gm-Gg: ASbGncvbV2VBBAIge0FtgHTcKpU9Dudby+icd4NMJXmgp6+xUBBCF/6x832WU/85dHN JhSBptMJv8EifgLnQdW/+kL7sNqvc3fxkgWnRJ7aBEZuAZUzfRqo/P0g5zp7KPXeiurhAp2c2XO KWH8cMY/BHcuGlrciNDUHBS40bVkyr4IYNl6ILFZqW7OueyLEIfCarcAnDZNjJ/mtrPAxkmtT1V t3AoICuKKQkMu2UPAYJvdC759eLPV5ZTAOMdXJ9Z5eAshiOFHdDrPzlsNqqOWn4UGv2ftYn1FgL jEqGUrflJb0X5/0gwE4tQoR6veTWYjT8s5pa3T7LmJpgB02Vjy285txQMA== X-Received: by 2002:a05:6a20:2448:b0:2db:77e1:72cd with SMTP id adf61e73a8af0-2e7d68d629fmr21290458637.60.1759205926497; Mon, 29 Sep 2025 21:18:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHFwZB+VNSr+1kjmugibFNtISMdnxaw7fovMeybVGnkFgUF60cFvwlDeEOWx7sDGAIrnvQQiA== X-Received: by 2002:a05:6a20:2448:b0:2db:77e1:72cd with SMTP id adf61e73a8af0-2e7d68d629fmr21290410637.60.1759205926078; Mon, 29 Sep 2025 21:18:46 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:10 +0530 Subject: [PATCH v15 01/26] 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: <20250930-propagate_tpm_error-v15-1-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=3595; i=armenon@redhat.com; h=from:subject:message-id; bh=CjRfsaaTl9HfWWgh7xdgHy4ywyfCJ5cqiMithr8pXJI=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKIEpfFG3ZRc1RN3evSrUcuOe1VPuRR4VXZ3EE1T2w 1vOb/eDjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABNhc2D4Z/0i15bJbub3kp3v 36rkPf3CnrFt+gb+MjbtWybcRlKyJxgZTufu2ehxrlnGp1/kGsP67UZ5V5X/NcsfLuhfuX2m9fm TTAA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 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: 1759206008265116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 Fri Nov 14 23:28:51 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=1759206048; cv=none; d=zohomail.com; s=zohoarc; b=AQ8vEiWutTfVPOqRy4ht3KGgE0sSlpfNTN/LHt5H/VbwNNawnRJEtcfZMUIXWernwlNb/d8bIFY/YVYgLA1ZyJvsWj2Is7KMITME9Of5T1GvzXLYgUmrKJXoS9Jpyocqvc6lpZ/QflCVFKqeBkB82nG90lTdHBb7vB68Dtxb2QE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206048; 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=EyvHoSWa8HBn4sogpVRCYwmTwS876NxPAKMSprxzc3I=; b=fZZZots9pWyUG0N+Jy3yoARqd/Dqbmk2gqgqLDFmZFxfBio4Ybfq1z0Ne5XaAz9tD1JQtpVNyTwdCqwki6ZcQUVz6Vo4zA0W44vohPqGToJ+Mi9267cy2OrYXBIJxOH31coFB2OpMZ4mc225g+ywTJYN3wNlamTLIXhxjjRKmw4= 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 1759206048332924.904541611745; Mon, 29 Sep 2025 21:20:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rpj-00025V-2j; Tue, 30 Sep 2025 00:19:24 -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 1v3Rpe-0001t2-5X for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:18 -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 1v3RpR-0002Cp-Gf for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:17 -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-551-bWnutR8dM86KWjUbopJtiA-1; Tue, 30 Sep 2025 00:18:57 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3305c08d975so5589315a91.3 for ; Mon, 29 Sep 2025 21:18:57 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.18.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:18:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759205941; 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=EyvHoSWa8HBn4sogpVRCYwmTwS876NxPAKMSprxzc3I=; b=JjpZVwgTVwceIY0u+l70AQhh2d9v7VWsLkpgLcXzvqczwj7dkh9u99h4sVsDVEr7LMvIWu YVQ1Uiw2Umsd5Ujzc2WpkzDIBOI5RAg/ovogDf1xDhZWKhRzHUjqmJbGO9Eh4R681ESV+W 31G3irVoRgcb66rkS8tPfbtBwUuR548= X-MC-Unique: bWnutR8dM86KWjUbopJtiA-1 X-Mimecast-MFC-AGG-ID: bWnutR8dM86KWjUbopJtiA_1759205936 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759205936; x=1759810736; 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=EyvHoSWa8HBn4sogpVRCYwmTwS876NxPAKMSprxzc3I=; b=nZYaEDCBoY6pAKGV+ZCL5dAfDoiRn6eXgd/k1fXrU13M8l1PKK2fl68jDNzPfT1v6/ edXxt40eysP+40ltBl34xXppSpCF2lxeJO9/zpA/59NE0zxrRMjA4bHWdZMjA7w+FSkg zIghqX7TZW9nMti+f0gzhfU/CX+byrUFhniD2JzvsZ163KRSXLH6d69QjybEv9L06QEW Me1XCFjVqhbNOcKOERp0YYhsWrvCHJbbc9e9MPZcDcmActn/x65l3mcHN6oRFf3qvk9V MP53Cc5Uur9m442qF2wbsj/TjdZMb4Eb97xKvaQD4u5msIVzeqGT2OGKgzAwJgLiLbQN c/LQ== X-Gm-Message-State: AOJu0YyakaWLSRJNsWYw2CrugJ/sDDbc/kpl7ufP43245XeiMEPplIkz Gr1k8GhClp9BDZLXKWhhpO/xkJAVJlgjxMY/XUbSHeigRng02DpEOmpt1dDwGHp9pAx2OvNi8CX eNONdgq1wuVKJo1lFhIIBOvFQK7891wHfb6ZMtd0GfsVDdOhbqsvZiOp6 X-Gm-Gg: ASbGnctkVDnQ9nCN4jUySEZKNXxRn06gjq1ILI6moK2s3/DVRqHSPSGW15ciQ35gTRm sPsqadS/NOt6h9WeOtDLJthfhElL1wTVPwIy3Kv4am669MzxQzhClc0kkZJeNOJn6aEPFJiNoj4 7Z5LRnC5FKMGuaPZec5WzzXQ7LB9mPFcUPIc9bq/8zg14mNbcz6di90c80U2gI8rgQpC/ga0P0j nFCaFYNcqeCYh0l60CL34L67PJk3h6MFnasHtgI2qrdShl1DDubljRaCMLtBdi8m5uL35i+b0Py Z7jxEsF/ZYj8sjd8AR3umeQU/25j+eITKznaqfnxLd9D6aT4MPGmNPu6Lg== X-Received: by 2002:a17:90b:1d91:b0:32e:2059:ee83 with SMTP id 98e67ed59e1d1-3342a22cde3mr19363790a91.7.1759205935606; Mon, 29 Sep 2025 21:18:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFijv7aoQ/pUo36l1e2iHEbm+ZbbChseYXZYRztUh3qGMBFik8akiyL7xB6IJ/gMY9HqEuQ6A== X-Received: by 2002:a17:90b:1d91:b0:32e:2059:ee83 with SMTP id 98e67ed59e1d1-3342a22cde3mr19363755a91.7.1759205935136; Mon, 29 Sep 2025 21:18:55 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:11 +0530 Subject: [PATCH v15 02/26] 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: <20250930-propagate_tpm_error-v15-2-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=28874; i=armenon@redhat.com; h=from:subject:message-id; bh=tqvs/XAzldyHJhdOP6o/Pgg6N7pQSz7lFYnsVFuVx/k=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKIHj7w9HrWyd4nNI68Fsz91b0qTXNC9meRi3/vC9M wsunZ33taOUhUGMi0FWTJGl4WuAbFNAYUSk7cvrMHNYmUCGMHBxCsBEth5i+F91USLqV9C1beJX o//wn069vVCw/q5WcIlobvK22c2JIZcY/geduLGuZ/k8Nbnji47teVBz0zroyg7FGR99JJ89dWR eYcEKAA== 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206050676116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 c3df9d6656bf8b41800904dbed0933055eebefb4..17715ca1b34c9c9e777be9b86cf= c5405087df7fd 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -934,7 +934,8 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) int pci_device_load(PCIDevice *s, QEMUFile *f) { int ret; - ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id); + ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id, + &error_fatal); /* Restore the interrupt status bit. */ pci_update_irq_status(s); return ret; diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index d2f85b39f30f7fc82e0c600144c0a958e1269b2c..6a9641a03d5d3a38a4de7ceb9de= ffc0cc303bcff 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1136,7 +1136,7 @@ static void virtio_ccw_save_config(DeviceState *d, QE= MUFile *f) static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1); + return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1, &error_f= atal); } =20 static void virtio_ccw_pre_plugged(DeviceState *d, Error **errp) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index 20f70fb2729de78b9636a6b8c869695dab4f8902..da173f48676395cc02bd00cb3ef= a248afed4581b 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -642,15 +642,17 @@ static void *vscsi_load_request(QEMUFile *f, SCSIRequ= est *sreq) VSCSIState *s =3D VIO_SPAPR_VSCSI_DEVICE(bus->qbus.parent); vscsi_req *req; int rc; + Error *local_err =3D NULL; =20 assert(sreq->tag < VSCSI_REQ_LIMIT); req =3D &s->reqs[sreq->tag]; assert(!req->active); =20 memset(req, 0, sizeof(*req)); - rc =3D vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1); + rc =3D vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1, &local_= err); if (rc) { fprintf(stderr, "VSCSI: failed loading request tag#%u\n", sreq->ta= g); + error_report_err(local_err); return NULL; } assert(req->active); diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 5b022da19ef866cbe27845fe1f9fe5de64fece32..a5df4685d4981e84a0122693c22= 8a3e2350b487a 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2831,13 +2831,16 @@ static int vfio_pci_load_config(VFIODevice *vbasede= v, QEMUFile *f) PCIDevice *pdev =3D PCI_DEVICE(vdev); pcibus_t old_addr[PCI_NUM_REGIONS - 1]; int bar, ret; + Error *local_err =3D NULL; =20 for (bar =3D 0; bar < PCI_ROM_SLOT; bar++) { old_addr[bar] =3D pdev->io_regions[bar].addr; } =20 - ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1, + &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 532c67107ba1d2978a76cf49f9cdc1de1dea3e11..0a688909fc606a3c9fde933667a= e8c309ab527d0 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -34,6 +34,7 @@ #include "qemu/error-report.h" #include "qemu/log.h" #include "trace.h" +#include "qapi/error.h" =20 static bool virtio_mmio_ioeventfd_enabled(DeviceState *d) { @@ -619,7 +620,7 @@ static int virtio_mmio_load_extra_state(DeviceState *op= aque, QEMUFile *f) { VirtIOMMIOProxy *proxy =3D VIRTIO_MMIO(opaque); =20 - return vmstate_load_state(f, &vmstate_virtio_mmio, proxy, 1); + return vmstate_load_state(f, &vmstate_virtio_mmio, proxy, 1, &error_fa= tal); } =20 static bool virtio_mmio_has_extra_state(DeviceState *opaque) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 767216d795998708f5716a23ae16c79cd90ff489..b04faa1e5c91b5cef40e54ec41d= 92422d16bfc13 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -161,7 +161,7 @@ static int virtio_pci_load_extra_state(DeviceState *d, = QEMUFile *f) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy(d); =20 - return vmstate_load_state(f, &vmstate_virtio_pci, proxy, 1); + return vmstate_load_state(f, &vmstate_virtio_pci, proxy, 1, &error_fat= al); } =20 static void virtio_pci_save_queue(DeviceState *d, int n, QEMUFile *f) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 9a81ad912e013fc254899c4e55cff1f76a6112a4..018803c80d13107eb4e5e63914f= 9c1f837ab1b19 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3235,6 +3235,7 @@ virtio_load(VirtIODevice *vdev, QEMUFile *f, int vers= ion_id) BusState *qbus =3D qdev_get_parent_bus(DEVICE(vdev)); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(vdev); + Error *local_err =3D NULL; =20 /* * We poison the endianness to ensure it does not get used before @@ -3327,15 +3328,17 @@ virtio_load(VirtIODevice *vdev, QEMUFile *f, int ve= rsion_id) } =20 if (vdc->vmsd) { - ret =3D vmstate_load_state(f, vdc->vmsd, vdev, version_id); + ret =3D vmstate_load_state(f, vdc->vmsd, vdev, version_id, &local_= err); if (ret) { + error_report_err(local_err); return ret; } } =20 /* Subsections */ - ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1, &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 1ff7bd9ac425ba67cd5ca7ad97bcf570f9e19abe..056781b1c21e737583f081594d9= f88b32adfd674 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -1196,7 +1196,7 @@ extern const VMStateInfo vmstate_info_qlist; } =20 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, int version_id); + void *opaque, int version_id, Error **errp); int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc); int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, diff --git a/migration/cpr.c b/migration/cpr.c index 42ad0b0d500e5de57faf0c6517e216b2d1c0cacf..8abb6db76d2474157f804ece4c3= 5ebfc8c22d21a 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -233,9 +233,8 @@ int cpr_state_load(MigrationChannel *channel, Error **e= rrp) return -ENOTSUP; } =20 - ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1); + ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1, errp); if (ret) { - error_setg(errp, "vmstate_load_state error %d", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index abe0547f9b3f5ec3ddb0eec31ff2cc23b15d42ea..55c99e0902dcee5c4a5a974891c= ec9f079146bf5 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 Fri Nov 14 23:28:51 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=1759206239; cv=none; d=zohomail.com; s=zohoarc; b=GTqNyhKLg4pw0WGMDeDgn14XqZosbkIFdKcCgsaplgZ3ANbddjZquqFhBb4n1oQzT+mxt2QpjFyItBzyfC99YdsOKwHdYrOTjvTEUqLa3/OdtR50ZJw7dXzThQRnmNwRw4Ehtcwb/tChg9j0WpOQ+DbojlaxEW7CVCnQlnOjskg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206239; 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=NThS9p8Yxa6txtHjPyeBwK9TVtucKcFlqXV7HSt75VY=; b=lFIxi8W5mGpqZxNHBAUa6ECmoM6N1S2J42Rg1+9aXn3Pn2DlriuN45SRmEH3457gp/eU1SGDHmIv/Sj50vTW1eCNE84ZmJtSxZc1tYCFKxRnmV722PkbjDmQ1PYQB5o8jZJei3MKx6ZRqJmS8FD1Rz3Gk0+IPzlFwEJD2HhuKNw= 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 1759206239274108.11338857188173; Mon, 29 Sep 2025 21:23:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rps-0002l3-NX; Tue, 30 Sep 2025 00:19: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 1v3Rpl-0002M5-Rz for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3RpY-0002Es-F8 for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:25 -0400 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-100-E2e6BfI5OjGqAbS9_EIRwQ-1; Tue, 30 Sep 2025 00:19:06 -0400 Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-77f5e6a324fso9843873b3a.0 for ; Mon, 29 Sep 2025 21:19:06 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.18.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:19:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759205948; 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=NThS9p8Yxa6txtHjPyeBwK9TVtucKcFlqXV7HSt75VY=; b=BSgMLMkEr5JFX+eaiGCsgu5H+z0SCpKbS5K2iev+neZW6kpfcWe+FjfUz89xsVDoYLvodA CUSawX7d8gYv7e4r2Y1kRqKIZV59H+i9v67G9xjOZYknHwo192fGnnejCxA/ZOlBezt9Zn AVq6xszOlzc66kpd/sptJOiVaiYv/LQ= X-MC-Unique: E2e6BfI5OjGqAbS9_EIRwQ-1 X-Mimecast-MFC-AGG-ID: E2e6BfI5OjGqAbS9_EIRwQ_1759205945 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759205945; x=1759810745; 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=NThS9p8Yxa6txtHjPyeBwK9TVtucKcFlqXV7HSt75VY=; b=n/Tdu69B9zICTaBksRglJuRntCBKy95HFFJYnUpgFlXeYDWipytoj7sFZEP5Ln/mQ/ BAnNoHg6WjZXjaDeepuTYVweQvdFMqm06hKa80k8UC9kzfZsLt1gsP9L9oLEBL/iqzcD I/EBcFCgs3q8cdFBwjfkEl/Hx7SRHWKVHUTsAdcQooKkz3yjQLHMsFxnytzjBdFIS2bj QVLBTH7APoeDa3rcEpfTacoqWAfDCQr3l4oAJ7j1QlefNnHcFe/dlL8AvF80A/SKmQqL 6b+JbvlxhzHVX0pVTm0IOxSKSRTnRFJwU/XfDCRlj0+h2pCVpTDZycRHaY0CrXB6hJVl iD5Q== X-Gm-Message-State: AOJu0YyizDmffz6Zen6iRbvB2oDK16V0QGZTicnj+3A6HgLIDakxk3wt GUBCoep2xGMD4/Kx/jq6ZKOLXq4WeoXCFug2WRZxxZwgNCfHBqKodGmTqXcXTW0she1YP9VHDWt uFsJPmdQ9UrddCvMfnRmW1+39tD7PILPv6piuiZejEUP4kXn9Lw/TIJnG X-Gm-Gg: ASbGncstBJZRQLYbIUrwXahJKKnhPdz1Bn0uQYv2gv56cPxBUF8qWMFstNojJZLGaKl ObuathtEfdVtBBTYg1cnmRKPXgAP8XM4+/i4OgCfhRvjUJ0GgwaEtMbM70rO10v5ATh4HH9hulT QURjwSoPFfoClcIdOoCIlPQQ3Bc9Kn0tG7u6ID5zwnNbjSTCoc200IEIJGBpczxpsCEl4JRjgJT lImQhLazHH9v1EG/CitLiDgzM7T8U+7SAh9QzYCTiUAKcdKpDLVcxusXIIHYHxnwUr+FEvHXUAd VgUgfLb6/gKMw0Qc5XVWv9LLrEHoRDLyaleHc9SNENxCw7u6BXOnvLcYxA== X-Received: by 2002:a05:6a20:978a:b0:2f3:f59b:3ae6 with SMTP id adf61e73a8af0-2f3f59b5a21mr12533731637.11.1759205945339; Mon, 29 Sep 2025 21:19:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IENtJPD3sP4ShVqM1/dlbFYmx4yuSlvkDfviMywGaP2L6LHiCJQyhgS1z+ZJjqjBRbKLGxJUw== X-Received: by 2002:a05:6a20:978a:b0:2f3:f59b:3ae6 with SMTP id adf61e73a8af0-2f3f59b5a21mr12533706637.11.1759205944996; Mon, 29 Sep 2025 21:19:04 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:12 +0530 Subject: [PATCH v15 03/26] 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: <20250930-propagate_tpm_error-v15-3-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=3076; i=armenon@redhat.com; h=from:subject:message-id; bh=3I3c3pC0yMjf/OLnEpjrmFgFajONKNqF/dblrBG68V4=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKAH9EI2qe4zevUXnw6vmfd+y7PmGRx4xSxYvZdxc9 WpFiv7ujlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABPp0GFkuPJX9/XliqzAxvAp k9/WcWvd8ar6NfNoz9lpN3f3JW9cdJiR4eVVC2X2c8lbFuvO7FzyaN30aYez0z5cLLDgvN92ZMZ bVj4A 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206240740116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 55c99e0902dcee5c4a5a974891cec9f079146bf5..8ac3d338148fcfabe652082ba6f= 3f805d22fcb28 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 Fri Nov 14 23:28:51 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=1759206068; cv=none; d=zohomail.com; s=zohoarc; b=M7LGYVGCeZSduOOnoxmN5YNiUFiCVF0KEf5k2r4Lfn9pAfM5QRj8jcslGl0cLWV51K5GKtMrItjJGILmv4WqS2dJ6pipVL9JlFxuaH0Y9OP4zyU2WsqzS6t9NMmokCQFzc6CZuHZZEB9/elQnjUSu4J4sQhSbtS6kEhS5tibEhQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206068; 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=jM2VhyG2FV3PKKXcchKf9vwQ8iUBDFHItrh+fmk6FLA=; b=IaS1jNMEquSwmtt8gS1x0ul4o0udw11Rr0hlnWwwmxVIh5aV0smOmuOSKJgMiWUzI2dCG88NXOu18BGVlIIlRxZ+Qaa7+PDtGgTg2HeYaoNCHGbPaZsTELsbFItBYeTHXS7He8sXFG3zBwwfeVcuM8B3EkrVMIWOAGMzWqvG9AI= 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 1759206068292893.2082245813943; Mon, 29 Sep 2025 21:21:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RqU-0003Nt-4G; Tue, 30 Sep 2025 00:20: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 1v3Rq5-00038X-L8 for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19: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 1v3Rpo-0002IW-Sg for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:45 -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-418-9fqqKOJIP8qDtaIYnXyS4w-1; Tue, 30 Sep 2025 00:19:16 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b56ae0c8226so3773543a12.2 for ; Mon, 29 Sep 2025 21:19:16 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.19.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:19:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759205962; 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=jM2VhyG2FV3PKKXcchKf9vwQ8iUBDFHItrh+fmk6FLA=; b=gpl71OP29iRgMPsW517YgAVKclCWDD2NRXGUf6EMZ7lYnphWIEx4hxhv12arM7VvE7Ipda Djvg9NViFRfVHHUVGfYOHrwDmxeXUQ2eLwsphPHjxC0WiziciVQC9g0TJcT4QrDCy8S2Fn Nz/NfmXDc6Bch0h/gqhpop64+ufLqgU= X-MC-Unique: 9fqqKOJIP8qDtaIYnXyS4w-1 X-Mimecast-MFC-AGG-ID: 9fqqKOJIP8qDtaIYnXyS4w_1759205956 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759205956; x=1759810756; 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=jM2VhyG2FV3PKKXcchKf9vwQ8iUBDFHItrh+fmk6FLA=; b=SRzAIb8AcT63GAmhCS4QPM7VayaEXfwwZGcqehGMiOTDVVkl1UBnV4O+wk9xGwq6wM ZUk1XS5/C3zLthok+bgc7wz5CotGPY3cczcN8SO28U97d34/Dr/dBC90vEsKrNr9I3aP 15tI4SI62tkEV1sueRH259iz1CX5kd/YxL2gBICIHuBwWBArVANzeDItFcuGLWhnOf73 RF1n+zMXXl0IVjPpzzkos1EKs3yLyqKTPIYdEYG+YXWMCGq9M3B4WvHU+w7VJr7d+Rzt kn8KjBm2zZv+pqLTshzZlccmoTvsL6FQoU/qZ1OfNiiwMGPCrSm7j9RWoSkNKWuhCatd nSDg== X-Gm-Message-State: AOJu0Yw7G0+ysQ9dSIsbL6RxpvwcNF32UXu0YzVLSr2+HMcrz+UbhyO5 kOyXhjK/VqCKl1xfxNUcTa4pmfBC4z5CUQT3PXU7harz/v+8z7o9RtloGTqfYm8RsedwwWK2ERE C4IwdhHWQDiXKw/u7w+5/GAVBr6t3Ds9rsYZoebE1n/UyEx+g0TFrzO8D X-Gm-Gg: ASbGncvOGFlKEUoSwqFAKG/J96Ien+dD/T2/rjI2GlLp3q6Qyq0kZAHFcdGzw4cbbmk eKiV10cTst0nf2yK56gCIUlH5EaIxmcGioDlNtWXXxxxoW74OATet7zKDjSG/hJcA4zF1jbs1dm XvDQyu3oiV0GLoxJi3pGYC2V6d1cvB+lvIrW5A47eK3IqFV409SfkioIThKF5fiCe1zkCnMXGos ZQLJY8vjeWey98n3cUfDX/PpEfnEnx0TswcpELQmquV/JAu+B1+B9Wkda4QMhocZ2vdpNL6FOzZ v65RO//kQ1FSmCtpAam+qwyj6P+b3R6CnkRKWKVEA/lYNZtli/i0wdCyDA== X-Received: by 2002:a05:6a20:a109:b0:2ba:103:aa3b with SMTP id adf61e73a8af0-2e7d37f2d69mr22136960637.53.1759205955712; Mon, 29 Sep 2025 21:19:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGltTIw+AbTjlRZ8dEuTQ0/x47A+yqez3Oe0h5ZH47nJdXK0rPsaSn8gJsr7hrkecyxjx7yVg== X-Received: by 2002:a05:6a20:a109:b0:2ba:103:aa3b with SMTP id adf61e73a8af0-2e7d37f2d69mr22136914637.53.1759205955284; Mon, 29 Sep 2025 21:19:15 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:13 +0530 Subject: [PATCH v15 04/26] 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: <20250930-propagate_tpm_error-v15-4-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=3367; i=armenon@redhat.com; h=from:subject:message-id; bh=4kjr8/txz7/2hWzdbDOiBhOpx1AokrJKgZYjx74DLDA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKIHCbUmJ3DIfv/yZeHiLVlF6jnDJXI9jflte/K79f Ud8Jcf2jlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABO5lsjI0COo/u2TyI5f/w8s fqt6P1+t83RC81K9F7tPm5UxmbX83sXIsPj2QQaW/FnxVVYbg+0NDz4z4Xoys+L1TY2YY+H9LR1 TuAA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206070500116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 8ac3d338148fcfabe652082ba6f3f805d22fcb28..fffea57cd962800abb6d9abfcbe= b908fcb2c9d95 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 Fri Nov 14 23:28:51 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=1759206494; cv=none; d=zohomail.com; s=zohoarc; b=fC55wMAudnVqDjUgdrJIo78XyBY/sHasxaoR8tNw6iee7cx36m7p3+wYDkvPyogxQWUpKZJeAQ663xUVyYBDpH50zszisAvftLjyIgZ1fsb4N3FdRnJE159GLMEZR1zCHWe21RPeGhXdGJi7orYMx/GLWgq1komc2kK2yXMgSqg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206494; 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=Zo7HjC4DzI8nhbXzaw36FTea5HwLLN7mMAHFtaaHE8E=; b=km2629LlZoKFYbdI8NB3pVCxtCW7O/1Hx72WMakf+Ed+XA11hHY03Jm+VvYjqHpyNSYUN63pTsw65Hbrk0cDBA4fq4sQrht6qdRdSohUKmH5C/G+m8B6+KfQuA+QT4L0XMKfmOpx3jr0BoqbwoJSH/vT+MZYSPNfQg77XXKwp5U= 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 17592064947711011.4686793922552; Mon, 29 Sep 2025 21:28:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RqY-0003VM-R8; Tue, 30 Sep 2025 00:20:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3RqA-0003Af-Fv for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:53 -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 1v3Rq1-0002L1-7c for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:49 -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-558-EEWS0VsrOiK0mM8rwSMjfQ-1; Tue, 30 Sep 2025 00:19:26 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3307af9b595so4959499a91.0 for ; Mon, 29 Sep 2025 21:19:25 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.19.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:19:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759205974; 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=Zo7HjC4DzI8nhbXzaw36FTea5HwLLN7mMAHFtaaHE8E=; b=Gl+LilC9WEkUiI0jvejGV2sJ8QXm/v2fgpMigpFs9lZpPE/4oBzjU0rfiw+wU9vM2S8yDw NI2yLqb6TD6Lo8MGGdWOwWQFpSbgkoXLV1NPnInYR8o+XbL4H1xV/1Sbwo9AcdPWy+qQ6J +Zpw4o7mrcfYZmTJSWL0FPtHSQibCBY= X-MC-Unique: EEWS0VsrOiK0mM8rwSMjfQ-1 X-Mimecast-MFC-AGG-ID: EEWS0VsrOiK0mM8rwSMjfQ_1759205965 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759205965; x=1759810765; 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=Zo7HjC4DzI8nhbXzaw36FTea5HwLLN7mMAHFtaaHE8E=; b=dlfUUPX+wZzaaI84ulMfo1X20rSg4CCBmT4FYRtFkxcDb6t+uPOzHwMdy54UlOn+gj Jyr4kyDA+e8Z9zgi4dEaGXVNyt7ql++49KZtvbF+Sc9wscGNzvjGFEgWd71pzymVFa5h XYROTkrdUZY4tI2LXzsvyBvFNcu3rvhwPdnz8M6kNz742OQk/68V5L4yozi/JIpYku35 mcOUdlQ/gUor4VMOGiwAH0SiHsdBTr0sD2d1DfreOWUcM9S38F1MjRcic1uPniO8Izdh oWWlnrrSOu+BZvmG9BFT1LrIvmnO2+V6qvxGnGnheltbiR4x+uuPWdSbFvekwpTkE5Yg cHmA== X-Gm-Message-State: AOJu0Yya0laMZMAZg3TKEetcI+kgdoek/GmZih4Ckg90RrCqLb4zbWLD t7++git7XGIlfiIIdZFlMWXVR0bx9IXUAMbTTjYoyIr3qcmIDGr3UL/HidD/14jb9UpCufOqMI3 mIAeRyQ6/YE+ofyxzV4G1Cm9x6gJk5Vvq3mAXfesRGcfAA1trh/5j4ois X-Gm-Gg: ASbGncvgy3te3RsZg4dyne4lijcyRtxsdXYZ0veTlkAEpVivWbBO+vVwwLen3MrYYCH oUfRJi4Mdw3SdzN3XZFXw0llRm8EP2NA+Qr3g2zSXPQ9HlhZKwC+L4LD1dCZ8C1H5Ro5c+J/hIb JjR58mupLOPXHrEDnCUMNGjls6NA0IMEA2fDZcqGOBE7RKzgXqpWUAtEhjDYxq4HMovqqWMR/PH owaP5sZhlhRntyZebo3z14KVuuTURoaV3tpA9ABNVZPaJKFvW8cUzRsJb2MyyKaod2gP5Iyk93E fvgpv4WBXrSYA6I68W8QA/kZ6e1ixOMsrJ17RxpifgHzWuhMf8CzotJ4kA== X-Received: by 2002:a17:90b:384c:b0:338:3156:fc43 with SMTP id 98e67ed59e1d1-3383156fd42mr5997515a91.11.1759205964754; Mon, 29 Sep 2025 21:19:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFi06DprAdLkXnbg49QOzIrd7JUTOSHJD2t9OIQdo3nqW2lKQR9dsuYmhyYJfRkkE8IkZ6rrw== X-Received: by 2002:a17:90b:384c:b0:338:3156:fc43 with SMTP id 98e67ed59e1d1-3383156fd42mr5997494a91.11.1759205964344; Mon, 29 Sep 2025 21:19:24 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:14 +0530 Subject: [PATCH v15 05/26] 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: <20250930-propagate_tpm_error-v15-5-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=7258; i=armenon@redhat.com; h=from:subject:message-id; bh=z/LBX8lfqOcsEbX6iJOLzkowpVGEsY/fXD7M5WAQWGo=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKIGJfv69Kz185v7XmPM+t3Cqdv5R94yAjAZF5u6DG 2+6hj7uKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMBHRbkaGZ3vCspjZvP9vCWpb FlFnxvM0oUHB6NaHT7vtihaEZc+/wshweZWgk3Gtz0SW1+vO298/lbto6uE9IsxHVl/57fSH4X4 5CwA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206495534116601 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 fffea57cd962800abb6d9abfcbeb908fcb2c9d95..d1ed2e1cde54913d7fcc4b6808d= 08cd5b3a17745 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 Fri Nov 14 23:28:51 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=1759206604; cv=none; d=zohomail.com; s=zohoarc; b=kwqydEdK4x/RtqD17UVwtzO/tglTqwheiN3m70LipUOUs9VMaRL9TA7485gDop930NMItnoJfO43rKl5r6UKZcWm0qMZXtE32mvosKmbHM9GvMv4qTH0D9Tk2a6QMVaAsh4Nk8l7Cl33N/DTz7v2EtdLR1giaE4WJUmDWdX6w4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206604; 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=/BHqQEys25VDInV4tMhybM5zLRTf2PUynoguPJtWYxY=; b=YEUAqU37OiUI0M7Juf7TAnVyuakyDwwIZwYH+YVEOUfHcaGE7wArCs6BinX3etzBkQlcCfFcUcfEeJSTIfGCR7Uc0Bu0o97Shb2JWC0ATroiBXkR5IlK0loNW7gpO0Mt80iL2XGVDYCweKagcl+NTISZqati9z+gqu4VxzYuYx4= 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 1759206604727894.3115487186161; Mon, 29 Sep 2025 21:30:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RqQ-0003Km-Gt; Tue, 30 Sep 2025 00:20:08 -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 1v3RqA-0003Ag-Jb for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:52 -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 1v3Rq2-0002Lj-KI for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:50 -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-489-4-Ol7KSbNfWY7I0f6Ej19Q-1; Tue, 30 Sep 2025 00:19:35 -0400 Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-33826e101ecso1779268a91.1 for ; Mon, 29 Sep 2025 21:19:35 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.19.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:19:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759205980; 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=/BHqQEys25VDInV4tMhybM5zLRTf2PUynoguPJtWYxY=; b=bh0ar34ODK9Ru671v6AC9cVtSrvCUWVYSSiQP58FGvX/TaQIFORHsoW7i9adSFpIczTBAM 3/bT1L1a/9BpgKKdzi0/IOQuqlIz+iwReqQ1VvklwMyM54dx9+wvtBz4fin1vd5tPKrdh4 VPxlOQHQBWRZPzhbhwnZvP8f6axDsME= X-MC-Unique: 4-Ol7KSbNfWY7I0f6Ej19Q-1 X-Mimecast-MFC-AGG-ID: 4-Ol7KSbNfWY7I0f6Ej19Q_1759205975 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759205975; x=1759810775; 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=/BHqQEys25VDInV4tMhybM5zLRTf2PUynoguPJtWYxY=; b=P5R0Ze+QIveR44Km6BCRnpa4naFnrm6nrCkiF5HLKbxDgjtBMyrh6b2fdvlr8wo1Hg mCZTt9ZPiWLY+zTWpyULjOEx8VwMtzXP2pfGZH7hKICOiqWl7ApJqp1gTYX35LmlyiER mQE1kOV/ldgZCKeYsM6feDBnuVJq1r3KufwEZ6Hv5MsuolOkTPaOB8fAsD9sZlkcYC3s Ln7lTMO/JhpyypZ+VCMgwfUwLaNwXBQPU0sqwGqWxdw7srgIbMht3foqUPtLKvC3+FBt LgpH2AnQoTPhC/bt5wrpeZkyz4mYlCt7EVp04YI00M9RP7uWkF4NOjwaLg3PPc3oIUgs oPfQ== X-Gm-Message-State: AOJu0YyIGYS94btPCZeXudFWK5R84YDWUReQ/QqNTy52NwcGrlphhHgG /ABVjfqZtF6mc4BzIB+GxCLKGKP7U+ZPPVw0Rcm8E9mUSFWQ/MGFcu/Bm3lmolsjFvNZamLoGUd VXyXRn2CUOx3M8B/RlkmdtpeDv6gDQFQcDEAMzCgiL8lDjP80P6qnlhYM X-Gm-Gg: ASbGncsuU810Sg5haOjjZx9bxLkg1LAeJWHPLUx49aCE9BNBqMx1Dl/T2IptTQLGCA8 dnewjG8h24veNQkHQx+i8QUuIw+1HGrwamT5+nnTJCIu+1xhkDC+epJcoO/Lpa4h+Wmob/fvZ0Y f9NQOwAfx4CWzYOXBx6yl1GyWvCqePLWnJkCVDmRqoRPprgA87yhkGhXkgj7ONQJprkzjo/wKpb 6T8Xi15pn4Mm8rqbsuonIHb7uVUUEREsDH8qZKtj5WC2fqfk30+NwT82gl15rVIF4KzmHS982BO Kw1vmkG5za/vSCtYcQAjNK+fWDk9S+osozDleykBThyqdLl1BZkweQaSKQ== X-Received: by 2002:a17:90b:1c91:b0:32e:7ff6:6dbd with SMTP id 98e67ed59e1d1-3383ab1c984mr3496662a91.0.1759205974569; Mon, 29 Sep 2025 21:19:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGXzWjh8kDSfRbxRfoZ8if5oeGKLB+2WXfzJD5pmOX4dsz9fTSVxA8skyWa/XTLmNA1bKeJzQ== X-Received: by 2002:a17:90b:1c91:b0:32e:7ff6:6dbd with SMTP id 98e67ed59e1d1-3383ab1c984mr3496535a91.0.1759205973793; Mon, 29 Sep 2025 21:19:33 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:15 +0530 Subject: [PATCH v15 06/26] 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: <20250930-propagate_tpm_error-v15-6-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=2872; i=armenon@redhat.com; h=from:subject:message-id; bh=InVVNoEy2g1zpO8kJPGk7ZyyaFhdbz8TWnnxAHWCl+M=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKAGOyNi4jK7AWxO0189LbD131vnj1J0iO56taX+2L XzGprXNHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACaiwMbIsEYrqF2L6fKz33PD WBMbQnOKLlx6aLXI6EbVE5VTZ6U5xBgZ7hxkyNUs55pmfvnxZHv3khnsic8fMjRwZDK1ZX56O2E pNwA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1759206606761116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 d1ed2e1cde54913d7fcc4b6808d08cd5b3a17745..5e54651652e9562939e61cf488c= 809a369824edb 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 Fri Nov 14 23:28:51 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=1759206173; cv=none; d=zohomail.com; s=zohoarc; b=YwUuLblcrWDYYWYhKfhunL6Wmm9OQgCvTEf0UgxD1obUXXc/pSM0Fw4RLr0hAYn3ANAh/SnItBfaJkMK3QRLAGUTnmG+AcSBO+tTDfKR/0oNtCKJly0PMT+0CLIXlvkMQ/m3aPDfpIefoTGSMiKXjmYf4/eFlfPWF0aRpbc7CQM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206173; 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=iUA+R539708FFxfB5dfZO0hh0YfJ72dOgIXFASTJiSk=; b=Dd4lWJh7OhaZjyTcS6cqO9kw6GtPojdgn67vQLr5sY+ivsAAU3tOt2HJKqjLhyDSgCBxpGxJv5y2rGmtOYyNcw0/LsrCUQ93o8lbr3zWWEjZEK+SIUSZIjdeJd+GsSqx6HgEDTJD++wKrPl/5jBS2ueS+wmRIS/t6lwRPFlJo5o= 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 1759206173682263.6695727802347; Mon, 29 Sep 2025 21:22:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rqa-0003ch-Da; Tue, 30 Sep 2025 00:20:17 -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 1v3RqI-0003H8-3r for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:00 -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 1v3RqB-0002Od-Je for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:19:57 -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-653-6b0Rn9NrPKyqGlX3fQweuQ-1; Tue, 30 Sep 2025 00:19:44 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b4f87c691a7so8494450a12.3 for ; Mon, 29 Sep 2025 21:19:44 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.19.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:19:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759205989; 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=iUA+R539708FFxfB5dfZO0hh0YfJ72dOgIXFASTJiSk=; b=MLNCqoKd+54JigZEsKy7QlgnPATmg/0xNuT4Qo3DcBv8YUZlhQx3Gl0cmy/7s0PP6IuQzN HUl8LGpeoZPLrvqbfoeVGeLMszmcHqKWLZir5kDgxBiSqJkXTMfxVjR/Z3Oikl1KKlUq/9 qZv0ykjJWu+tgAh0SPQFpRW0Qqd9t0M= X-MC-Unique: 6b0Rn9NrPKyqGlX3fQweuQ-1 X-Mimecast-MFC-AGG-ID: 6b0Rn9NrPKyqGlX3fQweuQ_1759205983 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759205983; x=1759810783; 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=iUA+R539708FFxfB5dfZO0hh0YfJ72dOgIXFASTJiSk=; b=ucuVUTHoyl8FFONSLQVcxzDDAP9GvCgowcy058e+UffULwLPKtCUu8e9AlAFt/actm 4tJ3xNu5jTlwFmNLE6ueu9807mqVavcge+1AtkbKwA+XHRu0bIR8hThlY+jAo4pSdfim o82nJFCC6stxzjnhrvTzQ9fUt22v+/8OUp0mZ0pdfaibACutbwFeMNUj2Vl11xTHQZgQ JlrLaMqPpfRQmQui9vIq7YQdEfnCVa5cjQl6AQpdcQe40/uXkCCzBp0BVJ32VZfR1NKp uQvL2nOE/PuVo6l6c7XHrCvHo7cJSWL/uidMlw3+Of/PHiE/E9XUelEE/sdhacNJ0vTp ot4g== X-Gm-Message-State: AOJu0YxNEERGewLF37d7OzsP0SeQq9aqCOEl3MSFjjvU+dZrPKOswHQI mOHta50cMLlmHPTG3PAYf8YsdUZYgysFA15q1P3tVhauAsJ0kQdy/938pmWsLB98+B+nf6Piv6i Eogl4hxVkCIsLD1V/JvTR/YT6T/MzZp81TbkisAh7SqkLoeFsDDFtccJA X-Gm-Gg: ASbGncufsMy7cu260NbAFIL0c/ZdFB0AGaZ0trsBiu74ywF+2gel3LRQsiVwZSBiYSz 3Fqzq1QlqoILCnTu9ZHsXjJMnZ2oe7Wt/JivkLZpK3VzkZz4/Zx33RWrE4f085PJKvn1dcWBpGY WiWtBB+D505k8d76+awaeFjgKZ2OiQ7qUjenxl+fisMYP/pyGXIVM2+wGymD3rKQ6jPRiUNP2O9 JsEH5SoJ1ywGRqAh1bxt/Pjv5rlyA9nMcovt4mL6GXFN5tWAg3/SSgd+EhVokbrZuDiBAYAJd5S jzbz1DSSxLx38e3w15UyKicNkI8h1iSDg2U/ZYfa8SpjBzV7rfprGOHtrw== X-Received: by 2002:a05:6a21:32a0:b0:2e5:c9ee:96fb with SMTP id adf61e73a8af0-2e7da1802e9mr22503208637.59.1759205983417; Mon, 29 Sep 2025 21:19:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGkipZDtzjIyeCS9poGrUxfMy3FEHPmb8KspwSN5K1Nv6ZLe0SFKZUfPoTFJwRfAGqWoKN0sQ== X-Received: by 2002:a05:6a21:32a0:b0:2e5:c9ee:96fb with SMTP id adf61e73a8af0-2e7da1802e9mr22503187637.59.1759205982999; Mon, 29 Sep 2025 21:19:42 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:16 +0530 Subject: [PATCH v15 07/26] 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: <20250930-propagate_tpm_error-v15-7-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=6322; i=armenon@redhat.com; h=from:subject:message-id; bh=87ZG1ju10KhMz+1q2wPws3qYo+MRUD5kJ5Si7ECttpE=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKAG2iy6pew95zO3ce3Ot5MappUwW+4OP2byYuV4oL Zqh4d/ljlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABOJus/wP0r/Qemx7aetsuR9 8/ZM0WB0F8tJPpazOrHUfc7UHakcnxgZNm9t5zgkq2VzMCDbqala2/LCQr57XS9irGLfcVvIW8z mAAA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206175802116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state() must report an error in errp, in case of failure. When postcopy live migration runs, the device states are loaded by both the qemu coroutine process_incoming_migration_co() and the postcopy_ram_listen_thread(). Therefore, it is important that the coroutine also reports the error in case of failure, with error_report_err(). Otherwise, the source qemu will not display any errors before going into the postcopy pause state. Suggested-by: Akihiko Odaki Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki Signed-off-by: Arun Menon --- migration/migration.c | 14 ++++++++++++-- migration/savevm.c | 30 ++++++++++++++++++------------ migration/savevm.h | 2 +- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index e1ac4d73c2bb09ce5099365ff7161df6049a8032..cba2a393555053bd18d104b78a3= c1bad471c3557 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -881,7 +881,7 @@ process_incoming_migration_co(void *opaque) MIGRATION_STATUS_ACTIVE); =20 mis->loadvm_co =3D qemu_coroutine_self(); - ret =3D qemu_loadvm_state(mis->from_src_file); + ret =3D qemu_loadvm_state(mis->from_src_file, &local_err); mis->loadvm_co =3D NULL; =20 trace_vmstate_downtime_checkpoint("dst-precopy-loadvm-completed"); @@ -908,7 +908,8 @@ process_incoming_migration_co(void *opaque) } =20 if (ret < 0) { - error_setg(&local_err, "load of migration failed: %s", strerror(-r= et)); + error_prepend(&local_err, "load of migration failed: %s: ", + strerror(-ret)); goto fail; } =20 @@ -935,6 +936,15 @@ fail: } =20 exit(EXIT_FAILURE); + } else { + /* + * Report the error here in case that QEMU abruptly exits + * when postcopy is enabled. + */ + WITH_QEMU_LOCK_GUARD(&s->error_mutex) { + error_report_err(s->error); + s->error =3D NULL; + } } out: /* Pairs with the refcount taken in qmp_migrate_incoming() */ diff --git a/migration/savevm.c b/migration/savevm.c index 5e54651652e9562939e61cf488c809a369824edb..88116ed278ae0e5c9b0dd055828= ede69b0b876c9 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 Fri Nov 14 23:28:51 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=1759206127; cv=none; d=zohomail.com; s=zohoarc; b=XYua30jJMfaukL9n0VAguZ1oq6+vRSU2KBKcGvTwhUXUND+b5hUgCB1p7SXcTQChDfvlmT4cSTHyhcoOwhs9g1m1SvrUNaYOuIw1c1q38swaLAP1+POiLxH++r+Tct6myozoWsHXDzAf/ZU7q0GEzMfbU7yD6mW60bE1k8Z18BM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206127; 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=6G3SrN0pZ8UoHUDlqNVP5h6JRKIWOY94Cyi09HxXC+w=; b=DDGhgEhvLTOe/9vI92/G0xEeTyZtd4bGw+50f0o5hba55lWDdJcpcFakz1+ZaFZSUHwvnZckqI3ECqzUkoL2+myxiCWvi9KPghQfqGX684oM8OYPHJByIuFAfgvk8DhwPo2l+YLbF6b29EDR47RSu04oMhUnQBR2WZ4tBLREjyg= 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 1759206127924229.71192954946628; Mon, 29 Sep 2025 21:22:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rr4-0004a4-TM; Tue, 30 Sep 2025 00:20:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rqv-0004QH-Ap for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20: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 1v3Rqn-0002jQ-4y for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:36 -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-247-E4PodJ2jOTaLwatEMjyoug-1; Tue, 30 Sep 2025 00:19:54 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-334b0876195so5539373a91.1 for ; Mon, 29 Sep 2025 21:19:54 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.19.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:19:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206019; 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=6G3SrN0pZ8UoHUDlqNVP5h6JRKIWOY94Cyi09HxXC+w=; b=UZ79jCSS3x7BzD4I0RqCHGRNtu0Yi7qT2JaCdRbtpFaUQOL3R25413mf/WYbWmAOPsd5lX 96xM9qsHW9gjzmQ3/pILMWRmqawrqistWp3TH2DNvB4iEzOKZG/xklwbeJRNS5uozs6IuA o+RT7bgaD1aGAsxEwwQJg7C4O4JB1jI= X-MC-Unique: E4PodJ2jOTaLwatEMjyoug-1 X-Mimecast-MFC-AGG-ID: E4PodJ2jOTaLwatEMjyoug_1759205993 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759205993; x=1759810793; 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=6G3SrN0pZ8UoHUDlqNVP5h6JRKIWOY94Cyi09HxXC+w=; b=uRVfUgtdQIpMmrIRgps4I/GX0ck58D4c3lDjDtBZfnofpnPUOR4uKyAxiJ0sa3Cs9E JGEEc4KoTf0tI4cDGezQDDn0jVLZQ64TcV7wZsdvXcHDjYUa7CtfVLm7bxnmQzVEKy63 DS3LbEji6VcoKI7TtcB+2HzjcZfGnH3U7Xl5zeWPF2bDB7zn+PvHtgAxXFQ5Xmjn/h2U QtNvCAcIKvhXvLDqxEdTQUE6wX9hPdseDMtvVprP2IT11PMRm4a9RTHdvHEeef8tGJfh y2eKKGZMgAetDS8t2j93AUmEvOjO1IG9C+E51+tCHQ92ecmU9n5D5hjM4W8VO4CNrqS8 uA8w== X-Gm-Message-State: AOJu0Yz/fkD9X9CzW9CzClBhvRqyI/K/fLLAIa0S4GwM7mvTSk+WhySu 7j24siHXex2J4Y05Ec7hTJLsUOFV2/3dV7LG/5ShpOUQyrQchc8lstfIa7XGumg8Hyx/bYBzPXv 3VDEmTxLTWj22qmxfZxY2yWwgNs1+O4ep26p2qRSJC8G3UpO9BJmcuyC/ X-Gm-Gg: ASbGnctpjL42mJiy5qkwlX9AqUgfaqkrXleN2gO5HBRkcqqzocoWPL905nGwHPUn/5M pPdrpp1AGUGTovgM8lzJtWYy0eSh3JO8KBzhvkzot+4P1tKAAHRFaEHNryvBMI/cJi17bRq0Fck V8INSjmtUhhQCSMlmNW4vkgA2A3/t2GZKx/U7E21iNiXThcawf/YsITpZduJDdtHk666rgdGgT4 BaUpY5NizT3GC2P6NJtwceUvDzpgn3zTdTIJEMzmW5ZPABOCXpvTdoA1PIZz8LvI2LByUEzjYU/ +KpJ64n4019pKPRSYdgbYwnyICCxz1QK0H0Tdb4PZTn1cI1jKTMDeh8pqQ== X-Received: by 2002:a17:90b:4983:b0:334:3286:8fe2 with SMTP id 98e67ed59e1d1-33432869004mr21836667a91.10.1759205992981; Mon, 29 Sep 2025 21:19:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEPgPQDcueHEM9p7em4E4pJ2Dm0YxC0nvEZK0tyFvPh0FIJycBmc38GWmSPqQusbQDMhR5DVA== X-Received: by 2002:a17:90b:4983:b0:334:3286:8fe2 with SMTP id 98e67ed59e1d1-33432869004mr21836623a91.10.1759205992551; Mon, 29 Sep 2025 21:19:52 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:17 +0530 Subject: [PATCH v15 08/26] 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: <20250930-propagate_tpm_error-v15-8-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=2800; i=armenon@redhat.com; h=from:subject:message-id; bh=aAtWgri0JtZvm7ozV9PyXTNhz41wAlyIboBcEWP5JG8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMGzDkpa90wM+pf7rb+qIjD/QfDZ7LvfC+XuHTafw bKMQfhERykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIkcnMbIsKJks8hpg713L96L k2s4YCT9ZXP41F8cxVwvt69Z5TYh9RvDL+atl3pDustTT10J+N6RuvYZ51J5MZbfC6uFlL+5LV+ pwwMA 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 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: 1759206128997116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 cf4d71d9edfa2a8a30e30e23ccbb3f72f402b6ae..a426ec5b60b8e929afe281c89be= 4e934fef40143 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 88116ed278ae0e5c9b0dd055828ede69b0b876c9..9e30718995ec9a6dddcfb3dd9e9= e1dc2d9d17aed 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 Fri Nov 14 23:28:51 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=1759206473; cv=none; d=zohomail.com; s=zohoarc; b=NpQTJUzacSBSyt2NVxjd92Vc9SlINIFs9wLE4Ds2ZVyPlY6d/3iaYJSc+AYKd7/ca2XwLDAbkDhZIYUk/0Zm76cpbBueHPfJxElXPkHU3JVknb3lDemczCADT9MkT3f2bt3lHUCs6PQ5TKeTIhNgqox6OLfZa4CsHooGnZDnUrI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206473; 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=IVaUYKAjLKiIcqyYW2GBCIl4tQ6+if28k0KcXdOXb/w=; b=flS4NBDCULp6Ul9ubunmWX9xCYSqHzt+GSPCWsv1r3DUYk5RUzLqs500FhRV5o6b6iNX+siMxuV98xNOBDefzJgtIaIo7hEfTFSYbS6xwSNF6LRyptXkh48oXFIXGavY2V/NzeLQYTaSVNpboKGg9gCROjl7v2YwTmNf0AI/JtM= 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 1759206473247584.0070053735524; Mon, 29 Sep 2025 21:27:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rqp-0004MW-Ir; Tue, 30 Sep 2025 00:20:32 -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 1v3Rqf-0003sX-BO for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:21 -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 1v3RqU-0002fH-7R for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:20 -0400 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-634-qOVIYuh0MuOrAnSHEWJPRg-1; Tue, 30 Sep 2025 00:20:03 -0400 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-78117fbda6eso4126981b3a.3 for ; Mon, 29 Sep 2025 21:20:03 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.19.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:20:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206006; 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=IVaUYKAjLKiIcqyYW2GBCIl4tQ6+if28k0KcXdOXb/w=; b=Eja7V9NKUNrP8Vw6S90omYGLomqLrRs56t3oRcBu6vHbluzWYgIVim08qMq34nbSdCoHAD 2HxeBbFpDkh2TdmyhJL1YYqrF5I8DP/COWctS2on6SfcN3RWu1VhlXKyoesaHmuzy7HJJT ZPrJVQxeE8vNVOI2FqHZj40fM/c8wy4= X-MC-Unique: qOVIYuh0MuOrAnSHEWJPRg-1 X-Mimecast-MFC-AGG-ID: qOVIYuh0MuOrAnSHEWJPRg_1759206002 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206002; x=1759810802; 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=IVaUYKAjLKiIcqyYW2GBCIl4tQ6+if28k0KcXdOXb/w=; b=oYgw1nkvjvd7OYIEk2yBUHe8U2eGtizaVcBQNBSNguLFgosOOzkLJs32Fb+00xgsrX gVc7EIyf714fPJHU9S2Ow7SXP/a6n0lZIXcISC96dYM/OvObikiWnNyYpynAeQUGFgWC AnQkhuzpbdCU6ooyj3PGrZyWRMRPTnnZ2E43bTGjPkymnpdEOEi4m2FLO7VBE+3yeMSO SHUMZTtNgTWzuLEUS+gYD/kLUnlQeotm9w0womSFX3n/9y/ZKPt+nUfrBV0DHy3HkH4I MWM0YRKTOlK6VQGPS1Q1s5nUvXN0fS5b15nsCB7Ag6CAtHdzsdmUsSrD4oyG5kqUPCxp ylXg== X-Gm-Message-State: AOJu0YxhGLJG9s2Lcdcm6IGLV8UFHDknD+WvLU/j7G8F1Cw2HoYZIBoQ OQcosUSbTgOJUY13Fw6K+xICE9zWG/eYcQrNFUCmzp74Etqx3x9L13x8C0+5jRnjsByvUYWIOcF M9lJD1QjfPguiBz9A8phnwZXcqmt9qjNlH3LG+rMRATHqw532NOwpvgJL X-Gm-Gg: ASbGncs2J2uYA0vHlC+qFxXdKE+LW7sA/++xU7KWi3cuj4Z5pMGL6AAbPgi6aIawJXr e3Vvg9h/0HPfxv4vuUaVIQi/Io80Aqgg83PlmTWi4jN1sTn0VGaM9yVo6obnocfHBVRxAvU8zDn 58UrrVVtdQNIaoSfFXXPuvmWyQYGk65SvNst2+90FUdk4RYciGWYiwWABwxwyqCtYTue2UM/C9v URTokinlpIjdTIDwxeMX8SFrxvFNZnea2z5iRLmLR3FFOpBnscFDhI5Mk6mgYITzxSJCZo6+e21 3YTfegHqTgTYk9/LvKRu/ExiHPIvtz9fw08nfvHaOYS3GTzI9mDGXr2JpA== X-Received: by 2002:a05:6a21:3397:b0:245:fb85:ef58 with SMTP id adf61e73a8af0-2e7d184ddcdmr23755492637.40.1759206002331; Mon, 29 Sep 2025 21:20:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFiyd515mPLCVv4xeJdaYwKGXiGFNHNFvFrrF7Q54+uYJseldJyBC4i7YGkXsnwE3Ks1D6Ydg== X-Received: by 2002:a05:6a21:3397:b0:245:fb85:ef58 with SMTP id adf61e73a8af0-2e7d184ddcdmr23755457637.40.1759206001937; Mon, 29 Sep 2025 21:20:01 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:18 +0530 Subject: [PATCH v15 09/26] 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: <20250930-propagate_tpm_error-v15-9-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=6443; i=armenon@redhat.com; h=from:subject:message-id; bh=Wl23waoC+6Nky6xZOSW0idcC0HXTEiZdkMCv+c5PL94=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMG92zoXdodPf+Z6o59zovGDOo5FxS4LDEt7MrpWb dwV94Cno5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwES4uhj+Z80LiuBjkjZR35L2 00xMoLFNiW2rStFuhrVL1dfmbJurz8jw1sNqe6rm9QXijqt8o6QK9i1fuCQtxm75IbnzwYbffTj YAQ== 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, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206475576116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 a426ec5b60b8e929afe281c89be4e934fef40143..ad50a3abc9cfa544819a79b9c75= a4f538249e6c0 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 9e30718995ec9a6dddcfb3dd9e9e1dc2d9d17aed..f1338f5cf6d983c73ce8388c7f8= 99b45fd3980aa 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, &error_fatal); =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 Fri Nov 14 23:28:51 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=1759206093; cv=none; d=zohomail.com; s=zohoarc; b=ihN310dLQRYjJS6YAu57HG4b92/b31hd33J0z9jjZHPd237WDp+3tuql6LVeroa5cdqX5MJemW9pVNApK17CJb9o2TM4Kddg/rrJzOT1NpZOU7OnWQUu/7/EFvrx9YyMNCMs2GkDb4L/gsafdO9ayfKAA0C3QXcIdMgRAm6CREY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206093; 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=psSpiDH4kV8Bgi2nzWMvb0l33iY5a0fe+4eRM75ZEmA=; b=HC3FBtOcBTpvN4rYSJKkhpLIjGOn7d569x8LUUpgzGv5qo+FUihnFYWsk6bRwdTKt/gYyMi/xdtSfGJ72LEWjENaMiQOmWnMh47HNuX/zMUks8z88Z1rxxVjsSeXgX07USqoh08ur57ubf9hVxN2KTc/zCs4kCa3y5PyEMDmWcc= 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 1759206093611464.4889288176462; Mon, 29 Sep 2025 21:21:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rr9-0004h4-IR; Tue, 30 Sep 2025 00:20:53 -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 1v3Rqp-0004JG-Aq for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:31 -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 1v3Rqg-0002hb-5o for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:30 -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-617-OmvW9FSHNr-1C2bTxKnFAw-1; Tue, 30 Sep 2025 00:20:12 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2697410e7f9so118541365ad.2 for ; Mon, 29 Sep 2025 21:20:12 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.20.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:20:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206015; 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=psSpiDH4kV8Bgi2nzWMvb0l33iY5a0fe+4eRM75ZEmA=; b=Oy/LhLxpCkEPI6WHIU+2h0vb3CLX5IScyJuSu9FwDnU4JTmQKSErdNa4HMBa7irkD5a7Ea vqgdZ+uC6UHb6xMzjBNDsADBJx5CRPZ7p2W0QnnsJU3BY7aI/xx4aBhOyB91FwPkzbXiEP zfa/OUMGUVy4iMLHMyQ88DjVNbfTyHI= X-MC-Unique: OmvW9FSHNr-1C2bTxKnFAw-1 X-Mimecast-MFC-AGG-ID: OmvW9FSHNr-1C2bTxKnFAw_1759206011 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206011; x=1759810811; 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=psSpiDH4kV8Bgi2nzWMvb0l33iY5a0fe+4eRM75ZEmA=; b=VWiRykKomICRaMC1QSgvFfEmYofKdrT6UsN58bqZeTlYo5b0+v509Cgnyn5xJsebIJ rnakvGYqNwfrJN8qz3oA491Fmdi9Wra/H4+7mgDvW9pr72AsgIE1k96lOJTNY9xRJUOZ RbQb81IYE64r4FphaxekKLWLcVZjCvnqkMEO9f+HEkXOx+JGpqj6J7XN5mttCMClAOfn ZFNvnggkhQSAo3z9pOUhm/zTtLSnb6Q9joNdray/yU++eV54lged8I80xl8f3TvO79N7 gxMWHweEbkRS1SWvwZl+At1GS++w4HCzc3g7TpYQ4JKWhQKQzcIqX148OrvdsV7zNeJl 0w9w== X-Gm-Message-State: AOJu0Yz9kL9HXsARpFtcWLxTJoeUHACkmG6eO5Z9fTiXzbX736kV9MhB fCw01H0J0tj7UR3dYhiqybvruSir+upkkytbyEKZeY1mQCs2JxsYboc9E13/nHmWgjswIwxixb1 Dcl5U860o0xqDl4LfphVSTpD2/an1BxbyYsVtLjKbqjVg3klASh62LA88 X-Gm-Gg: ASbGncsnBUVMjs6baLHboPlK4hBr/PhDt0LCbcPaSlAGy7rkSmzSu8ZHvzOWsFlBZ0b iRnfm933fZkVESP8sFE4zWJcEnL5PyzWc6y17W5RBTdSIfFrVTYLO8xNc71Bm421ReY5WO4bS5p jZO3qOkT+4cE6FNkP8EodC6R2g/DyOIDPxI7rgT1PVL2+azjSEVNIpvtfsBqIbd4Q32CUoQMna+ xCTtZVwlcUhDVzQuhBThZwx/yOO0jXpU56FKPAsYLKgngXuZStH2VMlbbnE4qDOwThJJ8G7i1Ft XOWGmz2K2IvaHZYCXI9gHcPLEafKqblfI+6l2fpjZ/wa4OxNkQDcwmDphg== X-Received: by 2002:a17:903:22c5:b0:24f:dbe7:73a2 with SMTP id d9443c01a7336-27ed4a3d5e5mr218686695ad.31.1759206011307; Mon, 29 Sep 2025 21:20:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEuALdhjz7oHDH3HHWoJGXIYjTO1TVJkPSW71ODNeEaT0jLk2J2flj6ZQTOCktdXhCNxon3JA== X-Received: by 2002:a17:903:22c5:b0:24f:dbe7:73a2 with SMTP id d9443c01a7336-27ed4a3d5e5mr218686395ad.31.1759206010958; Mon, 29 Sep 2025 21:20:10 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:19 +0530 Subject: [PATCH v15 10/26] 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: <20250930-propagate_tpm_error-v15-10-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=4901; i=armenon@redhat.com; h=from:subject:message-id; bh=XCbvGGwXhkjJZmvdOEAYFgx2kzoPSMf9LtiyEklMnvA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMHNzqtVdxuGHOXzX/gwrbVaqffD31/NHX9WRDy70 BwRYhvVUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCIK7xgZdtjMNw/Qu3+xp0j3 V0HRhIlLnt6d6KP5nMPv8fSt12rmbGH4XyT7W8dP+39cWfmPE9y/bhmvqwzYHTn7j9dB5olhE9b /YQQA 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206094975116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 f1338f5cf6d983c73ce8388c7f899b45fd3980aa..83d8fb8f4144fd54fa7970eadc8= 1444d38437659 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 Fri Nov 14 23:28:51 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=1759206351; cv=none; d=zohomail.com; s=zohoarc; b=ly1aCuXHDuZZqH5QFG1VeCBRjp3QGyIsf4wofUo8AmMbgkWjBQsnJDhp9lBkgBzFZc4/s2O9U8Tk5DuR4RGVU2S1YZnBi+vjeDLSMIJ0LGGg3IiwZ73rCrTNwJVV/+UOQzw9wiLHP74KyWyR/PSsofonZRJJ+YPM2xE1dhO3vUk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206351; 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=14VHipwcm8yELLNadiH6eM3jZMQkmlt3jk09y6vePWQ=; b=kMSwbBD/xSRJucMOLwmemQ6JtKat9cwi+eQnQgqtNWSIoDuzY0VuBTJidlgJNwVQPSOOFfAEoZYTtnG3D9773iBn8AyfZ/1B238z0tJ/L4T0EZJwgD1Yvcte5ghQVEEoxq3ucMc3Nc9gX63ZjIuoePXt9dRCtWh/xs+dv8EFF9c= 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 1759206351320330.8609940899719; Mon, 29 Sep 2025 21:25:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RrO-0004wJ-O1; Tue, 30 Sep 2025 00:21:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rr2-0004Z2-HT for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:45 -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 1v3Rqq-0002lY-Oj for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:44 -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-9-4aOqoWHdNWuuNg2QPij3lQ-1; Tue, 30 Sep 2025 00:20:23 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-268149e1c28so50623325ad.1 for ; Mon, 29 Sep 2025 21:20:23 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.20.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:20:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206026; 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=14VHipwcm8yELLNadiH6eM3jZMQkmlt3jk09y6vePWQ=; b=jDd1sVrWluuO/Z1p2W8cvGl+v7+eTzzAhefSTIeL/xu0MZTa3syzXF8FZnz4kRf217hP5Q yNDQH3A1kYUAVFFqJoo5qlZbWIeozAvbOCqZwzEXQB+eLXaNWkz+LJXoCxfGJw6stQyddd LCm3ECrv3s3RPYsK+n7Ghs5peblrHZk= X-MC-Unique: 4aOqoWHdNWuuNg2QPij3lQ-1 X-Mimecast-MFC-AGG-ID: 4aOqoWHdNWuuNg2QPij3lQ_1759206022 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206022; x=1759810822; 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=14VHipwcm8yELLNadiH6eM3jZMQkmlt3jk09y6vePWQ=; b=Y3llfIWttW+Ta42j31NrmR/Wb9bOsJzQLg7DCyKmYt3HSLFNEv+bAMrpQZ8Qpr/WZJ mYi7XUHyjdShr/ikQ06AGO9InZ4bG2+2p0DZLSm4/R64PCGBatFspEtMpXGa49Gmv2SN 3UfimpK6EHwpZCukmN/X9sCnlBS54fU2M6G7DNcOQxdHch8leJp3csTyCIdQA/4pq1sj ePHRN7G7FKQBh9G2gL9uiWVRGGb73qMOv1MC11/rcpH+naUlsyhpY27/az5jjpqLHdog h5NndTKeMN1VL+Z7AbFwIn0k3/hw/7hU3+9OdHf9Ns5ojxbsHltE3J6gVfbKKAkrjqXE jx1Q== X-Gm-Message-State: AOJu0YyzBPDMwJ1nUeX3EeR6+wh9zBwJB6o/i1orIjcdzRY8VR2BkOQL R3zPtHADsSgyMdkK3ZNstUIPiZzoIeYOL5mB9IcN06g7COfpIkQs3pnvCcOFIoVbbUilLAJs8uU KB+XIYZKI8cpZjX7bZ7MED47cMuAX1Qc95q89gqwMrTq+Aolmxu4hnImt X-Gm-Gg: ASbGncu9mTptwjACJwy+S3UT2cbHa2wJaxM6p5EWOTngN8O/ZUTaEa+XQMt5n3eD7Q0 wyq0t8/HT67I45BEgCyJk4JSmtlTmWoDRQxvfk786Dzhjy9vGHshVPgs5SHmxAGQ58NJ5E5kSOz 0zWO9b4KTLiD6+CIF/nWCZX3awfkPnjxoGdyKaynbNeAsy3pT6/kUH9Ct/8xEULaievSUIBbj2N kxtw5/zTbtxRfjHE6MY3vVtLTwTmtA/9VAndrF56VJCVWKvw1yEPf8F4+LprZnFmvv7oNE+meeV 7lJsU/+qLfo5af9cO5LFOFsH3ZYcDpgv9J9rGqHpGFtpSfzfxUST2rF3hQ== X-Received: by 2002:a17:902:f78a:b0:286:456f:8c8a with SMTP id d9443c01a7336-286456f8e5emr78764055ad.50.1759206022034; Mon, 29 Sep 2025 21:20:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGYCsDxHtX8mWuQnaMw7+Qz69pr0xfkio2NDsObnx2861LVsFF/MYSSfcTM8M7kVeL+g/GKBQ== X-Received: by 2002:a17:902:f78a:b0:286:456f:8c8a with SMTP id d9443c01a7336-286456f8e5emr78763715ad.50.1759206021602; Mon, 29 Sep 2025 21:20:21 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:20 +0530 Subject: [PATCH v15 11/26] 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: <20250930-propagate_tpm_error-v15-11-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=3197; i=armenon@redhat.com; h=from:subject:message-id; bh=1IkIzHbrEWLFZ5EcmFCbm0rd9Sz9Qy2MDvDIIloh0BY=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMGbzysuy/xT6Jivtoj1Xc7NEO7WyL08UdwbhA23c lzL+c7VUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCLT3jEyXGiQZn/33OhkSdSR udxrt73mk2L512n1wSl095p1fQ9qPjD800vyW3vy+InvQRyKsTN+3um+y2Dslji50X1CJPOBJ0H 2LAA= 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206352010116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 83d8fb8f4144fd54fa7970eadc81444d38437659..c1ae36b50a5d602360a47e3818e= 82954f8694369 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 Fri Nov 14 23:28:51 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=1759206486; cv=none; d=zohomail.com; s=zohoarc; b=K4u/N/DY8Z5O8OEnANU5Z4fmeTdH8LuZRIKwzz5jQReEneu+DcAh+kGobQIAX2tvCNnHqviGpdMg+uNse4S5L/u6uhQamcDV9qeO7RS9AufrAcBgklFmb/e730N+DjolXYlCXzdsbd8TaU71rhcHS+oNU2g0y0XeCJl7Y/ru3gg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206486; 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=igMc6h1HM3pQRpz/BTdoMtp4PcxDiZcMQfEFv09YVZ0=; b=lU2CI4qQUOFRCADXFUmdskXWDM45WPRv5a3O3euLVoeGmbmsyqdh55CvEJ3iTvCOlXE3FUhYmLE9NSanpowoGrV0NANgSIDoE0ZvX4UuVGzTgxP2CpQ7jOJyEPE06ONZtjZ5k2T8HJGOHTAnyDO8HxyDEPRI/OPuJXlJ7QCwXxI= 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 1759206486044351.56199316053926; Mon, 29 Sep 2025 21:28:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RrP-0004uo-2G; Tue, 30 Sep 2025 00:21:07 -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 1v3RrB-0004ku-QJ for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rr1-0002ro-2a for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:53 -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-443-VelC-x-CO7OWv6DZU_TW7Q-1; Tue, 30 Sep 2025 00:20:34 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b4f87c691a7so8495475a12.3 for ; Mon, 29 Sep 2025 21:20:33 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.20.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:20:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206039; 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=igMc6h1HM3pQRpz/BTdoMtp4PcxDiZcMQfEFv09YVZ0=; b=OwT+ML7jkVWNlp0ykMsHGeWfEg+ubC/yeJJBSwlMrhXdBUJb2KJDu7tD/P9FDOJlyRAwY8 Ax7izKqyNCDOzFWMAsUH0IOlYCYZYqnsIsOBrON5o8qBb6kwoyv0M27IYa6YY56UPvuuTU a3sQ0UIDJFWucnX5LPlzxqIB4+D1WQY= X-MC-Unique: VelC-x-CO7OWv6DZU_TW7Q-1 X-Mimecast-MFC-AGG-ID: VelC-x-CO7OWv6DZU_TW7Q_1759206033 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206033; x=1759810833; 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=igMc6h1HM3pQRpz/BTdoMtp4PcxDiZcMQfEFv09YVZ0=; b=fmTFeC652NLn6tDkLxH2dTdilI1et8bEVWM/MCC9vsg7Z1HmN+LrerhHKrQ0zwO/Zh JIz19FafMaRJNEiM5yOMe0JstcLK7y70hcuHfwzkcZBdgzPEJ7vFhwwsGYXCy7jcXhJl phcnFa17kzLCyq0Tih2jJeb+hgdirWr9tZ/ZrsfTDx/7cE9BtCJrO/OllNSl3jDE7rT6 V1gNm/8mwne98yivBCGUzEr8lMgtWFO3NcXaIkQ3n/QqQb5gqKD6A+O8URAs3ydutWwq txnKTEIdWlQYUs46Q5HKBQjusv/FLshUYdxOWwIK8DN69VPbrfVw5OA4/XWDITXYenhT 1LqQ== X-Gm-Message-State: AOJu0Yxu3UsLPzGWBJ0o1X6qmq/AmaGRdfcKpyJ3aYLZq7qDl/fUlEMo 4NSDJK78IQN/IofFRhe2avtZIh3xd1VvEcmJ3GDKJ4Y2YrQQtM7VjHkJUAqbJbYzB4Ex1wogTbk HT8EINat1hsNV6LmKMTG2U1TQrSyZqvVV3EiiuncqSPH/z7UBBNSqHFjp X-Gm-Gg: ASbGnct7jhfuwuWWex4HBeidrjJ8CnAKrengtvs4KSMyPW/s/AXuNb/pyGXyoC0RTcD 6esgPL3MbhZP9zL1tI5y6YGTqvgcFqqVapRpvaW9EvkahOSfbwU0zkv/lddfvROSKg2DjH56DFx Jrt85tld130mhGgza+nb/a7nEiKatZIWHeH50Oig1+ucPD9OQCON5D0nEIjcVrEuYsBiusGW6QI EL8FRGbxasuFb8ofvDIt70AAy04G2HYsNuNqLj2NuVkK3S3OoDQNSejFvRlLSRo6ydw2xNz5XML uHhmiYJ5PQUS3bWo6yCfmX9qSY4mZFgA7a49FzujaNf6bXzYdb+3vIxZEg== X-Received: by 2002:a05:6a20:72a5:b0:2c5:f4a:8826 with SMTP id adf61e73a8af0-2e7d9da07c2mr23274967637.54.1759206032879; Mon, 29 Sep 2025 21:20:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHKhHKdKXjgV8ghRo3ME71YUMuIA5qe5w4JZUN96t8qm1858G2jEGM/gX3GS0l9VimAO5FNMA== X-Received: by 2002:a05:6a20:72a5:b0:2c5:f4a:8826 with SMTP id adf61e73a8af0-2e7d9da07c2mr23274938637.54.1759206032484; Mon, 29 Sep 2025 21:20:32 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:21 +0530 Subject: [PATCH v15 12/26] 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: <20250930-propagate_tpm_error-v15-12-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=4011; i=armenon@redhat.com; h=from:subject:message-id; bh=tq1dZSNLjlmmOhiP24C3MCRIU5Ho0BTJB1jR+Ld5Ek0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMFrmXvLs1MefM2aO91k/eHu5G+fanVtnts1+BseT l6UVcfRUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCKp1xn+u+z42uCWcWyntLlQ 34KFTx5ZSW3eW/+jf6/DuzdO0vfZ/jH8d50oH8ixkM+KrzJLpFApjMtVwOzqxHevXi5YP0GUP/8 YDwA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 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: 1759206487546116601 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 ad50a3abc9cfa544819a79b9c75a4f538249e6c0..db783f6fa77500386d923dd97e5= 22883027e71d8 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 cba2a393555053bd18d104b78a3c1bad471c3557..ce17dcc1c0ab46a851cc841d9f3= 97c87f5d43d16 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2656,12 +2656,9 @@ out: return NULL; } =20 -static int open_return_path_on_source(MigrationState *ms) +static void open_return_path_on_source(MigrationState *ms) { ms->rp_state.from_dst_file =3D qemu_file_get_return_path(ms->to_dst_fi= le); - if (!ms->rp_state.from_dst_file) { - return -1; - } =20 trace_open_return_path_on_source(); =20 @@ -2670,8 +2667,6 @@ static int open_return_path_on_source(MigrationState = *ms) ms->rp_state.rp_thread_created =3D true; =20 trace_open_return_path_on_source_continue(); - - return 0; } =20 /* Return true if error detected, or false otherwise */ @@ -4022,10 +4017,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 0f4280df21f6357ca3b315c732ce0b5292f3622a..0ee0f48a3ecb1467701727a5c82= ba938d653e065 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 c1ae36b50a5d602360a47e3818e82954f8694369..eb2a905f32eabccf56f3444d070= 5409c7d765a0b 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 Fri Nov 14 23:28:51 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=1759206599; cv=none; d=zohomail.com; s=zohoarc; b=UfInRqopo83bUt1zaluEG2SUMgyreR0pslJZdFFBD/wD6aA+jSBi9wItV/aUFYAgwyGHlvMueX82gDuvBZt9JOI4Iu7nQSKybQ8i8L7ptKJ9Q+w6vloL8tH29jHf3t0aaNDM5OuBmMAkGLT3f4Ivr9AfhAdfI06RD8Ym/GjNX0Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206599; 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=FrUD5lf6tAHm8WITk9QYY+K3/gMUJ0Fyx6x74O1qOwI=; b=nHbp+ScJioEs/Fyl3Wl+hBBWMhBTCRsZ8ACVBgYSZGxKQ8dMLYU2eQT4eof8ZV4soa+WfjsS1m3fSi7A2kQQpQIWVygfIIaRFGGL9u6YJTnoMeB53hAZxgzCaFVxyfFVdTaYsJwz3QbsfcMMZk5I7rLh07Z0Rhu+VEGq9LYRXVE= 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 1759206599728219.86028112209533; Mon, 29 Sep 2025 21:29:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RrQ-00050G-Up; Tue, 30 Sep 2025 00:21:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3RrG-0004nD-RJ for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:00 -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 1v3RrA-0002tk-7l for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:20:56 -0400 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-646-xVO_BsxWMwq6AjH4IJx1og-1; Tue, 30 Sep 2025 00:20:43 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b4f93fe3831so7414809a12.0 for ; Mon, 29 Sep 2025 21:20:42 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.20.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:20:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206046; 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=FrUD5lf6tAHm8WITk9QYY+K3/gMUJ0Fyx6x74O1qOwI=; b=SdkVmgk8MInEJA1GwTKZM8EqORr2BTpnVTEG5njc5HO26bhfw6onydPawUpclcdPAz/Ki5 4LdBOrIfOQArh9qhN5QATZgG5aH4HTPAZbh8kcC5XgroLB82aoTy3COp9W8Y2DcQhahxk7 jxCwJnHLtWYJiCSBkFFaK1ms88ameRg= X-MC-Unique: xVO_BsxWMwq6AjH4IJx1og-1 X-Mimecast-MFC-AGG-ID: xVO_BsxWMwq6AjH4IJx1og_1759206042 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206042; x=1759810842; 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=FrUD5lf6tAHm8WITk9QYY+K3/gMUJ0Fyx6x74O1qOwI=; b=QrEeIYIsvqvA/mhc3Ebnath2pKs/FSt3WOXuOna/fHJurBcWMgfvdcN6v+Z15zDLHg ZLyJtb/fpXugu6xmXC3svQU0i2gvFHUvdJaZLcg6IoCLhXTqq2MIx9wxtw4VGfUaXFRH TaqdCJw7CsKtXf5DDINOoObT0+FPS2kKoPMvAbqflQvbpfJ6iBHnup+o+rncP++3zNqi 51u5N/TBFQi3m8dCRAoJrxknYYh+TILFNq4VfXLpX/MIugJTdM8eLwTbcGrk6XMEhWCp nOh6BjuBguGtuIt4iRZnJ7nGV8nWj+B16hGDgKraMcIVM6L/1+3Lz0663EkUAdpNCYJ9 PU7w== X-Gm-Message-State: AOJu0YwhEnlAYGO2E0uM7YTy5zOt41y6PZw63+DCqaPfKZ+mnksQg+0r zmpZdc8Oj1eSgbWU5MnZxwlbUQcHUSCUQkBZqhQUQtJ7lO7zQhlXWYuucd/9hOaZqr8GyrsZ3z6 b0U4PBLD8ih36DU9hpBkyd2xgUJSM6k/THJCMBBB5orI4Fp8oDffmlIgl X-Gm-Gg: ASbGncsa6EZGEaiQE4FZ2jY0uLO0Z2Qr2fET+bNjsZ+GCFSxGSg7BNJ31Lam7/CCTIl 7zEiEoO1SPwZ1AynMUurcnTgYcIqylTSJ5KNIDQV0h0gw77kLjAgak2uFjfhWUtb9CgRMBRYe2W +KVhMNt6SmL9ygi2UpE7f3nj9RxNb6bgyTUN68c5idhqYECck+cb7844PMdTtZ7WHaebzHZf+zZ 86iTnuhW4SU6f0bgJss4gAhQe5IWGDxb+gZSwBNWhR+7xJU42b9OIb65e8w++KzPrClIVyTEfKQ fdvdL7HdO0DGAyhiGHPrPRGX/1jOPyobDRtT0XAJJIO5WA49+pf0YNNnrA== X-Received: by 2002:a05:6a20:3d08:b0:2df:37cb:6b7d with SMTP id adf61e73a8af0-2e7c1bd0cbcmr23349148637.8.1759206041998; Mon, 29 Sep 2025 21:20:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFku6zSDp9+LO2Obuu12aHqDuJXSKIl/YwVmwKh+cD+/P45ohePuS8dA6jxCOgLYvNlsE+h8Q== X-Received: by 2002:a05:6a20:3d08:b0:2df:37cb:6b7d with SMTP id adf61e73a8af0-2e7c1bd0cbcmr23349129637.8.1759206041644; Mon, 29 Sep 2025 21:20:41 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:22 +0530 Subject: [PATCH v15 13/26] 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: <20250930-propagate_tpm_error-v15-13-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=2155; i=armenon@redhat.com; h=from:subject:message-id; bh=CsLuncBihtMLZA9HzPd6iFxu43uveu3nBLMn7jx6xmo=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMGGC8L/yy3XPtE/sPr9j+DqL90sWYIaC1y3GmQH2 iXInGntKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJEgeYb/wcef7qjQinUImThl UhHvuh1+R6cZv/x62dO19XnFuSrhGkaGExKFdsHKZ4/WlRoJnmhN+BGxfXWBpxHnUfekoDn7HjG xAgA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206600615116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 eb2a905f32eabccf56f3444d0705409c7d765a0b..d145e7b1e55942fbcca57cc3093= 27958526a6514 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 Fri Nov 14 23:28:51 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=1759206522; cv=none; d=zohomail.com; s=zohoarc; b=QN5aBoyVs/Zl8uPOM20wRcyvN5Prk+DegBGiltmp8DVRtuaTpExBTo1VWNK/xxMVjzDv1C7n261nJ/JSEC7W5JgxJBM6WRWLLuHPNr15UdE3f7ceOvBAlsZwVWQsvA1loCfooComIIJd3w+z1yRfPBE6Vt29dqtwxenNwEIybHA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206522; 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=8sWMcebPJELAlAAoxkMwEbCrmASRccS7MWf2yvwqa0o=; b=DBZNr+j/nPpVZI4azb8hLAfFYg4Sa83SsN8Fj+Bh4FJReUY7FQxcGBITKXiTv1x39QZLtE2clQrBvTBBjABAripYgqToDCrFNoibB3IEHBWaFlzZTizPzJdeWql8rXlUVb7pF8/BfBPPgUNuMUx/qW+ob+BsJa0j5YvpqF7++A8= 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 1759206522867119.76108647471574; Mon, 29 Sep 2025 21:28:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RrW-00051z-Rf; Tue, 30 Sep 2025 00:21:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3RrP-0004zZ-UD for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:08 -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 1v3RrI-0002wh-Q3 for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:07 -0400 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-122-Ayf7yAJlPOS2JonUKNkA5Q-1; Tue, 30 Sep 2025 00:20:52 -0400 Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b55397041dbso7279166a12.2 for ; Mon, 29 Sep 2025 21:20:52 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.20.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:20:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206054; 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=8sWMcebPJELAlAAoxkMwEbCrmASRccS7MWf2yvwqa0o=; b=GhGF+Y6v2Tl5YS/kOgiuTuo/zvVNUzpR6tukc2OcT/cI85r3TYHaiOL5LfCW8uTNb5FkM+ RxpRLnMch1IB03/AT88orhKjaCGfvNQjYctApbRXKV0cgHxuaIZzjN51vnYgvxgxSgeubo ILDbJziGyRviTmnQs3l1I1XzFH0YUhM= X-MC-Unique: Ayf7yAJlPOS2JonUKNkA5Q-1 X-Mimecast-MFC-AGG-ID: Ayf7yAJlPOS2JonUKNkA5Q_1759206051 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206051; x=1759810851; 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=8sWMcebPJELAlAAoxkMwEbCrmASRccS7MWf2yvwqa0o=; b=R9dYE9b2D7foJTXmklqLcI83PArjsMw8aVK4J5Uirsh6zwxkyL/nlPakD4aHPzlShG NaqWJ96akm3yJLtyjG0ES70w/8dBU3aH73tAxMtQIHfY/5es98C8fRUnYm6JrKrVNFmZ EFV+45tYRQ8QATeDLoRQkLGyUP9YE2s3lHSf/Dc8dGHEXHcZYcHhMTfeZuQs135K5lQD kM0ugzEPwll/Viq//5HZRzTjO2MOkV2IvPeEplEoJ8XmyW6lhjvIgPy/MWVF5sg3zOvG y5wn0S03gFXZJ7/z8Lw/MvXqCCHjZyGcrSDAJzBvPeU3FF+uHurl34gjkZMCYFJ5KB6t SJnA== X-Gm-Message-State: AOJu0Yzpa0Gpnx4V89GEr/YCzYK9LxDGuvdpFlww8X8Kdpxg75o9T/7T M6S6jQNxp/tZtKaZ6XY6psh+MnvlOmX6V9lLkg4tSEH5lQQerBgNAAseKo1rWjaZ8EKfa/P6gyn rd6nbQPGSKjl762MMR8anM6BGuyyeq+Ef4amDmcy66txGy+dDVYqdby7m X-Gm-Gg: ASbGncv+cnr0DDK5Iq25mGB2L+Sj1FzPZcNTU0l4lHDzr75yYppdKXHPq2oupjt5t9b nUWQd99u7wmrHYgCIe0PbQ7R9eH1VmpLmurJuY5Yw951ReSjBKkECBq/U29ZPSsayoJliJqsHrX ZpRau01Wv/s3MBo18qDOXfE4+wtXoe2vJ2/b4qJlZRZCQA022ChcBDbyGdZw0Zq3dBZ6wbJr23Q cP7/VxpkDVmjGF8INh/7HYXLTUwSXLSIw5avaf2JI3ptZey63971p0Bgk6yb7hCLNMyWxfgk/Sm 7+amOO5Zljv0MxtUHhq3U39Vyyl4+tta6cRowYZZKLi0gSFvBhDZNXTk7Q== X-Received: by 2002:a05:6a20:a11c:b0:2f9:dc8d:d2a2 with SMTP id adf61e73a8af0-2f9dc8dd60emr17132453637.2.1759206051199; Mon, 29 Sep 2025 21:20:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG99ort9d0mYRhWnvmY06q9sN2iau68DXEhhR0gFxsGwB/RPVRnjR5M7zh+0Io8poted7kArw== X-Received: by 2002:a05:6a20:a11c:b0:2f9:dc8d:d2a2 with SMTP id adf61e73a8af0-2f9dc8dd60emr17132421637.2.1759206050771; Mon, 29 Sep 2025 21:20:50 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:23 +0530 Subject: [PATCH v15 14/26] 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: <20250930-propagate_tpm_error-v15-14-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=4909; i=armenon@redhat.com; h=from:subject:message-id; bh=+86rb+2n+UvHqo2/Gvfyw5xqR64fl6H2vw4i4a2ZU7g=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMH5PytOX5mv2Jic9qpevfD3o/dfGf9NSrF+8+h5m RD/6pnCHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACbiL8/IsM+yZLnoShHXpfuv yenfP+OUEvZEl93n2t8k3wTz0+e4Khj+it79aJwXfuQb420O7bc+Wz0ZVfbP+JQQOklGpnuOY6M tMwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 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: 1759206523936116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 01721723434d5605fe7a5e400a4c7a709e6e8b2b..5471efb4f01355b7e400aec70d9= acccda879e0ec 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 d145e7b1e55942fbcca57cc309327958526a6514..338d1a9756a991ace0a54f80b10= 03df33f141264 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 Fri Nov 14 23:28:51 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=1759206413; cv=none; d=zohomail.com; s=zohoarc; b=Z5s6En8VohJGagSv3hDXMf4Z6zxQee5G9CBdSrIz8oyCx6no1Y1LpCunP+LV7NW1eRV2N2eNlDdqa4OpQuopPt7i3+faYgkyzO4k3uvh+K8B6rklqHRnNVx3c+WDvg0rJAsRvaJtrJ/Sc1XthphDQi3CYJ3VUHQ2jo6HR2Jtm+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206413; 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=7E2F8u5zs4Z+kJC5tufhEPMgIkmP19mb8At5AdWAENo=; b=MMyRo8T+0JC3sZiAWUeKjUysUfF2MSaCmTyQyCkM3dLwWOktdMZIGHQNFHKDbBbZPzE4Mc+dRz4CJEGOxjF7qp9+I9wlBSn74PoCnaZyjFzeaE8kqjOLW2Yn1oNviHeCQFQ8SR07UCcnuzWd1gkJd8RN6VB8WMcoeKNrkk3JXQ4= 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 1759206413953882.5434225467649; Mon, 29 Sep 2025 21:26:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rrt-0005WV-QC; Tue, 30 Sep 2025 00:21:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rri-0005Im-Ka for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3RrU-00030T-Gu for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:25 -0400 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-80-gfY5FFPCMOeTdZTnzja23w-1; Tue, 30 Sep 2025 00:21:02 -0400 Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-76e2e60221fso7549520b3a.0 for ; Mon, 29 Sep 2025 21:21:02 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.20.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:21:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206069; 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=7E2F8u5zs4Z+kJC5tufhEPMgIkmP19mb8At5AdWAENo=; b=EfFf+cer+zV99uyeEgEKF9+1i2DTH/J9cogl79XibmutCKx4KKS+6RUucXr5cef310z6jb Id3J4/lu/Gf2g8cTU+jH3y0ZB5bk1M1wu5XMZC1l4S+Eahz/Z83IQO+UJ1P7cQ1zEOuA+I R8cJRROEpMtnJOIK8SXlhJK4nktI7DA= X-MC-Unique: gfY5FFPCMOeTdZTnzja23w-1 X-Mimecast-MFC-AGG-ID: gfY5FFPCMOeTdZTnzja23w_1759206062 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206061; x=1759810861; 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=7E2F8u5zs4Z+kJC5tufhEPMgIkmP19mb8At5AdWAENo=; b=ok5wRPRU2ywIZWz5eLr+XSyqse86aWY5SLkNSHyklAQeYgfHg69Kxd0ZcNH4EocoPt nRZSKVf1BjBwqmqIJlYArrkCh+kkSgU1FeukmfUq1K4JPf8Oe/Ojqdla2xFOlzI2WubD k+VHcpLvGVvXCnYD9KqCokIPmReMS+1sGW9aoUnTog8KjQTmkt8viGG1whbVz/xsIKcH caInLhckOAGhyrfwJ1G/IlVlPm6V6s2HjT3xECxvOXwEFyTQPwESm569dEaudmMz9xu6 PcflBplvYVdR6TCPR9JHI2PI1Me3Shnzn+meuchr59EMvPEpyj7wL5f/PX5UnnJI7sCh axzw== X-Gm-Message-State: AOJu0YymOMYhQdOzHzbTFVdiOSelGv6QWNNP4bwhQ6cxEb5NkE0AIoa9 RjUcJhcek+go1A0XmFJOyv8ig/BegZ1MrFVvPWU1sd1jINA3VuNnZ+KcvVdJZGGp0yz9VJkUdIQ tChT17oht8gJC+vy3lUmAZaLjmbIXT9CoAcPF+nRvY4aKziKlt/AIma1L X-Gm-Gg: ASbGncuiuIY8HCxDgSrI0rEQ+gEWtfMaL8mcLI2qzh9fP67ofcyhFcrSJFYbgAOuH/6 s6q3+EVmEfrITne4g9FhPMb/bWYV5gskz/SVOdsGUA4NzY4C5Md/Uyk42FRpxb4dzVguO3QrBii yMrUi+jwxHsDIZEQxAXkXug3JJIoConVmkPGZV50N9of+DoZcJlLwHyH29lrQM8It7/na5GxUnP MB2/feYScVkWCVsLXdmeFG1AUFJydsLKuZOmMF1qmJB7QwRUcgYekZv3JNLc3RtHo9XI76efRrr K/6uMtC8fiX414NqHd56llNpQqQDosvUJuHDZwn78B/IhC6D7q7a8ngRcA== X-Received: by 2002:a05:6a20:72a5:b0:262:cbbc:3125 with SMTP id adf61e73a8af0-2e7c7cb732dmr23278372637.20.1759206061517; Mon, 29 Sep 2025 21:21:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEzuLhFqfzWOq9+8KCmwfRz/a36+f60xyoxDLtFkXkgMKoF5WgWl6eYXVdLvfeo8MCYz3DDZQ== X-Received: by 2002:a05:6a20:72a5:b0:262:cbbc:3125 with SMTP id adf61e73a8af0-2e7c7cb732dmr23278341637.20.1759206061151; Mon, 29 Sep 2025 21:21:01 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:24 +0530 Subject: [PATCH v15 15/26] 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: <20250930-propagate_tpm_error-v15-15-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=4941; i=armenon@redhat.com; h=from:subject:message-id; bh=dlnvqnVI5qyckz6xAuPiLSswmd3ev/2I/vPXJaIrl9Y=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMGHl0RXHN92/f0PxoRljbfqjqZ+1PzlIxG2xe+6y WWbIGWHjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABMJc2Vk+PtgxpftEnxnlsuk VW44fXpZ0Ua7HZ2v+e6sK6xl2hWou4eRYYXIfVO+S7PyVvUUitwLn8G89PyV1r3dKl2Xuzc2byp ZwwsA 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206420798116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 338d1a9756a991ace0a54f80b1003df33f141264..38e22b435b6b486982e75aed592= f54dbf7b313b6 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 Fri Nov 14 23:28:51 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=1759206571; cv=none; d=zohomail.com; s=zohoarc; b=fAT23TVq03Wy5+8zDKbuadoWvagJoQN+wJmaHot0gDoak0lMrL1KhFzxGYOJUr52/f0MZIC7FOXmcA7MM/28LIDWo0u7kxnbxXwiF+hIdIhHx+91gsRHgfRmRsWQByp5G33+W0ZfPdvMMPei982pMTJwwgfqGcY2LNJcs28Y6sA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206571; 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=l8CmClTn767fzlgK7mesvRUnHIcyXILRz6KYIi0pcA8=; b=HUlWfYWZ5g4KaeHTZZUcAmI0Mg+MHkBTvwG6KGer7TwW0DQEhjN4RmIYYkFIGLOelPr4KGld+dHRHx8ZDy6W9W4hraaAY3CKESdea59/onGUksxo6GHWt+bmejrR7D3kOxuYTVGHt+LW5kyBrXOPa9sfwJFo+/XCxYY2pNk9iPU= 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 1759206571506142.53665103565913; Mon, 29 Sep 2025 21:29:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RsW-00065g-NM; Tue, 30 Sep 2025 00:22:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rrn-0005QX-28 for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:32 -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 1v3Rri-00031R-FF for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:29 -0400 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-247-C4A3YspaMz-hHsMJG1nARg-1; Tue, 30 Sep 2025 00:21:12 -0400 Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-76e2eb787f2so4463275b3a.3 for ; Mon, 29 Sep 2025 21:21:12 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.21.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:21:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206077; 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=l8CmClTn767fzlgK7mesvRUnHIcyXILRz6KYIi0pcA8=; b=iejP4M3fHOT8k3UefVHOAeTyWJ8OOSJg/uGJeTR579ktybs2hDv5x/I4vxpuH350KFMiue BzD+8ZT3aXBT7aok4wNnW00Vmu3VltdBQBLIZNBL27c/E9647dIyhK1BlY/kNmX2Dc4YFb 5ri8Y8QPra0+BXk4ziYXf25t10QvpH8= X-MC-Unique: C4A3YspaMz-hHsMJG1nARg-1 X-Mimecast-MFC-AGG-ID: C4A3YspaMz-hHsMJG1nARg_1759206072 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206072; x=1759810872; 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=l8CmClTn767fzlgK7mesvRUnHIcyXILRz6KYIi0pcA8=; b=WRBhA9KBVAmVgqaR6KWCz8KNXX07gZJn2h7NjtwCejvFh6uIttm4j3hgQqTwqrQkg6 o3nK3va4cU2qTbaUzAQ/TY2pmY9MyUwn/UT4vD6OLz5p2Ie4SP771kHJ4SQYtQCUQdr5 ymDu79SP9mht81iCKpUMMraakF7AX63Mpj9nj/vkwlji6pO7WZYBi0Dwa7SBhdXcNRAf SW2sXa/4aShe0s+TTsB2Zl2bOUQ8ZAhAzLOMBV+0JqRjrjcJg71rbrjgulwTZvyFvhZ3 TBritxSBH5h8vjgl6rOT90CTGSDPdoG7FRejCmSvCziTe8HkGpoFocjYpPVv/RcyJAX7 +0gw== X-Gm-Message-State: AOJu0YzQAYNGinvZtR897QmEtXuCH3EWYWH4S2x2IX07cdyYq2x+0rv0 olNfV7eagv82x0G2FdOmcouUt33zs0fEF66sd3smC2/WuBYAELSw4Hmi3PA2CZEAggI74xNIc1M FiyuDerRaLolg8iAr+7bgYaWXWb3Xx7cF6UomX5Z/SGmfsY6OwzzyvEYR X-Gm-Gg: ASbGncuc7akW/cXZiV+8nlKTIpV9p5cGK5rxry+WlHUT/QvxGQAlhcDXtwjpGYWdvSr paUrAqdkOgTvBENWhFvBqDxwn78qcwvdw3dlTs81iiV5fXq0hDosO1b2K7zok5kiGy/VGGFfUW+ 9ZYk3j6pF6b4L4z8EltwXbM54Ss1Ag1sShguGWHTm1PRn6+Kg1miStSK9LcHiDwWWxsegCcTLXN mTw1se/QYGieIx2G/XaFRrJoCuEJMdDkMwIvbaNTHo9jcNhre957WP23qE9Hl/bocjnx4oVHHEO rjztrCvlgHwnH9gVreGS5HJhzHV+h6Ai6mTMeiPsjRWrxGAVo8ERs/sdVQ== X-Received: by 2002:a05:6a20:e212:b0:2bb:b5b0:b3a with SMTP id adf61e73a8af0-2e7a83b97f1mr23602545637.0.1759206071637; Mon, 29 Sep 2025 21:21:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH56+scKBAdReYX5auuKn2Ie/e0jDOBK1krWRIp4OK+rihfkBYWaVqsF9c/EKe2OefBPUB/+Q== X-Received: by 2002:a05:6a20:e212:b0:2bb:b5b0:b3a with SMTP id adf61e73a8af0-2e7a83b97f1mr23602488637.0.1759206071186; Mon, 29 Sep 2025 21:21:11 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:25 +0530 Subject: [PATCH v15 16/26] 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: <20250930-propagate_tpm_error-v15-16-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=2854; i=armenon@redhat.com; h=from:subject:message-id; bh=nAA8BsGaDR3a6jQpR4FRIy0fuoBBaKYvTfUGeBLbc8I=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKEGBN9kX1szVbehffnHylL/lG2Os4zeauk5ebvpUY 1WD9qKAjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABNJb2JkuLMoTaBCY1v/hubn Ve6LH0T3LZl+3Yx55bf/P9N+q/XMvcvI0LSoRCS2+PWWpKLoiy+Vrf8d0zqmUeE7VfuijZlg/ZQ 8dgA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206572472116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 38e22b435b6b486982e75aed592f54dbf7b313b6..ce88f56498cf88a30de4f0d50c2= b5068e4e3939b 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 Fri Nov 14 23:28:51 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=1759206476; cv=none; d=zohomail.com; s=zohoarc; b=URZ22n0P6vZOeDBUYPZjevpv0WKkR3I3/BRVwBD2dMkKuL0QjYNruatX8wyFlNc1+JaT1XoSX9RzQPr9lCv3+aNsfmSgW6j10if/lbJLxsBEuoggBdiLcoVu1uKhwgWi+RhBPkanZBTrkPDg5cIABVi8SWwtXt3P7PGy9Qo6dNA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206476; 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=XIIkEdhnleE/ncO4jCGDN+8xNFRhF6XCVj4kpuj7vMY=; b=HgWj5CYuxcWvJ+a6LQn27GY6J6BgaDo5RRHN5ttU/vnMfiNYRfxfBeznWo53N8cg3qDnmBPQc+T+l+hJ+YqpzIX2nTxpV/y0F3Z6kwCXrDaw1QcepNvo2pF1t0f85iHzUhYHDK8Cl37rotdttmwefhinE+O+kk2grAExukPUcus= 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 1759206476088708.1868805620804; Mon, 29 Sep 2025 21:27:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rt1-0006dx-AO; Tue, 30 Sep 2025 00:22: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 1v3Rs4-0005ic-C8 for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21: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 1v3Rrr-00034z-2j for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:44 -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-407-yILN29KSM2GvcPsD84RaXg-1; Tue, 30 Sep 2025 00:21:22 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b4f93fe3831so7415522a12.0 for ; Mon, 29 Sep 2025 21:21:21 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.21.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:21:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206090; 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=XIIkEdhnleE/ncO4jCGDN+8xNFRhF6XCVj4kpuj7vMY=; b=XqC3on1RRb1SnZBulIsxz8q/+QNnFAveFsSSu7R97taA6YJn6Im1vmSMRpucGeBS5uzVro h2MZsAsEUGcTXn4B+xWXfuTGK7gE5CtkCksrN8FJWI2aREKWYTBiJdIqyzQSPV/yyp4BPW 3U4e4botu10NMl7Evpvbf2P1VXeI19E= X-MC-Unique: yILN29KSM2GvcPsD84RaXg-1 X-Mimecast-MFC-AGG-ID: yILN29KSM2GvcPsD84RaXg_1759206081 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206081; x=1759810881; 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=XIIkEdhnleE/ncO4jCGDN+8xNFRhF6XCVj4kpuj7vMY=; b=wUhydFO5z7/DARddQchdKry90ah/JKU7is6kfEKYrkprWCx46KlWOWP/P/kcFmHGjx mwrW2G4IB6E7AuJhjA7PwCAhhhOUCGc7mO9lInzR4I8bsczbeYzHuI6nWJxg5RDK8j/I XD0jaetrhPU+pmoDh8oKT6o/M1LyR7czbNrHax6aC67ex7giMl/CT0jIpXdncceVi90q +/vP3JhaUG2k1JOA8/WEf/mFtS/XZNEoyCTquR7oyVWHVFgj/wfsgjF3kqcL+oIZnzyU sT6R/KMgOThtcx7Do93TE6nJ+rDe0tYyI7wt+qDfCUCxEhP9InvkqaZLNpZo7QUFVg+7 TIAw== X-Gm-Message-State: AOJu0YwZTF55wvk66A0/qd1CUJtBHgp3AQmqOl2RPEvMky+2D/2hGPNO QwRQq4eqgrf6pG1QTd3k0r59IRbsH8PWiC9VX6+YgbnhzD30rB6s4DmTBOaiXxLjzjx9YtuAmZy EijPfUP0VN/KXVkGTDd94bLQcQXHm8ytl4HJzPzxmJOBhx7mbVZJXiJzB X-Gm-Gg: ASbGncuzPe2IukrkphvhbG8AdOR0lGmR8lUeTkt6lmgKpDCbmaCe7Hmnai9KcidP8Yu 51psUTB/HlkPaIxJAVy/UlxFEq7IdITPEup3zTj/ePSIhypywk8Et0mmzQRPC3hT2dSeTUCaW7D +hUTaLoBq1IpGz+UtQSPDnmk+Udg/PDnJE+bTKyD/0uc01Y+NOkHyef3Lwc6CAXRGYbusinEnN0 vCcSj9wngckbV07Liraim5gpghKir6OPrBGS1PQYtcSnRXASE3PT3vew4VfqNWHm8NLijOMVk6N 46EDwU5+6Zcq/RjcKDnqUMT24gIGGV4Xa0ye7Io3fCwABV4xls2Qce2Now== X-Received: by 2002:a05:6a21:6d88:b0:262:8422:5774 with SMTP id adf61e73a8af0-2e7d10991e9mr24956151637.39.1759206081159; Mon, 29 Sep 2025 21:21:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFEvcgEQsoPBNC/Buh9OnGMsE/naVAMknGhFi74qzEUTxwc9CRuZOnT5WUlmvQ1T9q/ADlFAg== X-Received: by 2002:a05:6a21:6d88:b0:262:8422:5774 with SMTP id adf61e73a8af0-2e7d10991e9mr24956121637.39.1759206080800; Mon, 29 Sep 2025 21:21:20 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:26 +0530 Subject: [PATCH v15 17/26] 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: <20250930-propagate_tpm_error-v15-17-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=1991; i=armenon@redhat.com; h=from:subject:message-id; bh=gmtVzum7WhZI6TobCuUuyorZinEIl/+8OMg03Aypz7E=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMGv19Lyo/ulv01pu9Ondn7eR/VfD2snmL65H3Bk+ u1Z3cyrO0pZGMS4GGTFFFkavgbINgUURkTavrwOM4eVCWQIAxenAExk1TqGf+qLZrXcbFkzV6fD h/380+tF22N+BDzVO+Onfv3K37DO8GkMfwXO7uNlaeW8ql8+rfUqh67+DSN3ng0NCbzbRR+eNTT 8xwQA 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206477330116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 ce88f56498cf88a30de4f0d50c2b5068e4e3939b..f7947160fd5af351a09c0ae7587= 9e80710df4c7e 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 Fri Nov 14 23:28:51 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=1759206333; cv=none; d=zohomail.com; s=zohoarc; b=AyUu7USeqJuG1s8qmEYp3wj6Nj8KoDem1JGbeOxPT7Y9V6n+XLz6vDuSGMoY+h0Pro8Liwx9Q1smxHgPSUFK4bJRoTZmowEuwsAqdgxAe9r9hF3V/2nMrGjIvhWgFbvZPl56ucf7b0Uu2Z4eD0nXqLh1colcHlp62nQ37AReFW4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206333; 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=4xqxaePZFX7JBR5oQdbULc+FFYr1GnftgQIu74pDpp8=; b=Es7/Lf2zXbn1QtxNXCTl1UWlbi/ag5VBiM/FmZGj9AUdVTFr7+vWLrxyx5xLZR1i77+zvMPrwNTd1aYZuICGf8YNNSa+Qips12IJha76qFR0QVGyF5/T9meyqWqR2xyxsk9XthzUno4gbcGrcvW+yPS+nz4kiOWPTJfVkYUWGWI= 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 1759206333510230.90989258614127; Mon, 29 Sep 2025 21:25:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rsi-0006G9-Nz; Tue, 30 Sep 2025 00:22:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3RsA-0005xH-88 for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rrw-00036w-9X for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:21:53 -0400 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-647-uilRimncNain9O7VpEIBGQ-1; Tue, 30 Sep 2025 00:21:33 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b4f8e079bc1so3408978a12.3 for ; Mon, 29 Sep 2025 21:21:33 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.21.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:21:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206095; 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=4xqxaePZFX7JBR5oQdbULc+FFYr1GnftgQIu74pDpp8=; b=bsECsgkvEEjETkMUggCJcTXIKPt6tWp/o89sSgBFy+8YYsrWkN3wEADliz5sjextfyL6fB CQODfjKMBVVOqjeWBqWWbFhMkUU56hAH6+LuyKWwsfRJ/QEmbIf9O2lgeqpT/2ASij84Lp 07N4bXR4Y29qLjClb6JrntTAc0tZmY0= X-MC-Unique: uilRimncNain9O7VpEIBGQ-1 X-Mimecast-MFC-AGG-ID: uilRimncNain9O7VpEIBGQ_1759206092 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206092; x=1759810892; 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=4xqxaePZFX7JBR5oQdbULc+FFYr1GnftgQIu74pDpp8=; b=WZE7m5DczmYbDRpGs3WNs2TVPefZeDJuVitK8iJzyurUN7cU53iKxzkHP/wQ0kznPp uLSrUIxCc8yrFe2z2pFf3kF7z20Ty5uIIKWPMS/Mz6kzEM4JYHSm2kdn7XFPzAcnbcKo q+OxVlTX+jTzQMZ7lQNPmyfLUrnccgD3SdcNCKffVdCIDAGpWOus0zNL/Nub73M5hwgR Znn7/7teUasPfV+LxXZqTB7bwbmZG8YMBaPNtoAuE30uJuaRlMs6AtXG76yR7I7NAxjE yVGezuoER8NFTKh7YeOg0/VzyRsUO56q/YcR/i7HmPg4qtYFtDULeNhxqUIGn+6JwvwC 19zQ== X-Gm-Message-State: AOJu0YzlULjG3O6aHEjtNRXd1RSbCccmfu8zmsCoRkpImthdqKphk8tt DUI36jk0vTZNov6P0vC3FDAfUVlt9FwGbcDvDe7+crOvfENFE0Q60RGJSKcYXLIQdeEF2g6bWFz V6GTJ5AtNnsSK8qh2nn1GxzqUYrw8esefIn6k9yqp3EAyLolfmD/9c5Wi X-Gm-Gg: ASbGncuuCZ+tA411+KNecn5zUrtVZPZnLFo2aWexPNswPm4oDAhHhj/KZgfkfV9ScXW i5aEi3ehW9y+5qORPAGpn+8E7q2WXmSiRizH0KgvTsLmvZaDQM7VwKcA7GCGDcslgpOTnEzkBoX GxMPm4pTHT2QRzZyoN8A27z8kqhmPOpr5hNJBfum6+YZ8wSNHxqQNMhCGJ9c31grd99gUB7rEx/ BHvwrZL0MK5LVkRcJVdFyxSo+fDmYzMMBtDqBwJ7m0HFGerdLiepd+NVzvvhy2q6lpH4/KCkfqX 2dOxXSdSv+q5tzvPpJDxi8+vf1TpPhZMos8cO7aeWLjYThEHZzfdQa6hLg== X-Received: by 2002:a05:6a20:7f90:b0:263:3b40:46d4 with SMTP id adf61e73a8af0-2e7da45fb33mr24019431637.56.1759206092237; Mon, 29 Sep 2025 21:21:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHx560X+M9YrME/Z0Tz5cdZofYwihPyv09u2PRvoW9m2bU2A7m5dsWlm4DAGq94Sy2DFTIFhw== X-Received: by 2002:a05:6a20:7f90:b0:263:3b40:46d4 with SMTP id adf61e73a8af0-2e7da45fb33mr24019397637.56.1759206091784; Mon, 29 Sep 2025 21:21:31 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:27 +0530 Subject: [PATCH v15 18/26] 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: <20250930-propagate_tpm_error-v15-18-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=4432; i=armenon@redhat.com; h=from:subject:message-id; bh=h5tW37GzpnqCtqAOXaHs7SIfLXHIjIq7utdpfmqZYuI=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKEE2p2M/dJYGbm48bPfpz9d3RezW5i3t3xn+R3Ps6 VpTKJ7VUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCLhmYwMB/++idh21ZIrtUx4 Z7lg8ZG2J4qno57Pf6OlHrn2YZpfPyPD98XPD853/+pz4tK03vT3emunT3HkOP5girD79OoJH69 +ZAQA 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206335717116601 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 f7947160fd5af351a09c0ae75879e80710df4c7e..b80da04b47ff08b4cb6aed1a57c= 703acaf3eb9ac 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 Fri Nov 14 23:28:51 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=1759206516; cv=none; d=zohomail.com; s=zohoarc; b=kf7xezDykOJ5ovcEa/EdwDN/Lk/PAOUcTisbuPla5o2raZ4J/7alFl/NGdFgF0hZLAz0NDxetpa3JCJ8Zny1dAeKewrRq6bw7iEBcIxsuyhyMQlbwPALEB9i9QwxGkU8+XzUOkpT1V++EJS0mnA1lbWx+45TAdb/xrywWxZ0MHg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206516; 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=Nt2BdcjCfw2C3SywznVrdvSqpi6ZfH0CwzvWi2Q/H10=; b=luhqRVh20H9asl/EICJVubAtJdZeXLVW5vcX3lBrqMVo6Y8kh07NFqYhaEzLwrtAxPXWZ3gyIxbS7m6ooyir/N9z2+1rWON/ZkMIi7XlnPkzYqh/MJi3bqB/C94AXqIoRyc1WxCEP+xhn73wUxSMtZ23QNjqGCnGsFVr/y4iDDg= 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 1759206516078902.0270643982714; Mon, 29 Sep 2025 21:28:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rtr-0008Sf-4X; Tue, 30 Sep 2025 00:23:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3RsJ-00061C-QG for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:05 -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 1v3Rs9-0003Bt-F6 for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:02 -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-628-G0A-0eLcN3OBW8X0oWnOwA-1; Tue, 30 Sep 2025 00:21:44 -0400 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-32ec69d22b2so5079765a91.1 for ; Mon, 29 Sep 2025 21:21:44 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.21.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:21:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206106; 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=Nt2BdcjCfw2C3SywznVrdvSqpi6ZfH0CwzvWi2Q/H10=; b=QFrcwPQQDlavoMF429ul9SApMWuRX3gQ6X1MeI4sUmWECkxvsB1MWhPWuipCUM7DUGaXct 9oSdiflZgx43sY1zt6JCogYAygtDczHGRxefPd3TNcIEKhB9O3XdyYhadGl0OEpmRwnoTt 9V21ko2At4DxSUAYnOHcY6pRy1cCojw= X-MC-Unique: G0A-0eLcN3OBW8X0oWnOwA-1 X-Mimecast-MFC-AGG-ID: G0A-0eLcN3OBW8X0oWnOwA_1759206103 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206102; x=1759810902; 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=Nt2BdcjCfw2C3SywznVrdvSqpi6ZfH0CwzvWi2Q/H10=; b=Prra4IC6w/qHTH9/jqNXCxl5Vit4+uUS4EJAhgo8ZNbJzj7Fd04vsVnG65hLeLsNrd HkdoZAiLmbVv+Dd3l6RYm5tDFUMN89cEdM4zq6GWE3iLVRjGGY3MIppqkYIQwpbbA0uy k9YTph4agLFh0ZMx6Nk8tpnvLwLBft9xNn80xstFTstV8Bdb7P0W3iqfjvOoPw9vKDxF yWbQqUWStctMGaudZrALjPFtbq3OdzIrPUlYmKTzsKCvqzfcJ5XhRNaD5R8SwQfE9dEV 6x8t4yfM1Sg9WoXv6kon4IweBqJmR/qPT5k5lsnCGbU3+TwecO+69QEHSsFvZidUMM1R yJbQ== X-Gm-Message-State: AOJu0YzKEe3xh24/QeslNBm+L751ciVmkDrQfJaRbrWi6UjWud6c6++V 6H5PB977/ywmrpORUAnXIJ/v1Zsn++pXx00TTXcr2wdqL0HPBegBt2XJQHDLUL9J17VlDo+sv/q wGrEPu9Wl4pAZpegCE0cxiE3WqDVbjp5guFqMi1UIsHBVdjGc3kxLfIcd X-Gm-Gg: ASbGncvN4tHq2OkdUvNshGTfki92fhsuo9ypl2E9ztqHfBBC3YYOXJfEvFV2vUOgBrH JUVuRvENP35oQZlTvapatV9CiuICmEVGYi7ywgy0O6xmIQKGbJi8PhD0tmVDv8THh/VNIPA/YXK L3G4/18KkJ2QDI9C9PTrbPhvffpQ4bRkL4zhx9mBGxpgLqg2jDdS3BmCO/eHpeWnwBNpU3PFVro c+e3XQzq9PsPxRXuBKxI/cVM+PWBVjaNeZU9pxNrneuJTR6dHQSA32AioCPIAtJJ1gFGjj2AH2j QMJ71m/IDrhmrPvKNyjCA3JIQq94y9NFVvvijdKAVVC65Cb038EWlh3Wfw== X-Received: by 2002:a17:90b:33d2:b0:330:9c0b:5494 with SMTP id 98e67ed59e1d1-3342a2992cfmr19981641a91.22.1759206101675; Mon, 29 Sep 2025 21:21:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE7GdRMSHqdEqMK/fZHh7igzuyFGpe3tNAm5kAEqwInUMCT0Xn8hyl81qdC2vxPkOlCgjUe9Q== X-Received: by 2002:a17:90b:33d2:b0:330:9c0b:5494 with SMTP id 98e67ed59e1d1-3342a2992cfmr19981621a91.22.1759206101335; Mon, 29 Sep 2025 21:21:41 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:28 +0530 Subject: [PATCH v15 19/26] 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: <20250930-propagate_tpm_error-v15-19-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=2748; i=armenon@redhat.com; h=from:subject:message-id; bh=eQZYnlZRcR0SBqpqymYhsTca0TVM2HZLHtbTROMUgkI=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKEGvqF2555fMcTVkOpw8/7+8xPF3DRNspMRuWqzz0 FnwJ1y0o5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwEQqExkZPk89qfDftStlfdrX nwtZBcsOdWXPnNBTqWxjo94zd3fadEaGlxWGAmuVyp4vdw3tO9p/RtJ9hebK6vsy+XNtb3Ud9+z mBAA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_SAFE_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: 1759206517771116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 b80da04b47ff08b4cb6aed1a57c703acaf3eb9ac..2e8776768fcc7d139b9f06fff92= 85673166a8951 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 Fri Nov 14 23:28:51 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=1759206330; cv=none; d=zohomail.com; s=zohoarc; b=VQQjiY4HHeieJIuF71KwgB++izFOGnn0eQo5QR1TvNOtpqY5g/cnTAlDHYR+amdUwPo0EQOAKv9a6D1VISCaFyFRbon9wTuVt+Q2a7WuK9KFY/qnbe5C4VOO8mam4BdJfo6/d2WTvy9tVZd/euX8eJ0y1xmX1uoyvZASEyytKUI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206330; 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=9gc7wzZUyIJXyoHgHGeLqeL6vT8K0cbzJspgkY8Cs98=; b=hBqx+lm0AyMl4MjRg3nLXdJy/QUu9OGiBkAx5piboZMnCQB5Cb1K9Hh3HS4be9f32uSfkKL5FVfHygAnw7LQ4a6to4D5nTg0iWjGT8J9vrnoJts+LFBtg9rP3yAADzuSW5dqgbSVkZFIkEM1oRrNrSKpdgXDaXJb2sj3t9StoPM= 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 1759206330161242.51765321953496; Mon, 29 Sep 2025 21:25:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RuN-0000H8-0M; Tue, 30 Sep 2025 00:24: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 1v3RsO-00066O-8L for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3RsE-0003Fy-NY for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:07 -0400 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-15-Pr8oAipLP-O6LcYsU8oadw-1; Tue, 30 Sep 2025 00:21:52 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b5527f0d39bso7639956a12.2 for ; Mon, 29 Sep 2025 21:21:52 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.21.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:21:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206115; 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=9gc7wzZUyIJXyoHgHGeLqeL6vT8K0cbzJspgkY8Cs98=; b=f1eSHCx11gLkhewCejHjRC3hoAejz76kLvWeGWluNuSZJCEjgdaVr7bweaFV+8I9DYN3vN VMlj3rqFYnxseZlmI11Z6E8v1kH1prZyZGv2zJjycJdq1IabMkI62kntd6gUdQ4oJ6BTjp fPhtiK5awK9E1wcYfb5NG/hUfNkNudI= X-MC-Unique: Pr8oAipLP-O6LcYsU8oadw-1 X-Mimecast-MFC-AGG-ID: Pr8oAipLP-O6LcYsU8oadw_1759206112 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206111; x=1759810911; 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=9gc7wzZUyIJXyoHgHGeLqeL6vT8K0cbzJspgkY8Cs98=; b=mywd/B657IjZ0xjxtL6FBDnznoVDgHvWiLu+WOhCkTcxAJ9JQSrHDOOxIkdQByezLK hKHjhWvTIkgzZc2O4K2DFW4kqW7GqirhaebT6vEiTEgcwpj9ztoJBtomctUPY607sjZ1 waq/idmcnbwrqO2ccT/VDxN+ElxO4QzORRHIXBd8O6B9p8QdETOo/OtWHRzJKNS5yZCj Dx1w6KAFMbYx4Yf0wb42KzcfsHpoFnnjWj994PqWwkRmLeTJAE0PS8m7/i3HSWD1981n 5WXf0tIMwdtGcHlgtLMMpG96sUXMGIDVc5GGPSxzHzOInvIdCYURZ1E5I9lPOx3I9Hsm LkUA== X-Gm-Message-State: AOJu0YzUeBYxaxM7oCbN9gD8UKsUQ7xTYx3NwypxvTfsilImmFKP6SM3 1d0rnYv91/RVaHTKdNblcf9whtUtDssACNHHI00/BQSkf+8vntKcuaafxexg6yr5eFEsEMVJ6yC vY/dWHtuNtX+UImjMPPnv4EcpoKz2J4zVj6VmxrN9OADpYr+BXl3d5GOV X-Gm-Gg: ASbGncthXfrdH6SOzdmZODq0Ichs61bhFaGRYIpG8iImHqAf6ToXT9I7ApfoK0rwPEO EYyG4/r4Atft1BTW/y/gdQKrKr2LlYnFjpFWmkEZ1WG27a0JdR4YGr0sBpRdhH6zBpw7GyqKaU9 JdpIkqfXCYp8gIcc43dhOPZQznHvdlbS2mf4btEz+j9nBVpduVv5Ko0vrOnq8lljS/z+bAawdqG 1lhIIxsD3LcEYfUGx4I+Uwl/aq8RA8lB+G2KiU8Vx5OQbfY73duMEqhaV86fCsHDOuJd9Q8Y09Y GnOtvGnLtV1r+40tKKXqCEuocDc4kULMACUbaari90MsAEgH5Ia5bfbxfA== X-Received: by 2002:a05:6a21:6daa:b0:245:fb85:ef69 with SMTP id adf61e73a8af0-2e7d82c3279mr23825791637.40.1759206111686; Mon, 29 Sep 2025 21:21:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEMk7W4Q6Ln+EuBwkSEVrVfqYwHwVT8JJ4QmdtCFrAm2/+TypgYuSlqlv3DgQ/YnVdYdr50Bw== X-Received: by 2002:a05:6a21:6daa:b0:245:fb85:ef69 with SMTP id adf61e73a8af0-2e7d82c3279mr23825767637.40.1759206111331; Mon, 29 Sep 2025 21:21:51 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:29 +0530 Subject: [PATCH v15 20/26] 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: <20250930-propagate_tpm_error-v15-20-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=1743; i=armenon@redhat.com; h=from:subject:message-id; bh=5O+CXW2cDOnC8HtDO4/gLXusDTQkF/UkXMU+X+jO3fg=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKMEjr7ULBNVYZXN2Ps3+w9pvk7DAVmWKZ+7bY6yVq zsNOxd1lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmMjNSob/Gd1VN1+5SBdOP2Uk UO65JdB2+6Ujyi7hswPtahiEW2yKGP6nmWh1MP94eXz2+pC4CtOSq4GrwioD+d/KHpxaplBiZ8c NAA== 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206331646116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 Fri Nov 14 23:28:51 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=1759206409; cv=none; d=zohomail.com; s=zohoarc; b=L+aJSW4iJsIImLio62cNU1UuuTLyaNXRkF2dxlOOQrq8lKP6jbuTAZJYo29sQhrEnZfdeyimzFcFJUU4Y/pkNIfElnJkyz3SAUPfKpNpotAl7geOkytsqNydTLUHhE5KwQR68VghoL2uiF9v4KMRaHr7Oh3xpeXK2ubPxF1cn58= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206409; 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=RZFgIyu58WfEQqW2h42CjJC1Xq1s41kauJH5QgHpv0Q=; b=oGQPICmhnQmdZlBiUHNKbJf58bk5ybdfZXdJKT3ClHD4FzWJiX0NTTkBJVWLsiBDnPGbT9gCOAMCt1+h7bFlGJzrMTculULRR0ZFeYEa62iE+g+cDcaTfIKjYKQJP6yahA6GN7cXBQz4OrD0/u3+6O/4hspjQtHz5LjXUta440Y= 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 1759206409564129.19466681498568; Mon, 29 Sep 2025 21:26:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RtV-0007Ed-TH; Tue, 30 Sep 2025 00:23:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rse-0006Hm-OW for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:28 -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 1v3RsV-0003Je-3R for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:23 -0400 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-34-qpLkNfgjNXu9To_-Kel7BA-1; Tue, 30 Sep 2025 00:22:04 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b55397041dbso7280249a12.2 for ; Mon, 29 Sep 2025 21:22:04 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.21.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:22:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206130; 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=RZFgIyu58WfEQqW2h42CjJC1Xq1s41kauJH5QgHpv0Q=; b=GIwOdDzRVYIjOodWRxk6IIU0wp4dqmLB6hl0KT3m26rBL3a8+g0AxaG+gYDcYxZcTmQ8gy 04IofHfFLs/jjBI0NbnDOAbr+ma7WjpsbXUOBSiW/nX/5ggDrP+KWxSq3ElkZ7+R1DRcIz 79Qepc6GpD2Z6/q0jqVIzq8ZWl/jce4= X-MC-Unique: qpLkNfgjNXu9To_-Kel7BA-1 X-Mimecast-MFC-AGG-ID: qpLkNfgjNXu9To_-Kel7BA_1759206123 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206121; x=1759810921; 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=RZFgIyu58WfEQqW2h42CjJC1Xq1s41kauJH5QgHpv0Q=; b=xBLR0EcPKLFlK8dvrfrJ5JvBgSCqSmHS9Ht0NRTqjVcKdJaGaoWMffYJC8Aw2lCOlG CMxOdcJly3qTTphcfngDGLN9XADOAAgUYp5G74PLZpi4Jn+ZLiRpAtolWlqA2nR7AbEn M6RwtqHIxdEUbAusAQmvXvlxIAx20oPTyfAs4EHR55h/JS3R0iyOrS8I6o2L3jLqVfeE e2Wp0aTZItfMJk3Qje3tBGWFHL4WGAQE8yCoOLuq2jvNX9s6TYGapc5abAKSzM8BLIGn 64ZjNKCJJCV5PhbLMyP0O69E5ZUdzyGLdh1kyS2ZWdV793m9gPBF21kCftpWWL7zTVwg +kNg== X-Gm-Message-State: AOJu0YxKQJrc2rNULZXTWKYVQ5B1upUmS1Zga+BHIlVLog0lhaQemlqA mA2gjABMsCw3NMvkdJUrJejX3k25oWibzvcPK3TxNXiH1Piop8FP/G2pc1XZHDQQNRA1eePNwN3 C4bx7H5IjUwLsBW9Aa/hKDDxVRl8ADOMBEgo/m+0GxhfkJKZ0nxQXuhqI X-Gm-Gg: ASbGncvGi36LYRxS+Swq2m8sZwKQK53MdadYY74IEIVbZTpuEyGSf+/UNlMCuOyEo5z iitGM57TN+POYfGE5ICnubEENkbOMuklJLFv15mpvKi8fIFNsx0z3b2Zayk3ftXK0zWOQBo5AZL tGXTqKKpBBarHbqa0udyUhpBOpc0jcr2kkwlpMP4MhMdd8uDpj+vLlOljy3L8UDswh0bLierFw5 wT7tQjAhrGff762E2gtXJvGYSkmlCb49gv1FnxYGkVl55fzmWodzrhkUd1hzR9XcWTYODkqOPn+ 0yR7vO5FJVXR0zNY7h7Mh5zQmhdJqbi1IM6aBQ1beUIeJHS8y6qhW6D8bw== X-Received: by 2002:a05:6a20:7f99:b0:2d3:8d14:7fc5 with SMTP id adf61e73a8af0-2e7c508ae74mr21676382637.18.1759206121120; Mon, 29 Sep 2025 21:22:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEgJMn/39BgbCYxF3yX8QyqA1aiaDtENLzgxUs4oXNmt23AM87zrc8u96jY1jbfPwwVYc6sLQ== X-Received: by 2002:a05:6a20:7f99:b0:2d3:8d14:7fc5 with SMTP id adf61e73a8af0-2e7c508ae74mr21676331637.18.1759206120693; Mon, 29 Sep 2025 21:22:00 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:30 +0530 Subject: [PATCH v15 21/26] 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: <20250930-propagate_tpm_error-v15-21-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=6103; i=armenon@redhat.com; h=from:subject:message-id; bh=zte8ixeDasOZfSQPpJa8vSpfgjHFiiT4vMZ76A6Wkqc=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKCGN9boNG95P2LQ6eqHxwqpdnBu+8trxazNf4CsLV LsmklndUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCKRrowMT6bptpxUXh2wwzbX JDRaRb4nonSJlfnaMxvntbWls98MYviftn/zz6jftV9DXjqH1K3vTt1YxZlqZJmuEqfBpZnr/Ik 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206410752116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 ce17dcc1c0ab46a851cc841d9f397c87f5d43d16..2f55f2784b49c4f36e83c380cf9= c3b428016739c 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 2e8776768fcc7d139b9f06fff9285673166a8951..8937496d9f667f8f524f73bab80= dd7e711973a1c 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 Fri Nov 14 23:28:51 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=1759206406; cv=none; d=zohomail.com; s=zohoarc; b=AHnv7yhacDF8Dtneya2ifkd6EHfG6Q6N+IXLPoWMn0L+uc6AMYUZUj0z6ifJRPFvj94k3giz5+N4OxSt7TOKOEVgPg7WE1SznX3NTaLcfP/FVNiXwPLMzsPH590pjIlvLjtdlN3d/TweG8q2Lsm2ScX5xhJqv8PMYpGEmTfnbwM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206406; 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=sSbMiD0S6XANubdSaRE+CcxdWMc363o6uw1yalfL3f8=; b=JyQe2zu9i1kutXFg594DO+24xsEStXPAj/7TqLlTnQFK+hDS+FXhA78VpubdB4jRoRc6LPtDiStMIufab2G0liLSgzThF6OhEtHoHiHeV3RI5CLK0AgenazYmQtOYG3Akc0oPg8fN/auLBP6cfcn9vQxkTjOUWJvFU53Fnk8L4c= 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 175920640655194.91890115566093; Mon, 29 Sep 2025 21:26:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3RtN-00070Q-EO; Tue, 30 Sep 2025 00:23:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rsf-0006IP-E9 for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:28 -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 1v3RsW-0003K4-2u for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:25 -0400 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-328-zixeMml6PJiEkm7m8pfxjA-1; Tue, 30 Sep 2025 00:22:10 -0400 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-780fdbbdd20so5798174b3a.1 for ; Mon, 29 Sep 2025 21:22:10 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.22.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:22:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206133; 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=sSbMiD0S6XANubdSaRE+CcxdWMc363o6uw1yalfL3f8=; b=SdqH2GHjLoW2Pp9VYq4gyK6VRRaXWBpQLIsMBV6356iqBdH/0B14xbNx57Uyg7TdBMunmy cFeIHO1JajiYqFWWkj1S8uu8ddRLdixkt5DU5d6LGy+QgoI7Nb9OcYonSD9PQ8Cz8SKc9y zXbWd03/iWAQSDNym9bRASNEcODsktI= X-MC-Unique: zixeMml6PJiEkm7m8pfxjA-1 X-Mimecast-MFC-AGG-ID: zixeMml6PJiEkm7m8pfxjA_1759206130 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206130; x=1759810930; 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=sSbMiD0S6XANubdSaRE+CcxdWMc363o6uw1yalfL3f8=; b=EozErRW4Yd2yCTHVvVfz9K+FxJGuVNHDQBiFP7jg5Vxv4M4SmiN9idpe+KxunXuuJy bhTmGeoezFVCRveuCcswK02JGiZCkdf3HVwm7sK6ekknAlKJMyssKSv2X7e/+gM0D5JH v1mJQRciSaXxc1CqOX/iRXPsPWTTXrGLcLMTUfQb1L13l8PLXOoyo03HUvdAQuk1xAbW swzBr1EDAjvAzp8zqmPRQAciItOyQojgSaORM1rKpKqOiHW/120T03rnuBdxV5JC8wrw mlWAULX6lc3IXIJF1tOd9c/vrmQ83MRJTSODXrf3yuPybmmk0O0Q3eW1MNYi0qhhpQpY I0pg== X-Gm-Message-State: AOJu0YzIv5Bzr5kB+mXVKdWRJs+pvwbrHZYumFWsIuDtvpHdzfnaXzx/ 4gphfNeanZDtgmqdqpNnZBMWnyl1SND4rLjFO5UuEqDExxPgTyt34hLtbnPklrVIhR7pSeNsVrR RnaLATIxg5vN41fAcSTa42uWWoYTMfYEXzGnOLZyfCwIUBq8pxI+Ia+5l X-Gm-Gg: ASbGncumPKqb/jpWOpf3/W+ciyf+hQtarHS1tjkKze7BWO1v5cXefVcChhFAIjo+LDv xRJJ0tucIFA3OvS10wntmkfvvaCvD8NJAJvQRy/Dlyvy8RegjGRWSSNvfm8ZntVDSIZzO0QZXL8 7HQu99YJHv3zqVUgs1JsmS+YXEg0UZ5YqJTk1GfKZQmWvrZdtbclgRcDLXYliIzY7Sfklgm50G+ UVxP4llYB6K7qMDd3+/bZiX5mOJFX0LRv6pJx1Tp3BMIqalCAOFZV2IgObD0z4/hdz3CfUOzYXZ XFa7q6UdpablNII92Cf4rBCzBjXNrCkItcvgVG9Cv9BeBteI3Xa3Bz2/jw== X-Received: by 2002:a05:6a21:6d89:b0:2d5:264c:e49d with SMTP id adf61e73a8af0-2e7bf47c0fbmr20132308637.11.1759206129778; Mon, 29 Sep 2025 21:22:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGeQqJXlQZo3Xz7swq1CiaKu4JakmJL3iYI84a4Ym80MT9ctRHN/M7FjYsTRZRDQEOlRxNfuQ== X-Received: by 2002:a05:6a21:6d89:b0:2d5:264c:e49d with SMTP id adf61e73a8af0-2e7bf47c0fbmr20132270637.11.1759206129375; Mon, 29 Sep 2025 21:22:09 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:31 +0530 Subject: [PATCH v15 22/26] 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: <20250930-propagate_tpm_error-v15-22-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=1850; i=armenon@redhat.com; h=from:subject:message-id; bh=BaBhVPmuOC8KBhh2+81w1uLDIxw24n1+NGBQJ8RFRwI=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKKHk2RNjfeeG3vrJFD/vU9L5nrCNx1wOGs6QiJ2xs 7BlhapTRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgImIrWX4H7Lm1Opu0/m3Pi3k eVKRc0Ox5OeDaa8OT3vw1qpBN/sd/zZGhs9HXC6/d73ex8sgZ7zsw5kow6qdj0QDTqzKmde0UJV 1MTsA 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: 1759206408598116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 8937496d9f667f8f524f73bab80dd7e711973a1c..34b7a28d38dcc4293457a87b34d= beaf538d89de9 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 Fri Nov 14 23:28:51 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=1759206494; cv=none; d=zohomail.com; s=zohoarc; b=XMqJqfVQdteqtix3GsPlWdzv00IC9Wqk5KOiwdQt/sllOVKHLgvYlC8M7nNdtGQm0LPAiyx56/ZDm7iOUZao5I2V/XhEnKrsWt5CxXcIf0ab+QdWtQ7xYOE9NPheKnL1WSfzbRqgqR5x3/1N3vlbKW0nd67SbMrBek4d29W4hyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206494; 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=GbiVX6XszpadqjSIp9BBp948crfLAqYRM0Ul9e9yYZ0=; b=dnI0B+rksGe5vt/6tBJaaWjTMlnAAJBr1E8uwzbwFaINPxwQLrvIg51eMsuwKBcdYcLXN4sSqNIqShhOhbIDYdisH+YqkINiyvoZFzrvW9LSH/inSFmQpszFpUhuXiDBCjijiP7gjgUwta70UfES23TmDvl60McessOikIlLO2U= 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 1759206494122240.41150552965973; Mon, 29 Sep 2025 21:28:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rti-0008KY-UC; Tue, 30 Sep 2025 00:23: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 1v3Rsq-0006bX-9j for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:37 -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 1v3Rsm-0003NX-0v for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:35 -0400 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-460-3ZQSR9k9PhS3umvZGDYXGA-1; Tue, 30 Sep 2025 00:22:20 -0400 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-78108268ea3so4001580b3a.1 for ; Mon, 29 Sep 2025 21:22:20 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.22.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:22:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206147; 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=GbiVX6XszpadqjSIp9BBp948crfLAqYRM0Ul9e9yYZ0=; b=NvXQsBYRrCWOuP+ZMY1VwGYYoSEhp98QpY8pIJSY/a3f4ojL2gp7gt5ec3gcBZMg84irGy PsUpAZhlXOG94gExgdE17z/LmptywX6D0V6rSF3YOFOf7rhWTJ9ErcFnlvgZWXa7N7lu7b If0JFwCdwgnyQghU1YRR5zbAHGoSFKw= X-MC-Unique: 3ZQSR9k9PhS3umvZGDYXGA-1 X-Mimecast-MFC-AGG-ID: 3ZQSR9k9PhS3umvZGDYXGA_1759206139 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206139; x=1759810939; 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=GbiVX6XszpadqjSIp9BBp948crfLAqYRM0Ul9e9yYZ0=; b=su1hGVAoqXATSieV+9G86Y5FefILRd3AgnwX2WYizeVEKJ+mAElBA6ifgfkHLE1JQf SgJqIB2LtkjK7ymHhlG7bJ6L4LbqLgxdhcRhvD92l2KR3MsipVsvoeqOzY8096zPzeQT 4KxceVaOy3rM8SGCO93AkmtwSy2G2lF0ojLI5oCrAH3kqTKuT59/H1lTssn8HLX8GO9j JMlw7p5HC8A/Rchz3/vyMpl/z7ij9kjYyl21h0FYBFkh701VBirzS4VjjbVtN4nUNah7 P9rnCsYVFFyKteZQvyUVvph6Gls5IDc/4srn0xE+RSly0KEyzQ3b2GRrrBXtDWPe7d+s 4j2g== X-Gm-Message-State: AOJu0YzDblZfEunTvuYSOIfu/ZpWTCO7/b6K1WGO0xtplGoBINTQis92 3Wo9a90pX0c7JxfLDAmWXc/b4+JummDu3PwRby4LjD99mP6M+elkB0himcRo6FZvYiDUsFNWVZT 7K5XwNd0kqV/ZI5nplKJKH/GSTSz9VGLBt2EoQCmNpgT9GkqwdAdt7W39 X-Gm-Gg: ASbGncv25+i48/BYmm1DjFA7Mu9wVxqjqFp+NuuTyXikC7U5687cL2cEppxYu9/q45k 9wUOfU3gckCG9FnoRpopFD4A4BZrNMSGyodA6gNeBOwpR15vgUUcEYB7Ag2LECzzBq453RXiqtd 6WCm/55ro4Tyg0xFjZ5+FYcU9MXITgfwGIO56X0LW09pk9kUGxILh5f2czAiaD3P/JGD2I7reWk xFYHE3IUW130YWHO9xRqxRIcBWE2hBOJ8c2QPC3LMgU4ukxZ5chd6M+WqYHOXBdToX9Aq6ZOT/E PA3KsjBZG+i7z/FDKDy4eECrKNDIEWVRMluE6vIzIGZFGgjBfodbClXCGQ== X-Received: by 2002:a05:6a21:648a:b0:2c0:7991:c00a with SMTP id adf61e73a8af0-317647b77a2mr3963900637.10.1759206139478; Mon, 29 Sep 2025 21:22:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEz77Gl5a5Q13gKWRJyBUfPLQd4uhec1Pwjs9UCtYkTtrR0pV11I8MNPTsXAEWSYsfB9G0Qeg== X-Received: by 2002:a05:6a21:648a:b0:2c0:7991:c00a with SMTP id adf61e73a8af0-317647b77a2mr3963873637.10.1759206139109; Mon, 29 Sep 2025 21:22:19 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:32 +0530 Subject: [PATCH v15 23/26] 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: <20250930-propagate_tpm_error-v15-23-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=2200; i=armenon@redhat.com; h=from:subject:message-id; bh=RtlEdtEskFUQ6B62eU0w5UESKT2iGafsHUF2NecJgfo=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKKFy26Ua4Vy8V/ZKpVdfXrt1VYKIe4xG3a2F+v0RX JwHZ1Z0lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmMhrLYZ/mm+fXg99v/hyxtS2 OOMFu6XNOHu8pS9+bGS/beZTunPqHob/rg8OyOtk79kfyxri8Mt4Ve+B3QaHlzSJcpw7qutzNc+ dFwA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206495582116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 34b7a28d38dcc4293457a87b34dbeaf538d89de9..996673b679801de418fcd20966c= 906b50da4bb23 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, &error_fatal); =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 Fri Nov 14 23:28:51 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=1759206316; cv=none; d=zohomail.com; s=zohoarc; b=DxBlm5xiH8yIzUlIG0qBSPSMltCpU5LEq8AIqspumHan4hFowfDifZApK08vmHnlAvCf8zPO1GQQ9Fgsgokb3dqJZYZj0PBznO2SB3fT/sXKhALXTaxadNpJ8OLDihJ/3NAG0fy2PMisT/Zz4ygBYC+b+T1u1rZmK5KnTTnWfKI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206316; 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=jKgN00BOM4CIzn27Kh1Kw49qmV8yxcByQbUVN3NnAY4=; b=ZPWDHLTlbcazd0L9GuIoKrfeodmthB/hXCAzrDOhf42385GcoT8D56FftbyM09obJtLyl9gKA3pK0JlCVSeWtT0pXhuBm+krlhOvx/cGLvIceTQGlKLtpsVDODHGmACIe0XsBylKpdxdp6ckwCS1qMCh3r2ieGx1kSYYAQghDwA= 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 1759206316665306.1126782547117; Mon, 29 Sep 2025 21:25:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rtf-000868-EK; Tue, 30 Sep 2025 00:23:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rt4-0006lc-Nb for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:53 -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 1v3Rst-0003Pl-QV for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:49 -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-170-C_6Och6_OWyYKa3IaN7DEw-1; Tue, 30 Sep 2025 00:22:30 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-32ecab3865dso7780911a91.1 for ; Mon, 29 Sep 2025 21:22:29 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.22.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:22:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206155; 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=jKgN00BOM4CIzn27Kh1Kw49qmV8yxcByQbUVN3NnAY4=; b=azYrj9uBCebg3qHvmWuu3HTt9rXd2g7pItSrmS7impcV7I39vSd9064Gf+4aCFp+ICOYdE HjyLJFLUZhNXPxD/LTF+ENEKTopXazx5cPn7ebzhJ9kOa5EGca40ldQUuBYxl+Kha3W/hw Ka8VWLT5NwKzHKn2430xAojthruD+a0= X-MC-Unique: C_6Och6_OWyYKa3IaN7DEw-1 X-Mimecast-MFC-AGG-ID: C_6Och6_OWyYKa3IaN7DEw_1759206149 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206149; x=1759810949; 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=jKgN00BOM4CIzn27Kh1Kw49qmV8yxcByQbUVN3NnAY4=; b=IR40s9FQmiRLhRLtFA8ESTZZfVoe/isBT6H5pibGWm6wCEmkAofg/bBWirQxLwLHL7 R6XFAYmA0gPGrm6rSdPEUma3egVAmSTM6uw+6a19dnmn6gQY3jKQCCQQuxCpdpQH7Vn8 tuAUHmxKqdpVkXWG22xv9TaVyge0pDcQJSwq7RCk/NzPqXUKc7Blm1i22wms2f4iJNOI yXj7cP02Q1mZWo0NuE1rx66E1jESnhYgIk2uzPMkxbkg8lhVRWy8xPiFAjiQqdN3dJjz qXpMPPp6859ds8g0qxRnHkBmRfbgJxh89xFuAaPyyxKLbBgDegbQyJrrxpSUnSuidcDg o+3g== X-Gm-Message-State: AOJu0YxaoEHJCmfCB39hCy0+3gaKIPJP0S1dKnN/VQBg66Kd271+Yz2X gb1RfIzeIvSpMdlvpor9bj9fVNsU01/EJxa4tNB6W9PNzJUbWXGbOn6g8mMybvdV48PJ2Em7iEe dyDJnIUdymkFhkVEXPUNs62vPUwjawyltYqnWvMkuLecO5WlUN7Bu54yv X-Gm-Gg: ASbGnctB0AUS8n9PMhMb1sbk84OKisZkF0K72QfQzxaEfzWEopEO5KAwQ58l/dRqt0Y K7debjNN8lwqMBaeMF001d30nBVqGrVmin8qMseLJTuDcAryTlbHg6w0sbx0qWkQG8orbP7srY0 bjMDHQzv6iCmC0OOaj78NyOXGOmLg9tPl79Z664HeiucLhptuh4r+ySvd0fmRMyNGiM/zbva794 9zrwW62NwIIVRESUpIQFsvfVTRP/4UMcOhQ06hL1svwl3lmb3jJPealwhwudnTWMbXhp6Qa2WT2 W2+ApDEXtRbyHyG2Wbqg1I8xAAu53yGiUoIlZ5pQ7izkp6hJgNJhVlrY9A== X-Received: by 2002:a17:90b:3b83:b0:338:36ee:8a99 with SMTP id 98e67ed59e1d1-33836ee8c67mr4448038a91.11.1759206148805; Mon, 29 Sep 2025 21:22:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHeppcf4+CETWUol/d24trzq0iUC5gHlVPhfBXuWLmwcQkAKL1IFhIu7EW2QRDEYrhEWqPWyg== X-Received: by 2002:a17:90b:3b83:b0:338:36ee:8a99 with SMTP id 98e67ed59e1d1-33836ee8c67mr4448012a91.11.1759206148320; Mon, 29 Sep 2025 21:22:28 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:33 +0530 Subject: [PATCH v15 24/26] 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: <20250930-propagate_tpm_error-v15-24-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=18123; i=armenon@redhat.com; h=from:subject:message-id; bh=QQKAJV58nTmQYjn9ivAoLJFdSOlednofHVvJlGG9OuQ=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKKFnG4U59e3dmx4nbLndyfaFzalk2pH3Vz6tdLvsf uzZ7r8VHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACbi9pbhn71NrfCURTxX5HvV 5nOetZcv8NpqxKZiO9vywsF1zovFTjEybFzaGp9Z97979hKfytAn6us/tUk9u5CZcYpl56X5hVf 7OAA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 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: 1759206317724116600 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 17715ca1b34c9c9e777be9b86cfc5405087df7fd..5e2c3c6fc2d33444c2f826620f2= e5cdba604cca8 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -926,7 +926,7 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) * This makes us compatible with old devices * which never set or clear this bit. */ s->config[PCI_STATUS] &=3D ~PCI_STATUS_INTERRUPT; - vmstate_save_state(f, &vmstate_pci_device, s, NULL); + vmstate_save_state(f, &vmstate_pci_device, s, NULL, &error_fatal); /* Restore the interrupt status bit. */ pci_update_irq_status(s); } diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index 6a9641a03d5d3a38a4de7ceb9deffc0cc303bcff..4cb1ced001ae241c53c503ebfd7= c90e336799c37 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1130,7 +1130,7 @@ static int virtio_ccw_load_queue(DeviceState *d, int = n, QEMUFile *f) static void virtio_ccw_save_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL); + vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL, &error_fatal= ); } =20 static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index da173f48676395cc02bd00cb3efa248afed4581b..f0a7dd2b882a13deec4a4c6d2eb= 4aae6d2fdbeb9 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -630,7 +630,7 @@ static void vscsi_save_request(QEMUFile *f, SCSIRequest= *sreq) vscsi_req *req =3D sreq->hba_private; assert(req->active); =20 - vmstate_save_state(f, &vmstate_spapr_vscsi_req, req, NULL); + vmstate_save_state(f, &vmstate_spapr_vscsi_req, req, NULL, &error_fata= l); =20 trace_spapr_vscsi_save_request(req->qtag, req->cur_desc_num, req->cur_desc_offset); diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index a5df4685d4981e84a0122693c228a3e2350b487a..06b06afc2b43d34d3a78ab874e3= 735eef91f529f 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2821,8 +2821,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 996673b679801de418fcd20966c906b50da4bb23..7b35ec4dd007c6ed494201be852= 8a9e4f1c13843 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 Fri Nov 14 23:28:51 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=1759206563; cv=none; d=zohomail.com; s=zohoarc; b=k90aFtw1iu+FCQ9d362IUEn5vVi2XQbeC55XXOSJLHHjM7kgrV5IflN2LuoRf4cFyn8JimYhqTx7LatayEXmKX4sEvA3/XBGzWhoftXwfQD0TfWZ3RPo8ikSmHAzbqLnUAxY+KL0XDK0Rbr8mr3Yln7WTy3QnlBtYvQ7xBRafww= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206563; 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=QHQ9Hf2H7B9XLwvZ0OhggKTyfRMVlgZRVuwXGSGs4Jg=; b=SHYuAPPrp8g08fonpgq0SMMp4zNzffLstkKqcpcAklf52kyU2nCf2V6CADAOLZiyVC0SLWNGFCkq9Tkqdyg/7trBiu2Q4SRXmFWgYk2oGxnyhj7qIskLyDeZfmgANLnNMRJFRuvt3TA3kdOvbHTYMVpzj168qnlcJUji6kGtRUI= 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 1759206563707614.5105065652574; Mon, 29 Sep 2025 21:29:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Rtj-0008Kg-2q; Tue, 30 Sep 2025 00:23:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rt7-0006nx-Eo for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3Rt0-0003Rk-1h for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:22:52 -0400 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-586-fZVMlOu8PROD1XPygAuRYw-1; Tue, 30 Sep 2025 00:22:40 -0400 Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-7810912fc31so4704596b3a.3 for ; Mon, 29 Sep 2025 21:22:39 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.22.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:22:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206162; 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=QHQ9Hf2H7B9XLwvZ0OhggKTyfRMVlgZRVuwXGSGs4Jg=; b=bF+qbziTLQg6wZk33bx8X8YJay36tkIkKxVoDnrHfXp1EJUan0No8qZrWCZwWV69zmPJ5g 4hbYx1hGXvw5ELUDc/o4rZcXMRoe5ttKbFQwA4jZRVAWYT795JKkAgQ22OvsfPuX6lzY8X BFf5kv6KYrjrRbATDZlXcfHA9dtAJkc= X-MC-Unique: fZVMlOu8PROD1XPygAuRYw-1 X-Mimecast-MFC-AGG-ID: fZVMlOu8PROD1XPygAuRYw_1759206159 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206159; x=1759810959; 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=QHQ9Hf2H7B9XLwvZ0OhggKTyfRMVlgZRVuwXGSGs4Jg=; b=o0e3J4IEjJxriiJ7rP3VYU2xdagSNpRyR2WvI5aBGCxq/Xnf6c+Yi3jpFc74xYfrsR W4Y+sdTjF8vesWEvFkAwrGpKxdBBWqET1mAku13zJMh2bGOO9sUAXlA0G966hTdZeFJd nbKkrYqpCGteF2nwV1f8JYAuNxxBWenlGp+roMYwm73DEMr+R9bHrr8h6KYrcBnGJsFn uNqZHbTotN4uDl6nMfLR4SP0+RiiZ70Hukn0rHiuiTLdkEhV9WgCXVqJqx6rsDRmeY3d JiLjLMI/EuZIKQEV3h9ZF1n5QbQohZwN/247ffTqDgpVReI3Fj3Qx1O+gLSTu5jeFu2f 4Ang== X-Gm-Message-State: AOJu0YzTAGXup4S+mMy5lujm0SqP/sfwnW6hxU6eUHnfiM68Qxbva1wF SEBoriDJ19jQ1N3QIXQ3j7FstuFp6eWCQj6zPx8BsTK4uBX3ztFEjmN0KlAbZZ5F109lwgKcyKf mmI+r/zXRYVhcA2Nbgm+930LFnCBEBBuevYBz+RZQW7GnU960YzrGp0kH X-Gm-Gg: ASbGncvNXHbBcZeuUKmPi4JnoyFvNQbUAZdbr9YIWjl8X8o6YR4lQQDISbligxRf2H9 8ehm2ZsjaNaLxnIFyt7dyIMPrJ0TpZftQBUtCAZfuzxk+s4TEE/NK5yM95noPd4a2tulviUxqYM /nBmtF+YP/i3ZD3Qh+exB3WJa0OS3clVAMWBccqdp3hh774N2z6oKm6EOWNvRQ1rAzKzKfe0nst +4lSvsReX11YBaOGRd9OT9bvPjZAeoIM6TMRWe2RH7sTD6qXMMJHcyFImNuzIp+DYYfMstDGB/v G8eN39V0fT+2p27ejExASkZYZncqaW/xQufcnujCuiPg7Q/OHat2+jCGKg== X-Received: by 2002:a05:6a20:7fa9:b0:243:d1bd:fbc9 with SMTP id adf61e73a8af0-2e7da8335a2mr23445704637.56.1759206158866; Mon, 29 Sep 2025 21:22:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG5WAfluMkxP/CFwQolWNdfJpp7cvQNP8Nb8/qGW7mUv07lrWn6ib6r8evej54EuQa4/UJDVA== X-Received: by 2002:a05:6a20:7fa9:b0:243:d1bd:fbc9 with SMTP id adf61e73a8af0-2e7da8335a2mr23445665637.56.1759206158287; Mon, 29 Sep 2025 21:22:38 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:34 +0530 Subject: [PATCH v15 25/26] 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: <20250930-propagate_tpm_error-v15-25-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=7044; i=armenon@redhat.com; h=from:subject:message-id; bh=2MxA/qLu8PcUJ62c/SUc697dwZyTWjTvVl1gxvQmbLI=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKKHTYStCN2lJ3f0j3HbgxbPIo0WrrNt9Atit+98E8 Bfea1fpKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJHZnxgZdiQXFBdvWKa66dgG 6R4x/ovGB90F5xkcyHbK9cw2j78/j+F/zWK71ROd5mhKHvgsrX297OoSi/rZsza0LPfQ0z+/JLq WFQA= 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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: 1759206564592116600 - 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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 6493c1d2bca48a2fa34d92f6c0979c215c56b8d5..1afe7b9689bdf61b4da9df4223d= d5143ece53523 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 5fe9bbf39058d0cf97c1adab54cc516dbe8dc32a..5567fd78d0404f5fa8bfc1c9887= d63de0cf3b22c 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); int (*post_save)(void *opaque); bool (*needed)(void *opaque); bool (*dev_unplug_pending)(void *opaque); diff --git a/migration/vmstate.c b/migration/vmstate.c index ad8e5b71ae2ce78e66a6426602e5c20405ec57c0..81eadde553dd21a788cf1b06df9= 025a6097742d5 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 Fri Nov 14 23:28:51 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=1759206402; cv=none; d=zohomail.com; s=zohoarc; b=KbL2IENdWZvGTg3QXpboqJBGqU6F8EhiVbvbjCiJoaNZPdwYuNtdZQZbmwgEzByrjHBN8yMeRz+fLnkBCcFfBvCUNhLAVKkBGh/nBDbVYtMosaw8pb+Hs1yt8Pe5MtqbT7///nUj2Go48JJtj5IZyByN+xtePQCLJf7dNB/FFlc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759206402; 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=AwtHdo40Ubbz5T9WQXMHuDDStDH3aq6sTqis/zRfQds=; b=a8h++5u0ySgO3dmK27lC87wBeeamKIsltvKM8ytjZEzo+vVcxzYUFKHENKd3D9FfFIwY/wjKG1xOBuXZdLWtS67vCExz8abf+RUD+jZqhC43qOOdVWOvBwWtieHgR72P3OjuL9JGVdjaN3XG1FyCr8m4Dqg/HgqHfTKQIpAEaco= 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 1759206402575212.9548018034452; Mon, 29 Sep 2025 21:26:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Ruw-0001rr-FX; Tue, 30 Sep 2025 00:24:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v3RtF-0006vS-K6 for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:23: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 1v3Rt7-0003UJ-BF for qemu-devel@nongnu.org; Tue, 30 Sep 2025 00:23:00 -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-650-ToMj8VGdM0K4XB2BufXqcw-1; Tue, 30 Sep 2025 00:22:49 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-33428befc3aso5957330a91.2 for ; Mon, 29 Sep 2025 21:22:49 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.108.92]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b57c55a339dsm12534158a12.40.2025.09.29.21.22.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Sep 2025 21:22:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759206171; 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=AwtHdo40Ubbz5T9WQXMHuDDStDH3aq6sTqis/zRfQds=; b=Tnd72rLYpNyO5Clh9J3xKI6tMkbqx76eJOZ8LuGLteu3hT7MEZcVjrWtVpIHqX9jDJdDN4 B+orT6swg0X1fgf22CZh9L6vNOyGZM39YibycrDYGI3sH8tasVQP3wRW63GzruTpuryZvp JPGEvB4kFFPfCgEHzUrjlpUI2PaHKCU= X-MC-Unique: ToMj8VGdM0K4XB2BufXqcw-1 X-Mimecast-MFC-AGG-ID: ToMj8VGdM0K4XB2BufXqcw_1759206168 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759206168; x=1759810968; 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=AwtHdo40Ubbz5T9WQXMHuDDStDH3aq6sTqis/zRfQds=; b=iTlDrMmTj4t2+auRk9/rXNkygNl2ZIYzKZVaNXsTFVk4W5LvzcuNmbe6ALs+hdYpY6 qOcLQQnjR2NExEZ+O+hNaQpNcQftzjZTP3WJA1qdZiMdCwN5I3QZ6xc455SAgtWkNsUs tFRnvRDzp2OB1iiDYxo07IV4YlILNtGRdLjt5PQluccNMhEDwWKT5ZRubCBTVHydG6d1 B0S1iSYlEyr8LkSyHOOo/pVA/QioAXBNrlmrNc9dpYdLw8+hOLwon/jZHsqPAWTdGWqL z0HJu/uXPAM0jQtTGIMXooaR5JjSvK6SaNo4jZtroOe4BFs/5R17CXQkwZY7B0cVxRGd 7ErA== X-Gm-Message-State: AOJu0YwvDZ+bSga3urlxmaxThfp0fSCmaqZAviUq1vxcHnZ2ezYArCvt xVexIHBX/rBOTwPMBvT3PE+5U6ScVW299XBv/ei5tKu2hCp4Ra7oDSC9jMbQo3NyKfm8Lgoqb/8 RDlfA7/rC3/kfzLrakyEpXIZS1OErfR2UUb7zYYsnRCtYPhIsT4Qz+V/H X-Gm-Gg: ASbGncsWNLxBCAlXrKGb+1Aw/Ae4GXAHlD5q2YtJOVsY4X3wEOcwPrvaVnUrx+OEnqk cyMUoqZIzVJltUoBmaicWi+6p3lyQzTDbOO/laUBFsNcmr72qXUxYqacbdalnKoRg5F3qr88F47 bWRV8JQSWqwz4kxv44GWB7/qfttLBFdWjHvL3prwXONbFFuMlgfmMBoKS/CLfivVA4gZEJCnWKW 9PMC0NSfByMRTgaU9sUzF6+xeJknLmT8mhlyKrkHp4uz4G7Sihgn8L8DAc4LaaOd1mqdEGhGVgC JwBZ6v3vj/j7+qn89K99y5Tzt+QN2qLUYVudqiT2boupCVDGWZoX3HYn7A== X-Received: by 2002:a05:6a20:975a:b0:2f6:6d95:69db with SMTP id adf61e73a8af0-2f66d957c82mr14035753637.57.1759206168087; Mon, 29 Sep 2025 21:22:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGnw7gTnIW2+vK/A5gNuWDzoyhk8NWg44PbbImZFchUy7B4zfSl9IEwi+KGVP3m1lAQ4Mi+hw== X-Received: by 2002:a05:6a20:975a:b0:2f6:6d95:69db with SMTP id adf61e73a8af0-2f66d957c82mr14035735637.57.1759206167720; Mon, 29 Sep 2025 21:22:47 -0700 (PDT) From: Arun Menon Date: Tue, 30 Sep 2025 09:48:35 +0530 Subject: [PATCH v15 26/26] 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: <20250930-propagate_tpm_error-v15-26-84afd3af1e47@redhat.com> References: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@redhat.com> In-Reply-To: <20250930-propagate_tpm_error-v15-0-84afd3af1e47@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=6844; i=armenon@redhat.com; h=from:subject:message-id; bh=A5j2AA7VZek1kkU+LeIGdhwVuZTv6xXluxZXB+cJtoU=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8btKKFnmxUP+KdksR6vcYsrmv5mVural5/XbbV1TH64h El2d/3NjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABPRz2Fk6J6mIsidzcfA1nvS 7/Wl1uXa3WvW5Trs9QmSN+I3kkquZvifYt62XsUvzOf33gk/tNpCvAx3lue9le9g4RUxkqos+8g 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: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.513, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1759206404868116600 - 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 Tested-by: Fabiano Rosas Reviewed-by: Akihiko Odaki 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