From nobody Sat Nov 15 03:05:04 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=1755765967; cv=none; d=zohomail.com; s=zohoarc; b=lstLo75NmEfM2pzsn2QeJAX/ouOrVst4hGuiD7HNImYh1JmvDoz55HIBIvi53ylri2kAom+XtF4TwvIbD7fRtE5cZhInxWNqpTYgQG/uXLn58J/Ku7R18hQ7UtZ/TmhHOcAnaKwm73UY+VX57KuxC2/dmytqBYo8GCLB9wPfw54= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755765967; 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=w7iTfHVGJDaEcSWrya/nyT1s5hPEETT0CP1J6s30gGQ=; b=kaHKZIvTIpm0kx7Vv7NyeXX4wez5ocpFN8ZvGzU5oQXFhRRW6y+QpQdsk0bzuCPiqt/uC5vQswuojwkpwFyk/tsYW/lcq916knXceopcLHD0ckAhh0GwUr8z2B02bwJ6leggrajcblU1x5CmmVpwt3gJlS69hAC5sMk9RGguXMo= 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 1755765967832765.3530174668581; Thu, 21 Aug 2025 01:46:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0v4-00027P-Mx; Thu, 21 Aug 2025 04:45: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 1up0um-0001rx-CS for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:44:58 -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 1up0ue-0000lt-9j for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:44:55 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-561-KIjWW035OGy1kXrFSAmz6A-1; Thu, 21 Aug 2025 04:44:44 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-24458264c5aso9046555ad.3 for ; Thu, 21 Aug 2025 01:44:43 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.44.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:44:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765886; 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=w7iTfHVGJDaEcSWrya/nyT1s5hPEETT0CP1J6s30gGQ=; b=GgjtDak71JNqhqUe63PSqgBdE8jLn28vwXPUibJv8S7Q2Mz/5UNweegXeL3lI1N0F+hMve kc7RlxMEgbiCAsm69cPLNt+8VRHhERGPwyW2jTX/evZtMh63mj6RYCMsjuJMyHc5oZRLD+ jPJ5buF2nP0B9TSlvrzcksLMrC04NpA= X-MC-Unique: KIjWW035OGy1kXrFSAmz6A-1 X-Mimecast-MFC-AGG-ID: KIjWW035OGy1kXrFSAmz6A_1755765883 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765883; x=1756370683; 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=w7iTfHVGJDaEcSWrya/nyT1s5hPEETT0CP1J6s30gGQ=; b=qajRhorU/IYzF+IsWIxcJTA7PvpzITaDY0vYyGB3oNWjZafBnPfd9HVeizANheoxfe AfkixkoJKNPnF64neDVDN7wIIhUnC3qJ78eZaUI6FJOvUu9VhlhJi4ovhURCe6mfrwi2 uMjcW0Yj4s49wenfd1hR9LM0obJmH0sSGCnQCsqvD/imiWykH4hsD7gf3dr0THz09a9H f1KVHhwoRQcv+qqVihHxKQyivk1ItJ9TN5l5Vq7kWCnjOd370pdhAwj+c+ATB1xtoDGp xjG+SoCy/mX02DyIAMwr8UoVDgWSgQr2wS0v7fhLOm4KJuJKTzDZuOTZ4pXxhtfKbMGT AdPQ== X-Gm-Message-State: AOJu0YyVdNaVVZry1M7NTok2UErvKyrUVXWhcGVBvkV8fZTAaWFNyBVe Nlshz5pQWOegRyA6VRPOuywtSXHwCvvzkBzbrtGDL3daQEGuUdqjoYrOtbctzYf+CeUAzU1EfrS PpqdYmn+wEq8erwPk45qI3fTnVyOPhGf3xgUX+uVwtKseju2HPZwFKr39 X-Gm-Gg: ASbGnctu9UAkvG2xNI41IVK8TkDvhqZvUhYUFGuGuEl0f2DW6DRGsKjhhLD11sekFam oQic2AG4XXnuflTB6wPtQr+ogtWB8suLILjf1h8/DIQqYK6SxzgaRFAS3UfQ1OezTpg5Tpevv5x GfoQF5dsgxSgVRZilzTyU6y/pfb5ZS1ERQjS2i2/CUrtBVF74jBfrwVJ3n1oqv/dDA2GQILdSaQ +5zkx+BCmUWsjqaWDfX1/VM/0ADa0hEwBTtTu4xPg6VRyudoY6t4lvfXn5BIip0WYCXPBtVNs1s MB9zJLLdLoo6Dz7AKfmH7LcI+zWYOnqx+MQ94rcDL3noyXKEverv X-Received: by 2002:a17:903:1a24:b0:242:9bcb:7b92 with SMTP id d9443c01a7336-245ff87a5ebmr26638555ad.54.1755765883009; Thu, 21 Aug 2025 01:44:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFStQTlaaoicYkqGJbefEsZxZ9nIteP85mlkQ0IGut6EHjveiAum6G4huOe2z4wcQA3hjHWVw== X-Received: by 2002:a17:903:1a24:b0:242:9bcb:7b92 with SMTP id d9443c01a7336-245ff87a5ebmr26638105ad.54.1755765882528; Thu, 21 Aug 2025 01:44:42 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:13:55 +0530 Subject: [PATCH v12 01/27] migration: push Error **errp into vmstate_subsection_load() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-1-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=3444; i=armenon@redhat.com; h=from:subject:message-id; bh=zWzM78aLbi7nFxbtpZpOjHo1cDhL45adV1Aq58qBguI=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO0lugQ52t6Y0pchazP9ryp4b6beg1Y7ryIxnstt6E zQm72bqKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJGdgYwM5+5XiEoUuqzN2ZLE Ebhn6q6nV/Y9WCrWwO14a5t0yZOrbxkZri2bprNWl+OWzj47oXaTMIfe8jcny66uv73mY2WUylJ ONgA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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: 1755765969360116600 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 warn_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 Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/vmstate.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/migration/vmstate.c b/migration/vmstate.c index 5feaa3244d259874f03048326b2497e7db32e47c..3d9f284700368e2fd573d5d77b7= f7ab88008cc91 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); + warn_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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766052; cv=none; d=zohomail.com; s=zohoarc; b=aT/5VAw6Sy3u51Dbu7HL4idEUTJ9PIXEhR8GFNcxqf6lhKl3acvuH5XS8jlSgwz5aqIsVOgatKVKDA8wt8e4Cf+iJ8iOwr5Zhq3VEGeUXj7umFBlkrRA1waNhaIyaXnA1IVoLtGpAUDyt44tlDWjLxRv4GtIvJMgkmt74PKRCTc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766052; 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=P2FPdADMEMHNFhxXzuVtDKfuv8H3gugQt9Ko65fK9pw=; b=nk9+0TB1s+/FzgK1xzuu+zI2a9ea1VZWlR2tBlOeFsyPiC38i33gnNvczZbDC85jphQE8hzC93p0nZHkkzJL0qzgu6u8H2vv2AsL+G/pqcG2UdIXf632y7W1gYDSVTWvltMkbQrvHuBmtVCn+d+yuEr17QcIP+GAu/MaA2I1dX8= 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 1755766052922159.39918049149026; Thu, 21 Aug 2025 01:47:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0vv-0002tD-8V; Thu, 21 Aug 2025 04:46: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 1up0vC-0002Q0-9j for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45: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 1up0uz-0000nC-NF for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45:17 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-635-jXcm9PyOMJCM_1ktU_ORhQ-1; Thu, 21 Aug 2025 04:44:55 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-24458027f67so17415915ad.1 for ; Thu, 21 Aug 2025 01:44:55 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.44.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:44:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765896; 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=P2FPdADMEMHNFhxXzuVtDKfuv8H3gugQt9Ko65fK9pw=; b=jALVSIOFTNPQXNF/CHEK6TFt01rf+BIligtN81DQB8RRTrcZgyRCsJu0MDwn1rWkXm1KK/ L5nk7/4TYVoeTkBx9+IolAcyUriIpzRb4ZiUAf4ge/mXbnEx1JFxXlZ4JudD9rk/9l6pXq zPVN/Vx7Tm/+xXTc5XtkA5Hjylst2fc= X-MC-Unique: jXcm9PyOMJCM_1ktU_ORhQ-1 X-Mimecast-MFC-AGG-ID: jXcm9PyOMJCM_1ktU_ORhQ_1755765894 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765893; x=1756370693; 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=P2FPdADMEMHNFhxXzuVtDKfuv8H3gugQt9Ko65fK9pw=; b=GOQqKtTtco0vtdollOCB5B3ADSB+7v0tu4RsGr35LEfekZn0AMnY9KaHT+F3fUipAE QwFoJ9Lc9j4n3Q7LaXDUp1f6tk3HbFTlA/K4AekR5LMvNJ1Jp6IsvXdBBM8JCDHmw5/d 8nuPoQqwF0aV1iofZ4es/mB7bkqPdzzWsdMqTe0jOXY1bqKnR3M1E+QCNz8bx5FuhndF elv0WhkWONu/3czC/8uXFEEUcYx3JFQjT1qTXzPhKCeDfMRAdyWojfcbs0P+F9Tc+4fT cyXPTOMIkwVWsto/6kVKO7NvDnFtIA76beHsfvGtSgG5UhJ82Ouo+co8nZ/DAGpvUQQI lyKg== X-Gm-Message-State: AOJu0YzhCFZzeFSPlF5jL+3K9nv8N7XCCWgQsiuosuHEDq9P7qckvpXJ Swgrv4qKJH0fa0RM2lPcyW4eLCb8TB5rBEThviHp8rHwDoHMYUZIbuhc/rQT+20FaMWwz/mNSLJ aouUYknaWnR2fd+XaZVDQKvN2o5/lgt5Jz/FchkzQdow1q/ue/jZ8pZzG X-Gm-Gg: ASbGncvJsSeYQujcXMO7k9TNxLMLxHHR2j+Icme81P31OK9UvBH5AEUkyxWcHTeNZ5i a7hHFJJISD1C/ybVlkoFpeKZCKS4/C5r4bpH/xq0K13fQJkk0KdSSCG4GntLo4iI3cZlu3G9XTf eWnGlToB8algXJp0wMtdAyrqEwOnw5mslHGIIhyed6fGgAMNGiCPef03dsMW4aWp1vQg3jI7/SO zUACcH0PcZPg3HZW5QJYcuHpqcNrhxl2RCbGFiVvKbnK6L0zj96hk3udQw+PVZ5VfivpbcTvCjT VrIxFCXI0W6jvpuZnBTfNO0F59PfKVGaJkqElUP2+ShaxYCtpqND X-Received: by 2002:a17:902:ce88:b0:240:8cec:4823 with SMTP id d9443c01a7336-245fedd00e8mr20738095ad.41.1755765892761; Thu, 21 Aug 2025 01:44:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG9fNSfctYIAjAJ6cSV0NJJg4L74WBW3lxCcdX9jcHZDhcjwAe27dHBn7VBA6tiMbbjfMAcYg== X-Received: by 2002:a17:902:ce88:b0:240:8cec:4823 with SMTP id d9443c01a7336-245fedd00e8mr20737785ad.41.1755765892177; Thu, 21 Aug 2025 01:44:52 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:13:56 +0530 Subject: [PATCH v12 02/27] migration: push Error **errp into vmstate_load_state() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-2-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=28913; i=armenon@redhat.com; h=from:subject:message-id; bh=++rhMn5BRu5/6ldMZ/sKwurDc5PN18dU+iSJxVKP9Vs=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8mFz7bveCImfYIzzMaV94XJlcWX5nZYPFkbWq955 +f7qmdnO0pZGMS4GGTFFFkavgbINgUURkTavrwOM4eVCWQIAxenAEykoJHhf5JDissUb5//Sx4p X40+tZO3UHb3jc1XU9N2nnoY/+64sTHDX9lHMzqmH2bMfL3bzct3Q5Z9/eFVd7sUJpxXeKh8qZr Fig0A X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766056396124100 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 warn_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 Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas Reviewed-by: more easily. --- 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 | 22 +++++++++++---- migration/vmstate.c | 65 +++++++++++++++++++++++++++++++----------= ---- tests/unit/test-vmstate.c | 63 ++++++++++++++++++++++++++++++++++++-----= -- ui/vdagent.c | 5 +++- 15 files changed, 147 insertions(+), 49 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 0a1a625b0ea6cf26cb0d799171a57ed3d3ab2442..5dc31bc6bfb0272e29a4364ab10= de2595a4bedf7 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1343,7 +1343,7 @@ static int virtio_gpu_load(QEMUFile *f, void *opaque,= size_t size, } =20 /* load & apply scanout state */ - vmstate_load_state(f, &vmstate_virtio_gpu_scanouts, g, 1); + vmstate_load_state(f, &vmstate_virtio_gpu_scanouts, g, 1, &error_fatal= ); =20 return 0; } diff --git a/hw/pci/pci.c b/hw/pci/pci.c index c70b5ceebaf1f2b10768bd030526cbb518da2b8d..6be932d3bb67ff0c4808707db2a= 7b6378a90e82b 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -934,7 +934,8 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) int pci_device_load(PCIDevice *s, QEMUFile *f) { int ret; - ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id); + ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id, + &error_fatal); /* Restore the interrupt status bit. */ pci_update_irq_status(s); return ret; diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index d2f85b39f30f7fc82e0c600144c0a958e1269b2c..6a9641a03d5d3a38a4de7ceb9de= ffc0cc303bcff 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1136,7 +1136,7 @@ static void virtio_ccw_save_config(DeviceState *d, QE= MUFile *f) static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1); + return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1, &error_f= atal); } =20 static void virtio_ccw_pre_plugged(DeviceState *d, Error **errp) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index 20f70fb2729de78b9636a6b8c869695dab4f8902..8622419497db650523d51bcb415= 57bbca254eaa3 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); + warn_report_err(local_err); return NULL; } assert(req->active); diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 4fa692c1a32bcfa4e4939e5fcb64f2bf19905b3b..a65e34b6979eadfa0851666aeae= 7cf731a00fa40 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2790,13 +2790,16 @@ static int vfio_pci_load_config(VFIODevice *vbasede= v, QEMUFile *f) PCIDevice *pdev =3D &vdev->pdev; pcibus_t old_addr[PCI_NUM_REGIONS - 1]; int bar, ret; + Error *local_err =3D NULL; =20 for (bar =3D 0; bar < PCI_ROM_SLOT; bar++) { old_addr[bar] =3D pdev->io_regions[bar].addr; } =20 - ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1, + &local_err); if (ret) { + warn_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..419f3516c9f0a3df43831eebc77= aa1e6dfcd0f41 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) { + warn_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) { + warn_report_err(local_err); return ret; } =20 diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 1ff7bd9ac425ba67cd5ca7ad97bcf570f9e19abe..056781b1c21e737583f081594d9= f88b32adfd674 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -1196,7 +1196,7 @@ extern const VMStateInfo vmstate_info_qlist; } =20 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, int version_id); + void *opaque, int version_id, Error **errp); int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc); int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, diff --git a/migration/cpr.c b/migration/cpr.c index 42ad0b0d500e5de57faf0c6517e216b2d1c0cacf..8abb6db76d2474157f804ece4c3= 5ebfc8c22d21a 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -233,9 +233,8 @@ int cpr_state_load(MigrationChannel *channel, Error **e= rrp) return -ENOTSUP; } =20 - ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1); + ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1, errp); if (ret) { - error_setg(errp, "vmstate_load_state error %d", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index fabbeb296ae987d0c06ba6dafda63720205fecfd..464e8b778404a642bf60f368205= f5e6fa59118ba 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) { + warn_report_err(local_err); return ret; } } diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index 741a588b7e18c6d37724b08a0101edc8bc74a0a5..f41670cc853c5b41ccc8def3548= 86a8e5c1451fd 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) { + warn_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) { + warn_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,20 @@ 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); + warn_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); + warn_report_err(local_err); goto val_error; } g_tree_insert(tree, key, val); @@ -872,6 +882,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 +903,11 @@ static int get_qlist(QEMUFile *f, void *pv, size_t un= used_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); + warn_report_err(local_err); g_free(elm); return ret; } diff --git a/migration/vmstate.c b/migration/vmstate.c index 3d9f284700368e2fd573d5d77b7f7ab88008cc91..6324e5b17addcd1b4f2fcdddbd4= 7c3e4befc1d50 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -132,30 +132,34 @@ 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) { + ERRP_GUARD(); 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 +197,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 +221,43 @@ int vmstate_load_state(QEMUFile *f, const VMStateDesc= ription *vmsd, =20 if (ret >=3D 0) { ret =3D qemu_file_get_error(f); + if (ret < 0) { + error_setg(errp, + "Failed to load %s state: 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); + error_prepend(errp, + "Failed to load %s/%s version_id: %d: ", + vmsd->name, field->name, vmsd->version_i= d); 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); - warn_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 +594,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 +634,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..cfab58c7f45ba50f70af164c3e5= 8b01aaf9cc656 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) { + warn_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) { + warn_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) { + warn_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) { + warn_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) { + warn_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) { + warn_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) { + warn_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) { + warn_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) { + warn_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..bec728668de4d2410c3b741bcb0= a21deb373dcd3 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) { + warn_report_err(local_err); return ret; } =20 --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766070; cv=none; d=zohomail.com; s=zohoarc; b=I2b8+E1XR33YwH88SCaAdO0n1Z7lBi/BYH7XJ70lP8oZ6U0zvvn7h1kDXH9o58ZLxv2Zni1066fSi90mlo5xeZ2J6UApAC8Md7cvc89L7lUoGF931eiAZHJwQNkDBpAos/dvqUzcJip+vXE8CaF77uLa/YysVUkwB9bloLhmwMk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766070; 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=Kk3+NIQtXaA5i+x7tx8agPDX605CM/z42iyH0dQieuI=; b=groUMF4ng0YWCiJnNSDJAn8Wl9rRTuu5YWx0CeinxGbXxmtXH2we2qnDbB889wFqDMZgz9Mjv3G0aTeFvh/CivgMaVtIFAxfgaiyuxewJJxlXdIhOBKWbWybvfi3hhom5naqwVEHxzhYBOkFXsZLOF1/Fle/v6E58pR11YGzzQA= 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 1755766070401101.62018162469803; Thu, 21 Aug 2025 01:47:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0wy-0004Wk-Tx; Thu, 21 Aug 2025 04:47: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 1up0vL-0002Xi-OG for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45:33 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0v1-0000z5-RM for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45:29 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-148-EBO65Uq5OaCCOPWJ17vZeQ-1; Thu, 21 Aug 2025 04:45:06 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-24458121274so9608485ad.2 for ; Thu, 21 Aug 2025 01:45:06 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.44.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:45:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765907; 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=Kk3+NIQtXaA5i+x7tx8agPDX605CM/z42iyH0dQieuI=; b=UU8gwl+ZD4vg6VO1pyaW03cbT1aWKme4dmivccCrJVcLoV7nvNsMFCQTXS910HBgSm674D Cyp6bqdGZhpas3U8YiUaTmxCds2k2wP2gAefgMUmff7ewTxk0BZdFPSQBI2JdbgSp9eauT WDEm12uktZ2mZTgzxrh8NAf8FX82M0g= X-MC-Unique: EBO65Uq5OaCCOPWJ17vZeQ-1 X-Mimecast-MFC-AGG-ID: EBO65Uq5OaCCOPWJ17vZeQ_1755765905 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765905; x=1756370705; 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=Kk3+NIQtXaA5i+x7tx8agPDX605CM/z42iyH0dQieuI=; b=qbzFfoye1AuFYV1yEpXgqLKgFdFmwCXOfNVtoAyUugIKbaHJ3PL06SCb6puTU04Vrk wlRTCdGMWWYWRg4GcYQ5Pcg7ViTKE8uiIsx7lVz5fvxWNWuEHW96EdTB4jpeRwLDpO2C aldrcWspojy01HOB2/nmvBLhq5lDyE8BCdaOlR0c9FE4nxi0EgjyGRsyD1nOWRumictk KFc2aw5wBojdWXfZoRmYxTgzYlBTrxOmvoKHJbJjTdS8SJfYkSMbblScrJcYGsYGqcWa sMkOKkfcq59psbmr4pdkcvh7fPyKKorAM+v1sjWl5QzGMMXpGohx3MpMvnjumUDJcO+8 6L7A== X-Gm-Message-State: AOJu0Ywe+SBsNELJm8gxoN3XiUVWgPhKksNFpixobTFWQYf20eILuvWH HCz+LtA/saSyT/ixcmcP7OIPBKwNpGeZaCLACpk/j1FK++BAzAjkFvICepiI5XUARy83mc4cbA1 /TQxL1TLjTVvAnP2V1/pswGL4SbqsgUCx/Yqt/TR8rcdb55snivDZ5F7c X-Gm-Gg: ASbGncuAwq7mt0TLf0Tf/xNHo17hw2T8d9Y3n9j3doxTYq1gAww7sK3y/HVts6zPmo9 6qhgLBh6ilI04XBpcQ4zBZMt5e2ECJnqmJCRbZKH3gab/R2tMZR1Eg9uYx4tKMSUnOJpZ+MmMeQ RTR6VuWWrwSkM4KtCNl6jvDsiEknojAQ7DpioL9gSEIAzl/15Xt1z4/7Z7H6ATYV2HkLnMiQtsd eV3+wUC8H9TlPNoB/5TRAe2a87Ajfg+3ZcOZxuH5zaYJuuhVH+VRGUKzr2TnV9MRbShE1XOROHa B+MzIjOU7bMonk5SAwchUXV4YOhFuW0lLopQmiJIa3Gm3TpWdWzu X-Received: by 2002:a17:903:1b47:b0:242:b315:dda7 with SMTP id d9443c01a7336-245febef6famr21950125ad.3.1755765904785; Thu, 21 Aug 2025 01:45:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IErWudDrfu/11rJtG6vyCSxTFO235r8JrfhYj7BXT9JKMACBaOn9fzjFxvZdNyWvoCPSjnLdg== X-Received: by 2002:a17:903:1b47:b0:242:b315:dda7 with SMTP id d9443c01a7336-245febef6famr21949305ad.3.1755765904037; Thu, 21 Aug 2025 01:45:04 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:13:57 +0530 Subject: [PATCH v12 03/27] migration: push Error **errp into qemu_loadvm_state_header() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-3-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=2972; i=armenon@redhat.com; h=from:subject:message-id; bh=R7CNvPEGSj+XRsy4a7OPYyRxze4h7ZRH+EvjhrcS4IE=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8nC1ldvqh5UNxCJZAnNclxzJiWvPr94oVzg31/ru GernFHvKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMBHeJQz/TO9tm7tj7c+gsgP7 3lfer05w/t004ceiTXd+bLoa5MsvEcDwV+CO+ZsFzaedt/9PWhq1cPX1bvEvk9S8J9mlbslvVX4 aywYA 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_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_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: 1755766072205124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state_header() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 464e8b778404a642bf60f368205f5e6fa59118ba..0c445a957fc99f826e6753ed379= 5bcdd51f1e3f5 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2814,38 +2814,43 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t t= ype) return 0; } =20 -static int qemu_loadvm_state_header(QEMUFile *f) +static int qemu_loadvm_state_header(QEMUFile *f, Error **errp) { unsigned int v; int ret; - Error *local_err =3D NULL; =20 v =3D qemu_get_be32(f); if (v !=3D QEMU_VM_FILE_MAGIC) { - error_report("Not a migration stream"); + error_setg(errp, "Not a migration stream, magic: %x !=3D %x", + v, QEMU_VM_FILE_MAGIC); return -EINVAL; } =20 v =3D qemu_get_be32(f); if (v =3D=3D QEMU_VM_FILE_VERSION_COMPAT) { - error_report("SaveVM v2 format is obsolete and don't work anymore"= ); + error_setg(errp, + "SaveVM v2 format is obsolete and no longer supported"); + return -ENOTSUP; } if (v !=3D QEMU_VM_FILE_VERSION) { - error_report("Unsupported migration stream version"); + error_setg(errp, "Unsupported migration stream version, " + "file version %x !=3D %x", + v, QEMU_VM_FILE_VERSION); return -ENOTSUP; } =20 if (migrate_get_current()->send_configuration) { - if (qemu_get_byte(f) !=3D QEMU_VM_CONFIGURATION) { - error_report("Configuration section missing"); + v =3D qemu_get_byte(f); + if (v !=3D QEMU_VM_CONFIGURATION) { + error_setg(errp, "Configuration section missing, %x !=3D %x", + v, QEMU_VM_CONFIGURATION); return -EINVAL; } - ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, - &local_err); =20 + ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, + errp); if (ret) { - warn_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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766049; cv=none; d=zohomail.com; s=zohoarc; b=brI8b0eyV/B4KFg004LPJibbEUEnCEc2A0nhHCFmD3XEc9vm8XZA0fK7pQLEdvpSKp1XlpmaafmeCv/7H8IQ14dMLCXWxwjux8rRfxGtojSKfRS5hae/lDtFLwkXFbMMcA4mthvgPgicFucIHk7Gi+A4IsWO8nfXCmpWKS9oqn8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766049; 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=7FHj/lICNn3ML/tUvoadsWlJAIkq5LZEwx29bd9ayqA=; b=HZ4SSZCDo64kGDhjeWAjS8sW1Si26QoMdQdU0K2gpmkkGSBlRlPtaVeRe1LUl6V1sOrVoxZV+3lH5XYMzymVzUg9lfeWI/MaKUGS1hPFskizPNzZN5jIN5FzgXPJPP0G5/mo9QE+5xD0XVu8AkzT7xEpykXyGZfZm7H/6Q+jDsA= 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 1755766049343131.0574055885554; Thu, 21 Aug 2025 01:47:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0w8-0003MG-VG; Thu, 21 Aug 2025 04:46:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0vR-0002hM-U5 for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0vE-000118-GO for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45:36 -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-356-NR1Vi2NeN9WrxENlOWgztA-1; Thu, 21 Aug 2025 04:45:19 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-24458345f5dso9340325ad.3 for ; Thu, 21 Aug 2025 01:45:19 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.45.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:45:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765921; 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=7FHj/lICNn3ML/tUvoadsWlJAIkq5LZEwx29bd9ayqA=; b=hlsybJXhNpeO3kUcdrJ6ButrSYUSqzu3TvMpyVtCK5miL/245IYiivTh2pXXHNBMp1JAGK B6iTiIZz4TJgN8czTGJ+GXXlRSSEJi3LPXn4VQhMqmFNVdOhdFebhVs8ViRgSlqCR9lPeI LkVR0BJt72bvWDSqJjPkXuQVS0E8naE= X-MC-Unique: NR1Vi2NeN9WrxENlOWgztA-1 X-Mimecast-MFC-AGG-ID: NR1Vi2NeN9WrxENlOWgztA_1755765919 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765919; x=1756370719; 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=7FHj/lICNn3ML/tUvoadsWlJAIkq5LZEwx29bd9ayqA=; b=PJI9Hi/87eMyBjyAPiVFh7yhgK3Y6flJgYQLE87y8O4ZqpSA7QW8/o0xt3YRXxJJtY XE5vqoHNzxgE0UHwOzwJOvlLbSo3OFkVSCM/rzME4m4agnVlVFKc3AWkZUn4XH+sb8oX iIfZ2mzzlHAW1OqaJoKwTYxlSRlhj1GxHA9C46HXy2iOSYkwR+AL6OhE6/m7RSuwRyeL JH6fRGrYo8DPVCGDQx+lfiFxcT4xEyvnoDK5pyHRxUAcnwvUwA/XRa0bvuelVyRJNMAC N/yggBmJDGjSLzdCSBirCyALeGtDN6fPQPXICRfiiWQdFSNzXZ8DJE3jiV52u/wSmdg6 oQmQ== X-Gm-Message-State: AOJu0Yy6L14j30t+vReQRRkzR8OPktxrDV3UDh4F7FkeRfHHu3umG9Yw CHw8pqBccTY47auwQOrAqme0yPZPGC4aOA/0cD3ab9nnYdgpBwGZd0bDs+p70AO7Oahg0XQJABW icKC3/P9KBznH3XqCM1rmy+p58nJ/dHv44HK7awnWbpaexLIuN9btb9ya X-Gm-Gg: ASbGnctOQlAw2Nqc+nWzxMOuJTQGpIsIqplv0//xPoGz/TgbHehy/T1Acdm07CLIp62 O/Ydjts+ZQM2MrJxWNdQ/I8qcuQU3+Bnh3zKINXUGRqXCByFbmlj+CxXyiGtJznUSXQEyUJcU9o S0d6Zu6zlLcuBTXQFKIztxS2Ap24dskEI2CUNbQjXi7gIRFHvWN+hZi38P5p1l5wzJKZYJJyh8N DrIK555N+AUTRwVT82PJgIwcTKV2Lws0WlcpWHD/KPFyVdoBuVRczPlL6mnqhs0dPXJmFDJvDoD 6cSC7nHkX17vvHUttYKjgfJic46yGd6X2QgLO8SZlEmoumHixD9D X-Received: by 2002:a17:903:37d0:b0:234:d1f2:da31 with SMTP id d9443c01a7336-245febe190fmr27355045ad.2.1755765918426; Thu, 21 Aug 2025 01:45:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHlMzUwOBltdKE0wwBWmO7Kvd6vmVNDQ2rsfSif1WJ9uJO20VZmr2B3kDPNtWBrIeL1+y1+LQ== X-Received: by 2002:a17:903:37d0:b0:234:d1f2:da31 with SMTP id d9443c01a7336-245febe190fmr27352755ad.2.1755765914249; Thu, 21 Aug 2025 01:45:14 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:13:58 +0530 Subject: [PATCH v12 04/27] migration: push Error **errp into vmstate_load() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-4-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=3214; i=armenon@redhat.com; h=from:subject:message-id; bh=lexYJKIf4MTAkJUsIsA8XptGUSYcowY9vJmjXRBJ4vg=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8mudtrpHlcWPtgeHF/1cuvkazwXGh6sMt5jmajqz Pza8kNhRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIlIiTMyrLFLNq4T6bvdkh+x sdnux+UWp9aCDQsrErmtRXlVrOYeYGQ4k+4tLldop8266M4fi1kTufMOtotbPuaVfBEtoW1S4Mg CAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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: 1755766050483116600 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 warn_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 Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/savevm.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 0c445a957fc99f826e6753ed3795bcdd51f1e3f5..e19156a280c00c5aead9ca84e14= 3e6c7a7de7501 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); + warn_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,11 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t t= ype) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se); + 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); + warn_report_err(local_err); return ret; } =20 --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766042; cv=none; d=zohomail.com; s=zohoarc; b=g3K2VUhvoiutDVPbhWCBIiTEvOFQwmaV+zhrBDDS4Nqzvcp7LbP2g5fkzx+8unoPYC+uCUMrTEXnXZgEkyX6H1rznUC7eLPaz2+UJxa3UopUOS9Lu0X0JoQxP+a0QgycV4FA8CEeLN5EPPk3Vt8k2+2BQARbgJvdNF+trInJyPE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766042; 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=yDzZ3jLmjLq4zR5L7CS7sNKY+qcglyAmxa9VpMAftIc=; b=EmKHSkUQz1jZihHi09m0U+qtGOnV3FpwTJsQIyfxCODWi9dSY/zV3Gfurnqa65uerYEzux00YyS1oIUBmcpWSLkb/irLfgOZoDl0zFJtqtyLQBu5sDTR0OpDcdo/QfOD89Q7ZmJpiH9U1r3dm4OQbzsmAeu3nzxASUbYPRB9t6Q= 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 1755766042417859.9927931909256; Thu, 21 Aug 2025 01:47:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0wA-0003PF-Ps; Thu, 21 Aug 2025 04:46: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 1up0vW-0002kx-Gn for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45: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 1up0vN-00012G-1e for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45:40 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-287-bZcwWxxbMoyg-BgEm2sK_A-1; Thu, 21 Aug 2025 04:45:29 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-24457efb475so9836235ad.0 for ; Thu, 21 Aug 2025 01:45:28 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.45.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:45:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765930; 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=yDzZ3jLmjLq4zR5L7CS7sNKY+qcglyAmxa9VpMAftIc=; b=R7fsNAJRRjc16B6g6VBOarWVuQVmWQu5VXOBBQXrT4vEGtWHUi384hozV5I/x+b3INW+Bj QgKLWlf/Ww00BNDVE/lVQcDowjpg8KJn9PPNitX1TrncRnuQ/Gndfa1Befi9b0pm54vPIZ adF6xxnKx9muNn3aBZqinrYz8AD+0js= X-MC-Unique: bZcwWxxbMoyg-BgEm2sK_A-1 X-Mimecast-MFC-AGG-ID: bZcwWxxbMoyg-BgEm2sK_A_1755765928 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765928; x=1756370728; 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=yDzZ3jLmjLq4zR5L7CS7sNKY+qcglyAmxa9VpMAftIc=; b=Mwl0jLGWIzGS1yXP3byjKXUU2bpCE3QnobxSzWaP9SBK4J7XyCne+VuJVKsxR9t3S8 Y1/EpZZkozt0UpTCp6M9bhHncmKiymQKiftI/UozcGD2bLw4Jnnrcxpw1UepMzwUirPf /Hw+HSl77vXd6VAvck2adSGVsyfxHlb2wBX42jTtLBXOfoW4gerS6f+Yhs+U4zXS4z+h /zOqLE73PfCglVOknORll7quCSAS0Nol+sFGoSD5BH+pVyq1BCROiABUEAAoougJ/AVT p3nAicyHbnyD0vOTc8hzjnFBCbGayRlWy8JLZDKVdmnw7ZqeQRY0gfsnG3GDuSGqQIP6 flxA== X-Gm-Message-State: AOJu0YzdyvhSfG1YGOfhZbPX5BBzVtCgqRoOKygIjw3q1eS1ooenhCbJ 3vO7/OzlGL3GwX0e1S37wzlxM4qRYPI63YCXHKfmGtKgBG5ZNTlPNrZEdjxZY9qBk6llUnFHWlx O0EsfCj4Y7vFrovpcds5g25mUnqdu8WSK9rHz31tsZEC2eSotCuiUgdxP X-Gm-Gg: ASbGnctReGZ252xHEArAvU31/kre63xabioHkBWu/9BQ5M8rAQ/mhzU6dK6mnZwVR/K wxWACNaj59Y/XyD8z6mg5IgMZr6U/VLROps7WhphQFBiIUw/KDfvGCLHgE3CaKefzKxr+svl9oT CZto/gw3fVWHNGDmllaIRE27OA/FJG1LvUlbr8NdPkaNLpFNxI3/+bRNKqAF/EQj5BzYL5poY+B qoMGmZkeVprLOcKQNFuVqmr3zHQQoT0pqAZdAxoKEhAzGLAaCDuA/E7asLV9bpM3GDs3a5JPx2q U8zr8ztfuelcwu7wBIVled4n+X4Eo6vhVekPVVusYtP0v4kPSfYG X-Received: by 2002:a17:903:247:b0:240:640a:c576 with SMTP id d9443c01a7336-245fec05bdcmr29220485ad.15.1755765927797; Thu, 21 Aug 2025 01:45:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF/wTb8526bwoblrp05BKf/Mgks7TIcaPhesZoRxuJyHVFg5bB9PtHysDc3h8sInCKTBGAnhA== X-Received: by 2002:a17:903:247:b0:240:640a:c576 with SMTP id d9443c01a7336-245fec05bdcmr29220005ad.15.1755765927399; Thu, 21 Aug 2025 01:45:27 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:13:59 +0530 Subject: [PATCH v12 05/27] migration: push Error **errp into loadvm_process_command() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-5-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=7107; i=armenon@redhat.com; h=from:subject:message-id; bh=9AH9P1l6e8SvKKjcLovofmYalIjfvAfotsil7imy8QM=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8kBTd3KRs1BZkkXlKZonwv56eDVu2i3QcWL+4c4G OZX7xftKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMBEONUaGTW2Vtx8F3PmzS3yZ WcRz8XP31r6OnGiVbDj3kv/TizG8pxkZJv39Kvam8KX/jmdBurEnzI45rWD7wcbzak3y3aeanvy LuQA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766044376116600 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 warn_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 Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/savevm.c | 86 +++++++++++++++++++++++++++++++++++++++-----------= ---- 1 file changed, 63 insertions(+), 23 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index e19156a280c00c5aead9ca84e143e6c7a7de7501..7575063ad3d421fccc041146891= d9bd6f074e128 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; @@ -3051,6 +3087,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) { @@ -3078,7 +3115,10 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f); + ret =3D loadvm_process_command(f, &local_err); + if (ret < 0) { + warn_report_err(local_err); + } trace_qemu_loadvm_state_section_command(ret); if ((ret < 0) || (ret =3D=3D LOADVM_QUIT)) { goto out; --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766139; cv=none; d=zohomail.com; s=zohoarc; b=mY2Zoyu8EtS56iUHIB33cMzT/pMaB57l8VvVd8D6IT+zIsI5aQhR1USmcMDwUdzC0m9OzUfv1lecW1usXZmM2k1QzX5Vd8tPiImLX74AbW4jSHBVNtdjmLsfzcd8rJ//pJpPaLp13iarjLYMsizDTyqACf+9mQDdX72qShLDMJA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766139; 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=Oe05QVd9wLOWkYMen7wvBHm3XADI471ei7MzyeIXcQE=; b=DGJ880QFXnoBAVKWs7TLcc7YXvoPFnqfBfI9TY9/BS8OrqCAxdfQTPBllREODVdbsgMbu32tCx6XjWjewWeM7wIMF9dq7MQj0f0ycEmYSfT5qCdNd0lvloJSOTo/ODh+LnHV4hS2Ec/nAiHoqaTCILn7Dpg8rTNNGWaPlgYxjFM= 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 1755766139068916.0023068259823; Thu, 21 Aug 2025 01:48:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0xg-0006AS-L2; Thu, 21 Aug 2025 04:47:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0vi-0002sG-AQ for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45:57 -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 1up0vb-00013v-GM for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:45:52 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-543-jzL5BAdEOn-cqmk0xYsbAw-1; Thu, 21 Aug 2025 04:45:40 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-24458027f67so17438815ad.1 for ; Thu, 21 Aug 2025 01:45:40 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.45.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:45:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765941; 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=Oe05QVd9wLOWkYMen7wvBHm3XADI471ei7MzyeIXcQE=; b=VinnDuIfWZIjL/zraZcicJM2qrcrtfwlWCIw6kZ7mbU5eH1V/w2Ok3XgcyNC6LTKYJWuVq S+9jss1cRTrjShiJQ/yMLsfKyiEGpK5wlGY1/ju/i8BieEhYIH6K5BXuA4RjLxBJznXmck voSSb1tuLuz7VvE9O3f+4j8mOzM7XGQ= X-MC-Unique: jzL5BAdEOn-cqmk0xYsbAw-1 X-Mimecast-MFC-AGG-ID: jzL5BAdEOn-cqmk0xYsbAw_1755765939 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765939; x=1756370739; 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=Oe05QVd9wLOWkYMen7wvBHm3XADI471ei7MzyeIXcQE=; b=k8L5nIsFxjuLZHPuwztXzqwdLD2jdSyaFSy9FVWIobeQMz/9b4CAAZKf0CPwafey7E omk57t/tCoOXh9tbix9c6g95gcbD0AF8RIs8GtJKGVZnL636ymVRHk3pheWZ6HgL3eUz 4/EExgsfM07/kkvQEkDj9+xfYt93PqBSwgA9nRe88fTD5uQNel5SgAlbyb0Cq64m0gOc fV3EsDndAV3xw6I/Aw/m+XSk4cpiuabjG9XMKvIYKxh+/KCXqN7WLZo2tCqav4/fqXY7 77rL8KTtDPJ/V8xv0h31vZqEtCxSRMV6KJY02dImbW2p7lc3QB69WPxr+4txPtrx3Q7Y JBwA== X-Gm-Message-State: AOJu0Yw6JZ+6h7kBmUAOLXa3bvK/B0ZqZ6955+LuVo+YZqP4Z2unx3uq w73Xy+hFN+KN/P1B73EtxmoP5p3wFVfDeQsgVyqZooffBpQg41ax+lmrgiuACQcJkHytmihusko MCLlu5o4/aAipywwQ5e8ecyf7h7Ug84xdKIFo+gDDbKZEi9mcXZMMTvU1 X-Gm-Gg: ASbGncvf1daQRhiceq8g/upyBVkeeSN+4PVtlEATGWtpU4W0yHLxFuVjH5UadVDPAya HSMyxzRrK7T+0UNFPEk+N6DJxMwzEiDmqBotTVjFpSdOPrZD1JYd4N51H6MRxIdNymR0kiXQSXm BwmdXDC3g5wEY32Uq4khGjrqeWFAMMPRmj3VL+MJEbWN608gHUutymsmVuCXRFvNQ0Akk0Xvz12 sUOw4MqmWg8rDh6hVZs9J9RyYGNEEO/E26R4IYcJEcv5Y/1np/lKy1BawgflnbNj81tnv8JSsQ2 HgJIXqWo643m9EvjbFkZ9254uLyv8NzLWMyGuidwQ7i+9zTxAp4E X-Received: by 2002:a17:903:948:b0:245:f2c2:650c with SMTP id d9443c01a7336-245fec03a85mr21917415ad.18.1755765939207; Thu, 21 Aug 2025 01:45:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGyUQTx/2be8GmeRNqFpeKaQduNTP7qX37SVxNtNeYfIJvY2GJqAH6JETBmUuZNCuFfgxqxEQ== X-Received: by 2002:a17:903:948:b0:245:f2c2:650c with SMTP id d9443c01a7336-245fec03a85mr21916925ad.18.1755765938780; Thu, 21 Aug 2025 01:45:38 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:00 +0530 Subject: [PATCH v12 06/27] migration: push Error **errp into loadvm_handle_cmd_packaged() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-6-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2769; i=armenon@redhat.com; h=from:subject:message-id; bh=8qprCQR2ZCwCoDZxKfvIvlVguvZrXYTAe00HNuMTP6k=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8mdClILNvjdufilp8Ihcq5gcM7RHS23Zs10mfVyp vbV92u/dpSyMIhxMciKKbI0fA2QbQoojIi0fXkdZg4rE8gQBi5OAZjIvTKGf7qOcRNY96bXNuyy 5ymrZ1ewEQ50fdw2f0nR59qYm5YWYYwMu662zbNZEdF668D7gGzJaq8dV2Qn22rtr4ycGhKygWU eBwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766141015116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_handle_cmd_packaged() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 7575063ad3d421fccc041146891d9bd6f074e128..5793bbfdda593c984bd2230f405= 2c3e68808acf1 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766076; cv=none; d=zohomail.com; s=zohoarc; b=XVgmsRINz5273QBAYox9fM+xfRjszM9NLi/furJnVj1jFPrPaeidWK4WbepYI5wTwmYr/tQiwuXka+RHK56IQ1LesmMdY2CVLz+EyW6Ts9Kf24LW3/nChJeXa7pPVPLqH6cEZCTgXDMXIW2bdTUB/dSRQSj83FRrZ3S/+k6FpYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766076; 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=Ihk6l9pkQDnhZzHNM0n+KZNjEFke5EPI+S18lkDPtBE=; b=Zp6PHCQx+O8cEP7dXAzP9GBTfQGpEGPGiwnqZYGHlU/v4eipIEfNzIDMJQOeuVwwQITIvgH083gJgqanOJxn/M9Q+xnmw3cAOP3kfhl7rPP4p44uvy2UyYPxow3tFPzMqWawX0t86r0fDqjhCkDIM6Xa0etXknBBhOY1aSyNqk8= 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 1755766075806487.7950851791645; Thu, 21 Aug 2025 01:47:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0xE-0004p7-Is; Thu, 21 Aug 2025 04:47: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 1up0vr-00032B-FX for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:07 -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 1up0vl-000159-Cj for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:00 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-134-28foPqeEO5GKRi34tILkCQ-1; Thu, 21 Aug 2025 04:45:52 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-24458345f5dso9343305ad.3 for ; Thu, 21 Aug 2025 01:45:52 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.45.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:45:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765953; 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=Ihk6l9pkQDnhZzHNM0n+KZNjEFke5EPI+S18lkDPtBE=; b=dUJ0bPwQ5NbnO4sirDd9HAfOq/FPu4qp7GyG6oi9LsaIDOGMWC08P5sLv3yYAjiDWPbQII 0+bqTgW8d9XtSssIKC+a9BZ3uI97zQYL6PtjZCUd3QaTcFzvJJPtf2I24E83P+9HAzCODt dbOFMwOW8XyKId28WuD7LB25sWvv6u4= X-MC-Unique: 28foPqeEO5GKRi34tILkCQ-1 X-Mimecast-MFC-AGG-ID: 28foPqeEO5GKRi34tILkCQ_1755765951 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765951; x=1756370751; 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=Ihk6l9pkQDnhZzHNM0n+KZNjEFke5EPI+S18lkDPtBE=; b=geq0/4l30l0dP6ji7jT3RiDiV+u93/8Kf9JBk0n0/XyjiuYxMJJlwHgSDgLIANFP0y qUfOb8e4Zs43SqnWxQ8PuCUKpBhHfs7/POwGHMhUxy2PloLbg6ZcKJNGy+hWXnrfLt/C M9TjYMkpbIFkPUlD6ErhceRk2Ly0Jt9hiso6cYueSjB7w4eu6Dyplcy6MomqO1+Ta62L 1bRivnlfDzKN23ln/jUxtrHFvi5wzmWP1uv3RBf2H/+2uzpHZDbEZ3Pf+V9F8bWsdeMG Hh+6Rd2TiaSZL2jyvTiK0LrzW9gE0iigItjuVGRYBwXQZZwUyc11g/YQAEmsJZ0B7m5U cn7Q== X-Gm-Message-State: AOJu0Yx3kup8R2W+Kc2xCdDU3+kwspDbVoSFa18OkDcPN1k8wK9P4dz5 sOVU9/+K+qg9W1qk8jPCqqYoVIBOdmc1kBPyHCAODOwfE5aX5Vv+O40dq2C7Rm8QIddyB5jlfr1 /bCO1uqUKM4AuRJ+c646FmtX3hWWoOo1Lj+MoHb9fOkyJSOpv7q/L9hYN X-Gm-Gg: ASbGncuTPe/e902EHnsAWnjrf1knPlJtkarWms4h+lbpuVuwLihy1rGj16it0upz019 J9TNFksPQcFVFdzMPeEAUwyItFxClE8f16x6hkh6A+0m3pucnAM/9uG+E5+RGDVFkrGKzPfEmi4 h0+T1vClbggDvzD61nNLl1Jl9ZmUZfql+mVzbEOtHN5KdNrAS5Bv5MjlOHr1qSY6dXKgmITHx2W WQF7ZN4ZUBJfvNARo0vEVrmQKDzBlvIvcjT0tfJPn4m9dLRnNkl+Ikh+/OmsQc653f55OdkjYce wxsdR+bp6CRU8PyJ0vXPNMankWHghPhyFtjdd4Sc4F4KlNvOtF0f X-Received: by 2002:a17:903:2f0c:b0:240:a53:dd37 with SMTP id d9443c01a7336-245febff389mr23659085ad.21.1755765951167; Thu, 21 Aug 2025 01:45:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEaLZWBQB1w092XmkT9ahW3rNYHnJjovPCV+qye6bZNZXd0Dsshe+JAzoxEp9TVrTX50HJxYA== X-Received: by 2002:a17:903:2f0c:b0:240:a53:dd37 with SMTP id d9443c01a7336-245febff389mr23658465ad.21.1755765950353; Thu, 21 Aug 2025 01:45:50 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:01 +0530 Subject: [PATCH v12 07/27] migration: push Error **errp into qemu_loadvm_state() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-7-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=6166; i=armenon@redhat.com; h=from:subject:message-id; bh=2GPGf4Sq7y6kiBRdOroq30uHxsa4iqqhvb39fHUhlZ4=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8mtBXnvnthdnuWoOp91wk+JeczfTzw4k3Jp8fat0 T59EkviOkpZGMS4GGTFFFkavgbINgUURkTavrwOM4eVCWQIAxenAExk9WNGhonfJocoOrJ8LV0c W/Gm8eTuJ4G3P2+cp89UEvvfw4ZT9AIjQ1fxiyKdxNVdO26oiL+dO39eyotFLde2b5inOG8Z33q XWE4A X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766078441124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state() must report an error in errp, in case of failure. When postcopy live migration runs, the device states are loaded by both the qemu coroutine process_incoming_migration_co() and the postcopy_ram_listen_thread(). Therefore, it is important that the coroutine also reports the error in case of failure, with error_report_err(). Otherwise, the source qemu will not display any errors before going into the postcopy pause state. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/migration.c | 9 +++++---- migration/savevm.c | 30 ++++++++++++++++++------------ migration/savevm.h | 2 +- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 10c216d25dec01f206eacad2edd24d21f00e614c..c6768d88f45c870c7fad9b99573= 00766ff69effc 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -881,7 +881,7 @@ process_incoming_migration_co(void *opaque) MIGRATION_STATUS_ACTIVE); =20 mis->loadvm_co =3D qemu_coroutine_self(); - ret =3D qemu_loadvm_state(mis->from_src_file); + ret =3D qemu_loadvm_state(mis->from_src_file, &local_err); mis->loadvm_co =3D NULL; =20 trace_vmstate_downtime_checkpoint("dst-precopy-loadvm-completed"); @@ -908,7 +908,8 @@ process_incoming_migration_co(void *opaque) } =20 if (ret < 0) { - error_setg(&local_err, "load of migration failed: %s", strerror(-r= et)); + error_prepend(&local_err, "load of migration failed: %s: ", + strerror(-ret)); goto fail; } =20 @@ -924,13 +925,13 @@ fail: migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE, MIGRATION_STATUS_FAILED); migrate_set_error(s, local_err); - error_free(local_err); + error_report_err(local_err); =20 migration_incoming_state_destroy(); =20 if (mis->exit_on_error) { WITH_QEMU_LOCK_GUARD(&s->error_mutex) { - error_report_err(s->error); + error_free(s->error); s->error =3D NULL; } =20 diff --git a/migration/savevm.c b/migration/savevm.c index 5793bbfdda593c984bd2230f4052c3e68808acf1..b4d21a4814d3b706e6b89b39528= ca269559e2e0d 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3161,28 +3161,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 @@ -3193,6 +3189,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); @@ -3210,8 +3209,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); + } } } /* @@ -3476,6 +3482,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; @@ -3497,10 +3504,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(); } @@ -3571,13 +3578,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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766133; cv=none; d=zohomail.com; s=zohoarc; b=YzCxPjvVCHX9D17ynSR9kvo8N5xjVXfl1UfknS1b5gy9SNxu8MtJTDNT6w2Fy2+eZZH2WyzvTMuMP7vv/qwabwdDWcT3eFL+BkAQ/LFf3b7dpXp4k2Xfu2sRJX+0R7bCp8uysj951PAGE9wqs12pCUxLbeZ2EzkgFYz1TRGlxNE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766133; 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=FvrinIyy0xcmffDzqRiMjP4R3TFNdU5VAX1Szp3XoJU=; b=LAh4dEujl2s5rER3o9IsjEaRshaJaQya4m+AYlSCUs9TRqeqnqH7A72oQ14onzgVe7a7EJUFQ5s2+9d5BBqQQMOXBPOVO36Hf8GFl5OjrFjT290UilBA3QeJNgMUYYyZdt1++xH34lnc3Tk0p4SOhUZiFxqBWRNz62AAY4djzdI= 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 175576613337763.57012566455205; Thu, 21 Aug 2025 01:48:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0xy-0006jr-6p; Thu, 21 Aug 2025 04:48:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0w5-0003Yu-P5 for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0vz-000167-DZ for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:17 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-474-HlxdkGQGOL-47dQf3qMawQ-1; Thu, 21 Aug 2025 04:46:02 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-24458274406so20174345ad.3 for ; Thu, 21 Aug 2025 01:46:02 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.45.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:46:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765963; 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=FvrinIyy0xcmffDzqRiMjP4R3TFNdU5VAX1Szp3XoJU=; b=CuAtXuxIJfCClOvB4BINjyqjJ1ce84jLJP3EXxERAqNWdqpgeYDyvacER1R/3qc9m8Xrb3 Os3gr1PmYGDSs0cjz/VEIbZAlgwsLcu0yVlD3a4bH3xrI4PnLuTWeGcGsC8e1zhyfYWVcd zVkWJfXvrXKpdBzshKx998JTAHgsFOg= X-MC-Unique: HlxdkGQGOL-47dQf3qMawQ-1 X-Mimecast-MFC-AGG-ID: HlxdkGQGOL-47dQf3qMawQ_1755765961 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765961; x=1756370761; 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=FvrinIyy0xcmffDzqRiMjP4R3TFNdU5VAX1Szp3XoJU=; b=B0ZmqijWwBXMiTILMFu5CldUaxpxF2SuOjOEg9M2NW5c2CCCQivWK9sghJzOylD4tL CYZiZEqt2dSlViyjih5S/xwmnKMCfptaXoQk0nZ5Hz7FrcLk6netmCOiWsfjAoV3MROv OOrC/arYROAXBm/XPInP+or8oFmEIPXxAQn3LaVeixmUG8Qxp1QIEOONh/1goPUy6P5N +GCvC+VfqN7UFsKZ6PV7mA7vEDc2v4hezacWfOGf6LuWu8SrlJEjHSHoTuE7TIox2fLh 2uDE4eJ+sAwYLcNNxErKSxhpzWL7Zkce/GhSsr5WPueUrj8/p6Po+A+DKEAKcg1+ad+h LUyA== X-Gm-Message-State: AOJu0YyZEfttPHeQXP6QQIsVqbcuFazgiQHmLcHZTa4ypAcxTKA9TVwk BrnpViVKzp6k1v0mhSQoP6z/lVKb9fd9osJYgp5I3u1M6IezVHxpGtrk7K4DWGg3P2nDwCK6tDg nieFvxVhBMWUDVZYPR5GBQQTf1AkPM1NG86BUXEDMYcuVSGnNq/O3k/gR X-Gm-Gg: ASbGncvhMHg093C2KaOZWWHPXR5LruldmjoX7EEV+CLQE7SrhIayT8V5vo3HqrYKoQg Qtgf5UsMLL8nNHNhPMFS0H48TI2ZBJKiFopPEsJEv+ocb4S672xogZ3s3lVMVJWo0d2uvsuvDcG PiEtFfm0rNk/jOSbhjrwFixhWSFfLebRORjFEHdrRVvFuQX4hALUtxNiMgfguZ18UflyHmRxw8E 4IpD2G6V1s2v5JgCE/b58Nfmvsf+qdc6EatYBG/aLzdn0uc6ny70oWrUOJ5JKxRNKCunYfUMhFA 3JjCTQFd/jqC2vQNQjvZV2Jz3uETmlJbnCIvKlBQNWH8NLe2zruE X-Received: by 2002:a17:902:ea0b:b0:23f:e869:9a25 with SMTP id d9443c01a7336-245fedc893fmr22122225ad.44.1755765961268; Thu, 21 Aug 2025 01:46:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGPbtMtQvJjxULvrrCQo5pggCELl5lW0j4zYOkcmLNSAWUcaesCKVAwEbKLS8k93PwN1BVl1Q== X-Received: by 2002:a17:902:ea0b:b0:23f:e869:9a25 with SMTP id d9443c01a7336-245fedc893fmr22121855ad.44.1755765960896; Thu, 21 Aug 2025 01:46:00 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:02 +0530 Subject: [PATCH v12 08/27] migration: push Error **errp into qemu_load_device_state() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-8-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=2651; i=armenon@redhat.com; h=from:subject:message-id; bh=eyIgiFCgY7BgGnZ7hh4U3zUHt6p/btjeMo4ZulwLsqc=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8nOr/c/uuzEK+GadI8pSPNOabB0uWWJ7F3+vS2dX Qvsg5I6SlkYxLgYZMUUWRq+Bsg2BRRGRNq+vA4zh5UJZAgDF6cATGROG8P/cInQ16viHpf7/9tW ZqkubPf076RMfeU7dzj7ljPZHTSewfDfncva8sFLe2cJ+V2ucxdH/gl5+c6R5yQnr/zVx9Hr/rv zAAA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766134904116601 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_load_device_state() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/colo.c | 3 +-- migration/savevm.c | 4 ++-- migration/savevm.h | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index e0f713c837f5da25d67afbd02ceb6c54024ca3af..2f524b19e6a79dcfe3861f1dfb7= 68222f65a718a 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -729,9 +729,8 @@ static void colo_incoming_process_checkpoint(MigrationI= ncomingState *mis, bql_lock(); vmstate_loading =3D true; colo_flush_ram_cache(); - ret =3D qemu_load_device_state(fb); + ret =3D qemu_load_device_state(fb, errp); if (ret < 0) { - error_setg(errp, "COLO: load device state failed"); vmstate_loading =3D false; bql_unlock(); return; diff --git a/migration/savevm.c b/migration/savevm.c index b4d21a4814d3b706e6b89b39528ca269559e2e0d..b46658b62ae5c27dbe9c02f6add= e2d4900b182b7 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3266,7 +3266,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; @@ -3274,7 +3274,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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766148; cv=none; d=zohomail.com; s=zohoarc; b=ZcDTG4RmVO4TmNwLi1oT67FbK1xdZEBaJxctdoUhniA689xmzCgI89AP2X23njqqqkssZODNJGBMhg2HDHz7GIMd9QLKeqgE6ue3TGD21dtzc8S+hKBtOA8XJP3r9QsjyMZCOWvNX+K2kFQZmnkvdmGbwAoRo8yuBMqaegEQvw8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766148; 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=HvGqbnJX7rqX4eWZeXjnwlaKL6UBCsUGn2+S5tLqjys=; b=jA3Bj+WuBvKpaK3A7i7PxQ5Fp/JlEFDIF6hHCRqdJHK8raiWZOmuqr/43GiXySaKjr7GRhTAFijaofBa8t3ox1o52R/5bQtRL2JhUg4I7kPNf9ifuzNziHFfgOxlqMkwSWfqSbQaXIC38hjhL8vJYTAXq+56rzb/092RF2YPe50= 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 1755766148406423.04026172018985; Thu, 21 Aug 2025 01:49:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0xU-0005mS-Ob; Thu, 21 Aug 2025 04:47: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 1up0wD-0003g0-4m for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0w6-00017w-SF for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:21 -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-255-aaoVcU2jN3aZ8gRvkF1cEQ-1; Thu, 21 Aug 2025 04:46:13 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b47174b2582so1315287a12.2 for ; Thu, 21 Aug 2025 01:46:13 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.46.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:46:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765975; 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=HvGqbnJX7rqX4eWZeXjnwlaKL6UBCsUGn2+S5tLqjys=; b=gSfPRyDOzt9+zpxQD2c/W8rTvlM9GS2uJfyWpyWNepGCEuRxTNIVjhzRV2IFPb4qF+Eomj SwL+1S4l8ZN6gR7LhYqlWo+ASsLMiCllv96fTgq2lbjltbnI5WroQabXuvQqc1QW/8g5ZL bVFZa2vSbTm9azS7Zg4O39O9d3Z8JGc= X-MC-Unique: aaoVcU2jN3aZ8gRvkF1cEQ-1 X-Mimecast-MFC-AGG-ID: aaoVcU2jN3aZ8gRvkF1cEQ_1755765973 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765972; x=1756370772; 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=HvGqbnJX7rqX4eWZeXjnwlaKL6UBCsUGn2+S5tLqjys=; b=qWdfXestopXsjNzVmCCy3ikKkaoQ+QaAht2RRo1DN/PD6Ww5NnROK2F9yQ4pjerpAo uWkM0628/iYEsMdmydgBtg9c8X6XRjKl1mPhwDveE3ECv7y+KzohcmzQZktPkAlZ6UX0 obG3HLLMXATKXIxOOc69n9TnefBELULIWQwtSRELyQmARmzFch8LJlLG1FjREvsnL6wl WqWlSLEFW6+NAoXSRpd/y8ShncQgLTS+v2HNt/wjKzD+zkPZL6l7oE8dQ+4ou2u/IAMB OIt5CuYgb4lbFNWp1QLMN6UYD0Ba5MJw3NjBJ1C0gPltshia0HF2Vl7tVxXdJARHOg04 TRAw== X-Gm-Message-State: AOJu0Yybar0KHj6wP8XMxBlSnLVQXUqHZJ/EFHXLotMwKCmaLbTForZe xJMjhVY49s76BfDXLd/+bLN+ape06eRo4qT4E/7ek7fI24jjwIFAd85RTrLC/7z9nPq+XrSo+Ce h52dEKJP8TwmrmQzP0g62MnnC40a35tZiKDncCejRVzl+MwGmfC2BTBq9 X-Gm-Gg: ASbGncsU4neycQITGVG8oCXqoW6q9g0zKuSBrdCox5pqRIJc/W/JsaZeFSGwf5WJlKK /4i0Qv2v/bP6Krp++7MGA1fj4tMuYRvkQl3Y5FZ7vTOB7oEQl2L9yhdOvKUS1i91CyEKnR8S3Nm wD5H43DAHmBTBzMDoiOPNwlw1Gqb8VmLuCvp8ulnMBsY5MDFmyj2OA8uoH5EdJSR848h8xGdj14 O6WWaZhhGKP8WKY5gtTPqmwlDLSGASn+sqBsAhUx/x6qXNQD6Vtk3x3dQVeoR7g4u0I4fC/EWC/ 7dZmzCtlAGLJw3PVtVeCQbJE9WjdiKo1fsvIxVAZ2pf5fLVjgud/ X-Received: by 2002:a17:903:2f10:b0:245:f002:d67c with SMTP id d9443c01a7336-245fedb0aa1mr21998885ad.30.1755765972464; Thu, 21 Aug 2025 01:46:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFXCuuC5pq+CEC/b4f9yLBVaSZLF8vNHn26Ikk4zOEqoNVSfLYExE1xySgNJHBc3JAAhlV9Eg== X-Received: by 2002:a17:903:2f10:b0:245:f002:d67c with SMTP id d9443c01a7336-245fedb0aa1mr21998555ad.30.1755765972059; Thu, 21 Aug 2025 01:46:12 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:03 +0530 Subject: [PATCH v12 09/27] migration: push Error **errp into qemu_loadvm_state_main() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-9-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=6279; i=armenon@redhat.com; h=from:subject:message-id; bh=Ko1zbLmZ1uvG5ie4sSUsKKEoJfQSRT9lJs4gvuHhZvQ=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8kuTu4qH8oF/RSdlC4Yrli5ZkpjjwqzUZXA7W27S lYoyOl1lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmEjYKkaG3U/T47sO/+bibu/4 XbGFrdTi3M4u69ZlTD+mWT49xGV7kuG/v2LR90Pmi+/pPPu7LnLd6w+rqkW2XHPMvBaW1ffcMuE ANwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766149270116600 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 Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/colo.c | 3 +-- migration/savevm.c | 36 +++++++++++++++++------------------- migration/savevm.h | 3 ++- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 2f524b19e6a79dcfe3861f1dfb768222f65a718a..642d17487d92c0a9508e599ca3b= f524e80b6fd46 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -686,11 +686,10 @@ static void colo_incoming_process_checkpoint(Migratio= nIncomingState *mis, =20 bql_lock(); cpu_synchronize_all_states(); - ret =3D qemu_loadvm_state_main(mis->from_src_file, mis); + ret =3D qemu_loadvm_state_main(mis->from_src_file, mis, errp); bql_unlock(); =20 if (ret < 0) { - error_setg(errp, "Load VM's live state (ram) error"); return; } =20 diff --git a/migration/savevm.c b/migration/savevm.c index b46658b62ae5c27dbe9c02f6adde2d4900b182b7..69222339e17a5320b64de270950= 4b2ad2cd584ba 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2105,7 +2105,7 @@ static void *postcopy_ram_listen_thread(void *opaque) qemu_file_set_blocking(f, true); =20 /* TODO: sanity check that only postcopiable data will be loaded here = */ - load_res =3D qemu_loadvm_state_main(f, mis); + load_res =3D qemu_loadvm_state_main(f, mis, &error_fatal); =20 /* * This is tricky, but, mis->from_src_file can change after it @@ -2456,10 +2456,7 @@ static int loadvm_handle_cmd_packaged(MigrationIncom= ingState *mis, Error **errp) qemu_coroutine_yield(); } while (1); =20 - ret =3D qemu_loadvm_state_main(packf, mis); - if (ret < 0) { - error_setg(errp, "VM state load failed: %d", ret); - } + ret =3D qemu_loadvm_state_main(packf, mis, errp); trace_loadvm_handle_cmd_packaged_main(ret); qemu_fclose(packf); object_unref(OBJECT(bioc)); @@ -3082,18 +3079,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 @@ -3114,10 +3115,7 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f, &local_err); - if (ret < 0) { - warn_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; @@ -3127,7 +3125,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; } @@ -3135,6 +3133,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 */ @@ -3155,6 +3156,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; } } @@ -3188,10 +3190,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); @@ -3272,9 +3271,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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766258; cv=none; d=zohomail.com; s=zohoarc; b=F9IeFwqiqSfY4l8/8KcDmwanAw8KFZ/dnpmhA+SqPodX7+wkQyoWMy65cllX1vlGWAsJL9fnsGhsgz7S/k0idV4aD8QkCB6o9SpWkcrBKD39p+HsC0KqJn/Ea04b6J2JVTf1khpAe+M4GC9S6FZteN6z4cteGTy0IrA3DR7eB90= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766258; 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=OM/kWFiWAteN4H2dnQA9jukvzVu2v/XF/Qvft6AxrV4=; b=ehZvG0UDwUiW/ZxRsbQsVP5zB8/W3e6tW0GVrYcfmaE0eA7qaFV/L0pqlrIHceTkXjmqCBgH+eXd52LFTlPOqAkbHSBG/lRTW3zGDLPUcq80KJq2asFPaIib9qaaOxNIOjlXBQHs25pcvgjWn5xMLLh1Sctc2ScP86zxG0UXjgs= 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 1755766258183997.2088776324019; Thu, 21 Aug 2025 01:50:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0xv-0006hw-Nw; Thu, 21 Aug 2025 04:48: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 1up0wV-0003wr-1z for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0wK-0001BL-R0 for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:42 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-316-UJIPQfpsNmiy-zXTdy85sQ-1; Thu, 21 Aug 2025 04:46:25 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-245fd2b644eso14290535ad.3 for ; Thu, 21 Aug 2025 01:46:24 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.46.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:46:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765989; 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=OM/kWFiWAteN4H2dnQA9jukvzVu2v/XF/Qvft6AxrV4=; b=VgmcK3WEuFCHxi+lSu+Y5tKleVH53sQsLByZFS3jxnN+WDjOCsGEXWEkjAsUvGUoMoGPYE Cfg1hULh1eQk3jFlx8WT5YuQNzxeytikWUmPl8HFRJAf3LkxSZevjqy+De3MKPjpFUXRWN LywG6qSv9ILqPDcDAwMqGBxRioYcd1I= X-MC-Unique: UJIPQfpsNmiy-zXTdy85sQ-1 X-Mimecast-MFC-AGG-ID: UJIPQfpsNmiy-zXTdy85sQ_1755765984 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765984; x=1756370784; 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=OM/kWFiWAteN4H2dnQA9jukvzVu2v/XF/Qvft6AxrV4=; b=UGLEb1Yilqs4IwdxTe24OYLGe9UlpSPpnEz34SPlosB2PPHVjKWM3m4pwF5hI0d3NJ 2MSmeBzXRGdqCsf8IFh+mY3dzJx/M7mGJBsTlcfiYKJvyCYfFeFOSd//cZPaeFgsp3H9 ucEE+xvqqHojztQogc8vf9Cu5SKW4KujuC5AJH87KKR7lXES/+VpD68f01ow051YdEu2 oL8Ldp9zfMia/wm7hQE4mHYJaYw/1MnA+inkwEx4t/qpVnbWPe+/QgytHCdHkne0CejM dzdKESsp3wK0qvtys7z6DpuHEnRwXuBHj7konokwFbsvwIv853ZIfQECKc4YYBGMVIlp n88g== X-Gm-Message-State: AOJu0YzpCZU8IIWODdEhMND6ySKSOxA0vUh6C2OrXHb/uwT3l79FEJc5 vI/j3t33FTooy92lhjkGiRhTOf6NpI3vQ7zrk0mmx4bMMgbWAeX4qqmft6S/M9pDd1oaM5iN8U/ rXlqDUN/A7g1VOwhCrHbKoC+zgSt2Er8XCxIeq9xYu8hLztDf7IxrurUI X-Gm-Gg: ASbGncsPuMwWAxkx+sn9VRnTrCT5oHOAbKLpnMQtXOYFAFi30HRzHtiCdLvPVXmlboh oxmzNHZTddCXfVM+TSJc6GGVhjuGg+6yI7KjTSD3lcUuq+5eLzGoG/zyqhxmqJWm/RD4nXyD+ax vUSdO1Ch4qBKV5QKZqfTKNacK61K4BrAkCHxDS1JmeZHAZKqyjomoCRR7mvN8c/Ac0S9Rg9Ceuo r9HrSZCi/ALDINW678UxedXH+Mv2jnsoQxU0gtfgKxrixBDUjBp619vtzsotlPrc+cRWammNMpF WMgeC+XIewVgUqaoIdLA729X7DZEzHYWPF8Es/g11e1G/gZdEI5A X-Received: by 2002:a17:902:c946:b0:244:9bcf:a8ef with SMTP id d9443c01a7336-245febecc4fmr21331925ad.18.1755765983941; Thu, 21 Aug 2025 01:46:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFyVoFhqFxrrqH4kAGaA4aG0dKVMCBrPwT+mWjIvE3tB1CKUbYkrrcGXuuH1rq4bG/X7WOGhQ== X-Received: by 2002:a17:902:c946:b0:244:9bcf:a8ef with SMTP id d9443c01a7336-245febecc4fmr21331545ad.18.1755765983532; Thu, 21 Aug 2025 01:46:23 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:04 +0530 Subject: [PATCH v12 10/27] migration: push Error **errp into qemu_loadvm_section_start_full() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-10-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=4751; i=armenon@redhat.com; h=from:subject:message-id; bh=B27j4MbJiuGOwzuroJ8FiCe/MPorYG30oeFl9vBiziU=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8kn383ibrunn/J0e/zJE2XKzME571SmzWpM5/x0g y3R87FqRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgImcKmH47/P2F8+9h8lb0i8e Yjx9Y/7JrqOVXnHr9qdNszQUOT1xdzcjw65DQhG1LRETtY1V7zcc29Gi8/ppo9mUeepJ5qb5Dx0 WsAAA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766260665116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_section_start_full() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/savevm.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 69222339e17a5320b64de2709504b2ad2cd584ba..b55adb7468e5356ecb636734241= f1a356a42a284 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); - warn_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 @@ -3102,7 +3103,7 @@ retry: switch (section_type) { case QEMU_VM_SECTION_START: case QEMU_VM_SECTION_FULL: - ret =3D qemu_loadvm_section_start_full(f, section_type); + ret =3D qemu_loadvm_section_start_full(f, section_type, errp); if (ret < 0) { goto out; } --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766331; cv=none; d=zohomail.com; s=zohoarc; b=kFoVUSllZNc1fy1Z/6iRPRbv7cLMRp7AS4klVI7viqj9PvXHICE9kuZZL6O2cIvOKfRJiEwXNeLnQ1ketgPRMV4IyuZvRBMvNdLsgy1KSbfqHRNwtWKVlHVMyCd1mZLnisZoxjBvB80V5a/NO0DNJ6rSfHrKzOmKxbckvj6UScQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766331; 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=DkIBrmqU3UmVPpuTfGUkQi3Qo/t7acfxhstmxrihGOE=; b=mK50BMJBLRtzY93ygoj6X/Sgt4BQAIUANJhnbD6Q3WQx4qWXjG/SyX3HjfYe35kG+izPg4/Ijt0EDv0QbRhh8e1hAxGZuWuFAABA7T1rqYZ/ETlWUUryuh4SSjm1wFP4yxaJvXi+ZeWY956wLwMJfJ+Ior2AmwGzhHCXStQ679c= 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 1755766331299438.63185184128486; Thu, 21 Aug 2025 01:52:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0yF-000844-9n; Thu, 21 Aug 2025 04:48: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 1up0we-00041X-Ed for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:59 -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 1up0wT-0001Ei-LP for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:50 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-318-99gZgqT6PGSuwo9480K52Q-1; Thu, 21 Aug 2025 04:46:37 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2461c537540so668285ad.0 for ; Thu, 21 Aug 2025 01:46:37 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.46.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:46:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755765999; 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=DkIBrmqU3UmVPpuTfGUkQi3Qo/t7acfxhstmxrihGOE=; b=YnK3pqpSviEMtMK891a+nlgRJ4kVg6bdRDBRiRJAulpoG7UrdAFBYPyWXJ/dD+t2IqglMN cF5vmlRw+chVDjFpRyFTZhVWN5f38wvEHRU9sO7xU5kytOpremn/+83/bQKgwIYnBxo9nb X8s3132tbZ+tZYuoPTxqi1xMyDgMPxg= X-MC-Unique: 99gZgqT6PGSuwo9480K52Q-1 X-Mimecast-MFC-AGG-ID: 99gZgqT6PGSuwo9480K52Q_1755765996 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765996; x=1756370796; 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=DkIBrmqU3UmVPpuTfGUkQi3Qo/t7acfxhstmxrihGOE=; b=KXVeFdXNLdtmryiy9r43/0w0OittoIjVWWC7PjoACtFgqSzZoplQFu4YBXYtnxbgrc 3l07JtLqUI8/RALXFA6P4Trm7HCMhPhyhWWeW7/YnGLLOi+pKuClpncE13UX9fhW18Xi kpx6UCf5aM45ZG/9XbGW1wB21LHtGLkG1pIciDyz3KdNuE/AytchOl8KQzdjfL8zXnAn dnIQpKjDtIh9ewZKIrOLRh+l0pZTkfNrBXr9iCnmK4ghI4ZKGDdn4ojycAbiIESt1k/g P374oAZaPc+XBOTk5kPIGTif/1j3QNEda2ZccjcKGnXtKIai20RywvOsr7ZASKS8pne3 52yg== X-Gm-Message-State: AOJu0YznJ31c5Xfwpe9CUUdU0VjbsPRx/AlHuT4hC5xXeI4cFfk0cQEr iFS7yR1hZwYCaVZS7PXoXEgqg74nFLwAzDz7qKWcqX5zcD156T858ytRBKqL12VWZCp+t4Xc19V B93Kg6L+Dn67l4zZ7QcNXqpRUYIjMqS65SSgH8wOh758rgMGRM4jh6S4A X-Gm-Gg: ASbGnctSNgxBpWb+dxpgWPhuU3Z0A6viUoqNeyZxkKhKtp2VXqxBdLbmK5zQiEObpAt c55uM/WnPvqH4WW7IEUUBZ3wUVcJcZFw+iNeZ9K2j/cGIuPcoPXUqD01x9EcJlSq1lfkSJQzyzw OzsqwnqGyJ2U68IkuE9dY77JNdxb0B3L0CMA+2jN7jg8nzrj59WkNWvPMB58iYQIdaHosbS73i6 Uce94FOWY3iPlqIx/zqPlqj2M8XATpPCrQm8biTE5blnBz6EnlNnzMuWgoMttJ4aYdYyB9S6Y3+ g+fRkrbwB73NzjGTxgW0v4i+mOsFW5HSXVEKJhyn5hiEAlxf5TJq X-Received: by 2002:a17:902:e783:b0:246:2e9:dac2 with SMTP id d9443c01a7336-24602e9dd52mr21310925ad.1.1755765995742; Thu, 21 Aug 2025 01:46:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHg3tbka06dAd9/eOpFctNaRhInu/oFrGI2JTSXsiQMRwBfOi4gOVGcVXWlNbCnXQM4x6jbcA== X-Received: by 2002:a17:902:e783:b0:246:2e9:dac2 with SMTP id d9443c01a7336-24602e9dd52mr21310285ad.1.1755765995056; Thu, 21 Aug 2025 01:46:35 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:05 +0530 Subject: [PATCH v12 11/27] migration: push Error **errp into qemu_loadvm_section_part_end() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-11-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=3319; i=armenon@redhat.com; h=from:subject:message-id; bh=EwE1vk6Jgm3Xnj0Q1uNXL1tpRUqGyiHG8RIWqMlxQcM=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8nvjLY3PhYqP/Rx6fSeUwZuhxfMtrA98H77oe05+ vtZ70xJ7yhlYRDjYpAVU2Rp+Bog2xRQGBFp+/I6zBxWJpAhDFycAjARjnJGhukTz65jyrrw2D7n 8PQ0oSSB5d8i4w55uXTd/s0VLLLhiikjw9NqT96WTNlz8qcC7k/ZwbvuQdpiUS6GL7WByW3N8Wt XsgIA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766333490116600 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 Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/savevm.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index b55adb7468e5356ecb636734241f1a356a42a284..8e0ee14cc86dfffee86e46e32c7= 500d23924dc8e 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2803,21 +2803,20 @@ 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) { + ERRP_GUARD(); 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 +2827,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,11 +2835,10 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t t= ype) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se, &local_err); + ret =3D vmstate_load(f, se, errp); if (ret < 0) { - error_report("error while loading state section id %d(%s)", - section_id, se->idstr); - warn_report_err(local_err); + error_prepend(errp, "error while loading state section id %d(%s): = ", + section_id, se->idstr); return ret; } =20 @@ -2851,6 +2849,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 @@ -3110,7 +3110,7 @@ retry: break; case QEMU_VM_SECTION_PART: case QEMU_VM_SECTION_END: - ret =3D qemu_loadvm_section_part_end(f, section_type); + ret =3D qemu_loadvm_section_part_end(f, section_type, errp); if (ret < 0) { goto out; } @@ -3134,9 +3134,6 @@ retry: =20 out: if (ret < 0) { - if (*errp =3D=3D NULL) { - error_setg(errp, "Loading VM state failed: %d", ret); - } qemu_file_set_error(f, ret); =20 /* Cancel bitmaps incoming regardless of recovery */ --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766285; cv=none; d=zohomail.com; s=zohoarc; b=kAdl+DKXUn5WDoUsfnTZbM8d4UnaV8GaDfMR/MzKmoUX8ZkiLUYS/aCqRjS3pp5J4ACvSYPev75fTf5jalrq8cdsLtdPsKiozsXfHR9aLCMMTQOndavaay7S77LeUO7yQGCCn9ttB6xq2/TePl06HkEiZ98MNDnR3w6Rdouuc00= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766285; 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=HDx1TxydTVZaThhtxRqVTqCB3oMEq2EVEPaa9+iYYzg=; b=CJdZGJdy/1cbDKxbva5JR1/yNnFGZ1P5fuTExqmei9iTja7Bf6HKfNdGhoGb910r6pMUVhZ4sRO2dCIgm1qchvYITi5Cr83eppy5zDxUosZnOMR7WTRgCqWU1BxU2HQKYeEBv9kcoKs5rO0RyT1ZvrKzcUxx/wtur1xM2+a9big= 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 1755766285506629.52263755606; Thu, 21 Aug 2025 01:51:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0y4-000790-8k; Thu, 21 Aug 2025 04:48: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 1up0wf-00042h-8e for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:58 -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 1up0wb-0001Gi-KM for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:46:52 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-111-FdbKQ8QKNsi-jKUW6mnoHA-1; Thu, 21 Aug 2025 04:46:46 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2445806b18aso10210595ad.1 for ; Thu, 21 Aug 2025 01:46:46 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.46.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:46:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766008; 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=HDx1TxydTVZaThhtxRqVTqCB3oMEq2EVEPaa9+iYYzg=; b=hZb+MRZ1w+fanft+HFy+aBWDQSndzCvlrpJ3xKTDBesRPubKBqTHBYdW0s1RVRcfkUJn0j epy3Yyf2bVP0VX4GtaXZCtRpHlZPKUfi374rbnDgv7rapxw26db+R6m8qUKd5xFBb6aJaL K/4gfyXTC/FVgVvU7t1m/m38L97bh2I= X-MC-Unique: FdbKQ8QKNsi-jKUW6mnoHA-1 X-Mimecast-MFC-AGG-ID: FdbKQ8QKNsi-jKUW6mnoHA_1755766005 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766005; x=1756370805; 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=HDx1TxydTVZaThhtxRqVTqCB3oMEq2EVEPaa9+iYYzg=; b=H/VL8cKk9EqKeh3D2ihzbbRFy8Gk36/XO4Tzczqg1KmixmWyov9ixAZElkpw4degtJ SBYWlxYUsk8Cid8gz3RZWCxfh/y2kG2QNAuxJPYM3M5Egv5T9dA1QZ4YK87NpyEshHvA hgHrveOUseBLeOauvfWCq2AnmKx2PtDlaK9HufMbTISeBmkdC4TZOMxW7xH36e65hHb5 b/uzGiUYy+prn2o48mZbwAxdu4XtWWNhRLtVHVMOUNn9e/UdQV0P1rl6ad/1z73eGPr2 ry8cefvoifTiG+Bdboh3yE0YylgARcXAqLUwH2Mpk8j9f/2BEl3FrmRoTFcdQrw+JI/J 7Rcg== X-Gm-Message-State: AOJu0YydGPZut2UUsTyWydbHzYmARy6LVUUmRLAifmANRRuNOj3WNA3e F1EWmEpshyOlv0nw+sVNemltX3xSEaOrk3VZTP/Fdfl6p+rPBoQsLpjHko8/O3QGKyPQg3XaTld ie70rgLU5QfwBBtYOAZ65QnhZ12UhBS3kvOtBoAlc1RPsg0S7gOxwjCNq X-Gm-Gg: ASbGncuC0eNbpgVCkG8xshD/0CnColiSMW2z+IGabQScchUiKu3koV+7ms6uPiwVTb/ Qa2suNCP0bl9McZm2KDW8Tq3ECs+6ypWtQDM6KNmgwGutA9ZG95uejDkV5sIZmL76VsBGdSA+xs tz8yI73z7c7h0MbCeyMifEaCzfoAhAccZVa/5WjQtejiLl+2fs4YV7g/sWjk1CT2HaPQVCxWYSt CodN/FmfCDHGepJ7exhlT/fXQT5aXhLKcBWEIdtSS/UrZfJ6EEnOcnfdI2X9oOLzmi3T/d7zaEb Rb6Fvsqcv5rWL5uY4wf4WR3G+WakH1n5y3ZKgFBEplEpiISUEvHe X-Received: by 2002:a17:902:d4c6:b0:23f:ecf6:463b with SMTP id d9443c01a7336-245fede2c3cmr25892665ad.45.1755766005405; Thu, 21 Aug 2025 01:46:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEJSyjyTeMOoAHBqrQdA8JNhICa6ztLFiZhLodGzIHVMp83m63LWfi2WqICz54r674NQQMFRQ== X-Received: by 2002:a17:902:d4c6:b0:23f:ecf6:463b with SMTP id d9443c01a7336-245fede2c3cmr25892365ad.45.1755766005027; Thu, 21 Aug 2025 01:46:45 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:06 +0530 Subject: [PATCH v12 12/27] migration: Update qemu_file_get_return_path() docs and remove dead checks MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-12-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3908; i=armenon@redhat.com; h=from:subject:message-id; bh=pYnktTUH4LvNohxqCio1lE2cWWMEzHkPr3eRbdcNnE8=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO8nPuTgXlOf8Y9mX0GvQzvdLet7bdt2e/qn3HqW7v 3+tEp/WUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCKafxn+8NgLmRgZpR0JT8nY dKdAdIVVzQEGrVunL0hv0jaqEX81jeEPZ96ZTSqx+d4LZz9jnGF83j/6sbvd3tV/C8+vCYs/+6m ZCwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766286804124100 The documentation of qemu_file_get_return_path() states that it can return NULL on failure. However, a review of the current implementation reveals that it is guaranteed that it will always succeed and will never return NULL. As a result, the NULL checks post calling the function become redundant. This commit updates the documentation for the function and removes all NULL checks throughout the migration code. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/colo.c | 4 ---- migration/migration.c | 12 ++---------- migration/qemu-file.c | 1 - migration/savevm.c | 4 ---- 4 files changed, 2 insertions(+), 19 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 642d17487d92c0a9508e599ca3bf524e80b6fd46..07a32044b58541eb9bd7c5e63eb= 6ca598f8a8933 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -847,10 +847,6 @@ static void *colo_process_incoming_thread(void *opaque) failover_init_state(); =20 mis->to_src_file =3D qemu_file_get_return_path(mis->from_src_file); - if (!mis->to_src_file) { - error_report("COLO incoming thread: Open QEMUFile to_src_file fail= ed"); - goto out; - } /* * Note: the communication between Primary side and Secondary side * should be sequential, we set the fd to unblocked in migration incom= ing diff --git a/migration/migration.c b/migration/migration.c index c6768d88f45c870c7fad9b9957300766ff69effc..35f769bc55c235134abb5554ed0= 1b94787d4bf78 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2647,12 +2647,9 @@ out: return NULL; } =20 -static int open_return_path_on_source(MigrationState *ms) +static void open_return_path_on_source(MigrationState *ms) { ms->rp_state.from_dst_file =3D qemu_file_get_return_path(ms->to_dst_fi= le); - if (!ms->rp_state.from_dst_file) { - return -1; - } =20 trace_open_return_path_on_source(); =20 @@ -2661,8 +2658,6 @@ static int open_return_path_on_source(MigrationState = *ms) ms->rp_state.rp_thread_created =3D true; =20 trace_open_return_path_on_source_continue(); - - return 0; } =20 /* Return true if error detected, or false otherwise */ @@ -4011,10 +4006,7 @@ void migration_connect(MigrationState *s, Error *err= or_in) * QEMU uses the return path. */ if (migrate_postcopy_ram() || migrate_return_path()) { - if (open_return_path_on_source(s)) { - error_setg(&local_err, "Unable to open return-path for postcop= y"); - goto fail; - } + open_return_path_on_source(s); } =20 /* diff --git a/migration/qemu-file.c b/migration/qemu-file.c index b6ac190034f777dbde0da1598483a892089d7538..f9ccee9a1091ecbd37e6b7d2081= a4446442b544d 100644 --- a/migration/qemu-file.c +++ b/migration/qemu-file.c @@ -125,7 +125,6 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bo= ol is_writable) =20 /* * Result: QEMUFile* for a 'return path' for comms in the opposite directi= on - * NULL if not available */ QEMUFile *qemu_file_get_return_path(QEMUFile *f) { diff --git a/migration/savevm.c b/migration/savevm.c index 8e0ee14cc86dfffee86e46e32c7500d23924dc8e..2446711e862233801d5689a7755= 17adabec593d9 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766194; cv=none; d=zohomail.com; s=zohoarc; b=Dk9S18xZqxMo73WS8X5ZAhsblFHKLzPrv+j+L45D3+xH4UnPpLn2DL5l+0wbY02VU+LoifUT5IDXCDpfwaqqwZqz4mwLA29HdkX5Q6PPEPxL2w6RM1wOyw23BY/TOJ14+9DbTpBxSWuwowUyecAfvgryRtX1GSeEOdhjyRPgxBE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766194; 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=zpqnEptwezU1dB9sFAUu0JGNQXbWEN6mcNeNsGNkqH0=; b=jy97XdN7FML0NOYICm2xOMnLMSMFd/Ge+simQeyTaJk5uehGUCZCvZhH0n4KoxbW+tWzSCPuv89LyDNYV2sOZIwpyOW52Aj6DF8Wx18pZFh78VJhT0SHYiKUDnvHhahAG9hsb83XE++fZjYHKNlEbxyhnjoEtAaZo6ynMjo7agM= 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 1755766194371812.5996625873023; Thu, 21 Aug 2025 01:49:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0yA-0007p1-DW; Thu, 21 Aug 2025 04:48:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0ww-0004MP-7W for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47: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 1up0wo-0001KC-Ly for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:07 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-275-RrJkEYQuOu6k9WcS_9qq1A-1; Thu, 21 Aug 2025 04:46:56 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2445806eab4so9706245ad.1 for ; Thu, 21 Aug 2025 01:46:56 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.46.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:46:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766018; 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=zpqnEptwezU1dB9sFAUu0JGNQXbWEN6mcNeNsGNkqH0=; b=gT6pGM2jCWaEiTzIe2Wl6tbwprI9n5aMgnhgHO65MT01WsQ5GvAXeO5/C7W91Lj+Z1EdRZ nFEMlDdlRNd1zRGcRjKYxwrV97HZ4MPIMk9nhfkAmbvgXzDxSp1W7IRylwQP8hkOgVNxYu u4GDF2afZluPDA0zL9MKdV+FGEurGIk= X-MC-Unique: RrJkEYQuOu6k9WcS_9qq1A-1 X-Mimecast-MFC-AGG-ID: RrJkEYQuOu6k9WcS_9qq1A_1755766016 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766016; x=1756370816; 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=zpqnEptwezU1dB9sFAUu0JGNQXbWEN6mcNeNsGNkqH0=; b=S4DJBuGzfIpmDxr56GaMEOhswSPFbhrBiwsAEElzFQQKB3jKwFhhKTkbyvjlRfY0Hp M+JNjfwuWloSxEjo9+Lq94w5mPgboJgovnrk7HJLELr5twBx8PGtKrZzuCiTlX9DC7/2 t6R6r5oT0QR+r865miOhWCZHt5Jof694cEGLPW/c0g1V5BbMSe7r49/0vLvPA8ZHMKq/ jgAjr29UNI5Rwamkz8WI/qyBavdcbIaFdtkJU8N3OTqPXNOGzQKwrnWNtEpRYDghh1Ni B8RJCRgB9HBf7VQK2XYPyFBNLP+8O8bbwyGbb2wdh9r1RWLP6aGfJixMx85SaKuZgMCT 5sig== X-Gm-Message-State: AOJu0Yzs3HOVziwHjlzRTtjFqqi8iBbDvUO+ebYUokn2doZ/ItEcM7Qy veWDf+v05Vdq1/t+f2CNxmay4jIlYok38vVuZe/w4jCcjYw52nI586UFM3t4RD+fdvdh+WwnVnQ Z4CRZ9+LQNiHKuscYL7ZhyKft3j95+QdBJVfOgOgz9HZ5BEXl6BEcwESq X-Gm-Gg: ASbGncvJ4DhdIRevS0e+7h+lv4rrRv4pOi7mxF7I8nXH8t80aP6ZDy7EkmsJNIkJILr AMtQY5OvjqItvW6dO7i92myPfIb7UeezAS7zp9sWJ9l96PQE5f2RYmgnEbPYz4tqGGKMASJfUcs z7URbUzDVvb/UPIRjPLJTAAfZhFdrOr2aJxgCDCdbLWl5cHAGhcbI2hf7dextZQ98A9V4hnOpGZ /nNboyCAUBJb6Jahje23hx93hp+yZKqPuDT5gt6lpnAzjpbop5OnCkK//mCkXrmQDXNjwhcGu/M L7U9iHqDXIwFsuxq75/LWLRhejYaok7TYLuA/B+o0Sh0Kqjlc18z X-Received: by 2002:a17:903:4b07:b0:240:1bba:fc7d with SMTP id d9443c01a7336-245fedcc268mr21255075ad.33.1755766015323; Thu, 21 Aug 2025 01:46:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGKLbSCd0SyJ3NhUYkW3PJAKfF3wYS6AAK7+AeX13WRmQ2ymnBFjaNYjShfRv7WuX/JHFlmoQ== X-Received: by 2002:a17:903:4b07:b0:240:1bba:fc7d with SMTP id d9443c01a7336-245fedcc268mr21254785ad.33.1755766014846; Thu, 21 Aug 2025 01:46:54 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:07 +0530 Subject: [PATCH v12 13/27] migration: make loadvm_postcopy_handle_resume() void MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-13-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2052; i=armenon@redhat.com; h=from:subject:message-id; bh=N5pt1gunHOlKLf2QzPY2g/q1GokUjbzWIX3PAZeY0eI=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOymcjfPYby+PMA4ydgtb2ax+ZIVGhcXGA6ZsrhpnE xy/hut2lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmMjGqQx/xZ1Y1x9jmmrvsX/x XvtZJssfc97X91SakGFfuvLgKrm3Rxn+B01nu7ZMuFNl35PjaffU04xTf4RrWcSen/DJKFyPtSW OBQA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766195721124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. Use warn_report() instead of error_report(); it ensures that a resume command received while the migration is not in postcopy recover state is not fatal. It only informs that the command received is unusual, and therefore we should not set errp with the error string. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Fabiano Rosas Signed-off-by: Arun Menon --- migration/savevm.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 2446711e862233801d5689a775517adabec593d9..f13fecb5cc4778974c883fbbc00= 7b0cd18d90e64 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766283; cv=none; d=zohomail.com; s=zohoarc; b=isqMZX20OZrG2UA/iuTe6/arQvicpKJwMTOytTp5Zu4XwwsRq6zsC+EsK+fkgE3AOOEjMhzKLBALeRZf+CIUIJdtj00T15eRi5vq3A7aFdMm9sloEndro956eb4a83LOrCNi4vK6EkcQM85RkbaC7eodiNcMNsp+woXpipSymtY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766283; 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=nlMHYTzuC0OJNbmajsR6kql8v59Nbj5zk+o2AatFeoc=; b=oI2VPk98s1aZLrzhGcvXB1IcllkUMa+HTTqeJgwM4hsEfv32KCzh8j9I5TKDp+jtNGG3jP+RTJuTWIBrxvokBJ+etcQDgM9sYdHDpSBwmCrktKUhHYOWedJnwo3w8GaQcNtJ6POeQ0fCPV9bX5h/1vwxqg/0aVdaRi/HzB9iRQI= 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 1755766283746920.0811412600648; Thu, 21 Aug 2025 01:51:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0yG-00085Q-1o; Thu, 21 Aug 2025 04:48: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 1up0x6-0004gZ-LV for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:23 -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 1up0wz-0001NB-Pu for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:19 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-90-s3nh1zcxMnmIkgUQGOlFSg-1; Thu, 21 Aug 2025 04:47:05 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-24458121274so9631145ad.2 for ; Thu, 21 Aug 2025 01:47:05 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.46.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:47:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766027; 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=nlMHYTzuC0OJNbmajsR6kql8v59Nbj5zk+o2AatFeoc=; b=An4eTq2I+SI8x9qm1LLfIOQh1s5ey3LYNVadJ5LotdeDjV2heMVfyCDPYrVwd0DkEqOQCF uRiW/KTf2Ip0BzWNo+erTM166KzyqzKJe4bF/eQlIKh8BqbbNgG/wnaldCkLwKjAVA2rCm JgXRL+HjM/RLkft1Rit/Kwt1zbOLO5A= X-MC-Unique: s3nh1zcxMnmIkgUQGOlFSg-1 X-Mimecast-MFC-AGG-ID: s3nh1zcxMnmIkgUQGOlFSg_1755766024 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766024; x=1756370824; 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=nlMHYTzuC0OJNbmajsR6kql8v59Nbj5zk+o2AatFeoc=; b=HNwb6ZSxn+I1inJFOlhxAqCT4nTqG5wLjaocpZMjhihjuISb+HNS0U7Wkb41X79yXn hutw1a1SSwKxZOFcmSdNiDrHvB64WlMBN35UYhQqZWBnZOu00fSmPc7QbXa8GCDRX/lN +uXvWi6HlVlXCBPI69gzQ5Ub39Hx0V3WEdxYcb/UYAc+cT0rZo5U5wi5iaQCA+Nvx/7J LmhqSmADaSSjGQ1xvDNZBaxz1Yd1oEIyOjLlKYVxytC0PmvNk/IB2/PujAHtRZgQRh8/ EcLBQUsga/fe7KuqHOXcaojYVDIGagJSJMWtDNHyvqBykAP0NsPdYoxkVw16593yf6ps VPkg== X-Gm-Message-State: AOJu0YxbI3IHA7L1VaxJGsUC1Y2QrLDJruUoqxBTlgQDswkE58OBVQi9 ofSxjHGt8ughX6Yv+vuPRqGI9RLn80+MmaHMRsm8BzCSEfD/CBPIw1B74b1MIg4aHXPXuUQ9iOR ry69laONM+r7Z02R2LI6t4wZuRZrfIJoovDtW/3NMf9PUq1SB8tvJAzkE X-Gm-Gg: ASbGncslHImk/dXfGMsYDOy8aVv7Td3uoIWzqe7cRBYp4ytIFI7MR3GMsr2UQZf33dh HQLOkyL5vSUtPZIUE5gFjGRmPVKYGHiddDOI0/tYxiAaHp8VNU3qQjhpKsxXvtbh4iQkx3PDL2Q aDpcSVfmsilRjrlNvzJKdhYJdr/ev5i9BBK8UMMi6KgF/KEnMSK4nmNfaIDwNkxkDiWhWMwKZXR UCOjBKTryxiZFayHWIlVglw3uuAWgnARt9K5CyZ2sT0zm6aUp7fPyvTNCv2f/BIytQVVHdEY460 doRWlmwgIfBlqltk7RDMfoDVuxUUAklVd/AdVa/mn97o8E1lOk0C X-Received: by 2002:a17:902:c942:b0:234:ba37:87ae with SMTP id d9443c01a7336-245febefa70mr23076785ad.4.1755766024413; Thu, 21 Aug 2025 01:47:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGzUglKEWC2d7VXmkQ+cuWP6XoL5D9VThNiuRuRV62zSz5khkWbAMy17K7BLi+RGwEoVzddUQ== X-Received: by 2002:a17:902:c942:b0:234:ba37:87ae with SMTP id d9443c01a7336-245febefa70mr23076465ad.4.1755766024008; Thu, 21 Aug 2025 01:47:04 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:08 +0530 Subject: [PATCH v12 14/27] migration: push Error **errp into ram_postcopy_incoming_init() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-14-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4806; i=armenon@redhat.com; h=from:subject:message-id; bh=EabNSGRQLm6cwS6/ht6Yf7DNHZhUD2jPEfZ+gH5fQEk=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOylbqy+8/JUicMno1ydpAX7fFNWqsN/qci91mBdmc 26uMLzXUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCIXRBn+JxYs0LFe+bCOe1ns jizHxgfuZ9a0f6vcHrcyVZRBa4dDMyPDnyRtgVjfWWpbn82P5F7y5t87pcLF32TY+cVmblvGqSr IDAA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_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: 1755766286822124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that ram_postcopy_incoming_init() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/postcopy-ram.c | 9 ++++++--- migration/postcopy-ram.h | 2 +- migration/ram.c | 4 ++-- migration/ram.h | 2 +- migration/savevm.c | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 45af9a361e8eacaad0fb217a5da2c5004416c1da..05617e5fbcad62226a54fe17d9f= 7d9a316baf1e4 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -681,6 +681,7 @@ out: */ static int init_range(RAMBlock *rb, void *opaque) { + Error **errp =3D opaque; const char *block_name =3D qemu_ram_get_idstr(rb); void *host_addr =3D qemu_ram_get_host_addr(rb); ram_addr_t offset =3D qemu_ram_get_offset(rb); @@ -701,6 +702,8 @@ static int init_range(RAMBlock *rb, void *opaque) * (Precopy will just overwrite this data, so doesn't need the discard) */ if (ram_discard_range(block_name, 0, length)) { + error_setg(errp, "failed to discard RAM block %s len=3D%zu", + block_name, length); return -1; } =20 @@ -749,9 +752,9 @@ static int cleanup_range(RAMBlock *rb, void *opaque) * postcopy later; must be called prior to any precopy. * called from arch_init's similarly named ram_postcopy_incoming_init */ -int postcopy_ram_incoming_init(MigrationIncomingState *mis) +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp) { - if (foreach_not_ignored_block(init_range, NULL)) { + if (foreach_not_ignored_block(init_range, errp)) { return -1; } =20 @@ -1703,7 +1706,7 @@ bool postcopy_ram_supported_by_host(MigrationIncoming= State *mis, Error **errp) return false; } =20 -int postcopy_ram_incoming_init(MigrationIncomingState *mis) +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp) { error_report("postcopy_ram_incoming_init: No OS support"); return -1; diff --git a/migration/postcopy-ram.h b/migration/postcopy-ram.h index 3852141d7e37ab18bada4b46c137fef0969d0070..ca19433b246893fa5105bcebffb= 442c58a9a4f48 100644 --- a/migration/postcopy-ram.h +++ b/migration/postcopy-ram.h @@ -30,7 +30,7 @@ int postcopy_ram_incoming_setup(MigrationIncomingState *m= is); * postcopy later; must be called prior to any precopy. * called from ram.c's similarly named ram_postcopy_incoming_init */ -int postcopy_ram_incoming_init(MigrationIncomingState *mis); +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp); =20 /* * At the end of a migration where postcopy_ram_incoming_init was called. diff --git a/migration/ram.c b/migration/ram.c index 7208bc114fb5c366740db380ee6956a91b3871a0..6a0dcc04f436524a37672c41c38= f201f06773374 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3716,9 +3716,9 @@ static int ram_load_cleanup(void *opaque) * postcopy-ram. postcopy-ram's similarly names * postcopy_ram_incoming_init does the work. */ -int ram_postcopy_incoming_init(MigrationIncomingState *mis) +int ram_postcopy_incoming_init(MigrationIncomingState *mis, Error **errp) { - return postcopy_ram_incoming_init(mis); + return postcopy_ram_incoming_init(mis, errp); } =20 /** diff --git a/migration/ram.h b/migration/ram.h index 921c39a2c5c45bc2344be80854c46e4c10c09aeb..275709a99187f9429ccb4111e05= 281ec268ba0db 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -86,7 +86,7 @@ void ram_postcopy_migrated_memory_release(MigrationState = *ms); void ram_postcopy_send_discard_bitmap(MigrationState *ms); /* For incoming postcopy discard */ int ram_discard_range(const char *block_name, uint64_t start, size_t lengt= h); -int ram_postcopy_incoming_init(MigrationIncomingState *mis); +int ram_postcopy_incoming_init(MigrationIncomingState *mis, Error **errp); int ram_load_postcopy(QEMUFile *f, int channel); =20 void ram_handle_zero(void *host, uint64_t size); diff --git a/migration/savevm.c b/migration/savevm.c index f13fecb5cc4778974c883fbbc007b0cd18d90e64..e65b9b57a7458d29956604da034= f4c80b3bec3d3 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1989,7 +1989,7 @@ static int loadvm_postcopy_handle_advise(MigrationInc= omingState *mis, return -1; } =20 - if (ram_postcopy_incoming_init(mis)) { + if (ram_postcopy_incoming_init(mis, NULL) < 0) { return -1; } =20 --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766190; cv=none; d=zohomail.com; s=zohoarc; b=eHlgQJqrmDiJtJWNVsxD/L1dK+ajT3CQqpucz4P1oDoAfV8VzPjQestUmB4vYi4CA5MPjHeSQp82Tr+huF8Sx+jJaYBhCAoffZma/lIBVwANBMSmWShxaEquMwkuiOaYDe3hMefkKcx1/t/og2CU96v72B6ZRH7uo9L52z3sGms= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766190; 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=wxdWT2e81BTfEG5avuaaGC8+ZJ+uzthEFyRkApZnAbY=; b=F8h6Yv1YS4lmb7dAjcdu+0ryWsD6BerOHjjZBzeQ6LLpyRld2W0/LRzvGecOpQDGdniZKvlhc0cj+84j+A4NaDzGdqPZ0v0ygCyW2aC8v+FlSyxYuIbUCf+vUm+vsofxDj5xZ03Z8BcntoE6DPMahc7MMrjdGdyh5jBC+TbXvFk= 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 1755766190688130.4713945667587; Thu, 21 Aug 2025 01:49:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0yL-0008Qt-Hc; Thu, 21 Aug 2025 04:48: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 1up0xE-0004vI-V7 for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:30 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0x7-0001Px-MZ for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:28 -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-265-mf8H0U2lPBGSwdgdihXgjA-1; Thu, 21 Aug 2025 04:47:15 -0400 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-324f2d61681so610991a91.1 for ; Thu, 21 Aug 2025 01:47:15 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.47.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:47:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766038; 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=wxdWT2e81BTfEG5avuaaGC8+ZJ+uzthEFyRkApZnAbY=; b=U4OLQ+Uvl5076XlMoRJChEiCkzqsMSgI2/dk/0h2OknsbKkkZ/zhUNXDd9mgpZyaBCe0R2 MqXPFyYSVW+TdEhfhS2Ft8yMEPTRS5cVHGI6Dv9Ay2rULbyFlM6oo+lYnB8yvoM+YI9VQj Vw7+rMSaQNSsFL1bI38x7MpqTZqKjc4= X-MC-Unique: mf8H0U2lPBGSwdgdihXgjA-1 X-Mimecast-MFC-AGG-ID: mf8H0U2lPBGSwdgdihXgjA_1755766035 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766034; x=1756370834; 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=wxdWT2e81BTfEG5avuaaGC8+ZJ+uzthEFyRkApZnAbY=; b=U859GdkdDcIMDkNBUK5tSdWat4E0doaSDtl7VlV0VbfO0n2qcQ9bSuJfQtU29NYJ0H izDRW2WCK6FYFbmd4W2b3X5X7O/1COa1LYvpyon2vnU6yZE8xRlMhOVgOpkfCU3yT1j4 dnYSYAKK2UCNuEGgjhFz0NiNuN8w/Kkwb8iHEDHElsuswW9Xi8WhB4GFrALImY0v0T+v crlARLdKyxmO3jAS9ETcruRH//C8cL9aUNI5f6jckWnbzlStobqu78MSLQf/U9WF92Qy PHyVjsJE/kG6G2Hq8r0jLUly0SI0MxlGjQ+z6hLp3kMoCZrTK6xJ5OAG8TVa+xplrrQT RfMQ== X-Gm-Message-State: AOJu0YwtV+pJDjuuBJvOeq127xMSw8PI1PjKKqP3MeWdolz9VoBug13o IAkFC3wDLxCaUgDhLvGQ0JXlYhdTYkJ7QI/FIA/auDIiImvjn+BSZK/ZRd/0CFkL493KRGV46VX ofLrewbi+Khk6BMBKUEyk1/1/u9scJ5OY0+hmetPUGxMDNVNwfKvbTPa6 X-Gm-Gg: ASbGncsuYDsskihr931VOVEVExCdUyTf8KsSRB+zsEfwtaSEB0Ovgpxefs7snhf0WFN b+yXvJ+vkNRRmulhYMjrIxqicUi6BKop22abRl32q6k5k5mSeLToYLGW49N9w9IUy81FyqvHXNB u8cQi458CcQhV9myJ9c3TBhOTOQffesWRkIUAKgxmWl8SMg0fjd+pClw4EvzrTtYRnc3kNstZet G3/6/6JH/Ekko+heBRm7kKulGL+nKyqaIiluEzouSY/PtIskzcgnZDxIJe98Dj38YGxRRZ8qHSy 0Sgjc6jB6pNYNoiOzdFOubHOcFQzf7hR8h8MiBQX/S5sUKmfhO1j X-Received: by 2002:a17:903:198e:b0:234:cc7c:d2e2 with SMTP id d9443c01a7336-245febef6dcmr25061575ad.1.1755766034555; Thu, 21 Aug 2025 01:47:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHHjn+xXGffDmHxHiOoNKxf0qkIVXWrdvArZsD44o7HDhGXs6/lvnuJb1Yb2p5w0MXdwSLnvA== X-Received: by 2002:a17:903:198e:b0:234:cc7c:d2e2 with SMTP id d9443c01a7336-245febef6dcmr25061195ad.1.1755766034168; Thu, 21 Aug 2025 01:47:14 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:09 +0530 Subject: [PATCH v12 15/27] migration: push Error **errp into loadvm_postcopy_handle_advise() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-15-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4838; i=armenon@redhat.com; h=from:subject:message-id; bh=fsxfYriAPKTy/mJTkJeAmz/dQHM21bj/O8MQlA3on7c=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOymn+aVfbJlx+rH+5uAFHq4nKtaKO/jLTpl2yIM1i Xtd9u7lHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACbyl4+R4dEmC9vb7wJe2v6Y q+773cr/KM97aa+JMU53AnN+SDBJeDIyvGFItpk749c73+lxOzKE30xMmfYw82v92nm3/75gsru jzgAA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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: 1755766191714124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_advise() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index e65b9b57a7458d29956604da034f4c80b3bec3d3..b4a33fe740a21d4133d01ae8da8= b8fbf792fc034 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766547; cv=none; d=zohomail.com; s=zohoarc; b=ZBw+4WsGfKeJn4X0Pjn8/fnjz7sWp/8O1GUdnunNf5xZQLwC8Fou/JAsGI3tOSAVFW1YBAnuh7smML/Bk2OsEEw0+m7GM074pOi6DozRcZZmZ4Gp7O+TEoAW4H0cj9UsPblHF9phZhlXvGtQdOgUPRrmfBhJK1lFSKoPfUCg2Nw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766547; 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=rmVCGkXBVlG9OmuJxAAdE/6RWrIvRLkbN6MrxJhMuAg=; b=XP/7TrR1ZsBEw4jlHOyNzHEuMQSeObSNwdZ8A1jr3BGGPi6OqgqCwKja4ijZgmQMs0AysoxR63iGwVlu43YiITk9d3drAq8z6n+LcXzHPo6tHBGLOitH8BDRLqEOPMS8UYqxJp32+XVozJHQ5f5cwBJMz0IFGYPrt3F0iflOSNI= 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 1755766547311122.5170818081308; Thu, 21 Aug 2025 01:55:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0yM-0008Mm-L7; Thu, 21 Aug 2025 04:48: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 1up0xR-0005lp-EI for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0xG-0001TQ-Al for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:41 -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-505-ZOq0oVGZNGGyXWLweVcbJA-1; Thu, 21 Aug 2025 04:47:25 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b4716f9dad2so1282494a12.0 for ; Thu, 21 Aug 2025 01:47:25 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.47.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766048; 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=rmVCGkXBVlG9OmuJxAAdE/6RWrIvRLkbN6MrxJhMuAg=; b=PqTLT/poOr73cPCdPf3ihUJ6ZplaezYJ9pBiD8i7ZlkJSLrGV1qFvi7ucx4eaPhNfHdweB sEM1WkmOCbDIQhQoK21vufRKTX8ljWTQlgj7NX1TsuR0QEVRU8mQRPMe24JY4IXSDwSofb SzqrJMhh8F7JQqPorncJn6P6K5E0c/g= X-MC-Unique: ZOq0oVGZNGGyXWLweVcbJA-1 X-Mimecast-MFC-AGG-ID: ZOq0oVGZNGGyXWLweVcbJA_1755766044 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766044; x=1756370844; 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=rmVCGkXBVlG9OmuJxAAdE/6RWrIvRLkbN6MrxJhMuAg=; b=MX7/QkYVtgWPMxSUL9N1aAndq+1onIjtZ4eso1n37YTUbVy/pekCuuHHGXoH+06cry SD6K44bGA9lefUtehz1KPdCyn8fk1UjcOo9tOp7ck9dKnp+mZYOaJM8TSeEahwf15G8g 0hLecjeBMbaZsUEaCtAWWJ50Aeb1u2xLKxqUJsAOCtj3NCXuHclkKsulZYBUyx9MNHBr lTSY6K5JFEBKwwxNxq6tNztNPQ994w33dZoamp9lWfhAAqQL+O2ptyDU0GGFvfeCKa9Z TVLgwURwCoC6HLnLwpNn8jxOwKiVk44/030BQwljgcYirdkTfrPiOnYtC1T9Mjm3iEyE w5Ig== X-Gm-Message-State: AOJu0YxHjCYC9iJajx/KJQaISpR0KPnmUN7pTUJAGw3DoUVWkQRXKtiC nE1eH2GHqFeUAuGcfzeErGLigg9GbMGSMnR8/D6cJaWLBJoGHVAEWjDYDsvOMbn1lKlLCq/7sdT RYXN9UaC5stsCFE6YM7ibvI8rp6z7LNvoqDWTqA/bSLpzDHFiuRE4whGl X-Gm-Gg: ASbGncsVGyU41J7y3uFXEdq2rF0q0AleEctqGbfuikOcpFElC2Sm/mrqb2mPOxqkBr7 Ia38FtgKur5fe/dDIjggvtmCBpe4k8FQxFlkidlcLajcvxW2ZOBoy7cFcQ58OGco/G6tzlVdkxe gfbGIXDfV0047QHNiSRb9uJPqraZJR9qd0DWlouA0fSQdH3znd5GE4bMoNzD4y5g11/Oh3d3j09 K3QtqUD2iKt/dG/mqzArtO8URbqfdkNRtXZPuc2BqSF3oSj9P/070TxscCzEUlXXNpKKzj1KmtS iR63J/hkGD7PHNwI+lGKqRzrXby9vrgkoJRZ4XcLa3eyaCNuoFXn X-Received: by 2002:a17:902:ce88:b0:240:8cec:4823 with SMTP id d9443c01a7336-245fedd00e8mr20807035ad.41.1755766044010; Thu, 21 Aug 2025 01:47:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGXV8tsj8Cnir/gFie9u5roEibR2JMIWZ5n7DHuIasMdN+MD+2MR982/iWJyOPinIv4ACSN3Q== X-Received: by 2002:a17:902:ce88:b0:240:8cec:4823 with SMTP id d9443c01a7336-245fedd00e8mr20806575ad.41.1755766043566; Thu, 21 Aug 2025 01:47:23 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:10 +0530 Subject: [PATCH v12 16/27] migration: push Error **errp into loadvm_postcopy_handle_listen() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-16-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2751; i=armenon@redhat.com; h=from:subject:message-id; bh=LgacZZsvdvvq64aNDEPGzgt6VUFebPspAlkqDn4XxDM=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOynPTf/tXspy48dx9fWr83onyF2r++Fpc6XHoyvQS MBzl/X2jlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABOZ5crI0C182PjWF5W/Z13E 1CLqzBoUl2fe6LFh/rU5u/TQrwkqdxgZXm6vO/x2922tSWzz+XfF7NifFVF4bd4P/Zo3vhdPZqV qcQIA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: 1755766549872116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_listen() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index b4a33fe740a21d4133d01ae8da8b8fbf792fc034..6408257ef2148bdc4b753500194= eaea8384cd120 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766428; cv=none; d=zohomail.com; s=zohoarc; b=A3Dhn3BztImlS0mT383gtNSNKp27WkuC4UdG+PuDXFeNXSErDqdiYvDAAnzBh75CjM0skXSh8xHvS0C0uUIUb0StbG4DmpR3wU9/YxOrz2sJ2kmva9eiIu51CKDBFV/0URJ4z2GRMJu8hPlr9wNZdQ00BOPO8fdVx6MWmWK+WQQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766428; 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=5MpTvm5RaxQiDa+wZwc621Kz6WxGcmOvInmt1mQAj3Q=; b=oFhJ/f4mEL5VgPbAZP7ZSF4X+GYUk/CJUH0Dpz8MPqDZf/miIf3K8kItrb0wtohGP3oMTwXebIBKlJHgE5vYDkGxrd1MOnQ4c9d+D+eRtKkdXKoOoy2eHIkAHGzBK6Zr7fBklyknK/y38nm0qB6crWiy3eC9VHalZhZB3cC3oeo= 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 1755766428188475.90772183093486; Thu, 21 Aug 2025 01:53:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0z2-00012k-Jv; Thu, 21 Aug 2025 04:49:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0xa-0006FV-WD for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47: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 1up0xT-0001X1-MF for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:50 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-226-5hmHKuBzP1i2SIwzAWXaPw-1; Thu, 21 Aug 2025 04:47:36 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2445820337cso8882185ad.3 for ; Thu, 21 Aug 2025 01:47:35 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.47.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:47:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766059; 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=5MpTvm5RaxQiDa+wZwc621Kz6WxGcmOvInmt1mQAj3Q=; b=UGWr1UyR5FTfCP8dwMdV9FFf6Ihh5hzqlcR9zFoic1SiXeOXECNjYDZk5yvw5bMgd8v3Cq 8rHTqzu/76kGKF4zvU+oNakDTkzCqip9uJfRDXQ24Dy9xBJ0E5YftLhLq/C7Gn0D5gmu4/ jpnnptjaPTrbCHX/Mw54dB1O8atD4r4= X-MC-Unique: 5hmHKuBzP1i2SIwzAWXaPw-1 X-Mimecast-MFC-AGG-ID: 5hmHKuBzP1i2SIwzAWXaPw_1755766055 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766055; x=1756370855; 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=5MpTvm5RaxQiDa+wZwc621Kz6WxGcmOvInmt1mQAj3Q=; b=w6YAGd73HNf7xqre2ExvNT4qFtP4E16UPQefWbZfHZVS3FKp8TTkINCyEaI9fluBSK JZ1l1CUgFjk3iei+dzTlYPFjOWovNYfXw+/YglCaazJgdB4AnLTrkjdN0zEFI2+y4fhE w/ucp2FoZo8SN8QNOWaks5v4b2z5sYaf3rhebWCNIXOoZO4udRVvpAWNgxhxJeEv9n0J hRNQApoDDReiGREyZSAKQGjAIEqsUwCaBdbeeJCIsMGb/2Tzo8VjS/n/YbDN9ugLXa8e PJJLEbbI4uXFyxGIfbvHGS7abx5aoPd9VlNpfxvbaIawERhoIY5bz+qG+s6pSzFIDRRz KH0A== X-Gm-Message-State: AOJu0Yyto6Jidnwz4RQ9hM0NGuphwpQRB/DMz0zda+cxwGsg2HGTcI21 dx6jnxLlwnYkaPaM8NOE/NV/4OeCsB5RklJQpMwmP+VxVHAOuxCwMMruQiTYQt6f5raZSd25Fxv QchDWNi5DHyvDuGpvGYQNMXbsDKkWtP/0a+Wbv/AgZq0yUXPFiu9pwt7X X-Gm-Gg: ASbGncvjqHr3jsIN3OIQu5DTJsWYhR5xD05AT8ZgiBBaFUe+JwKZwhpW0duwlWFi8R+ v/KoIs2xECiwIjAcA3tVQT++kCjKtMxcbTMXbPwjmknKz121ZBuXef+2U936KLrWDZpXeOd1R5L bsb3KeBCjh+aTwIi9RkEKhEpnnWnp15RmeJyQNG9UxI1/LjC0hoyKciktegZtVD12UqzeWNNcLE bDThqiDGSUyi5YtlzV/vNonxCHiY33c4eOP7ZKGe46CYv/S5qyO1iubljO7+Q8MIsewH/u6EKue nUXBl3a+g79zzzhmv8Apze9zlLIwTUCVbELg5QxCMe+0KKX12FsP X-Received: by 2002:a17:903:b0e:b0:240:3915:99d8 with SMTP id d9443c01a7336-245fedbbe74mr21816115ad.47.1755766055020; Thu, 21 Aug 2025 01:47:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFFzLg2q3w9TIYnk14mg+E8Rf4gKj87xJ8vIu2+1v+kppUc/I3qDWR7oWP5K8yq0h9LgDrk3A== X-Received: by 2002:a17:903:b0e:b0:240:3915:99d8 with SMTP id d9443c01a7336-245fedbbe74mr21815895ad.47.1755766054639; Thu, 21 Aug 2025 01:47:34 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:11 +0530 Subject: [PATCH v12 17/27] migration: push Error **errp into loadvm_postcopy_handle_run() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-17-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1888; i=armenon@redhat.com; h=from:subject:message-id; bh=ANnJVFbZEDL4HCdNfafMLBvHi/TIEmuU6PMel/6BCzc=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOyln0vrUG88+Dz+/vPRioNNEA868G5nVYqf1b95we 3+ByWluRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIk8kWD471a2Y2q1UfAiNwOu t1aZ5/6458811C5Pk4opEav/v299K8M/hb1cvFu1L84V97qwdPpmH4EJX/f/tmt/4NTY5PzF6+d lfgA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766430325116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_run() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 6408257ef2148bdc4b753500194eaea8384cd120..348ea9d7e57927c57131e8e747b= 446c232a9cdf3 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766409; cv=none; d=zohomail.com; s=zohoarc; b=iOvXtmMOpqT29ZTYpfEMXdy2VMi9icE3Fymva56wa+fcQCKHwSt+kO/COpnKK6A1I2wYKl0uZE9E1R/j9ejpFt04PxDagOrBjyJJfllVzmHz0x2c9qtLPcZJEtRVIXRpreq2hpVpYmUqsKSOGkW021sAlv7a1fD5i16/EvFUvaI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766409; 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=8FO14PH4lLpI5ovEyIqsx9TNW7UAeWhvxdRm5KT2O9k=; b=RtlWSBzWFbW7K1IMwAQvvlDyJBtYYBRsIZ3uvoqC0tZWp87FL4RZjuCLjB1UxG/yKfQFbHnqSCkipF//wk8ixHcwx0OZukrMSwfU/7G+oX4RF9iHRxHTDPBJUETpa8Uh91l0RZrdHaszmvyokR7bmZIskuGMkhDZ7WKyqlWpCjM= 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 1755766409315928.3919320337396; Thu, 21 Aug 2025 01:53:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0yh-0000m2-R0; Thu, 21 Aug 2025 04:49:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0xf-0006JR-TG for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:59 -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 1up0xb-0001Z7-M8 for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:47:55 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-54-HvQiKr50P8asxTEoG35iUQ-1; Thu, 21 Aug 2025 04:47:45 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-24457f59889so8414455ad.0 for ; Thu, 21 Aug 2025 01:47:45 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.47.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:47:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766067; 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=8FO14PH4lLpI5ovEyIqsx9TNW7UAeWhvxdRm5KT2O9k=; b=IsuvN5xWrQUzCSZvL/wRNf9wIIbX4iXbdAB0E7lgg2hltMVyfRGXpPcucXxOUaLShIpasw z6RXfxjH9CLC29uXe+HxC+VEMKSyhGvZHHHvZCRP98xRSlb2bnTwyPkUxpi/a01ENXI5ZZ JUMcm3fuWI0Y+bBwz5iHAqw+gQDSlK8= X-MC-Unique: HvQiKr50P8asxTEoG35iUQ-1 X-Mimecast-MFC-AGG-ID: HvQiKr50P8asxTEoG35iUQ_1755766065 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766065; x=1756370865; 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=8FO14PH4lLpI5ovEyIqsx9TNW7UAeWhvxdRm5KT2O9k=; b=bZQVa4x/IJHeOEkattfcMa4Xj7gz9hhVJ2WEdIxkJ2TD7quUeKQRDhVZdxC5sRFOwu eeW6dHgb+8fGzr+SlNuFC4+WcyRhHhzlBnbR1pTy/ZdEqQD7eNNJNSFskKZKHAMtNxdU dANSk4uFdpZ933UTo/J53UmWJAr3DFcn88wXpGaWjh7ZjBdvKYN6oTmpLGfCd16Pg22O xbEkGWK4QVllxt8dK7KUID1XthEvK0CaFzYZbnlxkFuinA4DP6UJcGvz08G6PL3QXLj1 X5LPXp4iLGpouwb5YgUAmYhannyrcNvDxUAcWV4hPZZToNpQbk3Da8qy/UhVjUNy0qXZ C9Qw== X-Gm-Message-State: AOJu0YwTb5vXu2iRUEGBUSo5logtC7rnUECCYS1U1BHLb6UYAs6FWvtQ qCd0uhP4F29rKu0M1eBWI1wno6gvlYA6Q1kccLqouE2ywcU4nWSbFv4/mNaT2uYBzNNxEbkDFdy f308eMk/DSV2nWJ4ZG3tT6zF28h1Zyv9942AhohOdB30UjGrSdUrTInJO X-Gm-Gg: ASbGncvadAF8SUJn3fncw502IuxL9W2q0xSEJ7uM7+MVDh9g+3qAhoR/+cFUgoJjw4X a8TXf1Wj82e1WyhIfnm8tRHSPQn4AAg3LnC0v5jGgEzYU8TPblHxQSXYLoLqT1cEOoinj0nQNfg yScBigU3M7qudAvGyxwmb/j60m8GCQyh4IOp+0pOpyRyT0Mnr8N3x7yMs+Elw137z3B+IVuQLw8 ztWKY0EqmEPDQ+t1zBPpoFWosmLvxfq5IkD0wofl8q0uNE43rtk1weLu2jDplvLnvzv1D6jUVeO WaTr2+6w/d/biZs/CIc6ZuiISDQHY9g5AdYwwI7a+R3yv5Y43+aq X-Received: by 2002:a17:903:440f:b0:244:5ef0:d258 with SMTP id d9443c01a7336-245ff874e99mr22749915ad.48.1755766064705; Thu, 21 Aug 2025 01:47:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEWcGaG7mkLl01PAlHDjQwKo8yhM5cKQHqs5L2UKo3pHfPKllF4MLcn53VgMP72zfhiVQznUw== X-Received: by 2002:a17:903:440f:b0:244:5ef0:d258 with SMTP id d9443c01a7336-245ff874e99mr22749625ad.48.1755766064291; Thu, 21 Aug 2025 01:47:44 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:12 +0530 Subject: [PATCH v12 18/27] migration: push Error **errp into loadvm_postcopy_ram_handle_discard() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-18-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4329; i=armenon@redhat.com; h=from:subject:message-id; bh=9iknsY3BCg26MtH4QZ0BkNi4PlMcFCHBWM7DD/Lc7j0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOyldi8XMH+s+SFIwmRZX5clVMvfpJEHtnqWv+H0yd DY4Z8t2lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmMhZc0aGT8J+6g3xl9etyPA3 d13QMluaMTJl63NeJ0NXE49WKyVjRob5mcy7biz29yz4FbfpUsfj+etj1U+olJ3uOPxX+mbPL01 mAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766411225116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_ram_handle_discard() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 348ea9d7e57927c57131e8e747b446c232a9cdf3..c38646d5c3d75c64712561984f6= b1df92ad55feb 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766438; cv=none; d=zohomail.com; s=zohoarc; b=SytXqynZxMViQNfFb1zxRzEBv/G4OCs6HOwHV83Ug5PyAGfHVX6y5xKu/PKxQx5BYN18IoH0XXo9dfRJG0PJ3GkLmpz44sqZW7Nq3+6fQP08akPR1LYNjAyZhd1+RUlLPAWq3qKYpqcKYGnbMBjQx6yRVNRq0rEeNhP+WTeikIw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766438; 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=KJlG6eaVi9W+kzO8rXIp8Lrphbsej0OBLy0MdGC0lwk=; b=IEH18NmSNp9t8M4KUHutYBJz1V6ddVIE+LCmib+3ZLc5VjYN23bZr9uasqCYUr2Aj8z58ADphqYdLcMuhIgj7QZrE32MHyVKpONP5jYbHYvFLB00m6YNUqN1AOSH2oewwA7Kw27fnBqJlnmI3as2lPbhqNYOHaC78dDzgXMTBUw= 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 175576643891959.191879638880664; Thu, 21 Aug 2025 01:53:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0zK-0002Ld-Mf; Thu, 21 Aug 2025 04:49:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0y3-0007Oi-4Z for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0xp-0001ao-GC for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48:18 -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-22-vvSRXQbkNEqFD0D2R9Pouw-1; Thu, 21 Aug 2025 04:47:57 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-244581c62faso10768785ad.2 for ; Thu, 21 Aug 2025 01:47:57 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.47.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:47:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766079; 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=KJlG6eaVi9W+kzO8rXIp8Lrphbsej0OBLy0MdGC0lwk=; b=f0hi0gkex1j5gvm9/au5gQIgsJWEMWBzLXJBMktaXc6kfPDIcD0KIja8PaZ7DZNvfaM2jT Ndr/xli/GTjr3kXwFj8gLAgRl6tPZN2CtCqsDO/bIcZL46QbbSuPjbAXiMiST89Au6Arxl OwJE4fCKlStHfizD2uCwvypaMjQk0N4= X-MC-Unique: vvSRXQbkNEqFD0D2R9Pouw-1 X-Mimecast-MFC-AGG-ID: vvSRXQbkNEqFD0D2R9Pouw_1755766076 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766076; x=1756370876; 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=KJlG6eaVi9W+kzO8rXIp8Lrphbsej0OBLy0MdGC0lwk=; b=GT6SBRqZaxsQbtV6nd0FUePaZpaWZACC6KOdR8zF3hTFbo//JcMThXrdnohP0ahrMt EQcAeInrjK97A9DSAii+lKETQ/8JugILsLp10MbhLRZESruIRU+T7gCeftA/INjtASEE 7GUXWPUgTDS5q+fSDA6FCFSu33V0F4IbnyoeaKLs3WGf8wodZwhcReq54Vsz0IyBDOrm 4Kgx+cLWtTiNmb/wJ5DotyKJYUWVFRXWce6UILbkTQADx/gWVjiGKwsteVDMtdCToA9W wuciNfm16c9nN4pxSJacU3OfKyGok1sPmE3PG3HION3hzUs0pfyGCqDaCo6KHJ9Sj/bf RbVA== X-Gm-Message-State: AOJu0YyqSt+BHGyx1vadPZPVQISQzXJMCQ3HLvLfKuFmmdr2vhjZCAuF zV1zMSxgrhC4LjDGdpwWAroTnsA4l9q2QxmYPI6+YfIoNIa8x3YZizfFvrrku6kj7HCAuflSHyS 7TfKi3u/TfEebdlq3yExG165kSckDTpryquqg/qnhWwv+3EKEHlyVmpuR X-Gm-Gg: ASbGncueHHgVwHJhSmnEDK4sornKNPuAkszR9D8gHkUvDB6sxt+TPtSohIDMYpGaq3a RG/um4akBnexU6BUbb8K0rKfio0gyVfvOU1DILOufk3gc1EuJH1QWKF/04NPkuTtrizDnWUEWs0 TntfOTgVIR4pHCAwBRzOpxbPG2nPKMGSBdGEOO2OFaH0k3LtiwvTsXvOMZiAchl7PLv1Jo2Es9D rqJZvHDL8pqGaKQgYWFFfSj0HsHG0t4yaCB2CIYo3HYFy92Vcb2LHjTQS8BMCc/zYS4yMtUkS7N HhiHydibDgI/GyIUrEa0p8KEUVZ65dJH34PqFwIexALzeN0K+9jQ X-Received: by 2002:a17:902:f705:b0:246:163b:3bc6 with SMTP id d9443c01a7336-246163b3fcdmr6882015ad.49.1755766076536; Thu, 21 Aug 2025 01:47:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHWAsEqhujn6Bk0t/fZD02dptuBuAc11oIHOx21SZ6Lc2e943pi5zoWyzVfCCacGKB+jK+GyQ== X-Received: by 2002:a17:902:f705:b0:246:163b:3bc6 with SMTP id d9443c01a7336-246163b3fcdmr6881685ad.49.1755766076133; Thu, 21 Aug 2025 01:47:56 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:13 +0530 Subject: [PATCH v12 19/27] migration: push Error **errp into loadvm_handle_recv_bitmap() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-19-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=2599; i=armenon@redhat.com; h=from:subject:message-id; bh=BqA2d6fUfxPl55xxwpfeFmITzSTIT5PTLX/2vaSWHXY=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOymx03KftR+aNSeU/+uWKzop2vF+3xOZJHdxsJXvX K9n73+ro5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwERK+Bn+WZgW2qrOTnpWc+to oz1PyUTTg31qK9484dN6ur6QheEtKyNDT9C+dy0zA3YZZXFcvDbr39Ir67umWP/9Fzlt/Q8uo1u rWQA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766440619124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_handle_recv_bitmap() must report an error in errp, in case of failure. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/savevm.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index c38646d5c3d75c64712561984f6b1df92ad55feb..359264cb639605a3f63a2b022c5= 7afd511c47a05 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766254; cv=none; d=zohomail.com; s=zohoarc; b=DP+cJ0tqBrz2UYnh1+fmK2PdxIdt15gKTMYaoB4zXp+rnOGc0aEwDJfuTTDFKMVdiNMu7MChuL2oBUIVam4gnTz33ZHjjDQo3FTJ5XAocextoi8cFsp1qM/Znk0bAOdt4qFvqy0d+/QQipp0rDAkq+E5allTAQgIOtQiaBM8+ec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766254; 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=A5JIUKo80MFui0gvLteXR+PBMMRhZOQC+TEUJWP+nUI=; b=mxkF9RtMIhz5o20D7nj2U6pxlpUPM7hBukKeotrda/Q9T56NuaGJS/eOLC09/eb4K3TJ7Nv4oDGOJy++w7KypGJ7XeXJje72Tzymq2S7EVA3mVzxB5wtCCcj9Oz1g/BowE4RrDKiiBiIz3fe1oT/YKiDJgS1cYRi8qq3+sbT3BQ= 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 1755766254178736.4456989650603; Thu, 21 Aug 2025 01:50:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0zE-0001oa-3s; Thu, 21 Aug 2025 04:49: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 1up0y9-0007mo-JO for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48: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 1up0y1-0001e5-Gn for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48:25 -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-428-_rSBH7k4Pwev6yoejddWtw-1; Thu, 21 Aug 2025 04:48:09 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b47173ae6easo1382408a12.1 for ; Thu, 21 Aug 2025 01:48:09 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.47.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:48:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766091; 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=A5JIUKo80MFui0gvLteXR+PBMMRhZOQC+TEUJWP+nUI=; b=F/jMYN2EUwVXQHYoSSWoy4jirVzsTK0OkmswzeMGwUZ7co1ZW2UXqzxijlfmeC0NaLbFV8 xMdYNoLN4jtbSyc6QSPwOeELD5lnzlOToZihwsRPbH1NqaNHWCfQb08omJMKhIx7RPPNbE dSst7DlTbB9YFUBV57duLG2XYI48ZWw= X-MC-Unique: _rSBH7k4Pwev6yoejddWtw-1 X-Mimecast-MFC-AGG-ID: _rSBH7k4Pwev6yoejddWtw_1755766089 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766088; x=1756370888; 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=A5JIUKo80MFui0gvLteXR+PBMMRhZOQC+TEUJWP+nUI=; b=DtMFSyyRnayiADu+ycv8wPMHc43jYyaUSEvec6Btq8NZz2rBCDxipQkm703p2l0r6n eNI3aHrJPn70oy1EXB0Z7Dbk6lqS4U1MjgV2N+5A6s0LYYgQWRvfiKPegnqKhm6JW565 2MiE2IbSarjfEJ3/tTowYQgQ3+1QKbN7jR4T5DfYYll1SwE5BBNTIzwUHXsc5jDdX1/9 ZbxX8DHbIYGxPdmw2c5YD8Tuo4hS4I8EGG3ZpRgKEINyJfvZgJ4d3CeTp76DdjWQ9Mai eXKywTy6A/g/s6xYn3ik3zfbRH9UU+2vyC1CrEV+ragw6cgnRf5aXOX2H/sq+pdU2az8 uugg== X-Gm-Message-State: AOJu0YyGMCzoEHf3+UvtUAZTrFlntTvhNwr5qNz7wziChc7uR9gPs+7Q CkFwCNiMK98UV44cC+HywK1oUsEsWPgWQ9fpnwhsbYuXbrrt8R8QHPo6QRMrQXPyq26pEGqkDEg pqTVSnvDLiCfzE9AcZJpEzckOZoteWT5l7yTBOSo1lexrwEU0XGKazwkU X-Gm-Gg: ASbGncucPwmOjBXChuqv+1gNpXxoHamv6iwSQMGF8vvanR7dDxyVFOM0euAQaFWPujt v1fO4dAM4Vu0QltSDFXLON+FStDuGOXq6ictfUs/jpFR+sJJ/gckAFSmVZ0LB7vCtOz4E9Js4gM Oj5RTCYtNmcYV9zgitA5kZBlG6luP0e3Z1WoumWIU+O0rIFt/Ct8H5BpxFLCTl36Gv7XbpXBhtH 78JANxuVVpNCgZpDHuZX1SDw5HZJnRbtQp+H7m9K2vg1eLFvOUvPbfAEtOSQrRwGvdV3QtvL2Hx oL+GgbIRRbDZobc7328qQM6pMUJGmaxJqaahrRPnivtDwH4nM3R7 X-Received: by 2002:a17:903:2350:b0:242:d721:b019 with SMTP id d9443c01a7336-245fed82900mr23403535ad.38.1755766088490; Thu, 21 Aug 2025 01:48:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEJ+EXmc2bVC2Jz1FJYA2qqU/z3Hh/iD3+k7eiA2uN7ytZHshilUn47nQBAUkP2BFcFnlki/g== X-Received: by 2002:a17:903:2350:b0:242:d721:b019 with SMTP id d9443c01a7336-245fed82900mr23403065ad.38.1755766088127; Thu, 21 Aug 2025 01:48:08 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:14 +0530 Subject: [PATCH v12 20/27] migration: Return -1 on memory allocation failure in ram.c MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-20-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1640; i=armenon@redhat.com; h=from:subject:message-id; bh=cNaEYpqhoAUI92Nxyhd9WrnrjASz0Op8kUgR9WpfeRA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOymima5z62695VksW9NhvCGKrV/KrIzhVN/ETI1Ni e/n7eDqKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJGuSQz/LCrYxG5f3B+2/Wj2 csnpzyyb98xtFvlw9cO3C6csJl1o4GJk+MO/7fn2B3k5P3582OXdM73wScmS2pyK9iWb1Iz49VP UmAE= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766256417124101 The function colo_init_ram_cache() currently returns -errno if qemu_anon_ram_alloc() fails. However, the subsequent cleanup loop that calls qemu_anon_ram_free() could potentially alter the value of errno. This would cause the function to return a value that does not accurately represent the original allocation failure. This commit changes the return value to -1 on memory allocation failure. This ensures that the return value is consistent and is not affected by any errno changes that may occur during the free process. Reviewed-by: Fabiano Rosas Reviewed-by: Peter Xu Signed-off-by: Arun Menon --- migration/ram.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/migration/ram.c b/migration/ram.c index 6a0dcc04f436524a37672c41c38f201f06773374..163265a57f26fb1dc88d9797629= d58c278e9afb7 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3575,6 +3575,8 @@ static void colo_init_ram_state(void) * colo cache: this is for secondary VM, we cache the whole * memory of the secondary VM, it is need to hold the global lock * to call this helper. + * + * Returns zero to indicate success or -1 on error. */ int colo_init_ram_cache(void) { @@ -3594,7 +3596,7 @@ int colo_init_ram_cache(void) block->colo_cache =3D NULL; } } - return -errno; + return -1; } if (!machine_dump_guest_core(current_machine)) { qemu_madvise(block->colo_cache, block->used_length, --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766480; cv=none; d=zohomail.com; s=zohoarc; b=KnOWvCcE2Majo5Lan4gpQrpZNrP+tCiX4Rlyb811Zk9lUkJPgUlka2U9kdw8bQWg4b9WuboM2Ju7rgOQkv9mHmjqXNfaSP9sayaoXhGKlvZ0Mzo0VPROuki8Pn/FJyKtMdyvgVygDoisezgSBYq5cIlQ7G/2UIU0zfcgrxMVuAQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766480; 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=/0oIGaP1ASs1AgG/cQMl9sVBAN+AzsXQ1x5zKIdL8Tc=; b=JGJlur4S5aMXeRcj6SZL9xq45ZgsHxMbECn8gfOsr/2oMsQUSfWi9z77RmudpdN5fTpkstNhntaLKrsXye9yxa+5GKSjb/gfPUwgudxOBE3ITl3QJ7t/Uu744VJjrJlaBM5lZ5TEO1U0grTyVSmT455bAL7H9Y6ODoVDqE3mwGM= 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 1755766480091124.08789079503174; Thu, 21 Aug 2025 01:54:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0zV-0002eU-No; Thu, 21 Aug 2025 04:49: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 1up0yB-0007vs-Se for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0y8-0001fb-3f for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48:27 -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-375-lm2l31MiPS2XbSqxIDte5Q-1; Thu, 21 Aug 2025 04:48:20 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b47538030bfso684217a12.1 for ; Thu, 21 Aug 2025 01:48:20 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.48.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:48:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766102; 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=/0oIGaP1ASs1AgG/cQMl9sVBAN+AzsXQ1x5zKIdL8Tc=; b=ZnmZSWR5tvMx1z1GTYUr4NFSktRMNykrpFonTKGYOoNIM8qzWBuZdseqqDXC9bkAA94eoU JIknB4+O2PGC7Id0abitdN4LisKfy/8ozuf8BaKDNRyK45KTpuIjvZXcxlIDSmnYrSTzrl cQm3+PSHDZQsq+yu+ZaPZ5eAR4AmaJo= X-MC-Unique: lm2l31MiPS2XbSqxIDte5Q-1 X-Mimecast-MFC-AGG-ID: lm2l31MiPS2XbSqxIDte5Q_1755766099 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766099; x=1756370899; 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=/0oIGaP1ASs1AgG/cQMl9sVBAN+AzsXQ1x5zKIdL8Tc=; b=KAMQfp9BtOxWForouBaj8HJiyRZQLZKjXCGyb+0ctZLrDl8yA5SKN+jpvmrQWBvo31 pxVWloMMlR3E4785fePb4FqIUAIZNHzZjOAk+xUMXhR0uhKnnEmhM2hVQRpH3D641sHF M3UOsk29LLnph6xvo07Iwjrj5+DRbcSx5bIRHptV2RU2QRv8WRLRjVCP9yIedkVgXJfD 4t4buuoVsgiLhf/UKyrHgoGH21Ew12h27pzUihtm+EF1VG4HpHIXWouaSKx0aH5cAWr/ BoRmSSigGn/qXv/axb1BY4e6x0cG1dCsesP2fczgDGwa7YhbCnG5s8sNf56a/jdotUks J30Q== X-Gm-Message-State: AOJu0YyA1voAjou9CixHt9AMS7Uhz9h61RBRDMLT+a5AVr5oZLIMJl7X Hhc4LR6eLsC7/NrJ1oHR2Hp2oKrwodXmyTQ2riAdwubzkEloe1uBcSMOlPmvrEUDSUdBcltZ654 EHUh5j+U0KtXcb9ZWf9LPvQg0Z8DGezAZnHp/c2CacIUcSpGBnFgcTRH0 X-Gm-Gg: ASbGncuy2MY+bYw4cKsGhRJaM9xfLNeEXgZYJ8CyA1Neid93TZyuitpVZ0hBkxk8an7 WkVEgVBqOMezOhS15Q9H8BKx3o1majrsWR1NO4pOXYPfts5uoWv6DxJmKfuqhfwfFe8vjrjF1kW cCPmjEVH1OEKIEPGUcGpX+WDffV1y+iiynCeVCKYav/IsnnKp2MsbLpTMZgMjGq+MY6RDw/cm11 55HZlmuuBjtfHfmr9wOLSYGLeM93+OCAnDk4wN51GlOsQPxtbl/0fti/mpsFJ6/zxTITE90xAxX ZLd5i2a4GTYSOC5Gwfuyk4/fd5InX1cn5/vkn6AxGeEyGF4PAH/4 X-Received: by 2002:a17:903:2311:b0:240:2774:8372 with SMTP id d9443c01a7336-245fed8920dmr28109525ad.36.1755766099276; Thu, 21 Aug 2025 01:48:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG6xmT8PUGROrrouRVSwEp1ItuadPvhzG8eiTlcsnWFXn+eakES9v6o1wDmRIybzbGWt1h4Bw== X-Received: by 2002:a17:903:2311:b0:240:2774:8372 with SMTP id d9443c01a7336-245fed8920dmr28108935ad.36.1755766098860; Thu, 21 Aug 2025 01:48:18 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:15 +0530 Subject: [PATCH v12 21/27] migration: push Error **errp into loadvm_process_enable_colo() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-21-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6000; i=armenon@redhat.com; h=from:subject:message-id; bh=q/Yf6rJSvtWhEDbKnbUT85eZp80+CMp8o8AGNsv0UBE=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOylPpokkS9/JeCxkXWR78cccsfjmdBO5zvCZxrXvv gq/ev6zo5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwETepDH8M5zN51p2cFbdFsOa pp1hx3kWin+eP6XQ4uW11c0PQjdEmjL8lZGNK7DqclH8bCp/s2Ly0rdbcj9EnO7r/97YuWtzecd HfgA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766481146116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_process_enable_colo() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- include/migration/colo.h | 2 +- migration/migration.c | 12 ++++++------ migration/ram.c | 8 ++++---- migration/ram.h | 2 +- migration/savevm.c | 26 ++++++++++++++------------ 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/include/migration/colo.h b/include/migration/colo.h index 43222ef5ae6adc3f7d8aa6a48bef79af33d09208..d4fe422e4d335d3bef4f860f564= 00fcd73287a0e 100644 --- a/include/migration/colo.h +++ b/include/migration/colo.h @@ -25,7 +25,7 @@ void migrate_start_colo_process(MigrationState *s); bool migration_in_colo_state(void); =20 /* loadvm */ -int migration_incoming_enable_colo(void); +int migration_incoming_enable_colo(Error **errp); void migration_incoming_disable_colo(void); bool migration_incoming_colo_enabled(void); bool migration_incoming_in_colo_state(void); diff --git a/migration/migration.c b/migration/migration.c index 35f769bc55c235134abb5554ed01b94787d4bf78..39d6142abccf90c3a35e6c2df3d= f245052eb0bcf 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -623,22 +623,22 @@ void migration_incoming_disable_colo(void) migration_colo_enabled =3D false; } =20 -int migration_incoming_enable_colo(void) +int migration_incoming_enable_colo(Error **errp) { #ifndef CONFIG_REPLICATION - error_report("ENABLE_COLO command come in migration stream, but the " - "replication module is not built in"); + error_setg(errp, "ENABLE_COLO command come in migration stream, but th= e " + "replication module is not built in"); return -ENOTSUP; #endif =20 if (!migrate_colo()) { - error_report("ENABLE_COLO command come in migration stream, but x-= colo " - "capability is not set"); + error_setg(errp, "ENABLE_COLO command come in migration stream" + ", but x-colo capability is not set"); return -EINVAL; } =20 if (ram_block_discard_disable(true)) { - error_report("COLO: cannot disable RAM discard"); + error_setg(errp, "COLO: cannot disable RAM discard"); return -EBUSY; } migration_colo_enabled =3D true; diff --git a/migration/ram.c b/migration/ram.c index 163265a57f26fb1dc88d9797629d58c278e9afb7..a8e8d2cc6790336625de626fee0= 70ecc51327200 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3578,7 +3578,7 @@ static void colo_init_ram_state(void) * * Returns zero to indicate success or -1 on error. */ -int colo_init_ram_cache(void) +int colo_init_ram_cache(Error **errp) { RAMBlock *block; =20 @@ -3587,9 +3587,9 @@ int colo_init_ram_cache(void) block->colo_cache =3D qemu_anon_ram_alloc(block->used_length, NULL, false, false); if (!block->colo_cache) { - error_report("%s: Can't alloc memory for COLO cache of blo= ck %s," - "size 0x" RAM_ADDR_FMT, __func__, block->idst= r, - block->used_length); + error_setg(errp, "Can't alloc memory for COLO cache of " + "block %s, size 0x" RAM_ADDR_FMT, + block->idstr, block->used_length); RAMBLOCK_FOREACH_NOT_IGNORED(block) { if (block->colo_cache) { qemu_anon_ram_free(block->colo_cache, block->used_= length); diff --git a/migration/ram.h b/migration/ram.h index 275709a99187f9429ccb4111e05281ec268ba0db..24cd0bf585762cfa1e86834dc03= c6baeea2f0627 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -109,7 +109,7 @@ void ramblock_set_file_bmap_atomic(RAMBlock *block, ram= _addr_t offset, bool set); =20 /* ram cache */ -int colo_init_ram_cache(void); +int colo_init_ram_cache(Error **errp); void colo_flush_ram_cache(void); void colo_release_ram_cache(void); void colo_incoming_start_dirty_log(void); diff --git a/migration/savevm.c b/migration/savevm.c index 359264cb639605a3f63a2b022c57afd511c47a05..3a1aa25dd86226fc9770d0dbaba= 51ee673f8f663 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766480; cv=none; d=zohomail.com; s=zohoarc; b=O1EovACaJQ3j7aIeGVk3eWNSZxi1pK+116SixYkjGo/H1cLTXdeIBqmh2cPyOG3PU8qDu3050KrMagMDiAO5Ikkt/BHWA06RdFu2reL/kwXXdczrhiJkCWfWnR3KR7u9Et5pM2SdbzX5t8pmq0NCfKZNK4ctP07+fJm4oq250Mg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766480; 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=Ah4Uv2NmfsVg3D7OI/2kgxz7SXyNpLL/SJp2ZD+26OU=; b=XrVXx0+WaItQ4bS2vCBTpOeS7SdULDCaOqA1zRbFJnWKMBqhBY0KF9Nf7D8CQX8repkchbIiD0WFskLKQ5nQuFQsKmZn76EeHfY8UNVpGF2CMENLsFIdOgiP7wQiIR3vy3vXyMkGlRBLUEGFOC4oyXmDMr4yb0Te5MLnmfuU7Y4= 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 1755766480200317.1080065528389; Thu, 21 Aug 2025 01:54:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0zO-0002Vv-3Z; Thu, 21 Aug 2025 04:49:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0yT-0000XW-Tm for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0yL-0001hi-GV for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48:45 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-54-h1U0p6vcPUWSvOSVEvcX7A-1; Thu, 21 Aug 2025 04:48:32 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-24458121274so9645295ad.2 for ; Thu, 21 Aug 2025 01:48:31 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.48.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:48:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766113; 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=Ah4Uv2NmfsVg3D7OI/2kgxz7SXyNpLL/SJp2ZD+26OU=; b=O4UCwokcjAED/SZW0IEGYTxWA0ewneMjt/e8N7HRy8cJ6SMwHu4pRD+lO4cleS9iQvKSx2 WUshhKS0ERR1nT9DNYI7zMkIpFrj9meeUSQfQumUBcJt1wkTMOqxCu91gdnoSsuCnStRsm C0FO+OmCmOjvgV56OVa0Ayr0NupUYhQ= X-MC-Unique: h1U0p6vcPUWSvOSVEvcX7A-1 X-Mimecast-MFC-AGG-ID: h1U0p6vcPUWSvOSVEvcX7A_1755766111 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766111; x=1756370911; 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=Ah4Uv2NmfsVg3D7OI/2kgxz7SXyNpLL/SJp2ZD+26OU=; b=mu/HIzG+UfVsK4uYW4Dd4dNrmNwBfPs+4uIkYE6/jg6kkmvAsCQQuPQ2ajAvV5PqZV AP7LCgUDzFUsxkI5lIV49Ri3Zghtd55ACiWQVJzKHKMQEhy3xK8C6DRxAV4Qdb4ru78k ueFwpHrKB/j1zm8YlMk6s7mnrWcGfQNsXpaSr43/6bd9CiJhahzl9/2W1UVUGdmmQgBF NSoboHvkIfDjUmYMOBNjXt+tiizWp6GeE1BkFlPW3KvG0faD8JBM414V+hOdS0Ab31+T FNEx/KmSaNQBhquQ0NXQXzGWSIve0NvoKv1q6zjjVQzky1+qMF6m4uNenjxIjiPUtMbm rsYw== X-Gm-Message-State: AOJu0Yxsax5sNuLCsi7lsEn7x6fYmBTozMMmbu0w38zbCJrBL48Smvy8 f2gDQEaaPioqfDRlQlk9rYA8M0Q5MVb8QrDIu5BMCC44bBOE1AGc2WPw7piyQBKVVl3vtNSUQfB uxi6ERFz7YZJ91iZXt1/w/nS532rp2vU7TzSoA5+VhmW7SpyVIt0UGPwe X-Gm-Gg: ASbGnctSF6fD5CVdlOGnh1BTk3fU5ZJkOdna3f4VGdpvSHWzobJtNQHHpE4IPx/61ZB xqKXc3c12PhvzJ4wXnQehWvc67izvvXzvVzKEZw9Ay90eP1k+tb5SJMrtuITtsJYPtp5ozp/sd8 i8dyzgufWO55ZczGaKBhoYcbMQHVt60K/BcwjqJ+1FJOUweHIpRHh9M1CGZ9bvKfLRDhKg5XvA0 YvmzaIOw1lIxU3Fr8vGmVfSrvqKyvaRInSgdnzrGLOXfMjWtc+vHAD80pjd4yDxs0p9Z+yoNnhW 1hXhfydZoNv43s6eWOaHNdGulOMh8gG9QN4Xw5EnUU/NOHx8DsdU X-Received: by 2002:a17:903:428f:b0:236:9726:7264 with SMTP id d9443c01a7336-245febef6edmr18933375ad.5.1755766110919; Thu, 21 Aug 2025 01:48:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFp0OBwace6JtDd3gOc8ecN4jglwkBTVS8P7+ODN7AEvowznH8WNOWF6k3OOcbw5WELNq1lQw== X-Received: by 2002:a17:903:428f:b0:236:9726:7264 with SMTP id d9443c01a7336-245febef6edmr18933035ad.5.1755766110545; Thu, 21 Aug 2025 01:48:30 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:16 +0530 Subject: [PATCH v12 22/27] migration: push Error **errp into loadvm_postcopy_handle_switchover_start() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-22-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1747; i=armenon@redhat.com; h=from:subject:message-id; bh=lJWbWSUx257lH9idp8Ne7CrwWih8w2pxWnaGbaUKfYE=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOymXl+2OYtOJ/DZd6OPDyxrFLOsniU2PPspnqH0y+ TaTocLnjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABOZtJGR4f+ZBS8ORU1k3TQn uEykcPWK1o0LPr7JP1iqlXln/q+NOnEMfwVeXedcJe+4ffrPng3KjVZGhVyLkoPiu421WQ2cpGR qWQA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_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: 1755766483122124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_switchover_start() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 3a1aa25dd86226fc9770d0dbaba51ee673f8f663..b53a9db8e21a68b9fe4991dceda= 89bbfff738caf 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766303; cv=none; d=zohomail.com; s=zohoarc; b=nwJ8tIQTQTwOYVrPjpoxdPyS4m7dSglTLzkd3ZtnRirIt6CvgBMiSMJnN+KMeJ6X93rqdma9luNLaQ6x6m9wWruSePCkveSPytnwLtB1q4RqVXS4G93TDL3nH9LHBS5lVCuYRpoOFmHkLWft3WVZMP9wGycypdlzxRI743+z/JA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766303; 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=ppHs8O7DX583USXq/jSZEYkkRAy011Ydfoexnnm+Yqk=; b=aGOzT8RSih7QMWseCaiI409sDU4Q2dx+pJomngkLLveXMetIEuT0dkq0ARFOkwCaJy8mi009zxYvBk7UXpGlZVIrWQTMYQJU1uK1dWSuyu+zql/c49m7tpgQg3oHiD9h1nBfGVdqi3e5hJA4PPEwnAk2YJoH9T9GzmlFZ1Xvom0= 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 1755766303810900.2292599937846; Thu, 21 Aug 2025 01:51:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0zG-00021w-Q2; Thu, 21 Aug 2025 04:49:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0yb-0000e4-07 for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48: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 1up0yV-0001iW-0L for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:48:51 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-437-TAkumatzPT-xH9ji4FUeLA-1; Thu, 21 Aug 2025 04:48:42 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-24457f440f0so9745765ad.0 for ; Thu, 21 Aug 2025 01:48:41 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.48.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:48:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766123; 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=ppHs8O7DX583USXq/jSZEYkkRAy011Ydfoexnnm+Yqk=; b=A70T/8FHmtJuJES2DlQKzGqmf1Czb1VazsioHsGC3nEDMNoy1WwHqh2wE2UEat8dZ5Alyr Djva+EtZOGYd2vHpf625SFsRoSfXejTqMp5Uf8B4duHBhHqW0cnRuydHUNrrUN4Hgydib1 UFUdVTLUlxnsaOAlsql5ZkIm5ls+bZg= X-MC-Unique: TAkumatzPT-xH9ji4FUeLA-1 X-Mimecast-MFC-AGG-ID: TAkumatzPT-xH9ji4FUeLA_1755766121 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766121; x=1756370921; 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=ppHs8O7DX583USXq/jSZEYkkRAy011Ydfoexnnm+Yqk=; b=ObCPNz/Mu3hSDyKZOBY56AAESk0wbUFrz7quEIvVg/+WKP6l4v9tEb7y3sd/vE8RSI tL/5f0/P2/hYvQSn3hV5r5e6ANyfrsfWsjb51kv0wFv0TrMxdbbIqs5REI58X1qRvgFA iR2UTjOo/QPAZDoLWqThwXU6Vgi/kD8qUaqq7sPIq4G/2d0G+iebiYbFCd2h0qo8O+ku co6cFYfiaVrUEEWiBU8nq4tEKJ/tJA68aqbeBp+9qc4ZObLkhIJQqu2LqR6Btx3PDqti f9nIcuKmd7h0BkE6Rb50lVlENlQyYPf2Cwzt1KaaKqDvxf+Os+1JQS0o4tRjnZ9nDQ9P euyw== X-Gm-Message-State: AOJu0Yzi5AmldjQGc0i65mHyYHJXtwEUUeOybtvSafg7z3h96MChq62X /l0QxKrA6M5/YLkPp2CXbCAUdW4RwcBbuda/BnM+wHCjjw+RxD/m/C9gJ/Aj8G9/SPdxdkNv+yD Gslgy7ABJX371UhASf9nbkcxsoadLIcxZMPwpB+rXeMaFak3yI2lgS1iM X-Gm-Gg: ASbGnctJr3K68D9+lbYPd8iJ5PoIyNKIOfHTIIeDiSJjBrgzdxnMfl3Hw69PuPbDP/E xP1dNzWoLHRohHoaisqDMrvgT5d+FFNrYqFUhbA5ARlSwtUbf8OSJ0tYjK8C/Rmxq2VEXwCjdi7 FCHau5dsU3M5VQMt2qq1uoWWxrLufmyYF5zClusH9sRVLpWqmFR7KnDghLPQxYv+pnYUlfoTXpU ToNL5cgRPAWXa/Hcs0XhAqaEUvCdrKEeVMNZhorbHYc2rPH0TK+WBByAl9y9ue6XtOFBOVGOdov oLAyGd4f5Xn3vOlr4aGlYpb0W5TZ4p/8VkKowxeEHY43xZrBjSSz X-Received: by 2002:a17:902:cf0d:b0:234:a734:4ab1 with SMTP id d9443c01a7336-245febee8demr22778845ad.3.1755766120799; Thu, 21 Aug 2025 01:48:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE0Q3dZkGLVnSn5ASpC2AqakL+X1hf6PAuwvnRVW+kyn5ArNb3ZXEduC3QD7fIYOsir92foMQ== X-Received: by 2002:a17:902:cf0d:b0:234:a734:4ab1 with SMTP id d9443c01a7336-245febee8demr22778485ad.3.1755766120427; Thu, 21 Aug 2025 01:48:40 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:17 +0530 Subject: [PATCH v12 23/27] migration: Capture error in postcopy_ram_listen_thread() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-23-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=2037; i=armenon@redhat.com; h=from:subject:message-id; bh=odWNCL7J0yJYAtYKRmTdx7jNOjfCtXVndXLWr78gg10=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayOymlc212M856sEXAVELX48uLZMeNC558nXVq2ZP7a tPSxNMSO0pZGMS4GGTFFFkavgbINgUURkTavrwOM4eVCWQIAxenAExk43JGhnWmXa1iN1Q+z/l9 7viH5uC/cot9n3y9qfxg08S7cluPZc9gZGjlYHiUriy8ylb8UdyKS12fhIve/7KIaJKauv5vWID oDj4A X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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: 1755766304886124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. postcopy_ram_listen_thread() calls qemu_loadvm_state_main() to load the vm, and in case of a failure, it should set the error in the migration object. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/savevm.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index b53a9db8e21a68b9fe4991dceda89bbfff738caf..2e2b38def670d7d5cadbb9665d0= b19b008a0a373 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2095,6 +2095,7 @@ static void *postcopy_ram_listen_thread(void *opaque) QEMUFile *f =3D mis->from_src_file; int load_res; MigrationState *migr =3D migrate_get_current(); + Error *local_err =3D NULL; =20 object_ref(OBJECT(migr)); =20 @@ -2111,7 +2112,7 @@ static void *postcopy_ram_listen_thread(void *opaque) qemu_file_set_blocking(f, true); =20 /* TODO: sanity check that only postcopiable data will be loaded here = */ - load_res =3D qemu_loadvm_state_main(f, mis, &error_fatal); + load_res =3D qemu_loadvm_state_main(f, mis, &local_err); =20 /* * This is tricky, but, mis->from_src_file can change after it @@ -2137,7 +2138,10 @@ static void *postcopy_ram_listen_thread(void *opaque) __func__, load_res); load_res =3D 0; /* prevent further exit() */ } else { - error_report("%s: loadvm failed: %d", __func__, load_res); + error_prepend(&local_err, + "loadvm failed during postcopy: %d: ", load_res); + migrate_set_error(migr, local_err); + error_report_err(local_err); migrate_set_state(&mis->state, MIGRATION_STATUS_POSTCOPY_ACTIV= E, MIGRATION_STATUS_FAILED); } --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766478; cv=none; d=zohomail.com; s=zohoarc; b=Jja4NpEuiGgLEUHwVHVrkFHZqVT3TDegzab8FvHq194eePHcptR5gjk/RJ8xad9WlwViFOWb17IJO8bGeCJ0cz7h/rVLuqb94OKrtWrDoM4zM5f0pE3RB3f4qBYHw7uzm2ic95PuVEKOyGsanYgkhcqEm1Msb0/+Pepj1qXAsfI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766478; 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=C4oZ8mxd6KAk7AZUwmcSjbaAZroQn45DoBd6PXtscss=; b=Kfzhurzn+dzlu2zSmDNU+Mm4U0qcLFBW8iF8Moi73yjyk4aKjoiPaexvwHPYuqA9APUAMX57IXXyH1jfy8GPZAhNMzMxOHPLxwMBahEfkHO2VIsLb5mwZyOOg0L8Q3CFz7Mtw/LgER4Ln1U/0nYnm4W8ZtKyewnpEE/So3sbFeQ= 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 1755766478830776.3285972182229; Thu, 21 Aug 2025 01:54:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0zf-0003Cz-P6; Thu, 21 Aug 2025 04:49:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0yu-0001AS-OJ for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:49:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0yk-0001l3-0H for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:49:12 -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-217-gY65hfuKPqWeTfeUOrFkrw-1; Thu, 21 Aug 2025 04:48:56 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b474b68cff7so688045a12.1 for ; Thu, 21 Aug 2025 01:48:56 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.48.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:48:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766138; 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=C4oZ8mxd6KAk7AZUwmcSjbaAZroQn45DoBd6PXtscss=; b=a5Bd7Io7FEarZYsZk2tbNwJjojnmezeTN5kkAm9+QNueW866ElArmpi8nEmfXJvGl8aFJY rOaTmgcyehsa0JVcFiGgeFmnKD7alvYDZY1CNkHsTwzYl/HVB68gCUIHPr+z22MLBtVdFM GN32HHlrWIFCxubc+4iga42g3PiifqQ= X-MC-Unique: gY65hfuKPqWeTfeUOrFkrw-1 X-Mimecast-MFC-AGG-ID: gY65hfuKPqWeTfeUOrFkrw_1755766136 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766132; x=1756370932; 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=C4oZ8mxd6KAk7AZUwmcSjbaAZroQn45DoBd6PXtscss=; b=NgnzsfSGnmdGf4d3bpp8iPjthp8PD19p7p9sVE3QI2FNIpxAVtMowExSPuKQ4Bsk8i 79i3pq7dwSMWz212fX8iVmN5qR/0ALRR82bis7KsmOckbhgr9xyk6k929CLIQHztqknt ahGGKGM8lHhpEhNaJMvKEHY/YscjeCMeGxR9aflV9FttBFCmw2iKt1WL93CvQx3Fjupc EK0W86ZIjHRNUW+NlcmbjSgLx4LHudpcckcv1z+FRvlQzKJsoLQcuUHy9NIka06zrMnr ACLRXTAbANL6aYz9Dd5KV1AaqHyri55qYa+j5O7+Sz4l8AekSvSDIrL5cUyjJwAGD69v 4knQ== X-Gm-Message-State: AOJu0YzGZbJtG9J+geQd0iFxwF8xI+MHvekNad835mSRV5i/hMq0pbnX JPKvDAeFpmUVmx6iGrrV/t1hoHWQwW0HmYd6WsFkYcxahmfbuPo9GEYzSbQfBjQuTPu0bCX22+Z g9rngbCP8z5mxHK2DWVm5OdnY4k0OYVEP0o0kw8lLJZwQoWWtIXRsC/8m X-Gm-Gg: ASbGncsgXkPS+VzxE57yppr7i5TfApDXGRF/h7/9QLcqriqaaVB0nFolJF9hxy62Gti x2Z4o1UqAvOAqVjyr7U6M4RH8SKdYCYUVjgaxEizAumQxws2DE5jbQ0cjC3vfCzHLBinub2aoXj QJDAlXW7CnUT1RvlpYjw4BNstr/VNtutYY63u9w3IlP6+PW9fv6FLdP2o9XgKpDw6ZtRsp73Lru HNvgE3kop28U3APQ7t7ekuxM6CUaS1wEoBYUtfScrKOTBlOMjjM8ev0yml18FwXNdsZzLtZ/G/f piujuSOPCEBrzJ/MEgcwMTcGJ5VhWK3p3d5oleQeunJxccXyaYzI X-Received: by 2002:a17:902:e74a:b0:240:9ff:d546 with SMTP id d9443c01a7336-245febef131mr27186535ad.6.1755766131753; Thu, 21 Aug 2025 01:48:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IErEJ+hn1YEBK1qy70quzUOYFEIi3mJ0SOhFG1Xwa1OjxcoQiopz0Twir9LYhPJhAzWcmVviw== X-Received: by 2002:a17:902:e74a:b0:240:9ff:d546 with SMTP id d9443c01a7336-245febef131mr27185945ad.6.1755766131077; Thu, 21 Aug 2025 01:48:51 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:18 +0530 Subject: [PATCH v12 24/27] migration: Remove error variant of vmstate_save_state() function MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-24-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=17961; i=armenon@redhat.com; h=from:subject:message-id; bh=/s/cuzwco7b+2YPmQUpSMmbH2Kdk7Fa5fcCzhZGbSK4=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO6k9dfyuhdKSjVlZj1cGrtuZK+q0J1Vwb+16fS/XW ewKgQodpSwMYlwMsmKKLA1fA2SbAgojIm1fXoeZw8oEMoSBi1MAJrKth5Hhvfj+kmWd7af2OrA/ nZkgeuqEV84drt71QkxrzIIN5TllGf7Znn389qmrxP/jsR7HL6tMr1zS4n3m5T/JKSIVC28b7y9 lAAA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766481302124100 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 warn_report_err(). If we want the function to exit on error, then &error_fatal is passed. Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- 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 | 23 ++++++++++++++++++----- migration/vmstate.c | 10 ++-------- tests/unit/test-vmstate.c | 20 +++++++++++++++++--- ui/vdagent.c | 3 ++- 15 files changed, 61 insertions(+), 34 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 5dc31bc6bfb0272e29a4364ab10de2595a4bedf7..477ec700a130d77ad93346c264b= b7eaa8bca76d5 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1246,7 +1246,8 @@ static int virtio_gpu_save(QEMUFile *f, void *opaque,= size_t size, } qemu_put_be32(f, 0); /* end of list */ =20 - return vmstate_save_state(f, &vmstate_virtio_gpu_scanouts, g, NULL); + return vmstate_save_state(f, &vmstate_virtio_gpu_scanouts, g, NULL, + &error_fatal); } =20 static bool virtio_gpu_load_restore_mapping(VirtIOGPU *g, diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 6be932d3bb67ff0c4808707db2a7b6378a90e82b..e53fd270118293ca82f40d45d8f= 97f62612736a1 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -926,7 +926,7 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) * This makes us compatible with old devices * which never set or clear this bit. */ s->config[PCI_STATUS] &=3D ~PCI_STATUS_INTERRUPT; - vmstate_save_state(f, &vmstate_pci_device, s, NULL); + vmstate_save_state(f, &vmstate_pci_device, s, NULL, &error_fatal); /* Restore the interrupt status bit. */ pci_update_irq_status(s); } diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index 6a9641a03d5d3a38a4de7ceb9deffc0cc303bcff..4cb1ced001ae241c53c503ebfd7= c90e336799c37 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1130,7 +1130,7 @@ static int virtio_ccw_load_queue(DeviceState *d, int = n, QEMUFile *f) static void virtio_ccw_save_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL); + vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL, &error_fatal= ); } =20 static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index 8622419497db650523d51bcb41557bbca254eaa3..026657c85f3bd2629165add466b= 20c85b3521f1e 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 a65e34b6979eadfa0851666aeae7cf731a00fa40..d931fd1d84239c1775677683b6d= 92475c385c540 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2780,8 +2780,8 @@ static int vfio_pci_save_config(VFIODevice *vbasedev,= QEMUFile *f, Error **errp) { VFIOPCIDevice *vdev =3D container_of(vbasedev, VFIOPCIDevice, vbasedev= ); =20 - return vmstate_save_state_with_err(f, &vmstate_vfio_pci_config, vdev, = NULL, - errp); + return vmstate_save_state(f, &vmstate_vfio_pci_config, vdev, NULL, + errp); } =20 static int vfio_pci_load_config(VFIODevice *vbasedev, QEMUFile *f) diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 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 419f3516c9f0a3df43831eebc77aa1e6dfcd0f41..4a8d26c202bdda7ee64f2d4a983= da0d6ceb2f6f6 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) { + warn_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 2e2b38def670d7d5cadbb9665d0b19b008a0a373..46339b4944f0350024c130aba87= 2483d0988fea5 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) { + warn_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 f41670cc853c5b41ccc8def354886a8e5c1451fd..a06364f68bca7b140c695af6b9f= b75563b9fdfff 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) { + warn_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) { + warn_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) { + warn_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) { + warn_report_err(local_err); capsule->ret =3D ret; return true; } @@ -861,14 +872,16 @@ 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); + warn_report_err(local_err); return ret; } } diff --git a/migration/vmstate.c b/migration/vmstate.c index 6324e5b17addcd1b4f2fcdddbd47c3e4befc1d50..93b703cd61d811875e05880714a= 0d5113a4136d4 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -410,12 +410,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); @@ -516,7 +510,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, @@ -678,7 +672,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 cfab58c7f45ba50f70af164c3e58b01aaf9cc656..0137eb9f606680ccc6d006f1002= 33b6cd30275b5 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) { + warn_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) { + warn_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) { + warn_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 bec728668de4d2410c3b741bcb0a21deb373dcd3..08b645fa0ba07506aba3aa90a5c= f356ad6fb359f 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.50.1 From nobody Sat Nov 15 03:05:04 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=1755766422; cv=none; d=zohomail.com; s=zohoarc; b=hWJ31bcZYWza79sNG9Rjxoj854K1d/s7KG9NvRghRKvUawhNe+eBiC46QSCHfoJwoU5iP+uHyeSnVtkZp/OB3V+R4W32lvnTTkwhdLy64yan7NcvXYJw3dy2uJ3iT+FlMLrCMLXqts9qFVDPZI9hLXMCkRCmezcTBq/gfyX0PhU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766422; 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=/ZCYI6K3iXE4GW6reyp1ubly6Xab6A8JbLkV2fGk7yU=; b=ZIKhdYeF/ui6rvFm0mCzmrqq2mMk/b4ZfruOu0QpI3Vl6YlGv3VJzMdB78moVJUqMh3Y0vVYZl2sOCT9QvrrdyZPuSc6YzH3gVQdlloIbqQCmyNF1kLAVt61R17bC9vtlmS9ip9EKNIOTKryuKt5pPvQt6evIvHGbexbRWaDKMU= 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 1755766422957622.502510136236; Thu, 21 Aug 2025 01:53:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0zM-0002R4-1L; Thu, 21 Aug 2025 04:49:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0yy-0001Bb-KY for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:49:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0yr-0001m0-Gt for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:49:16 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-567-jawu4eKqNuWb4ZIdyLcHeg-1; Thu, 21 Aug 2025 04:49:04 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-244582c20e7so9226785ad.3 for ; Thu, 21 Aug 2025 01:49:04 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.48.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:49:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766145; 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=/ZCYI6K3iXE4GW6reyp1ubly6Xab6A8JbLkV2fGk7yU=; b=cnropKcVU60edQhVpQuZjbEt66KoQSIWn7MwAJjYckhCM/SwuqFwPhmgemnIwhttIbTgUm 4bApYer/EkoASLV1a5lIaSLktlEKVM19KeU+Asyss4KLMV2fjO+iWhSBpgySnHbMg6sUSh 8RHLAZH/xJTAy/rUSGjOEe6zI38fHqk= X-MC-Unique: jawu4eKqNuWb4ZIdyLcHeg-1 X-Mimecast-MFC-AGG-ID: jawu4eKqNuWb4ZIdyLcHeg_1755766143 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766143; x=1756370943; 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=/ZCYI6K3iXE4GW6reyp1ubly6Xab6A8JbLkV2fGk7yU=; b=kObOAff5GujIN7ZZJKaL38BqWSK4d7BZD8nDqpJDWZy3f9eRPEEzmSLO3vgGJNQqyD 6jGVymXz6aSMabqHN27oGK8tY/SyxGtc4bt903kzGh04NG4bJHJc1J30RKqmEevsUgj3 HvO5BaMmHLGT8jb+B4UNqCHTnVphiwaRccCfWE1lC158nkZ+GuC5yPOv3F17FgLJesZp P2H9tPkqoprO87WgxDlM5t2umOLAA8TSM1id7Q8csDSgzCQ4XBu+qahUw7wG4cFFgG1v SgwcZ9yG+weYm8xJKSAmHVpY8qfdP0YRUkuaFYp5xYIvcgMreL12NCLn6gEwpKXLQ9JG cnXw== X-Gm-Message-State: AOJu0Yw+PXQe/wH2H5mItA2ukd3JTU4SKWqdLUp4uOi4ZRCTLB2eLuuE GurcRVDzM7yTNhEpgsmHomr5aNKRHmlqWlm77H7vnAVqju1GKwnL2P3oEXLB+yO37Ielq3vV4Op ylPYm77WBzbeOmuvdmF5L9Izrurl1yOSORFa8PAGZLJgrOp+9mVd0P6+9 X-Gm-Gg: ASbGnctA1AABUct8iCfRtfkbGYHmMkvUhO8uE1faDiw/i7KnRv7nEwbdQP53gAZid9w A1dKaBF/qigKd8g5RAQkiPf1w79fQEQ2V0KiEZgoaA+8dtkt+bONKbEjMBdEqEaMplxjLHjbBlQ 4bBC1EfOIljCnBlipeF3OYlMfhhcb6coqk0TYaWgBhyT0/b3h0H8SChdpainiION/O/UZqjUnTl 1M6cTkr8bZytCz5gbuQ2oG9JZ5X4H07OGsTxu5JnBJUN1gvfpV54ClEoLL8SOGd8/TsZM+kjlEu xByfwJUdLzldaOVkVDb+mkHrl3z5MFOoXLiYXYtk+eymlFf0i7Tk X-Received: by 2002:a17:902:f145:b0:240:7247:f738 with SMTP id d9443c01a7336-245febef16fmr16520125ad.1.1755766143048; Thu, 21 Aug 2025 01:49:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHb7GeBLCkgCd74HKKpvYkcI2LVdHsj3x41Gpwe4M2BJGbgeLEdbNpUQW4BoWTr/grzboPGqQ== X-Received: by 2002:a17:902:f145:b0:240:7247:f738 with SMTP id d9443c01a7336-245febef16fmr16519915ad.1.1755766142640; Thu, 21 Aug 2025 01:49:02 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:19 +0530 Subject: [PATCH v12 25/27] migration: Rename post_save() to cleanup_save() and make it void MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-25-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6394; i=armenon@redhat.com; h=from:subject:message-id; bh=zehcboaF91FwyPsalgHoxud342famdeh+VS9Qdvq/hA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO6nx19yrz3K5t7p8tTV2u7GsoWVHVd5l7RmKE5wvM F7eZ7y/o5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwETyWBn+8ApsNdIXua/fnPj+ s/mas5VHGmdu/3S/mGXVf315jbcSHowMXzc2ebqd6I2IqX95MfnHeV2GsmmNy6cbRt1dwxyi6mX AAwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766424477116600 The post_save() function call is responsible for cleaning up resources after the device state has been saved. Currently it is infallible, and does not return an error. It is called regardless of whether there is a preceding error from save or subsection save. That is, save and post_save() together are considered to be an atomic logical operation. It should not be confused as a counterpart of the post_load() function because post_load() does some sanity checks and returns an error if it fails. This commit, therefore, renames post_save() to cleanup_save() and makes it a void function. Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas Suggested-by: Akihiko Odaki --- docs/devel/migration/main.rst | 2 +- hw/ppc/spapr_pci.c | 5 ++--- include/migration/vmstate.h | 2 +- migration/savevm.c | 5 ++--- migration/vmstate.c | 12 ++++-------- target/arm/machine.c | 6 ++---- 6 files changed, 12 insertions(+), 20 deletions(-) diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst index 6493c1d2bca48a2fa34d92f6c0979c215c56b8d5..a39fec2e21c26c4315c0cf13b10= 5176d70679d4d 100644 --- a/docs/devel/migration/main.rst +++ b/docs/devel/migration/main.rst @@ -439,7 +439,7 @@ The functions to do that are inside a vmstate definitio= n, and are called: =20 This function is called before we save the state of one device. =20 -- ``int (*post_save)(void *opaque);`` +- ``void (*cleanup_save)(void *opaque);`` =20 This function is called after we save the state of one device (even upon failure, unless the call to pre_save returned an error). diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 1ac1185825e84ca908fd878f6cbe7e8cacac1d89..135265f075dff502af59fbc91ba= bca1f9a26c54d 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -2118,14 +2118,13 @@ static int spapr_pci_pre_save(void *opaque) return 0; } =20 -static int spapr_pci_post_save(void *opaque) +static void spapr_pci_cleanup_save(void *opaque) { SpaprPhbState *sphb =3D opaque; =20 g_free(sphb->msi_devs); sphb->msi_devs =3D NULL; sphb->msi_devs_num =3D 0; - return 0; } =20 static int spapr_pci_post_load(void *opaque, int version_id) @@ -2152,7 +2151,7 @@ static const VMStateDescription vmstate_spapr_pci =3D= { .version_id =3D 2, .minimum_version_id =3D 2, .pre_save =3D spapr_pci_pre_save, - .post_save =3D spapr_pci_post_save, + .cleanup_save =3D spapr_pci_cleanup_save, .post_load =3D spapr_pci_post_load, .fields =3D (const VMStateField[]) { VMSTATE_UINT64_EQUAL(buid, SpaprPhbState, NULL), diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 5fe9bbf39058d0cf97c1adab54cc516dbe8dc32a..c1d8e5b7a7d9d544fc8ce181372= 660f5538ef66b 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -208,7 +208,7 @@ struct VMStateDescription { int (*pre_load)(void *opaque); int (*post_load)(void *opaque, int version_id); int (*pre_save)(void *opaque); - int (*post_save)(void *opaque); + void (*cleanup_save)(void *opaque); bool (*needed)(void *opaque); bool (*dev_unplug_pending)(void *opaque); =20 diff --git a/migration/savevm.c b/migration/savevm.c index 46339b4944f0350024c130aba872483d0988fea5..99ae5b20a5c9796766ca4a79f2e= ed9f329f3dbd6 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -322,14 +322,13 @@ static int configuration_pre_save(void *opaque) return 0; } =20 -static int configuration_post_save(void *opaque) +static void configuration_cleanup_save(void *opaque) { SaveState *state =3D opaque; =20 g_free(state->capabilities); state->capabilities =3D NULL; state->caps_count =3D 0; - return 0; } =20 static int configuration_pre_load(void *opaque) @@ -544,7 +543,7 @@ static const VMStateDescription vmstate_configuration = =3D { .pre_load =3D configuration_pre_load, .post_load =3D configuration_post_load, .pre_save =3D configuration_pre_save, - .post_save =3D configuration_post_save, + .cleanup_save =3D configuration_cleanup_save, .fields =3D (const VMStateField[]) { VMSTATE_UINT32(len, SaveState), VMSTATE_VBUFFER_ALLOC_UINT32(name, SaveState, 0, NULL, len), diff --git a/migration/vmstate.c b/migration/vmstate.c index 93b703cd61d811875e05880714a0d5113a4136d4..283b5c48d39d572c1b19819ed18= 60c68e118d674 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -533,8 +533,8 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDesc= ription *vmsd, if (ret) { error_setg(errp, "Save of field %s/%s failed", vmsd->name, field->name); - if (vmsd->post_save) { - vmsd->post_save(opaque); + if (vmsd->cleanup_save) { + vmsd->cleanup_save(opaque); } return ret; } @@ -561,12 +561,8 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDes= cription *vmsd, =20 ret =3D vmstate_subsection_save(f, vmsd, opaque, vmdesc, errp); =20 - if (vmsd->post_save) { - int ps_ret =3D vmsd->post_save(opaque); - if (!ret && ps_ret) { - ret =3D ps_ret; - error_setg(errp, "post-save failed: %s", vmsd->name); - } + if (vmsd->cleanup_save) { + vmsd->cleanup_save(opaque); } return ret; } diff --git a/target/arm/machine.c b/target/arm/machine.c index 6986915bee876402c1bd2efb92f41ca1298c66a3..d070114da15de85fd50af71e1d8= caa84f25846d8 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -903,15 +903,13 @@ static int cpu_pre_save(void *opaque) return 0; } =20 -static int cpu_post_save(void *opaque) +static void cpu_cleanup_save(void *opaque) { ARMCPU *cpu =3D opaque; =20 if (!kvm_enabled()) { pmu_op_finish(&cpu->env); } - - return 0; } =20 static int cpu_pre_load(void *opaque) @@ -1048,7 +1046,7 @@ const VMStateDescription vmstate_arm_cpu =3D { .version_id =3D 22, .minimum_version_id =3D 22, .pre_save =3D cpu_pre_save, - .post_save =3D cpu_post_save, + .cleanup_save =3D cpu_cleanup_save, .pre_load =3D cpu_pre_load, .post_load =3D cpu_post_load, .fields =3D (const VMStateField[]) { --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766392; cv=none; d=zohomail.com; s=zohoarc; b=n38PocpVY6Jcxw82rc2CY0rbcuHYmNzRgErqv3YVRQzLwLrAYb8mDdJg5jO4wXzc++BI5VgMbDsNXoHKIszl6kpWqO/thKzfuimVFyNPE8GHJ6363Et+oXT4rqJ9IrFa/570BCC8vTl69FqPLgeDam5G6ucs4jG7swfswoviMCg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766392; 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=aYLt2RSeJxxoQwGBQ8XY2RieBB0inql96aCo0zoBdoA=; b=dGodINgtCkz2SFPGVrGzjj9MYSFbGQ82Q7BCtPoB3nGZ1hQHCVPNuScbxPL3XQWPBGLkoclwclWSC/wUfEXMW2jbjkkzc47KwjqahE3bGF4VAxfN4nwqcq/q2nv414diVoG/F9u2JamNpT9uhxnh2TvYH607b9SsMFYAFsMpc2Y= 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 1755766392160999.4128528141486; Thu, 21 Aug 2025 01:53:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0zj-0003Rv-EV; Thu, 21 Aug 2025 04:50:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0z8-0001Tk-TA for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:49:27 -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 1up0z3-0001np-IG for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:49:26 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-679-ovQ1zUNwNC2JfAXCEpur7w-1; Thu, 21 Aug 2025 04:49:15 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2445820337cso8896185ad.3 for ; Thu, 21 Aug 2025 01:49:15 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.49.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:49:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766158; 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=aYLt2RSeJxxoQwGBQ8XY2RieBB0inql96aCo0zoBdoA=; b=CTaf47pim3CERQP0zbAJl7dpm1mQsu+LRgYFUruJirsbnpirHu02paezyXc3lENBEjNGDL XRNpQJxTAhFXrEYEVudqlFmstgHnltStZgF39s/Ia2gLkmKJnt7mA+bLthqJJ6tIGrDHhJ e05wHcft/72N+Rcct7Pf4Oa6nS0v3cY= X-MC-Unique: ovQ1zUNwNC2JfAXCEpur7w-1 X-Mimecast-MFC-AGG-ID: ovQ1zUNwNC2JfAXCEpur7w_1755766154 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766154; x=1756370954; 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=aYLt2RSeJxxoQwGBQ8XY2RieBB0inql96aCo0zoBdoA=; b=KGyavOgyXFKjMqXyNP0nqo6x5Be/Uev26/MeYZ5PZLoMhMvuVeto2QIWL24QW2NmVg csO4xgujFLOCYOa3OuGOwsW1RsaUGGFDPQRv9U7Ud3fb8/TknTnCqVVf60O2i6s30/P/ YJIgSLxb2hKgDMEQlC4624NNUVSLbQ2lJ0QE6TJUQL4VMk11juixS1Z++BTEANENgIXO Z2uKSk7I1vQPmtGZOCQhOssnwQUf4HlGoAGVRSpwPwxbUltObSEmUd+4ScbxKGAZ53v4 Ocx52MkR40qAK0kUL6Px33/N77sJwldjmJ5duy2MOpqcLZjtHzbRl6t3cLMy4z2fiyRW 8+oA== X-Gm-Message-State: AOJu0YzuiXUWAOa/yG0xKqYRki/HptUCxri1qMVAuFTk/c5sO1B3igsq bxuLoelfcfMWZr1n6i5W8bJ0Bwq7af/cywSLFXx9JaZXDugMwRUCB783XG6yNyZnEpghcRJIAUL QZpDOjMkcPnikIZlVA4zkHL4PC3fpRPjNtR+arDM5Jg3X4AJG5b6r+Dy8 X-Gm-Gg: ASbGncvrGMg2RLdUCp0bCrkUshh5PtO142lII3vMbnqw8x1z2D42i9lU338nn151BB2 9H+B7+GzlNSnpRbImtrK5dEUlFSDeab8gdIUVi+ovyRtCTLHIEMbWbYf+gO/aydH5kW2wA6mzDs 3afXKJWaSj/P1yX5przqiAM/LiTOc+aFUKDeN8uPDveJNR4KS6upGmBzYIHIi8l46MQ9qCm6Zwz p5K5sSDxWs+7GHexlx6ug5tHnFj1fNPoK8jmZPsGkn8qBl46IqZToFYtL7BApnAxC3fftHodLiD 057Ez45ZxTT/0lvFabiZJdRgxfBsStd+cVaY/x+p6h58GEtkC4gb X-Received: by 2002:a17:903:1b47:b0:242:b315:dda7 with SMTP id d9443c01a7336-245febef6famr22067275ad.3.1755766154313; Thu, 21 Aug 2025 01:49:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEKEjR4yLtD2g3vFKzQvwvjCahP1aDWJeIdTUgc2rf2ecTI+7mZQTewNBD0zo2na2oa3Pznew== X-Received: by 2002:a17:903:1b47:b0:242:b315:dda7 with SMTP id d9443c01a7336-245febef6famr22066945ad.3.1755766153847; Thu, 21 Aug 2025 01:49:13 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:20 +0530 Subject: [PATCH v12 26/27] migration: Add error-parameterized function variants in VMSD struct MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-26-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@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=6573; i=armenon@redhat.com; h=from:subject:message-id; bh=bA8w2RL2yE8W1o0oSEdgk2K28Sd2PPEUffHlP5NWeZU=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO6mOJ4wrhUQXLQxfOiV7yhXmOMvTH+9mr+e1Vtt4M Vn38cOSjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABOpv83IcPP7ufTuoB1ya+Z+ Cq3XPbDtZexVFtbmPXzH6k226pvp6DEyXLrjwaLF0NQ8PZF1+cbTjHsmzAv7sS4mwTBtumdED68 JJwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766394860124100 - We need to have good error reporting in the callbacks in VMStateDescription struct. Specifically pre_save, pre_load and post_load callbacks. - It is not possible to change these functions everywhere in one patch, therefore, we introduce a duplicate set of callbacks with Error object passed to them. - So, in this commit, we implement 'errp' variants of these callbacks, introducing an explicit Error object parameter. - This is a functional step towards transitioning the entire codebase to the new error-parameterized functions. - Deliberately called in mutual exclusion from their counterparts, to prevent conflicts during the transition. - New impls should preferentally use 'errp' variants of these methods, and existing impls incrementally converted. The variants without 'errp' are intended to be removed once all usage is converted. Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- docs/devel/migration/main.rst | 19 +++++++++++++++++++ include/migration/vmstate.h | 14 ++++++++++++++ migration/vmstate.c | 30 +++++++++++++++++++++++++++--- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst index a39fec2e21c26c4315c0cf13b105176d70679d4d..93620102ae875e7477af2e26eef= fe636ca0cdbca 100644 --- a/docs/devel/migration/main.rst +++ b/docs/devel/migration/main.rst @@ -444,6 +444,25 @@ The functions to do that are inside a vmstate definiti= on, and are called: This function is called after we save the state of one device (even upon failure, unless the call to pre_save returned an error). =20 +Following are the errp variants of these functions. + +- ``int (*pre_load_errp)(void *opaque, Error **errp);`` + + This function is called before we load the state of one device. + +- ``int (*post_load_errp)(void *opaque, int version_id, Error **errp);`` + + This function is called after we load the state of one device. + +- ``int (*pre_save_errp)(void *opaque, Error **errp);`` + + This function is called before we save the state of one device. + +New impls should preferentally use 'errp' variants of these +methods and existing impls incrementally converted. +The variants without 'errp' are intended to be removed +once all usage is converted. + Example: You can look at hpet.c, that uses the first three functions to massage the state that is transferred. =20 diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index c1d8e5b7a7d9d544fc8ce181372660f5538ef66b..647d7a35ce5f2c8b8ca5fdb15b5= 4c10a0896cea8 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -200,14 +200,28 @@ struct VMStateDescription { * exclusive. For this reason, also early_setup VMSDs are migrated in a * QEMU_VM_SECTION_FULL section, while save_setup() data is migrated in * a QEMU_VM_SECTION_START section. + * + * There are duplicate impls of the post/pre save/load hooks. + * New impls should preferentally use 'errp' variants of these + * methods and existing impls incrementally converted. + * The variants without 'errp' are intended to be removed + * once all usage is converted. + * + * For the errp variants, + * Returns: 0 on success, + * <0 on error where -value is an error number from errno.h */ + bool early_setup; int version_id; int minimum_version_id; MigrationPriority priority; int (*pre_load)(void *opaque); + int (*pre_load_errp)(void *opaque, Error **errp); int (*post_load)(void *opaque, int version_id); + int (*post_load_errp)(void *opaque, int version_id, Error **errp); int (*pre_save)(void *opaque); + int (*pre_save_errp)(void *opaque, Error **errp); void (*cleanup_save)(void *opaque); bool (*needed)(void *opaque); bool (*dev_unplug_pending)(void *opaque); diff --git a/migration/vmstate.c b/migration/vmstate.c index 283b5c48d39d572c1b19819ed1860c68e118d674..5fd19acc410123be2ad23aadeb2= 8e3ad708762e5 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -153,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', " @@ -249,7 +258,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, @@ -418,12 +434,20 @@ int vmstate_save_state(QEMUFile *f, const VMStateDesc= ription *vmsd, int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc, int version_id,= Error **errp) { + ERRP_GUARD(); int ret =3D 0; const VMStateField *field =3D vmsd->fields; =20 trace_vmstate_save_state_top(vmsd->name); =20 - if (vmsd->pre_save) { + if (vmsd->pre_save_errp) { + ret =3D vmsd->pre_save_errp(opaque, errp); + trace_vmstate_save_state_pre_save_res(vmsd->name, ret); + if (ret < 0) { + error_prepend(errp, "pre-save for %s failed, ret: %d: ", + vmsd->name, ret); + } + } else if (vmsd->pre_save) { ret =3D vmsd->pre_save(opaque); trace_vmstate_save_state_pre_save_res(vmsd->name, ret); if (ret) { --=20 2.50.1 From nobody Sat Nov 15 03:05:04 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=1755766285; cv=none; d=zohomail.com; s=zohoarc; b=mGElQrkkeHT4CUhi0zsb8ZXHyY6ZcyUxpmLlXcdOdbxyAeLXtYywMBA5InCeOiMLk/3wF8PtuzWJwpbLrFYepL8FJhR+DfLWxgZfTt3c9RIVbX+xZrtWUzMLTbuv4AqCyUCSmd6lZ7IutDrR/Xe6w/H2ob273Z7rsKeZZH/4Ie4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755766285; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IrmyOFbIa0k81LCSi2crfagyGp2pAVLdS4CCVD46SsM=; b=HcKnfQg5qIthXUDT2VxW63Lmhum//C4GrB/mPUcD3po01THsVVFtwFedKfv179ysX4gKDBVC3/wdabe90CldP8DxcwMylO6utSIBfYah6wHO7lp6ntI6fkxGvQrLOnaoM8W2iRxUase/0CnigpwC7W7XX/7glebC6ifGxovNd8Q= 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 1755766285477860.7645836460293; Thu, 21 Aug 2025 01:51:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0zs-00049r-FF; Thu, 21 Aug 2025 04:50:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0zK-0002L6-Ey for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:49:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1up0zB-0001pB-MF for qemu-devel@nongnu.org; Thu, 21 Aug 2025 04:49:37 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-387-mKMlg5E0N9KfKpOJRf96vA-1; Thu, 21 Aug 2025 04:49:26 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-244581187c6so11052715ad.1 for ; Thu, 21 Aug 2025 01:49:26 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.47.192.65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-245ed33e05dsm48789985ad.3.2025.08.21.01.49.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Aug 2025 01:49:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755766168; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IrmyOFbIa0k81LCSi2crfagyGp2pAVLdS4CCVD46SsM=; b=BRsYmAi9famwxR5ifsAcphsT21TsMR3IQDKV5ZLkOgiFIa3GXOTQ0ZvhehmUzC/w75hd1b Pcccx7U49VKgvj4Qq2Ls0ijCha4KdZOwhHZkHe89d0Q3Xlr8TktIXg6w8kpwzIfyGB7vNz im/gINPKTgW2hJbU4xVcgMdO7XyUdqM= X-MC-Unique: mKMlg5E0N9KfKpOJRf96vA-1 X-Mimecast-MFC-AGG-ID: mKMlg5E0N9KfKpOJRf96vA_1755766165 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755766165; x=1756370965; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IrmyOFbIa0k81LCSi2crfagyGp2pAVLdS4CCVD46SsM=; b=diJ0v1EWyetZ+G05mbgyGxE16wF5XUsCCOY2sxF061h21mVAyPybWbO9aWXzBBI7rl nS5Cl5Q+zkyoKxpmc7GhFQOq5ZGUHWUWFfYy30pMELuTLoyCN3OKeh+9L9PoBvT9jkxL J2ohv1WrrZdk9tCt/mnYA9mMCW8ZHY9E1rsQJ6ImhqXIr8VponOtbTku7TGcZwf0Rdpc rhrZaDswDa7kJnr+FMI/JmZnJmzMimKg5m5zJsRGUglS8GiOTJ4d55vANsO3SXsXMdD+ FJfFD6kzdoR/i6diNcKD8bY6ZweO/vVDcC+H2FNN69OjcER8Q4Ul3NzwSXfwYSxHUIs+ KHtQ== X-Gm-Message-State: AOJu0YykzCBUep8u8j+7Jav+Qn8Qc1c1eTVQyaxzAfzmn7e5zRlN06/C fsE7wxCMdBXgfvF4aEWBZMOE2CjXoOBSeq75Xu+oybGb9aRcDWCASZISATNQbGT9PccFj3F5dwX kEnrOQw9tWpODQvSKf20cfhl/gyjZ4lyHHOEevJ1SXJEi7o3/i6zuqAE3f18WI4oJ X-Gm-Gg: ASbGncv/9wy8MlSf6PnWsW2X5ts1zE8qnmo5dFhLltGlWNL1IYddKX7cJEiJkSw/qUd KVpaz5wHMGhyJHRWIygL1VfM5K4egtewb8NhZtsEiGG/8WpjIOyHRhkG9PBVY/XKLiHHc6SbqBf 2l/12Ft/ELZFoq42ajwv8ROfo+WV9RjiuYA1wZPSN0/woQRkqlDm7ZdbZ+OGmtrf6/EN4pbZsFw Gp7nUWTmyrpM3JNUMsGtSKVO2imsb+fDEXI8uLX/2BMbC/3z5DFmJV6fUzDcWQd1e+I07vSHalU Bd3HSRuLE+dPxO/30ea2SbQ6Q7fqeMzBbSR5rfRxd9LYD0pQcFtG X-Received: by 2002:a17:902:e945:b0:240:763d:e999 with SMTP id d9443c01a7336-245fed7d1a4mr21732775ad.29.1755766164912; Thu, 21 Aug 2025 01:49:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IELsoSd1Ft8mZKfa4ozKlB1OUzuJGZBpbSuOdrCcMzeCg3VC/p6ep/p6GmCONhTwqGp/qF1Hw== X-Received: by 2002:a17:902:e945:b0:240:763d:e999 with SMTP id d9443c01a7336-245fed7d1a4mr21732445ad.29.1755766164524; Thu, 21 Aug 2025 01:49:24 -0700 (PDT) From: Arun Menon Date: Thu, 21 Aug 2025 14:14:21 +0530 Subject: [PATCH v12 27/27] backends/tpm: Propagate vTPM error on migration failure MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-propagate_tpm_error-v12-27-72b803e707dc@redhat.com> References: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> In-Reply-To: <20250821-propagate_tpm_error-v12-0-72b803e707dc@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Peter Maydell , qemu-arm@nongnu.org, Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Stefan Berger X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6695; i=armenon@redhat.com; h=from:subject:message-id; bh=qkfEA7ojmGiLCP4BOBgR+X9tFhQoPaG7uEYFJBJjL/Q=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8ayO6mNp7hFtDmWPrVY68O70oqnNf5O39Ty7gXHe7ZJL 455/lm2o5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwESqJzL8r5B5afPH1sYj6UVP bOdntv1lcxtaMlY//+vobP56eaxKC8MvpjNaLXsdDcK8X3bmSJ+WmMHzuHDNsXYT5addAp8a1un yAwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1755766286835124100 - When migration of a VM with encrypted vTPM fails on the destination host, (e.g., due to a mismatch in secret values), the error message displayed on the source host is generic and unhelpful. - For example, a typical error looks like this: "operation failed: job 'migration out' failed: Sibling indicated error 1. operation failed: job 'migration in' failed: load of migration failed: Input/output error" - Such generic errors are logged using error_report(), which prints to the console/monitor but does not make the detailed error accessible via the QMP query-migrate command. - This change, along with the set of changes of passing errp Error object to the VM state loading functions, help in addressing the issue. We use the post_load_errp hook of VMStateDescription to propagate errors by setting Error **errp objects in case of failure in the TPM backend. - It can then be retrieved using QMP command: {"execute" : "query-migrate"} Buglink: https://issues.redhat.com/browse/RHEL-82826 Reviewed-by: Stefan Berger Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- backends/tpm/tpm_emulator.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c index 4a234ab2c0b19b2604bf0dd8cb5f4540c72a9438..dacfca5ab7eb0445ddc1ced9751= 3068501b468bf 100644 --- a/backends/tpm/tpm_emulator.c +++ b/backends/tpm/tpm_emulator.c @@ -819,7 +819,8 @@ static int tpm_emulator_get_state_blobs(TPMEmulator *tp= m_emu) static int tpm_emulator_set_state_blob(TPMEmulator *tpm_emu, uint32_t type, TPMSizedBuffer *tsb, - uint32_t flags) + uint32_t flags, + Error **errp) { ssize_t n; ptm_setstate pss; @@ -838,17 +839,18 @@ static int tpm_emulator_set_state_blob(TPMEmulator *t= pm_emu, /* write the header only */ if (tpm_emulator_ctrlcmd(tpm_emu, CMD_SET_STATEBLOB, &pss, offsetof(ptm_setstate, u.req.data), 0, 0) < 0= ) { - error_report("tpm-emulator: could not set state blob type %d : %s", - type, strerror(errno)); + error_setg_errno(errp, errno, + "tpm-emulator: could not set state blob type %d", + type); return -1; } =20 /* now the body */ n =3D qemu_chr_fe_write_all(&tpm_emu->ctrl_chr, tsb->buffer, tsb->size= ); if (n !=3D tsb->size) { - error_report("tpm-emulator: Writing the stateblob (type %d) " - "failed; could not write %u bytes, but only %zd", - type, tsb->size, n); + error_setg(errp, "tpm-emulator: Writing the stateblob (type %d) " + "failed; could not write %u bytes, but only %zd", + type, tsb->size, n); return -1; } =20 @@ -856,17 +858,17 @@ static int tpm_emulator_set_state_blob(TPMEmulator *t= pm_emu, n =3D qemu_chr_fe_read_all(&tpm_emu->ctrl_chr, (uint8_t *)&pss, sizeof(pss.u.resp)); if (n !=3D sizeof(pss.u.resp)) { - error_report("tpm-emulator: Reading response from writing stateblo= b " - "(type %d) failed; expected %zu bytes, got %zd", type, - sizeof(pss.u.resp), n); + error_setg(errp, "tpm-emulator: Reading response from writing " + "stateblob (type %d) failed; expected %zu bytes, " + "got %zd", type, sizeof(pss.u.resp), n); return -1; } =20 tpm_result =3D be32_to_cpu(pss.u.resp.tpm_result); if (tpm_result !=3D 0) { - error_report("tpm-emulator: Setting the stateblob (type %d) failed= " - "with a TPM error 0x%x %s", type, tpm_result, - tpm_emulator_strerror(tpm_result)); + error_setg(errp, "tpm-emulator: Setting the stateblob (type %d) " + "failed with a TPM error 0x%x %s", type, tpm_result, + tpm_emulator_strerror(tpm_result)); return -1; } =20 @@ -880,7 +882,7 @@ static int tpm_emulator_set_state_blob(TPMEmulator *tpm= _emu, * * Returns a negative errno code in case of error. */ -static int tpm_emulator_set_state_blobs(TPMBackend *tb) +static int tpm_emulator_set_state_blobs(TPMBackend *tb, Error **errp) { TPMEmulator *tpm_emu =3D TPM_EMULATOR(tb); TPMBlobBuffers *state_blobs =3D &tpm_emu->state_blobs; @@ -894,13 +896,13 @@ static int tpm_emulator_set_state_blobs(TPMBackend *t= b) =20 if (tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_PERMANENT, &state_blobs->permanent, - state_blobs->permanent_flags) < 0 || + state_blobs->permanent_flags, errp) < = 0 || tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_VOLATILE, &state_blobs->volatil, - state_blobs->volatil_flags) < 0 || + state_blobs->volatil_flags, errp) < 0 = || tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_SAVESTATE, &state_blobs->savestate, - state_blobs->savestate_flags) < 0) { + state_blobs->savestate_flags, errp) < = 0) { return -EIO; } =20 @@ -948,12 +950,12 @@ static void tpm_emulator_vm_state_change(void *opaque= , bool running, * * Returns negative errno codes in case of error. */ -static int tpm_emulator_post_load(void *opaque, int version_id) +static int tpm_emulator_post_load(void *opaque, int version_id, Error **er= rp) { TPMBackend *tb =3D opaque; int ret; =20 - ret =3D tpm_emulator_set_state_blobs(tb); + ret =3D tpm_emulator_set_state_blobs(tb, errp); if (ret < 0) { return ret; } @@ -969,7 +971,7 @@ static const VMStateDescription vmstate_tpm_emulator = =3D { .name =3D "tpm-emulator", .version_id =3D 0, .pre_save =3D tpm_emulator_pre_save, - .post_load =3D tpm_emulator_post_load, + .post_load_errp =3D tpm_emulator_post_load, .fields =3D (const VMStateField[]) { VMSTATE_UINT32(state_blobs.permanent_flags, TPMEmulator), VMSTATE_UINT32(state_blobs.permanent.size, TPMEmulator), --=20 2.50.1