From nobody Sun Apr 12 04:27:05 2026 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=1771415021; cv=none; d=zohomail.com; s=zohoarc; b=De8MG0Y35U6srMEyVv1he4IlwhzqEgvnTQ7XvdUVBG8jBMDtURd6m4dF3QzSBl/AfdSiwOQ7oFq6G8N4htqRuFdBqMqKODaTysfkTiSo9RTnSLk0fjvVX5PbyKbi387bUI3b8lH2JI3cs9kSvrhNLKRbzeDa351mTD95q6ky90Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415021; h=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=tl/hVXrG5h9KMQqt7EBB/wY/rgh04YPReYpJxV14peY=; b=crOFwR0WGeXRhworb1YRWYafNrOrT/PHs1XDmha5Gj75voDvuRqIlVK0tdDahrdJk7wjpz4zBUWnPMA/o/Zy4AQGJjVaJIiAMc3DLnz75ebbwz1W6poGa7Uzr8LfDxKe3C3GkAezsYn7ov3Nj/a/ajJjiAKZ+cwL7HnJQhX1Q78= 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 1771415021565796.4197545880343; Wed, 18 Feb 2026 03:43:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxb-00038A-IE; Wed, 18 Feb 2026 06:43:15 -0500 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 1vsfxL-00035N-E4 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:00 -0500 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 1vsfxI-0007ck-8C for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:42:58 -0500 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-631-mRIaz-tIOMCesekqYUjtbw-1; Wed, 18 Feb 2026 06:42:50 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2a943e214daso257831755ad.3 for ; Wed, 18 Feb 2026 03:42:50 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.42.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:42:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414974; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tl/hVXrG5h9KMQqt7EBB/wY/rgh04YPReYpJxV14peY=; b=eX7bWVkydZulK/4qEA1QxQAw0NQSzOsyymH6Zt29w34STOClcxEn1G7+SIfcRFbQpi2gXL 2v99iFOhqkDqurpnmhvWPjBY17rVOcGz5WV8LkUeVNZP+I2nRQa5s5K9J4i8o0jBr9P68y GfJ3OFNnn3zGBUR5CCxxISmX8w6TNk8= X-MC-Unique: mRIaz-tIOMCesekqYUjtbw-1 X-Mimecast-MFC-AGG-ID: mRIaz-tIOMCesekqYUjtbw_1771414970 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414969; x=1772019769; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tl/hVXrG5h9KMQqt7EBB/wY/rgh04YPReYpJxV14peY=; b=goCqEYbUV8kHTrgx6KOmqqMxw+WHKM5jH/JXTkqBlsg/nBsYNYJLFJN8fkeyEECE7F P0ohWEFFyREU3pQLfZscQcxjPFq1r65HcIk6OQbJmIYx+TxGaDjBFTe1erW6xWi0vD2P z9N7A3w7a/5nDurE4O4dz2PxYGof6WZ/IyB8d7qqCbpchbMn5Zd2Kfj5gGeRgdEYYsht 43V2Af7nUM91X2ldbcYDqt7hC0XKI1pXU5NxUAsfFOIMxKxScUSb5VhO1vJ7pSuidD02 Qtm8DthHRYcwmTJVj+m2iP+SO6lP5ekfsHlIp/if7ms6VkTIwu4KqRofKrehVuzPmR9P OO5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414969; x=1772019769; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=tl/hVXrG5h9KMQqt7EBB/wY/rgh04YPReYpJxV14peY=; b=pRY8qCoEtgWuWjM6cgRes8JYnFIkEkSEut/SsUo3v29/8D8qbrguyEprhMhdP/q+h+ I8bd2FVrSuqYVyEoUVkjPbkX7Vy2FfUTHBzBSkjHNo+it5pET3erZ+x3YTYu17kKW/6K CZ1tOTtnLD4ZrEFrUobV0owP1vOKMuqgn+1dXRTh6OkaH9rN8doWhT6ETIsrfCHN2i+4 zji6vw7+6C129gpAY7Fnf/Njj5FcfdGLFuVqq9B0bSCrWKJpIWWmLgr3KAEEqF+iWk6m n5WSuxyY+Ite0gfO+NQKhe62+QTf3NMQZ/+ASbgiuBjUTCfoLxkNbyKNkYN7uFFNArkw SUJQ== X-Forwarded-Encrypted: i=1; AJvYcCWtjiVIEYL6gBrYUJcf2ymn0JYmFjK4yOqk0+NRbHge+O9Z0tZsyhbSZwEU57QhDIRwup72nW6fIfYs@nongnu.org X-Gm-Message-State: AOJu0Yw/2HwhESE3b6Kz4OXxOq5shklJAN2NIFtTS7x/loxMitXcpWKv ubVu9KaU9kMQUNveKDSmM6CBSvwzzsNHBWYTA1YxTQTV3BNjZF6nviOmce4c26KlsY3hz12DhnA MA92bjGJXVVSSpgZycNNOUXV8yn2v/XXOs+QY0HFI6lA/b+pftHYvZQRJ X-Gm-Gg: AZuq6aIKM7tu/KIRJp5oa/EXFkejWiFPEa1p2RwyVYB3H3tPXM8njzkY6yybUKpxH2D 2/Mb15FurcXG+lUbzdwK2kMZubF59KJT+rL0sCwA3kEcEUWvIsH9WvpXPWjzvtA7Z9iGK2FiK1Z cWoz+Ql8J26GbF1zQuxv8nqvuWn058CbQNpuZS3K2KC0XlCM0lx4NKHJ45vA4MfRO2xH+bP4FtW gPbdpZnEyW9RrHcjOxFdyNMLDGrBRcGwov2yGgpBiXeS0BcT4sfgLkP429E/yiXueMZKLhn/OVn 2OTiLrIWxnX/KCNfHRXmM8GOJQIAhnVbpp4VxMHGcWmvx3uvti8u4fZ3CEW4dhKyhJvprSZ+/Jb Hioe9b2F3Wv+Ob9w8VitS82PiNWQNiGI6LYYs/oPzaAnO1VRdzCLV X-Received: by 2002:a17:902:f60b:b0:2a0:bb05:df4f with SMTP id d9443c01a7336-2ab4d053111mr161183735ad.44.1771414969597; Wed, 18 Feb 2026 03:42:49 -0800 (PST) X-Received: by 2002:a17:902:f60b:b0:2a0:bb05:df4f with SMTP id d9443c01a7336-2ab4d053111mr161183605ad.44.1771414969251; Wed, 18 Feb 2026 03:42:49 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 01/34] i386/kvm: avoid installing duplicate msr entries in msr_handlers Date: Wed, 18 Feb 2026 17:11:54 +0530 Message-ID: <20260218114233.266178-2-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415024175158500 Content-Type: text/plain; charset="utf-8" kvm_filter_msr() does not check if an msr entry is already present in the msr_handlers table and installs a new handler unconditionally. If the funct= ion is called again with the same MSR, it will result in duplicate entries in t= he table and multiple such calls will fill up the table needlessly. Fix that. Signed-off-by: Ani Sinha --- target/i386/kvm/kvm.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 9f1a4d4cbb..6d823a7991 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -6278,27 +6278,33 @@ static int kvm_install_msr_filters(KVMState *s) static int kvm_filter_msr(KVMState *s, uint32_t msr, QEMURDMSRHandler *rdm= sr, QEMUWRMSRHandler *wrmsr) { - int i, ret; + int i, ret =3D 0; =20 for (i =3D 0; i < ARRAY_SIZE(msr_handlers); i++) { - if (!msr_handlers[i].msr) { + if (msr_handlers[i].msr =3D=3D msr) { + break; + } else if (!msr_handlers[i].msr) { msr_handlers[i] =3D (KVMMSRHandlers) { .msr =3D msr, .rdmsr =3D rdmsr, .wrmsr =3D wrmsr, }; + break; + } + } =20 - ret =3D kvm_install_msr_filters(s); - if (ret) { - msr_handlers[i] =3D (KVMMSRHandlers) { }; - return ret; - } + if (i =3D=3D ARRAY_SIZE(msr_handlers)) { + ret =3D -EINVAL; + goto end; + } =20 - return 0; - } + ret =3D kvm_install_msr_filters(s); + if (ret) { + msr_handlers[i] =3D (KVMMSRHandlers) { }; } =20 - return -EINVAL; + end: + return ret; } =20 static int kvm_handle_rdmsr(X86CPU *cpu, struct kvm_run *run) --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415095; cv=none; d=zohomail.com; s=zohoarc; b=cX7TvFw6itojapMq9+VEKb3o5OrIgzUtBczDa03e8JZoueH0WuYB/z4gCKAV35/+3AClEMY+g/NQms2seOmfqZxTtgh8P9pd7GRQqFIafdP2UJxt/P2O+N5DtRWO6J/rw5cXmFUhvbIR4iDndWsGehbWlIDpRtjf6ZlVRtQmN4s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415095; h=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=p3brC6j5MVPRsa373EQ1kn7FdyUiGI8z9lGD92Jf5HY=; b=JJMAm8Cl7tXr5n9xCfuMsTUtxa4baatfEnougKE7IbvcHgNWl3RSXn2gzllnr7A4NJikV41TCJwbl/sH/LiqBOWb4EFJFLZSTAiC5zHqq2ZpKKxTAc+xHl6XGF1jTu5PyZjNQdhBvGkoTFBn8Akt4XaGxkHutUbxxpVkogFgQQ0= 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 1771415095295999.8934063262196; Wed, 18 Feb 2026 03:44:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxp-0003Hb-ID; Wed, 18 Feb 2026 06:43:29 -0500 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 1vsfxa-00038H-3X for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:15 -0500 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 1vsfxP-0007nU-1N for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:09 -0500 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-587-yWDi5JaeMdqrNFKMvACZEw-1; Wed, 18 Feb 2026 06:42:55 -0500 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2aae0d40a47so261358055ad.2 for ; Wed, 18 Feb 2026 03:42:55 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.42.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:42:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414979; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=p3brC6j5MVPRsa373EQ1kn7FdyUiGI8z9lGD92Jf5HY=; b=I8r7EEGhWJ6WHL1kiAuj2c1XJO24RQHebfth62t4BFUFGK2RJ6iEVwwWskz9NInWS4eMDT pn1NlnLtZ+ZwxLKke1YQ8TOcq0cE+MLJ3X7OAgJIOgsQTrGViKwxLIkFD3sy6DvlE78Hqy kfasZJcwsApoKnOizy/vBZ5hj3Oivcs= X-MC-Unique: yWDi5JaeMdqrNFKMvACZEw-1 X-Mimecast-MFC-AGG-ID: yWDi5JaeMdqrNFKMvACZEw_1771414973 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414973; x=1772019773; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=p3brC6j5MVPRsa373EQ1kn7FdyUiGI8z9lGD92Jf5HY=; b=IteESUMtUnMKTpgzkt5H5pq3e9OUm7MMk0uqXKHGIOLCSD6uunE0Pr2hJimhIDBzI8 iz+iw88GhXGGGZvEHYK7cEjLVWsplmAs+n1DF51yOjgk+cvW3bJ0UtrfqSQVdIYThFQ0 kmFrLC9ls/ijt6wWB2BVkAWPKYvnYnJbkk2yDVHGVXIycdtUGW5v1FEicX5gIslCzr9C QBlwQk8lYYcfmykUsNw2j5qhsu9mi44gtNllRF2hGnJtXiuD0rzpV1puItbaXOomQEJi 7UToI02vuE+BZ/GyaKjI61lNYlysfcpNtUuTNvpBMNsX0GhCWMPIel3yDZWEeFtpg6nS vhTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414973; x=1772019773; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=p3brC6j5MVPRsa373EQ1kn7FdyUiGI8z9lGD92Jf5HY=; b=pKQoJ+dQSqimJnAnV+UaEE2bgThAHLh4TfQW1nFaaaApjBToGwqi7+7u6HKSRXFkl/ qZ0n03kix7mE1BP5i5uDyBaSNIy9J/Lw51MgYXlIWXb0qcYpPiy7Zwh0q50n7cEx+aw/ 1ovwRwTg8c650rm7WMBNWUTIdRfEJJBRoq3ZIHzCTwo3Ty6fj9Esi4VWxVpg++V2P3sf ripsep8ZJkJEOONaJCkJd9kNn8zWICiiky6J7ng/UGmzYAk9u+uQutsZQYmZxhYO4YQF 1zK/Gshwhtzb2Y96hCMVi9Tm8btcSX0iAs/43m1lnVYkn3oPncFgyBj/G/sLDvT8ZCZK 8NIA== X-Forwarded-Encrypted: i=1; AJvYcCWAzDHT0VNaT2n+BsMIN9oCtqAxb87D/Wl4Zi+jjRMVY2MWrLhuEQbzL0aJt/xA/AcfnMzp2fEn+HxQ@nongnu.org X-Gm-Message-State: AOJu0YwI4x5qRxflYcQ6dzwuDSW1GDtAedc2EymVcmWmIXvb0nA3Lvs/ wKUbMIYALmjqxJTW7pfBZ55ENuXCGeX6k2pkwJmSYEkHA3HuQYLRiIV5RAfw/z0xRRsojRtb+AO 1sOaeiei1rWIW8N5oRF6uh7EWAQ0bvEzTKFdzQ1mxmgsNbwVGr9qqBQ4U X-Gm-Gg: AZuq6aJnp2+rJUVsXm7vyZv3GstsE2lIIGRyCplUTTfgwQUoCsUfRLoyFEyX0VAmK0q v+6TPd1zvuvhgtilSX91QDnmfv2+dEFVO5drHA1T2vV1T893NBHo/dOl0Nya+LSkm3FhJSORaqW JFjaB8cE++RMRIg/r0Qku2h8MIKXp1bB/fbfJSfkYP7zRysx1jFoJHsK5Rw/nf7HrRQlhIOBoXx fgDXcBaR2kddlY0b50PDD1OJgym2nsI56eOnCiZaCRA27Mo1vgobUTgkSeZL7AfHWFCp1MoSiyw C/awuMZRzOU6iu4g71oaMq4y2NRBGrfYMctRADpOrYZMWW811xiFtrMOA3asi44p0egW7X5zXiq QhQ9FA98zyWJhLafSv8MBW+4Hp3LJk8jKEtuR11xnrzMdW11wAy3A X-Received: by 2002:a17:903:1b67:b0:2a0:c35c:572e with SMTP id d9443c01a7336-2ad17501af0mr153308255ad.30.1771414972857; Wed, 18 Feb 2026 03:42:52 -0800 (PST) X-Received: by 2002:a17:903:1b67:b0:2a0:c35c:572e with SMTP id d9443c01a7336-2ad17501af0mr153308155ad.30.1771414972496; Wed, 18 Feb 2026 03:42:52 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti , Zhao Liu Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v5 02/34] accel/kvm: add confidential class member to indicate guest rebuild capability Date: Wed, 18 Feb 2026 17:11:55 +0530 Message-ID: <20260218114233.266178-3-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415096269158500 Content-Type: text/plain; charset="utf-8" As a part of the confidential guest reset process, the existing encrypted g= uest state must be made mutable since it would be discarded after reset. A new encrypted and locked guest state must be established after the reset. To th= is end, a new boolean member per confidential guest support class (eg, tdx or sev-snp) is added that will indicate whether its possible to rebuild guest state: bool can_rebuild_guest_state; This is true if rebuilding guest state is possible, false otherwise. A KVM based confidential guest reset is only possible when the existing state is locked but its possible to rebuild guest state. Otherwise, the guest is not resettable. Signed-off-by: Ani Sinha --- include/system/confidential-guest-support.h | 20 ++++++++++++++++++++ system/runstate.c | 6 +++--- target/i386/kvm/tdx.c | 1 + target/i386/sev.c | 1 + 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/include/system/confidential-guest-support.h b/include/system/c= onfidential-guest-support.h index 0cc8b26e64..5dca717308 100644 --- a/include/system/confidential-guest-support.h +++ b/include/system/confidential-guest-support.h @@ -152,6 +152,11 @@ typedef struct ConfidentialGuestSupportClass { */ int (*get_mem_map_entry)(int index, ConfidentialGuestMemoryMapEntry *e= ntry, Error **errp); + + /* + * is it possible to rebuild the guest state? + */ + bool can_rebuild_guest_state; } ConfidentialGuestSupportClass; =20 static inline int confidential_guest_kvm_init(ConfidentialGuestSupport *cg= s, @@ -167,6 +172,21 @@ static inline int confidential_guest_kvm_init(Confiden= tialGuestSupport *cgs, return 0; } =20 +static inline bool +confidential_guest_can_rebuild_state(ConfidentialGuestSupport *cgs) +{ + ConfidentialGuestSupportClass *klass; + + if (!cgs) { + /* non-confidential guests */ + return true; + } + + klass =3D CONFIDENTIAL_GUEST_SUPPORT_GET_CLASS(cgs); + return klass->can_rebuild_guest_state; + +} + static inline int confidential_guest_kvm_reset(ConfidentialGuestSupport *c= gs, Error **errp) { diff --git a/system/runstate.c b/system/runstate.c index d091a2bddd..13f32bed8c 100644 --- a/system/runstate.c +++ b/system/runstate.c @@ -57,6 +57,7 @@ #include "system/reset.h" #include "system/runstate.h" #include "system/runstate-action.h" +#include "system/confidential-guest-support.h" #include "system/system.h" #include "system/tpm.h" #include "trace.h" @@ -543,8 +544,6 @@ void qemu_system_reset(ShutdownCause reason) */ if (cpus_are_resettable()) { cpu_synchronize_all_post_reset(); - } else { - assert(runstate_check(RUN_STATE_PRELAUNCH)); } =20 vm_set_suspended(false); @@ -697,7 +696,8 @@ void qemu_system_reset_request(ShutdownCause reason) if (reboot_action =3D=3D REBOOT_ACTION_SHUTDOWN && reason !=3D SHUTDOWN_CAUSE_SUBSYSTEM_RESET) { shutdown_requested =3D reason; - } else if (!cpus_are_resettable()) { + } else if (!cpus_are_resettable() && + !confidential_guest_can_rebuild_state(current_machine->cgs)= ) { error_report("cpus are not resettable, terminating"); shutdown_requested =3D reason; } else { diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index 0161985768..a3e81e1c0c 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -1543,6 +1543,7 @@ static void tdx_guest_class_init(ObjectClass *oc, con= st void *data) X86ConfidentialGuestClass *x86_klass =3D X86_CONFIDENTIAL_GUEST_CLASS(= oc); =20 klass->kvm_init =3D tdx_kvm_init; + klass->can_rebuild_guest_state =3D true; x86_klass->kvm_type =3D tdx_kvm_type; x86_klass->cpu_instance_init =3D tdx_cpu_instance_init; x86_klass->adjust_cpuid_features =3D tdx_adjust_cpuid_features; diff --git a/target/i386/sev.c b/target/i386/sev.c index acdcb9c4e6..66e38ca32e 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -2760,6 +2760,7 @@ sev_common_instance_init(Object *obj) cgs->set_guest_state =3D cgs_set_guest_state; cgs->get_mem_map_entry =3D cgs_get_mem_map_entry; cgs->set_guest_policy =3D cgs_set_guest_policy; + cgs->can_rebuild_guest_state =3D true; =20 QTAILQ_INIT(&sev_common->launch_vmsa); } --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415021; cv=none; d=zohomail.com; s=zohoarc; b=m/5mGwkMJr3dZMnQOY7M1H8HP+NJRNZ18hB1IZdOtXC1V5eIj+qUlIE36tcnlk6kndeCA6VpvNQQzKdI2Y7SIoR1CPeqXwNA2yBhVDdDsURQAHcjp2UUQW92x5LrMhYq3GLv/0QWjOjD+ZzPPYCZ0mZGC2TBSru+A3qVR84Lru8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415021; h=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=ILLZe/318SI2fwBccfO7VLFYXHx8OHK07juZHL2pnss=; b=QNcTg1K7pXDNSIvfOD3+IHk6Nj5PcwZxKijMUZFg+QLWXqvrjeqa2s1mr/4d9Rua1nFGupn4e6uSJuoijvMghjp4sKErKIWw5uMhHXtlyGhyZsEvBFl5xlzwIVlbN8jANbgGNnL9dgJpRiDEwajtV8hZJ29ENn7k7dCIuDn/RAI= 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 1771415021960180.09736379259414; Wed, 18 Feb 2026 03:43:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxf-0003D9-Bu; Wed, 18 Feb 2026 06:43:19 -0500 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 1vsfxU-00037M-U7 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:10 -0500 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 1vsfxL-0007mY-T4 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:01 -0500 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-412-SXFvyQPSODugeHa5r82fiA-1; Wed, 18 Feb 2026 06:42:56 -0500 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2aadeb3dee4so311566045ad.2 for ; Wed, 18 Feb 2026 03:42:56 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.42.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:42:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414978; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ILLZe/318SI2fwBccfO7VLFYXHx8OHK07juZHL2pnss=; b=ctz+YeRqqnGkx5QWnaOOt35xDpSVHsoakdEgUCbmbGL8Pun8Ntbiup/WU8Ekv7SrO8jJuy RsanmjIn8BbkICwn0Cfyq6xkHzX8Uje8NLaYQVTc4+BfGVC3VM6G6HabJOpNLLpixByyPh ZQ1L7s3KSe0MZhYbEqUq35UijpMYV5U= X-MC-Unique: SXFvyQPSODugeHa5r82fiA-1 X-Mimecast-MFC-AGG-ID: SXFvyQPSODugeHa5r82fiA_1771414976 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414976; x=1772019776; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ILLZe/318SI2fwBccfO7VLFYXHx8OHK07juZHL2pnss=; b=olME3GTATuHySEZmGUz5Tl8bOjKT+T79OiEiauHoQnj874vINIoE9qzvFSfyVQn+sD qLi7FbgMbLdIh8vU/kxfp7jiqZqVL/j0YPKKarf+0YovNd7pNsA5j8pMauVtlA2TZsBC yE/GVS1CdmPNOVwhnbppVXKBbc57dAOSpy8y5yvFHEqgRZS8z5Wh7vYIPD0tH68Pmljp F+pBcMGyaczq7A7Istms36iygYFgzqH1KZusOIKtfxHyr4dEwXgd7utYWIeLG4mjHBGp IuCsinYd451ISoKoXw7VrGpNlGHpTQCJI6Q172u32KHFAtHHVP9vD/9P0AX5TyaqUhMZ HNEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414976; x=1772019776; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ILLZe/318SI2fwBccfO7VLFYXHx8OHK07juZHL2pnss=; b=Yso2k6wOwMrTMPMQpO8rWG7Xr6dv2yhO3wcKXb8lR6EB+pmok7XZTQsaF8ELCaW5Cr ecLGPk5HT+1t9pO9EmT999LRHlZgfKm4V6BxEpj3MxMXyb4WXDlXwshG7stT1w7hUfNl D8YJvLtnLfaqsT/VOOu9iZMCdW+fuEhD1M1wqyG5ZqZ7VNIa+u7SJ55qFUDC1HSOdyhz AjY1nJLT8gViURVNbhMAgIWTCUglPxw8xdQHKsvTiNMzKcghV6ns+CDZV7oAnXnB3qOh ZE/z5puHCmnbtOtlS23BQbQqtPslcT9O9A2Ugk31HqlPQSqlQ5EMxgi/+M1BCRgY4673 TTSg== X-Forwarded-Encrypted: i=1; AJvYcCWqZms6iwRZffCVSPsHLeq1W6VV84ggBS8K28TqOsAOiZM9azlOvAHn2y2dZb3ctEwQfAenAi8PdBQI@nongnu.org X-Gm-Message-State: AOJu0Yx5JB/i5e+a7JGj1kTqG6Nev3u+gzzoP3Uc7fYnbMq0MgTt7J6s 721WpMSweJ4Xg07Csl1YW6on2Jku040i4MfTXlV92nMT31leUoQX1dx1vTDCpQ+l+GM4vqsI0y7 mzkSraOQWGS+lJEZRpfJogqUB1z+Cz7yArfXyaV7qwmDTKHvj8MkbTNTD X-Gm-Gg: AZuq6aK9xJhB9yrMYYqTKpo7JT5ys0D4jQl0r9FWWkCMLZrBnGAMGWddKvMdRJ2WSde 0XwVj237XSufavN49eG5tZaPJuGgFSM1QIuGIRwW3kj76FFNtQbBMsy5bNlEPiPC+/I94vTYV6Q khvgrofax5Ag2/htni8CqfrQg6NXSvuzj97FlPtS/iPiTCZ0O5NY8T+v3bvhyxK8Oc1ufRtT9+d gQNAXRuX7w5lnU+8wAYlFL5cyxWrT+reOWNbowWsyvoGfXPzt8niCvZeO7w04A0CtYYP6H/Km0E eTbQ7Ct0NMh2J0v+K2q96ANOXpKZVOT1T8TkaAwxFHqEetMn2BQt8yTUBIf47Mvj/E3HzVtqF03 rW1qIcGO9jzAyFOlXGiEtBCwoO2INkE9CUCDIeyigM9RhNtb8rheA X-Received: by 2002:a17:902:c94b:b0:2aa:cfee:a47b with SMTP id d9443c01a7336-2ab4d09c4famr209209435ad.54.1771414975855; Wed, 18 Feb 2026 03:42:55 -0800 (PST) X-Received: by 2002:a17:902:c94b:b0:2aa:cfee:a47b with SMTP id d9443c01a7336-2ab4d09c4famr209209245ad.54.1771414975453; Wed, 18 Feb 2026 03:42:55 -0800 (PST) From: Ani Sinha To: Richard Henderson , Paolo Bonzini , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 03/34] hw/accel: add a per-accelerator callback to change VM accelerator handle Date: Wed, 18 Feb 2026 17:11:56 +0530 Message-ID: <20260218114233.266178-4-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415023634154100 Content-Type: text/plain; charset="utf-8" When a confidential virtual machine is reset, a new guest context in the accelerator must be generated post reset. Therefore, the old accelerator gu= est file handle must be closed and a new one created. To this end, a per-accele= rator callback, "rebuild_guest" is introduced that would get called when a confid= ential guest is reset. Subsequent patches will introduce specific implementation of this callback for KVM accelerator. Signed-off-by: Ani Sinha --- include/accel/accel-ops.h | 2 ++ system/runstate.c | 38 +++++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/include/accel/accel-ops.h b/include/accel/accel-ops.h index 23a8c246e1..f46492e3fe 100644 --- a/include/accel/accel-ops.h +++ b/include/accel/accel-ops.h @@ -23,6 +23,8 @@ struct AccelClass { AccelOpsClass *ops; =20 int (*init_machine)(AccelState *as, MachineState *ms); + /* used mainly by confidential guests to rebuild guest state upon rese= t */ + int (*rebuild_guest)(MachineState *ms); bool (*cpu_common_realize)(CPUState *cpu, Error **errp); void (*cpu_common_unrealize)(CPUState *cpu); /* get_stats: Append statistics to @buf */ diff --git a/system/runstate.c b/system/runstate.c index 13f32bed8c..e7b50e6a3b 100644 --- a/system/runstate.c +++ b/system/runstate.c @@ -42,6 +42,7 @@ #include "qapi/qapi-commands-run-state.h" #include "qapi/qapi-events-run-state.h" #include "qemu/accel.h" +#include "accel/accel-ops.h" #include "qemu/error-report.h" #include "qemu/job.h" #include "qemu/log.h" @@ -509,6 +510,9 @@ void qemu_system_reset(ShutdownCause reason) { MachineClass *mc; ResetType type; + AccelClass *ac =3D ACCEL_GET_CLASS(current_accel()); + bool guest_state_rebuilt =3D false; + int ret; =20 mc =3D current_machine ? MACHINE_GET_CLASS(current_machine) : NULL; =20 @@ -521,6 +525,29 @@ void qemu_system_reset(ShutdownCause reason) default: type =3D RESET_TYPE_COLD; } + + if (!cpus_are_resettable() && + (reason =3D=3D SHUTDOWN_CAUSE_GUEST_RESET || + reason =3D=3D SHUTDOWN_CAUSE_HOST_QMP_SYSTEM_RESET)) { + if (ac->rebuild_guest) { + ret =3D ac->rebuild_guest(current_machine); + if (ret < 0) { + error_report("unable to rebuild guest: %s(%d)", + strerror(-ret), ret); + vm_stop(RUN_STATE_INTERNAL_ERROR); + } else { + info_report("virtual machine state has been rebuilt with n= ew " + "guest file handle."); + guest_state_rebuilt =3D true; + } + } else if (!cpus_are_resettable()) { + error_report("accelerator does not support reset!"); + } else { + error_report("accelerator does not support rebuilding guest st= ate," + " proceeding with normal reset!"); + } + } + if (mc && mc->reset) { mc->reset(current_machine, type); } else { @@ -543,7 +570,16 @@ void qemu_system_reset(ShutdownCause reason) * it does _more_ than cpu_synchronize_all_post_reset(). */ if (cpus_are_resettable()) { - cpu_synchronize_all_post_reset(); + if (guest_state_rebuilt) { + /* + * If guest state has been rebuilt, then we + * need to sync full cpu state for non confidential guests post + * reset. + */ + cpu_synchronize_all_post_init(); + } else { + cpu_synchronize_all_post_reset(); + } } =20 vm_set_suspended(false); --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415153; cv=none; d=zohomail.com; s=zohoarc; b=MyFM+HvRiwW8tfVFsViLTpSsWwYkoAfTwiOKlZUh7KlBkuv0o54C7khS9g4OAtYhX9pT82DP9cbP6FsXdvYQWCX8p/CdhhywuTVtohtfS36daNjnIQGPJwE18qOvuetk3JN6k9CXBsZmiIAroGOCLe2x/LTxHdBV01HIRM0Noos= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415153; h=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=CftdgO1HF5JRk8FcUFdEbJ2ICGVN5WChV4mkQQejD6c=; b=RtXoJZYN+i50FNys3SjMrElkC0APHYNKnrp2LIXWlWsA3MriWAYzn/m8eaYlO6EFPU/jm+I11eX0g9hbaf5RomPsXkc7uXnetfosJPpiSZM7sR/CJrDAPyhWQwvBNaae0ZJCDWUmeJsrxvapZqq7N3IQjwsyQ/MbhbcnSEbjiA4= 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 1771415153933813.3130959291223; Wed, 18 Feb 2026 03:45:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxg-0003Dy-VC; Wed, 18 Feb 2026 06:43:22 -0500 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 1vsfxa-00038I-54 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:15 -0500 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 1vsfxT-0007nk-1b for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:10 -0500 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-474--wgtqLMMNiCf2Y50H7wgXw-1; Wed, 18 Feb 2026 06:43:00 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2aaf0dbd073so66397675ad.3 for ; Wed, 18 Feb 2026 03:42:59 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.42.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:42:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414981; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CftdgO1HF5JRk8FcUFdEbJ2ICGVN5WChV4mkQQejD6c=; b=V8jLMq648UpzUNWWvdbtd+80c5GVNDPE6enDhV02k1cJsNJcpVlow4veB4f1BVqfWNWg8R PKRGe7IT0K8wtlcpx8Qm5tYkjy+GitGQKRf68lHD4oa0OjyySCxQu6eAxDQkuS6ZG/CdUY NtLCKblipWrN5yrzz9mrFwKkHb01Yx0= X-MC-Unique: -wgtqLMMNiCf2Y50H7wgXw-1 X-Mimecast-MFC-AGG-ID: -wgtqLMMNiCf2Y50H7wgXw_1771414979 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414979; x=1772019779; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CftdgO1HF5JRk8FcUFdEbJ2ICGVN5WChV4mkQQejD6c=; b=r/Dnfs5EfEjH2ddnocklwwYXa4X0KpZSBFwLhSI9OflgHvqrf/iZlczyW0IxTonCIx yy/WPauuvKYog+Yeub3SP1mm7Bzq37Ry9GWBi/sV2S+eC/DWi37+ICioQT6Z3NyST6Jt HOWvsTA3MNjdFlwfVxtLZgAHD9uWMZxCj2pOhfoVgvqcXUJbkeSTbSnyudoQeN8rNYu4 nSzh234mmDWTO463GMtERQVcdo3W3a+nG3q4gf2b9rpzWSQT/2YcctjV+G1SV13cgjlK JufSbJKjZrV5OVoQjzPQtfpDophuqtJ6P2bbi3gltuC4iPoIf7F+ziTuMSaO11G/eqly 94LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414979; x=1772019779; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CftdgO1HF5JRk8FcUFdEbJ2ICGVN5WChV4mkQQejD6c=; b=mGVOPkXcbTGdJMtrVIf/0XDUDcuAmF38XWDc1eAl3rGqRtSUe3s+FfyI7b//1r0dt4 ZeI+eCstlKaGI8wGtYDhHCn9u967TNak9t84j1UaCyETZzHYEHz/0Kmzzkql1XiOZ7fV 2CRXspqpV3GBAmLNXWUte2OxnFHXHBrTbs8EDc4ZJUA9fw8Ub+cW/KDtGHGxl6jIaHhd ySPTj2B79hJZo9u3qPHexyvWsWNzUbnaO8minhYZBeXQ/h46Pa01oEsLUUmghOxYNGaN GTyUHek80NA/t4QFoi2AWbEzoaiBQ7TaU1jNAyO26ZQelD0hjzTJMb/eDAlFRsPs5gYM 7/hg== X-Forwarded-Encrypted: i=1; AJvYcCUegrNe0oEInUleDtIZ/QkALB1jmlS7jbIzsfQU/dlZ0yqnGjbKRkwxb4fGcm6GQzzsPKOkGFPRlP2s@nongnu.org X-Gm-Message-State: AOJu0Yz+65GIjwrjw/u9EASXUCXgH+Za92JGe3bdVb8IKuFjjMKsfy7h s2hL0r8BK/bsjz/7hOSyDKNCxRqpdiBZYv3jnObq/8y0QER1ypT66RQHrw54fAFcGJ47Tn5uLSv Dmfpcm45iE/Q4bVf/DsmD3GtSm9GwJSDYQgxhSp+0qo60q3JqSr6lCp1O5BwDY37G X-Gm-Gg: AZuq6aJ5mqFJa1v/Dz+bqXMYIlKgH77ya+Pu+AHybRnHehKOG7vd+5Xg5iu5RdZjrb6 7aiF8oID8iXtdHDbDVE5YoqYDKYOQFqzhqgN/Q09mKzXg4vwvTBLAkD8TEWYxkMSLWy+g8R9W/A UhtcvX6nm9qe1s1jR+E5OKJ2Ml3LUJJD95I1Xd9/btQ6tFKPo/u62U+1kq/mlA6JHPebHMWIpAK zDn2qhFMPFO8hPY+tiQY5gHzpitq1jKjMKm6sjMYaKfxIyH8v5kjjDO5X4Xb7riK0+7EtKHzKw/ N/AF5YwPv0RaPJCRSugHI35rlbt8pK2i0g//JLezr6VF5h6ZqVPrRdSrNyIbTkTR6hRsrZvE3O2 Ze9liFotKBBw6lWNCks877+icVxJxFL+FHWV7y95cF5sUq/bxTmGs X-Received: by 2002:a17:903:2452:b0:2a1:3ee7:cc75 with SMTP id d9443c01a7336-2ab50560babmr177003755ad.19.1771414978764; Wed, 18 Feb 2026 03:42:58 -0800 (PST) X-Received: by 2002:a17:903:2452:b0:2a1:3ee7:cc75 with SMTP id d9443c01a7336-2ab50560babmr177003585ad.19.1771414978405; Wed, 18 Feb 2026 03:42:58 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 04/34] system/physmem: add helper to reattach existing memory after KVM VM fd change Date: Wed, 18 Feb 2026 17:11:57 +0530 Message-ID: <20260218114233.266178-5-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415154411158500 Content-Type: text/plain; charset="utf-8" After the guest KVM file descriptor has changed as a part of the process of confidential guest reset mechanism, existing memory needs to be reattached = to the new file descriptor. This change adds a helper function ram_block_rebin= d() for this purpose. The next patch will make use of this function. Signed-off-by: Ani Sinha --- include/system/physmem.h | 1 + system/physmem.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/system/physmem.h b/include/system/physmem.h index 7bb7d3e154..da91b77bd9 100644 --- a/include/system/physmem.h +++ b/include/system/physmem.h @@ -51,5 +51,6 @@ physical_memory_snapshot_and_clear_dirty(MemoryRegion *mr= , hwaddr offset, bool physical_memory_snapshot_get_dirty(DirtyBitmapSnapshot *snap, ram_addr_t start, ram_addr_t length); +int ram_block_rebind(Error **errp); =20 #endif diff --git a/system/physmem.c b/system/physmem.c index 2fb0c25c93..e5ff26acec 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -2826,6 +2826,34 @@ found: return block; } =20 +/* + * Creates new guest memfd for the ramblocks and closes the + * existing memfd. + */ +int ram_block_rebind(Error **errp) +{ + RAMBlock *block; + + qemu_mutex_lock_ramlist(); + + RAMBLOCK_FOREACH(block) { + if (block->flags & RAM_GUEST_MEMFD) { + if (block->guest_memfd >=3D 0) { + close(block->guest_memfd); + } + block->guest_memfd =3D kvm_create_guest_memfd(block->max_lengt= h, + 0, errp); + if (block->guest_memfd < 0) { + qemu_mutex_unlock_ramlist(); + return -1; + } + + } + } + qemu_mutex_unlock_ramlist(); + return 0; +} + /* * Finds the named RAMBlock * --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415111; cv=none; d=zohomail.com; s=zohoarc; b=iHfKDttPav2oN2dyBZy51L3LWCUptJdrhDHjWHZJCZTLNzD3AgQAilmoPYpzHqyQ1hpWVTumLx5FtNzpvrSmU3fiucQbKTnNInOIpLPJPd7a2RwW4k4JmZze5VOjUKmpNNI3CrRb8/VrDp3DID46WJNXyu1DkWmRFaDeeggir14= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415111; h=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=vfhdy46mQEUlcerqq6xzArv8NlC5Gx5+51xsaBuia6g=; b=YzR49P+ndUnx7+7y6eBMdGes/Krt+fRZOagbAFCqeynjbJWm6UA6YnnSAq6Jmw/kBd1Y9ajotMitdpP5llByMUdLLCrjcg2ZkbgG2dJAyQhhMiL7pyhdn4mFzVcBTyHv47/e8EmiGj/DZg8QhEmJyzEF6CR0+3k+ftklWKbCvQQ= 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 1771415111307928.2814414356201; Wed, 18 Feb 2026 03:45:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxu-0003KG-P0; Wed, 18 Feb 2026 06:43:34 -0500 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 1vsfxb-000396-N8 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:16 -0500 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 1vsfxU-0007oQ-O4 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:15 -0500 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-505-fkYppRocNDKHUs0nEAn8iA-1; Wed, 18 Feb 2026 06:43:03 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2aae146bab0so63746785ad.0 for ; Wed, 18 Feb 2026 03:43:03 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.42.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414984; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vfhdy46mQEUlcerqq6xzArv8NlC5Gx5+51xsaBuia6g=; b=Cnnm872SjsAj2hQt+Y6DX3UU9I5432aGIuUVygOXFkR+Zlbm1aitZAxnzjBiyEZOMHSxyd t808AFo2C8vWrF7N3tFs0+PUb6H3xqlFnmKXwDaq9bAfsVWdCoEN/brbxNIKKCIwTxPAFX EUgqy7ueFkiFAYFDgP0N0DX3ZwLxbok= X-MC-Unique: fkYppRocNDKHUs0nEAn8iA-1 X-Mimecast-MFC-AGG-ID: fkYppRocNDKHUs0nEAn8iA_1771414982 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414982; x=1772019782; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vfhdy46mQEUlcerqq6xzArv8NlC5Gx5+51xsaBuia6g=; b=O/CK4/ZBETncYiP66mXMjSLcpUQYULPT5Kil8ArwWVNDCHVokyV1ABK8CyIuRt2YEm mJDUXIslKhqblpQ8WWAJzosBhMDc7s0s5ITuDDyof+1LHoSHeVvtWWPp3dartRsIV+3d J0uaOKVfC6rmzTvW9PHpNscp+HfUu0cGbUI20kK8iD77tR+Wq/pyYcjgF59ps5B0d3DN jC3/iX2jO7xRERnS0vmLhPy+BBG8Ov1VN8MWDbykbJXGuf8lM+2MOCFbY5lOzqGtMcuW EItjr7kISfQZRTs2K47sFLN6skUoKCZ/pUpQbreYPwLvToo92KlBz77hhihZ9Br6NRs6 RWRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414982; x=1772019782; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=vfhdy46mQEUlcerqq6xzArv8NlC5Gx5+51xsaBuia6g=; b=a+JWxVsq7iuYTG9zOx9AmD503qkFghjAMQZXp/60HSpRtzvhbJL1cwcKgMFFVNa4Uq VT+0q2ExdeMDaCzAq8GXqa097dzUvy3Tgak7o61oThavUjs83gPl+ndQq4R4wc+H9IXS mfEt+3mW8Kv/ZGcqas8Jy46SyWZlLrGF3sdbP3XPXreGvNMTpSZFNAu3jXXlQpsKd5VL NBBx9SMuyb8y27l5JUKH2EAVryvwRRu+eyNMLpBj0XQWH/ip/CBnAJe7G0/NmnzyIeQ2 jj2JycnUvX7nLGN8k3Jv6yy+Wdybie8WdmhqUL3FRmtZT2bxOJmcVnITj35ehBgnzdeh i5jQ== X-Forwarded-Encrypted: i=1; AJvYcCVjUlvEYN6p8bf+4rlERQ/RlIvVkFqrY7cua1WABR3ZpnrdAgvW8ihwFajMeSxnp/BEEHtlmvPS9Fi1@nongnu.org X-Gm-Message-State: AOJu0Yx4dMs3NckEgbn9AKOO7BZqbBDKnOBrpf3tEnpaZE5KstnmUBMl jIG4K9ubzMZrqkGFEmUVheRvzIk6xJXZ08PSWrwztaa5aNm8HSG/RpQWbCathMrHGawqDKq7k1U NLLX9RmYMYcPxORWKJEV1h8WYZU2KCq5qi+WziPbALkF17VXEdKus5rbcRdVbibJd X-Gm-Gg: AZuq6aLMBVxEO1bY0WdNUgsauS+szXnXmYH94VLV1MBrWkBbEcrLwY7URo2C8GJFbw4 VSqajwS7FhRu1N6gbbhwStqa2D9kUU+TTCMbgkxg7iSbponyLrKs3MqNudRENsuWGVnoNjHFKL9 VuLf8lb8VR+LX/tjXdycfep2Jg/UaOqAhWPcixgvC0anFIiNUfTmrHntNuSGk9sNUHF4Zg7NU3b sDBK+LQHyX0BDGjCHaoL33/stQwlUIHaadKZ0ZN6Qs2qE2+dRKTWF9YLPcPxA3jxC4PL9q2IsUl qOsERFyAFwkYVr4YvE85GRwtbY2qJvXkxhDXCezmzzGzcT7ESIQG0vOuS9pFuWZgOfQg9yrjU8s sdnxQNaJHl8q9io+iRtdkFsjO2+nfdG5q+x5GbKz/fb15nXuqSHFo X-Received: by 2002:a17:902:d509:b0:29f:301a:f6cf with SMTP id d9443c01a7336-2ab505c056emr182651445ad.35.1771414981952; Wed, 18 Feb 2026 03:43:01 -0800 (PST) X-Received: by 2002:a17:902:d509:b0:29f:301a:f6cf with SMTP id d9443c01a7336-2ab505c056emr182651275ad.35.1771414981518; Wed, 18 Feb 2026 03:43:01 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Ani Sinha , Marcelo Tosatti Cc: kraxel@redhat.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v5 05/34] accel/kvm: add changes required to support KVM VM file descriptor change Date: Wed, 18 Feb 2026 17:11:58 +0530 Message-ID: <20260218114233.266178-6-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415112373158500 Content-Type: text/plain; charset="utf-8" This change adds common kvm specific support to handle KVM VM file descript= or change. KVM VM file descriptor can change as a part of confidential guest r= eset mechanism. A new function api kvm_arch_on_vmfd_change() per architecture platform is added in order to implement architecture specific changes required to support it. A subsequent patch will add x86 specific implementation for kvm_arch_on_vmfd_change() as currently only x86 supports confidential guest reset. Signed-off-by: Ani Sinha --- MAINTAINERS | 6 ++++ accel/kvm/kvm-all.c | 80 ++++++++++++++++++++++++++++++++++++++++-- accel/kvm/trace-events | 1 + include/system/kvm.h | 3 ++ stubs/kvm.c | 22 ++++++++++++ stubs/meson.build | 1 + target/i386/kvm/kvm.c | 10 ++++++ 7 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 stubs/kvm.c diff --git a/MAINTAINERS b/MAINTAINERS index d3aa6d6732..b0eb77c08f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -152,6 +152,12 @@ F: tools/i386/ F: tests/functional/i386/ F: tests/functional/x86_64/ =20 +X86 VM file descriptor change on reset test +M: Ani Sinha +M: Paolo Bonzini +S: Maintained +F: stubs/kvm.c + Guest CPU cores (TCG) --------------------- Overall TCG CPUs diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 0d8b0c4347..14729666a0 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -2415,11 +2415,9 @@ void kvm_irqchip_set_qemuirq_gsi(KVMState *s, qemu_i= rq irq, int gsi) g_hash_table_insert(s->gsimap, irq, GINT_TO_POINTER(gsi)); } =20 -static void kvm_irqchip_create(KVMState *s) +static void do_kvm_irqchip_create(KVMState *s) { int ret; - - assert(s->kernel_irqchip_split !=3D ON_OFF_AUTO_AUTO); if (kvm_check_extension(s, KVM_CAP_IRQCHIP)) { ; } else if (kvm_check_extension(s, KVM_CAP_S390_IRQCHIP)) { @@ -2452,7 +2450,13 @@ static void kvm_irqchip_create(KVMState *s) fprintf(stderr, "Create kernel irqchip failed: %s\n", strerror(-re= t)); exit(1); } +} =20 +static void kvm_irqchip_create(KVMState *s) +{ + assert(s->kernel_irqchip_split !=3D ON_OFF_AUTO_AUTO); + + do_kvm_irqchip_create(s); kvm_kernel_irqchip =3D true; /* If we have an in-kernel IRQ chip then we must have asynchronous * interrupt delivery (though the reverse is not necessarily true) @@ -2607,6 +2611,75 @@ static int kvm_setup_dirty_ring(KVMState *s) return 0; } =20 +static int kvm_reset_vmfd(MachineState *ms) +{ + KVMState *s; + KVMMemoryListener *kml; + int ret =3D 0, type; + Error *err =3D NULL; + + /* + * bail if the current architecture does not support VM file + * descriptor change. + */ + if (!kvm_arch_supports_vmfd_change()) { + error_report("This target architecture does not support KVM VM " + "file descriptor change."); + return -EOPNOTSUPP; + } + + s =3D KVM_STATE(ms->accelerator); + kml =3D &s->memory_listener; + + memory_listener_unregister(&kml->listener); + memory_listener_unregister(&kvm_io_listener); + + if (s->vmfd >=3D 0) { + close(s->vmfd); + } + + type =3D find_kvm_machine_type(ms); + if (type < 0) { + return -EINVAL; + } + + ret =3D do_kvm_create_vm(s, type); + if (ret < 0) { + return ret; + } + + s->vmfd =3D ret; + + kvm_setup_dirty_ring(s); + + /* rebind memory to new vm fd */ + ret =3D ram_block_rebind(&err); + if (ret < 0) { + return ret; + } + assert(!err); + + ret =3D kvm_arch_on_vmfd_change(ms, s); + if (ret < 0) { + return ret; + } + + if (s->kernel_irqchip_allowed) { + do_kvm_irqchip_create(s); + } + + /* these can be only called after ram_block_rebind() */ + memory_listener_register(&kml->listener, &address_space_memory); + memory_listener_register(&kvm_io_listener, &address_space_io); + + /* + * kvm fd has changed. Commit the irq routes to KVM once more. + */ + kvm_irqchip_commit_routes(s); + trace_kvm_reset_vmfd(); + return ret; +} + static int kvm_init(AccelState *as, MachineState *ms) { MachineClass *mc =3D MACHINE_GET_CLASS(ms); @@ -4015,6 +4088,7 @@ static void kvm_accel_class_init(ObjectClass *oc, con= st void *data) AccelClass *ac =3D ACCEL_CLASS(oc); ac->name =3D "KVM"; ac->init_machine =3D kvm_init; + ac->rebuild_guest =3D kvm_reset_vmfd; ac->has_memory =3D kvm_accel_has_memory; ac->allowed =3D &kvm_allowed; ac->gdbstub_supported_sstep_flags =3D kvm_gdbstub_sstep_flags; diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events index e43d18a869..e4beda0148 100644 --- a/accel/kvm/trace-events +++ b/accel/kvm/trace-events @@ -14,6 +14,7 @@ kvm_destroy_vcpu(int cpu_index, unsigned long arch_cpu_id= ) "index: %d id: %lu" kvm_park_vcpu(int cpu_index, unsigned long arch_cpu_id) "index: %d id: %lu" kvm_unpark_vcpu(unsigned long arch_cpu_id, const char *msg) "id: %lu %s" kvm_irqchip_commit_routes(void) "" +kvm_reset_vmfd(void) "" kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector= %d virq %d" kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=3D%d" kvm_irqchip_release_virq(int virq) "virq %d" diff --git a/include/system/kvm.h b/include/system/kvm.h index 8f9eecf044..5fc7251fd9 100644 --- a/include/system/kvm.h +++ b/include/system/kvm.h @@ -456,6 +456,9 @@ int kvm_physical_memory_addr_from_host(KVMState *s, voi= d *ram_addr, =20 #endif /* COMPILING_PER_TARGET */ =20 +bool kvm_arch_supports_vmfd_change(void); +int kvm_arch_on_vmfd_change(MachineState *ms, KVMState *s); + void kvm_cpu_synchronize_state(CPUState *cpu); =20 void kvm_init_cpu_signals(CPUState *cpu); diff --git a/stubs/kvm.c b/stubs/kvm.c new file mode 100644 index 0000000000..2db61d89a7 --- /dev/null +++ b/stubs/kvm.c @@ -0,0 +1,22 @@ +/* + * kvm target arch specific stubs + * + * Copyright (c) 2026 Red Hat, Inc. + * + * Author: + * Ani Sinha + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include "qemu/osdep.h" +#include "system/kvm.h" + +int kvm_arch_on_vmfd_change(MachineState *ms, KVMState *s) +{ + abort(); +} + +bool kvm_arch_supports_vmfd_change(void) +{ + return false; +} diff --git a/stubs/meson.build b/stubs/meson.build index 8a07059500..6ae478bacc 100644 --- a/stubs/meson.build +++ b/stubs/meson.build @@ -74,6 +74,7 @@ if have_system if igvm.found() stub_ss.add(files('igvm.c')) endif + stub_ss.add(files('kvm.c')) stub_ss.add(files('target-get-monitor-def.c')) stub_ss.add(files('target-monitor-defs.c')) stub_ss.add(files('win32-kbd-hook.c')) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 6d823a7991..a4e18734b1 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3389,6 +3389,16 @@ static int kvm_vm_enable_energy_msrs(KVMState *s) return 0; } =20 +int kvm_arch_on_vmfd_change(MachineState *ms, KVMState *s) +{ + abort(); +} + +bool kvm_arch_supports_vmfd_change(void) +{ + return false; +} + int kvm_arch_init(MachineState *ms, KVMState *s) { int ret; --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415218; cv=none; d=zohomail.com; s=zohoarc; b=OP+gnaIao3hq8JgrdgNdlxUuBl0xj6eFlO4evTQM60js5iuQn6XjIoXNQKCbtOqpPsKnyVNbGbYSciyJLUK3HsKTNtfr92WwGuadhX3UzkZBL/jVM82IoxX6z6rJMZSLbSnWMNCyk6w/ed7Pa/l78uIxqaeLJ/E2qJOv319AUTU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415218; h=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=g7naDHCFXgwP8XzpSDjukvbV97EdMlpxxQpX15TgIFY=; b=Xmko2rU0YVWbHOikfmIYiwpbBu8uW8OLvY+DDyzRPYp6JVsRpzZXhla8MaOpcZS2Wo9mZxEHycQmBipC110dpM71l3uja2NQZfeflFmEAftNmxgzuspS+nTtkZjhsF3KryvoAw0qRvjvhHz0UGcFyREEa1eGa1YwwrvfDs0QDMI= 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 1771415218609162.05983043122762; Wed, 18 Feb 2026 03:46:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxq-0003IY-NM; Wed, 18 Feb 2026 06:43:30 -0500 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 1vsfxf-0003Cr-8U for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:19 -0500 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 1vsfxZ-0007oa-CZ for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:16 -0500 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-626-qSHzHDzNOKGNxvHKG8HwoA-1; Wed, 18 Feb 2026 06:43:06 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2a75ed2f89dso62612165ad.1 for ; Wed, 18 Feb 2026 03:43:06 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414987; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=g7naDHCFXgwP8XzpSDjukvbV97EdMlpxxQpX15TgIFY=; b=XpTQ3VJ+sKuN8cLbRyvUFchVBXvmdDO8Id7etJejyTMls2/WSd9YkGJ6YveaOXL1LQaUBO osDGavX4ysX40uMy3r9EXJiXCFmsPJjUb3LgPeHxZVmvBaCNRqn5uH+BkBlmoBM9zz00YG jNMEegALXQgGWSmqr7TpRrSqUeTrAxI= X-MC-Unique: qSHzHDzNOKGNxvHKG8HwoA-1 X-Mimecast-MFC-AGG-ID: qSHzHDzNOKGNxvHKG8HwoA_1771414985 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414985; x=1772019785; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=g7naDHCFXgwP8XzpSDjukvbV97EdMlpxxQpX15TgIFY=; b=Ame7wnQTfOuW165PhOXSSng8TvUXdTLbdi9DNisz7HgmvhLd7Nd2HLTb9oXWJMvpAV faUVGkLHtEDVy0iRiYcy2pZ7+KJJBOzIEEFJtBoLL+qFzvbuAKQ6RlxwyvRElpdaCVAf WgSTd3UEOwNhjrodYl4K4ZXhzhOmnxuNW5tC4pp8tKVETcXptBeY9wbjDakJ5fexoD+Q YkbHEbg9Em7hEskhWgD+H9SJLy3Vf9w060XtleC8fadSavT8C1xeMSHjC6qUTv4S7H89 vItrl2U6njPn/1qqLX5Fs1yQXqXJKL2Amu7tnPyBIZgT5fHjqiJFgoxuZwg4ge3XUbwr 06Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414985; x=1772019785; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=g7naDHCFXgwP8XzpSDjukvbV97EdMlpxxQpX15TgIFY=; b=UkAFgQ3N0QBSZY8+wLCPj4p98NPydpO0ew38OptQtd+AX2BiE7EwsUg0P51MN8AQ2d 0rGl6qd8nKCoBRwDSPCNo8CWpEFgBbPB0fVz/HazkeMkWNfdmvGivwIX814asi/snBvM c89SyPzRRfSmyw2UFRJ6Kn5FsBrD6ztQsxom59AOVBVYmdDwWZyfyylRBuut4vRep33o wDEW4PKC5sFkG7JcfsbxdndI7zMzbagr8tDC0MdwOclM+YbBUEM6mGTTyK4fZK1encxk RNXqeHkMVUqxPVLNgRXb6wnGdwtT8D+zKy4zge0pYDyiGOcG0GK70cOa8NRKXqD0zXlF WLfw== X-Forwarded-Encrypted: i=1; AJvYcCX9SLE6UwxZgRC+cguzThphWiN3N2HJvTnkC+4GuGnIAUR8YcBWJe4yQCuYutr5zamJfNtauv39RlTJ@nongnu.org X-Gm-Message-State: AOJu0YwuDKnPAJSvY7/gJOXrfjKwqQERpH4SwcLym+JIXUcJ64S+03/m sj/UgsClUqScSMstdqhyYYm/AqZmqOH/Ver3RyCaxgpc3s5X6aQnVeK3/8lpCwbj3URWqBJ5zxW tiDgiE79LQ1u6YCd1Tb55vyVvROIu0iKAyEJ830oWQijYokbstjl/tYka X-Gm-Gg: AZuq6aKiySFoqweZcdbK2iEgLt0PGf5iPQgKUuqnFJtPkMGe5riR7pvxAoz+/V2twz+ /xFBY0S/MkYm9gv6rSfMHu2fzb8dzz+G9aR65w+tbWPP8j1QHU6P8DXmbeCyQd76NtfLHP+85k1 e3KtO8JKrWhFKk0ST+bFMjDOiP4Mq7hWLlSgifRpmVoFKus79xrlSMep0l6t83zG2UOoUvQHG3x 9iII6R9kmqrVVxCHtFZR0/ZrtLicuEG4B3DhFcrvMNjV+ckNkUgnfoNEwEKW/evNpNkiHYlT2a8 /Geu7yrq6Q/9PKAypCw6n5txhcPL3jGf5YI2lyPDycnerWZJUrwwdT8zOak9BQ5l3dELkYCOnu6 rY0mDqK0DSlEWS7egdOTWj4flZL44S7KXlTa54uEef79p/G4SMv46 X-Received: by 2002:a17:902:d2cd:b0:2a0:c58b:ed6 with SMTP id d9443c01a7336-2ad174dcf1amr148038305ad.29.1771414985142; Wed, 18 Feb 2026 03:43:05 -0800 (PST) X-Received: by 2002:a17:902:d2cd:b0:2a0:c58b:ed6 with SMTP id d9443c01a7336-2ad174dcf1amr148037915ad.29.1771414984274; Wed, 18 Feb 2026 03:43:04 -0800 (PST) From: Ani Sinha To: Paolo Bonzini Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 06/34] accel/kvm: add a notifier to indicate KVM VM file descriptor has changed Date: Wed, 18 Feb 2026 17:11:59 +0530 Message-ID: <20260218114233.266178-7-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415220693158500 Content-Type: text/plain; charset="utf-8" A notifier callback can be used by various subsystems to perform actions wh= en KVM file descriptor for a virtual machine changes as a part of confidential guest reset process. This change adds this notifier mechanism. Subsequent patches will add specific implementations for various notifier callbacks corresponding to various subsystems that need to take action when KVM VM fi= le descriptor changed. Signed-off-by: Ani Sinha --- accel/kvm/kvm-all.c | 30 ++++++++++++++++++++++++++++++ accel/stubs/kvm-stub.c | 8 ++++++++ include/system/kvm.h | 21 +++++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 14729666a0..b8a0685f7a 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -90,6 +90,7 @@ struct KVMParkedVcpu { }; =20 KVMState *kvm_state; +VmfdChangeNotifier vmfd_notifier; bool kvm_kernel_irqchip; bool kvm_split_irqchip; bool kvm_async_interrupts_allowed; @@ -123,6 +124,9 @@ static const KVMCapabilityInfo kvm_required_capabilites= [] =3D { static NotifierList kvm_irqchip_change_notifiers =3D NOTIFIER_LIST_INITIALIZER(kvm_irqchip_change_notifiers); =20 +static NotifierWithReturnList register_vmfd_changed_notifiers =3D + NOTIFIER_WITH_RETURN_LIST_INITIALIZER(register_vmfd_changed_notifiers); + struct KVMResampleFd { int gsi; EventNotifier *resample_event; @@ -2173,6 +2177,22 @@ void kvm_irqchip_change_notify(void) notifier_list_notify(&kvm_irqchip_change_notifiers, NULL); } =20 +void kvm_vmfd_add_change_notifier(NotifierWithReturn *n) +{ + notifier_with_return_list_add(®ister_vmfd_changed_notifiers, n); +} + +void kvm_vmfd_remove_change_notifier(NotifierWithReturn *n) +{ + notifier_with_return_remove(n); +} + +static int kvm_vmfd_change_notify(Error **errp) +{ + return notifier_with_return_list_notify(®ister_vmfd_changed_notifie= rs, + &vmfd_notifier, errp); +} + int kvm_irqchip_get_virq(KVMState *s) { int next_virq; @@ -2668,6 +2688,16 @@ static int kvm_reset_vmfd(MachineState *ms) do_kvm_irqchip_create(s); } =20 + /* + * notify everyone that vmfd has changed. + */ + vmfd_notifier.vmfd =3D s->vmfd; + ret =3D kvm_vmfd_change_notify(&err); + if (ret < 0) { + return ret; + } + assert(!err); + /* these can be only called after ram_block_rebind() */ memory_listener_register(&kml->listener, &address_space_memory); memory_listener_register(&kvm_io_listener, &address_space_io); diff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c index 68cd33ba97..a6e8a6e16c 100644 --- a/accel/stubs/kvm-stub.c +++ b/accel/stubs/kvm-stub.c @@ -79,6 +79,14 @@ void kvm_irqchip_change_notify(void) { } =20 +void kvm_vmfd_add_change_notifier(NotifierWithReturn *n) +{ +} + +void kvm_vmfd_remove_change_notifier(NotifierWithReturn *n) +{ +} + int kvm_irqchip_add_irqfd_notifier_gsi(KVMState *s, EventNotifier *n, EventNotifier *rn, int virq) { diff --git a/include/system/kvm.h b/include/system/kvm.h index 5fc7251fd9..f11729f432 100644 --- a/include/system/kvm.h +++ b/include/system/kvm.h @@ -181,6 +181,7 @@ DECLARE_INSTANCE_CHECKER(KVMState, KVM_STATE, =20 extern KVMState *kvm_state; typedef struct Notifier Notifier; +typedef struct NotifierWithReturn NotifierWithReturn; =20 typedef struct KVMRouteChange { KVMState *s; @@ -567,4 +568,24 @@ int kvm_set_memory_attributes_shared(hwaddr start, uin= t64_t size); =20 int kvm_convert_memory(hwaddr start, hwaddr size, bool to_private); =20 +/* argument to vmfd change notifier */ +typedef struct VmfdChangeNotifier { + int vmfd; +} VmfdChangeNotifier; + +/** + * kvm_vmfd_add_change_notifier - register a notifier to get notified when + * a KVM vm file descriptor changes as a part of the confidential guest "r= eset" + * process. Various subsystems should use this mechanism to take actions s= uch + * as creating new fds against this new vm file descriptor. + * @n: notifier with return value. + */ +void kvm_vmfd_add_change_notifier(NotifierWithReturn *n); +/** + * kvm_vmfd_remove_change_notifier - de-register a notifer previously + * registered with kvm_vmfd_add_change_notifier call. + * @n: notifier that was previously registered. + */ +void kvm_vmfd_remove_change_notifier(NotifierWithReturn *n); + #endif --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415096; cv=none; d=zohomail.com; s=zohoarc; b=AG20kce5PXR9mH8t8bA+s1Gzyw7CFdDw9rcwTY7y7Lt5SeGfIT2OrDTwk7DVmBa5vJt+ubfUO2gKSR764FniKLnxLtgI8Rg/Omr0Fg1KYss06P7/uITwSBB0HmOTQtnj7+xOhcySOF2Ur4XmSWreEdS3KaRKIprX9VP9g7ogDtU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415096; h=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=JrYkaI8zWucrcUWEd6p2dGFw5Tm5nOCoxE1XNnZbb4k=; b=jnVNjxhrXCUMC7J6G10Q2iWlwJOk3rIRcwptHjnTIYi8RoKRF1wKB/CODiQR2tYm5qPKkE1x+O8YgGs95gw25OsFmmvTTfIlvDt8XQyr7nbZONI0V8PJzxw3TyYDD8W2+lVWb4CULTtjWCBsitGo8yYCrZizh47cSazEuuz05nU= 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 1771415096039575.1758721489705; Wed, 18 Feb 2026 03:44:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxm-0003GJ-0G; Wed, 18 Feb 2026 06:43:26 -0500 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 1vsfxf-0003Cq-7r for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:19 -0500 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 1vsfxZ-0007p9-U9 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:16 -0500 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-241-3hdTVLgxPOCTqnk0q6VXlA-1; Wed, 18 Feb 2026 06:43:09 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2a7a98ba326so11880665ad.1 for ; Wed, 18 Feb 2026 03:43:08 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414990; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JrYkaI8zWucrcUWEd6p2dGFw5Tm5nOCoxE1XNnZbb4k=; b=PM7iPAvq3DG/KQx595EK1neyb0OGwWUlz9Fl/ZFRLGfHrRALyo31jSHam+HvGi0xAcGoEx gSXTrFaznBsEOtFSbp/NG2S+/G7+NFMDz0WfLI6QnImBvSPp8HIOm9qcoZ5rI2HSCBGB3i +qUw/vzMUXsZTQCKwhdgilPGxfRzSk0= X-MC-Unique: 3hdTVLgxPOCTqnk0q6VXlA-1 X-Mimecast-MFC-AGG-ID: 3hdTVLgxPOCTqnk0q6VXlA_1771414988 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414988; x=1772019788; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JrYkaI8zWucrcUWEd6p2dGFw5Tm5nOCoxE1XNnZbb4k=; b=R7oR5AzFEwuX5lQwdzH5fAes3EDkzcrIOIok8U6uQGrIXvo+Yg/QfybJ06g5BKnKZP hskY/iQRAvfCiGUejcr6+D0V82s+OTDqZZKEuUH0x9Az5oetNrlVCOuG9TI9JBOIp0sP xZYRiWwwg7peKSAo1eKz+BjWP98uOEazyXv6FabxIoN+IwxNMrfezd5xQcL4uPokXh6g Tj4j0tz8RO8Qa5aEqa4J19wtuVkM2VaT3VIV/C4QEBtKZlTrW2eXKy9CrLh06+4ShI24 B6yPQshp5r4VU4feSEJHTVTzDCkuBU1NG3sso6EHdNjP4pCb1lPfxEeXshP6H0lQykAY HO8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414988; x=1772019788; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JrYkaI8zWucrcUWEd6p2dGFw5Tm5nOCoxE1XNnZbb4k=; b=IK8eEJupfbtpC6fOfa+V6fzKtXNprsvcEe+kHWpJeFQXrPfs8bbJzTLTeMqKyf2UGL UC8OTjJaGRprAZrsnSEHVd/ft4bw5LuKm/2cmyBv63yWKfs3D8+IwHu22VneoWhgy040 s73TPebQFxD9z+Ondga1IYsaB4CT3bPYtGYPuCAbazmzkczIEWpz+02K9AvXONz9zK8v OMWh2/bq58XCfIvqSFuqcsjam1UD1+R3ZY/7jlip1vz/bw8X6oyl3fj49t51n5mnrVmG Q+FtqekNHPT5XJly/AlhMQFzJXnI0cT5Q+m26oONIvKtVcISCffs9mLqd3EhQljHISKb s77w== X-Forwarded-Encrypted: i=1; AJvYcCWo0yEI5guzUaRfOXUPFpVMNCPoLimAxgaynFMfacRtSEjmUr3kKXT9bn6Y0GCMsifCr55Jl7e+ZRjF@nongnu.org X-Gm-Message-State: AOJu0YyWOEXbDAR6kCj7u8EeYpnl3uA8SlqmgrgvvDsZMQLgS1KiLRdZ hCxnLLBi0wBQcPot7VfgSQln5tMG+u4AduxE44Ri370SrL0wZXq6UgJrSKy8WMX1Lvi+k4ervYy fSPtLUNVh5Vq1YZQaZHiv63tsdqI0Eu07KnUis2gygLkFmRnBJ47m4jec X-Gm-Gg: AZuq6aJUpKbz76f30oP0r9ohPzDax2NBbVyJNErVfc+u8z3gVh+Bmkf/3FdlFOprV8V uCds9T4D1HMqGXu1Y8BNGdxWHVITkoqIDdtbs1D5Xqq7AJsIW/8/zGehmuqp+mRr8FnCSLhexxm dLjcXelSJ5iUEEKLV4q+iBa3vDnSjHpyYqIqDIs4jYoCQKFN4HJPY8GesX2gbJPsizFjQJ/aCG8 EtZjV3r2/v0xNjaSUFLdl2NFHDLPQe7Sumx4VP38IcnKmvJUYFz+jrjbZEc/nymbWiD6NL9fwlP wY5l5WS4bXSaU6nr3yH7pjCDSjGlYD2MJtP3HwD3lgKH6DNGm+BObMZj2Qsqpa6w+4Mto3S2EP9 lja2xfg3PL3NQRpprIzIX+Bjj/SeLzpOFOC/Prs9oeaDgBNv3G25t X-Received: by 2002:a17:903:2f81:b0:2aa:d605:a314 with SMTP id d9443c01a7336-2ad50b5a413mr16656375ad.4.1771414987867; Wed, 18 Feb 2026 03:43:07 -0800 (PST) X-Received: by 2002:a17:903:2f81:b0:2aa:d605:a314 with SMTP id d9443c01a7336-2ad50b5a413mr16656135ad.4.1771414987404; Wed, 18 Feb 2026 03:43:07 -0800 (PST) From: Ani Sinha To: Paolo Bonzini Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 07/34] accel/kvm: notify when KVM VM file fd is about to be changed Date: Wed, 18 Feb 2026 17:12:00 +0530 Message-ID: <20260218114233.266178-8-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415098209158500 Content-Type: text/plain; charset="utf-8" Various subsystems might need to take some steps before the KVM file descri= ptor for a virtual machine is changed. So a new boolean attribute is added to the vmfd_notifier structure which is passed to the notifier callbacks. vmfd_notifer.pre is true for pre-notification of vmfd change and false for post notification. Notifier callback implementations can simply check the boolean value for (vmfd_notifer*)->pre and can take actions for pre or post vmfd change based on the value. Subsequent patches will add callback implementations for specific components that need this pre-notification. Signed-off-by: Ani Sinha --- accel/kvm/kvm-all.c | 9 +++++++++ include/system/kvm.h | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index b8a0685f7a..47589f92e2 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -2654,6 +2654,13 @@ static int kvm_reset_vmfd(MachineState *ms) memory_listener_unregister(&kml->listener); memory_listener_unregister(&kvm_io_listener); =20 + vmfd_notifier.pre =3D true; + ret =3D kvm_vmfd_change_notify(&err); + if (ret < 0) { + return ret; + } + assert(!err); + if (s->vmfd >=3D 0) { close(s->vmfd); } @@ -2692,6 +2699,8 @@ static int kvm_reset_vmfd(MachineState *ms) * notify everyone that vmfd has changed. */ vmfd_notifier.vmfd =3D s->vmfd; + vmfd_notifier.pre =3D false; + ret =3D kvm_vmfd_change_notify(&err); if (ret < 0) { return ret; diff --git a/include/system/kvm.h b/include/system/kvm.h index f11729f432..fbe23608a1 100644 --- a/include/system/kvm.h +++ b/include/system/kvm.h @@ -571,12 +571,14 @@ int kvm_convert_memory(hwaddr start, hwaddr size, boo= l to_private); /* argument to vmfd change notifier */ typedef struct VmfdChangeNotifier { int vmfd; + bool pre; } VmfdChangeNotifier; =20 /** * kvm_vmfd_add_change_notifier - register a notifier to get notified when - * a KVM vm file descriptor changes as a part of the confidential guest "r= eset" - * process. Various subsystems should use this mechanism to take actions s= uch + * a KVM vm file descriptor changes or about to be changed as a part of the + * confidential guest "reset" process. + * Various subsystems should use this mechanism to take actions such * as creating new fds against this new vm file descriptor. * @n: notifier with return value. */ --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415155; cv=none; d=zohomail.com; s=zohoarc; b=iHr6UkVMgKcVRQ2opLkQ18VbZGXT1L+irau6ZkUnXiXggLhcAhn7v1A9j/NXgG6yPf1faixKT/4P4r0p8ZHIpWf++h5/arRMfqoDLClOh8snnUS9XSWM8vBVvXFmrKZd+jfjmknve7PX0hzYHPSoL2t5PQKMfUthz1jKPs89okg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415155; h=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=eq6qLXbyXLJc54ZDJbb9jP08uxtrOMIUIN9nTu5R5VE=; b=fVJGieIfQ2+ZVwQaaBd5nqUPekfBiW8+ayWaqNNpi2A2hEgaBvr/M91QIk0AwQE3IrGvkqGViDgCcZJSrPWYRuBmgfT+ro7+u3WOa5LKqerGEGSMNlCmuu08J1UVRwbnn/206pNF0g4B3C9v+Ij7FBQdyjsY3tqP9O4jjH6FNNg= 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 1771415155213362.99855498617865; Wed, 18 Feb 2026 03:45:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxs-0003JT-A9; Wed, 18 Feb 2026 06:43:32 -0500 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 1vsfxf-0003Cs-8W for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:19 -0500 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 1vsfxa-0007pN-2b for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:16 -0500 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-351-VRY-ii9fN16fNuk305Fr5w-1; Wed, 18 Feb 2026 06:43:11 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2aadeb3dee4so311578665ad.2 for ; Wed, 18 Feb 2026 03:43:11 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414993; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eq6qLXbyXLJc54ZDJbb9jP08uxtrOMIUIN9nTu5R5VE=; b=L6yQ8cRnnTzIMP24fhwHyAUuq97qo7Xmk7MJ0vLzZrSLUrfCh6uUChlD5tbC3wKefCSU5g LwyMCTT6nRSmCIsJNpdFRDKOxYneGd1ANr6M4hGwlwXkS9lGu7sob1Aif5sW6m9iam/0BQ 05+Ha8JMU3Ke/QzdNMHaq58lHeZaFgA= X-MC-Unique: VRY-ii9fN16fNuk305Fr5w-1 X-Mimecast-MFC-AGG-ID: VRY-ii9fN16fNuk305Fr5w_1771414991 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414991; x=1772019791; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eq6qLXbyXLJc54ZDJbb9jP08uxtrOMIUIN9nTu5R5VE=; b=sHcApYw1MH48Dd4bVvJcrvb6+yIc9ixK3eJMHpDZXSdhBssNu5SANyLuiu0kxSvOBi gij1sfq8vE3ubOmaJILFJzRispD8EZutZAFnYa7ih1pzTdclo6dLQMBAZw7G4tA6+3Az 61okT4LNTogjI5i+Xs09Ed28xsVeVu1nWZ+8Nad+qbDYuldJXD4AP5XINRj2Y7Pnnqx3 UepmtA56nynLAIiorGWU2NaObqOKhsjdSl1HilwKlOtw8dFvPtPSL5gjyOnDb/t/VKA8 lV0eFjVguBPZ8Wd4M7Ku8z7o3AQSDw0zaZXFr5S5ZhRkL4URLylJ+hCETEVxJXlA5+8s ig9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414991; x=1772019791; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=eq6qLXbyXLJc54ZDJbb9jP08uxtrOMIUIN9nTu5R5VE=; b=OqUYEosz3iK3f7mg4tLbLJEM7IXNV6e21zE8KlFeoe8iHUSvM8wz8W53oG697nFVqT Hu1fBbQYXQ8vtDHdxu8goE0debZXCXaTNK+6jMfgIsYifKnhz3VeWOUCCKEZ8JIySz7/ PHl4yu66prVzjTfZbWC1ycmvxh96SVyB9u2tcTGkY8oBRCVm82hUM92MnhINZoQ1tBDh 1tZAU4opNV7VIqFkT/wITHit0xS3mNnuxJ7QMruGzhpLrXABeHGD7jpGYqHMSst3Agbt Q3mUlqvx/hMwX27AfcNJnt8V1esiJ+7ICY4ZGx4YD1hSBAD6sxLKng8T8QsaiPy9g7f/ 8mfA== X-Forwarded-Encrypted: i=1; AJvYcCUh2SQkPenQTDzazBmZRK/PygqRfg5ABbrSjBuoBsqFPUtl8IHyBRKGt6EM5bdRibELgiFIfzkWV6Zf@nongnu.org X-Gm-Message-State: AOJu0YxXsTurTZ/7eH+PLRF/LAHwYe9aTkNY+b1pL20hugXiLmFHye+s XbSP9NOAS4vN5azvN7Px0myBOcUAUr2GPJy9h6bgCdcXjj00oRxA+WQXJaQbAgxCto9oXiPZMjL XjSXdXUH/U60ICNbmybCufK8um0pPt5edRr/ohzvezXJCb9VPl0QeOtn3 X-Gm-Gg: AZuq6aJhWv9hzluaJB1h+FHa/iTd4CtxPH/eQbGcgAVn9uonBgu41Lq7KEXHcHs/4Bx 6c7Bxb/WFwVqpiBK+5BXjAKBOK7t0jcPEwL1gORZ81kIG7pPS+sqJDKtbAn/HbH7CLUCmQP6oTn QkObFkupyWG2EHCZhpvUKRllyUKXQHx3rUxxhL1d7MQMQJua1RaKk0Gs9IO6k4TmTHeEs0tInYH eflFPAJvWjJEBbvE+Yteta4eP9t8K/NCK7s2wm0z5KxJSso5XAmIXOyKku4835Sxd7BZnVVFFxE mW657wdAAldc3QeF/KzkwWc4XKbVErLpbNAwkpcU4j+DEj52SQmARbW8+xTRumAiIhXwQ0KCWRY Xnw1Tdf2biKUE00rJwy/zCHZ2cNLgqfIK+tBbPwRGcJYt9F87kDWz X-Received: by 2002:a17:903:2282:b0:2aa:e238:e219 with SMTP id d9443c01a7336-2ab4d0b2e48mr167750695ad.58.1771414990741; Wed, 18 Feb 2026 03:43:10 -0800 (PST) X-Received: by 2002:a17:903:2282:b0:2aa:e238:e219 with SMTP id d9443c01a7336-2ab4d0b2e48mr167750475ad.58.1771414990343; Wed, 18 Feb 2026 03:43:10 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 08/34] i386/kvm: unregister smram listeners prior to vm file descriptor change Date: Wed, 18 Feb 2026 17:12:01 +0530 Message-ID: <20260218114233.266178-9-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415156420158500 Content-Type: text/plain; charset="utf-8" We will re-register smram listeners after the VM file descriptors has chang= ed. We need to unregister them first to make sure addresses and reference count= ers work properly. Signed-off-by: Ani Sinha --- target/i386/kvm/kvm.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index a4e18734b1..83657fe832 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -112,6 +112,11 @@ typedef struct { static void kvm_init_msrs(X86CPU *cpu); static int kvm_filter_msr(KVMState *s, uint32_t msr, QEMURDMSRHandler *rdm= sr, QEMUWRMSRHandler *wrmsr); +static int unregister_smram_listener(NotifierWithReturn *notifier, + void *data, Error** errp); +NotifierWithReturn kvm_vmfd_change_notifier =3D { + .notify =3D unregister_smram_listener, +}; =20 const KVMCapabilityInfo kvm_arch_required_capabilities[] =3D { KVM_CAP_INFO(SET_TSS_ADDR), @@ -2885,6 +2890,17 @@ static void register_smram_listener(Notifier *n, voi= d *unused) } } =20 +static int unregister_smram_listener(NotifierWithReturn *notifier, + void *data, Error** errp) +{ + if (!((VmfdChangeNotifier *)data)->pre) { + return 0; + } + + memory_listener_unregister(&smram_listener.listener); + return 0; +} + /* It should only be called in cpu's hotplug callback */ void kvm_smm_cpu_address_space_init(X86CPU *cpu) { @@ -3538,6 +3554,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } =20 pmu_cap =3D kvm_check_extension(s, KVM_CAP_PMU_CAPABILITY); + kvm_vmfd_add_change_notifier(&kvm_vmfd_change_notifier); =20 return 0; } --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415113; cv=none; d=zohomail.com; s=zohoarc; b=B2eLTvpNP98FehYRhGk124PpkHDyHo/ZGR4IJtoPIjeyhYW22OqiIJxXzdBsNzue4jcBM2SbBddCYOL+LshQKGykfPjxM+xk3P4crzlEpDD5lcl4KqluopmdwgtSa1Es7dbxzZP96z6/V4a274pKMuK06Cov1Ti34AL5c7k4YIE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415113; h=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=8EBAMm0+61u9Fn6aJibmSGLnXTBDJJJE91zdBC7Xh+k=; b=XaK65KVsQSm2M254/cvaTWSNgnoVfYXdRBIQ0N+HTIAlD0ISmOXWeCiHuOD4jrSSBIj+sAUTTT2zPExsUgBOKmowFtHBIVBWDylNDhXBW4sx9zA4ExigaU21v/U79ivvdqgHk71+QoQ0gQEC92BeSIo1GK1wu1oG+SN6qDz0iFU= 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 1771415113258309.2140759570617; Wed, 18 Feb 2026 03:45:13 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxp-0003I0-Vn; Wed, 18 Feb 2026 06:43:30 -0500 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 1vsfxg-0003E9-Nn for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:20 -0500 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 1vsfxd-0007qV-QU for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:20 -0500 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-509-1UQV6CdpPhiwupY3X3yUzQ-1; Wed, 18 Feb 2026 06:43:14 -0500 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2aad3380076so4965915ad.1 for ; Wed, 18 Feb 2026 03:43:14 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414996; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8EBAMm0+61u9Fn6aJibmSGLnXTBDJJJE91zdBC7Xh+k=; b=XjtOglj0GG7wlbQttPqWLfnAvNQaGBXsvNulnLJ1P3/6FPNA+1QkjR2LGBz/VeV10cNQPw GwG3L7FVulAeK2DzxCaPmvb8X1RmkBJVMjU0GSuvkXMc+G7ibIxiy4E3dxWq3ufR5W9vfB gYR62MM/gVlYdC78eKtS8asmKCOHfbM= X-MC-Unique: 1UQV6CdpPhiwupY3X3yUzQ-1 X-Mimecast-MFC-AGG-ID: 1UQV6CdpPhiwupY3X3yUzQ_1771414994 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414994; x=1772019794; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8EBAMm0+61u9Fn6aJibmSGLnXTBDJJJE91zdBC7Xh+k=; b=Q+C3vlNjS28b5ncwrthqBTeF1OZk4bHHM7i7iNRmN8M39auOw5O6OjgsE10mhTwRrJ aLyzPkRjzmahBdiefbYW0bSm8QoXQP7EU61Qwa1L4603ueu8bDGCitkY2D7xy320vqtr 8lTUU3A5jvs+gl7XIB33XXgJwkTr0tE1hrjO5d2ECtO5eDf8BSL8zVBJcNF752lo95RI +MFgZKimABYcOTvbZt4LpRTqU86ihDJ9wSCQQeK0PlN3JKqZDIZVGlon1lU3A7IuSDsf nvvrpQ3jXL9g5q5kzGu9nh52BN3eLnCxRhVmiH3736Rnyi6EwfMEPrW8Cufa75BQy5Oc wAuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414994; x=1772019794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8EBAMm0+61u9Fn6aJibmSGLnXTBDJJJE91zdBC7Xh+k=; b=YafyuyOsrEEVmRC8uG7AxkDxrgkpoasyjUrioK/5LE9ymGsmrbFEOoQLwtViCZNdXV /+E1SP3lM1GwFyRLUdQoe6bljnvl2R1eRBx4oOJzX4LC533KXwqitz/NVgxSN6ItJZiu z9RFsYKMrNgC3SqTuPyAJZEz0/gzFlM5YbhG47soydQUD1td1DP7KXfB41N2T1vWCSmK ESOnkn8Z/DLV9hAFjlRgmp7ki169a+o7StZOsabgnvZsDvWEyd1O66i5aRbyedf088Md vL73I5/nA7i6sP1LSwhRRN4QH+aMio5ApI6rO/jdNq8J47NLf/P0i3s7se1WgXxe/Hsk gg6Q== X-Forwarded-Encrypted: i=1; AJvYcCXthwwQ7zev1N8pf3E5vok3x5k1BNjIlyFlAh6KuXcc0HUdDJzyBtPCPihdIxXZq1Rw3dxnjhs7w1rX@nongnu.org X-Gm-Message-State: AOJu0YzE1EzTlhTgran0fmclNWgw0LyIknwwdN9fzdlPTmwLFmzZLtr9 ar3lwG2sSShLqeDVDKDogIYN0lNxIfQrzrmCtFDvQYePoqa1ZcLfC94FyeJT6UC5zkHfQjHnHXT gU63ORsyeCXaTh/0AQzbLy8w/IrkrRYae0ypO5U2bECL3hXRQ1Bu9YzZr X-Gm-Gg: AZuq6aIV2NQBDC7aDuVBQ3ECwyhDZ+ZS85GlsihS+UfKm4NRWEQlvRyTxEEWsc9tLff peFXLgBXWOtoXtDjZWK13MDGcpizYV/JOfQBZY58N7LksEddtW7iFkGwC3mBhtKaEjYpDZvzPeM kPBxg4fYylu+64NCddrOf6QTaRgshEtwuY9cJ1eDmRo9PEqp/6Tc9YcI72JKST9WM1LyLQVGFjb D9CI1+wNsf7564lutX5NFJF0r/GJdZ18/XXZ+eXDTYEuPZXc+t07RVsAGGekMZbfSOOTXMlGTtq hv1yoqNyu4fp+yBh7We61zIwISfUEixXdrXLtPUHbL/H34+oihO3mVNKgk5qf+XNvbAaaEJC60y DDlQU73lqjhnOiDbMJ4344gggHer6tOoQ6AkZZ0QkKneFmXCob6R0 X-Received: by 2002:a17:902:d4d0:b0:2aa:e817:1bda with SMTP id d9443c01a7336-2ad50b980dcmr15409665ad.12.1771414993680; Wed, 18 Feb 2026 03:43:13 -0800 (PST) X-Received: by 2002:a17:902:d4d0:b0:2aa:e817:1bda with SMTP id d9443c01a7336-2ad50b980dcmr15409535ad.12.1771414993250; Wed, 18 Feb 2026 03:43:13 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 09/34] kvm/i386: implement architecture support for kvm file descriptor change Date: Wed, 18 Feb 2026 17:12:02 +0530 Message-ID: <20260218114233.266178-10-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415114335158500 Content-Type: text/plain; charset="utf-8" When the kvm file descriptor changes as a part of confidential guest reset, some architecture specific setups including SEV/SEV-SNP/TDX specific setups needs to be redone. These changes are implemented as a part of the kvm_arch_on_vmfd_change() callback which was introduced previously. Signed-off-by: Ani Sinha --- target/i386/kvm/kvm.c | 49 ++++++++++++++++++++++++++++-------- target/i386/kvm/trace-events | 1 + 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 83657fe832..8679e7d3fa 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3407,12 +3407,30 @@ static int kvm_vm_enable_energy_msrs(KVMState *s) =20 int kvm_arch_on_vmfd_change(MachineState *ms, KVMState *s) { - abort(); + int ret; + + ret =3D kvm_arch_init(ms, s); + if (ret < 0) { + return ret; + } + + if (object_dynamic_cast(OBJECT(ms), TYPE_X86_MACHINE)) { + X86MachineState *x86ms =3D X86_MACHINE(ms); + + if (x86_machine_is_smm_enabled(x86ms)) { + memory_listener_register(&smram_listener.listener, + &smram_address_space); + } + kvm_set_max_apic_id(x86ms->apic_id_limit); + } + + trace_kvm_arch_on_vmfd_change(); + return 0; } =20 bool kvm_arch_supports_vmfd_change(void) { - return false; + return true; } =20 int kvm_arch_init(MachineState *ms, KVMState *s) @@ -3420,6 +3438,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) int ret; struct utsname utsname; Error *local_err =3D NULL; + static bool first =3D true; =20 /* * Initialize confidential guest (SEV/TDX) context, if required @@ -3489,16 +3508,17 @@ int kvm_arch_init(MachineState *ms, KVMState *s) return ret; } =20 - /* Tell fw_cfg to notify the BIOS to reserve the range. */ - e820_add_entry(KVM_IDENTITY_BASE, 0x4000, E820_RESERVED); - + if (first) { + /* Tell fw_cfg to notify the BIOS to reserve the range. */ + e820_add_entry(KVM_IDENTITY_BASE, 0x4000, E820_RESERVED); + } ret =3D kvm_vm_set_nr_mmu_pages(s); if (ret < 0) { return ret; } =20 if (object_dynamic_cast(OBJECT(ms), TYPE_X86_MACHINE) && - x86_machine_is_smm_enabled(X86_MACHINE(ms))) { + x86_machine_is_smm_enabled(X86_MACHINE(ms)) && first) { smram_machine_done.notify =3D register_smram_listener; qemu_add_machine_init_done_notifier(&smram_machine_done); } @@ -3545,16 +3565,23 @@ int kvm_arch_init(MachineState *ms, KVMState *s) return ret; } =20 - ret =3D kvm_msr_energy_thread_init(s, ms); - if (ret < 0) { - error_report("kvm : error RAPL feature requirement not met= "); - return ret; + if (first) { + ret =3D kvm_msr_energy_thread_init(s, ms); + if (ret < 0) { + error_report("kvm : " + "error RAPL feature requirement not met"); + return ret; + } } } } =20 pmu_cap =3D kvm_check_extension(s, KVM_CAP_PMU_CAPABILITY); - kvm_vmfd_add_change_notifier(&kvm_vmfd_change_notifier); + + if (first) { + kvm_vmfd_add_change_notifier(&kvm_vmfd_change_notifier); + } + first =3D false; =20 return 0; } diff --git a/target/i386/kvm/trace-events b/target/i386/kvm/trace-events index 74a6234ff7..2d213c9f9b 100644 --- a/target/i386/kvm/trace-events +++ b/target/i386/kvm/trace-events @@ -6,6 +6,7 @@ kvm_x86_add_msi_route(int virq) "Adding route entry for vir= q %d" kvm_x86_remove_msi_route(int virq) "Removing route entry for virq %d" kvm_x86_update_msi_routes(int num) "Updated %d MSI routes" kvm_hc_map_gpa_range(uint64_t gpa, uint64_t size, uint64_t attributes, uin= t64_t flags) "gpa 0x%" PRIx64 " size 0x%" PRIx64 " attributes 0x%" PRIx64 "= flags 0x%" PRIx64 +kvm_arch_on_vmfd_change(void) "" =20 # xen-emu.c kvm_xen_hypercall(int cpu, uint8_t cpl, uint64_t input, uint64_t a0, uint6= 4_t a1, uint64_t a2, uint64_t ret) "xen_hypercall: cpu %d cpl %d input %" P= RIu64 " a0 0x%" PRIx64 " a1 0x%" PRIx64 " a2 0x%" PRIx64" ret 0x%" PRIx64 --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415035; cv=none; d=zohomail.com; s=zohoarc; b=Y145moscmwEmFo/78Wm4mScT33yMPwc0YoYf5GWlzSzwVANubYujFax7YPndIbZwO0VhNcBThm5b0Q+wd2gweUj642+S4G29fMT3NDTnMzZEhr7EMOPlntb33HehCnTMzpLlhB9GiVW8tMYOuvx2G+yOi7HnX076KPGfOHCVlXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415035; h=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=oPmsaquE3JdAXLnO3ruw5k4aSto0QbPW72QvF6hvRt4=; b=PODeCYO3t6fhVkWnLqLi4FIpJBWqEs8soUQ10LfaCc+IGZlbt6Rjy/IpSH9BuEQBy6uqUChsv8yNuaRI9rtCZZ0u7+ad/ePT7vegcEgAJuSChLmZLSr4o9Cmpx2tE1LqY3hIos0WSC3q9MmcJHFQTqXS1LPJ7kmb6NLR5IcM8NM= 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 1771415035939617.4085017397168; Wed, 18 Feb 2026 03:43:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxr-0003Io-8U; Wed, 18 Feb 2026 06:43:31 -0500 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 1vsfxh-0003Eq-SG for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:22 -0500 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 1vsfxf-0007rH-TJ for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:21 -0500 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-300-vSYj64RdP_WUg36E9ONRCQ-1; Wed, 18 Feb 2026 06:43:18 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2a946c0e441so53227545ad.1 for ; Wed, 18 Feb 2026 03:43:17 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771414999; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oPmsaquE3JdAXLnO3ruw5k4aSto0QbPW72QvF6hvRt4=; b=D5hUUWtXex1yJMWdoReGFHgYQ/1jnLiIRmkWeUwHtd/zhN1Rykh5pnWIdT5AmuFQlUXxFX h/4fSqXAKNpmBMXsjsSyFjPlCzoGX8AYDADR/DJ24HS75kyRAOjSNKg+Hk8kz7MxHjaVDz ksGVGLMSLhWTZglUvwGtAb/NcfHXBa0= X-MC-Unique: vSYj64RdP_WUg36E9ONRCQ-1 X-Mimecast-MFC-AGG-ID: vSYj64RdP_WUg36E9ONRCQ_1771414997 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771414997; x=1772019797; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oPmsaquE3JdAXLnO3ruw5k4aSto0QbPW72QvF6hvRt4=; b=thrjL4vYXH6V71h4kPNTd1NSi4uvGzLmzhWKK2TXhbdUm49QalHfOKq1Qi3k3fiRNn GN8MMLN5DyM8tfw3NRI0MaFLUrZ9Oq53j1D6eMfi/SB8Oc+UjrIHZYA7XryedhavLOl0 NspkTJAyu0XZdaCMOWxkDh1CDkh+ThXiomQ9uH28ZfM2dFaAznXnSTfUzxbMsfA/IOGD fHJwZyJBnyhsKmM0pe9bRlfYmT+hl5z9EVP5p/Uz7X6lLbCJojJ8KRIF+z3QYUz9IytF bXaEml3yRbODuUf7rX3XGBLXX+Z9convaGwvHmD1aeaQkyHZPzXqnmiG5YR2XZpdVGri IiVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771414997; x=1772019797; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=oPmsaquE3JdAXLnO3ruw5k4aSto0QbPW72QvF6hvRt4=; b=qc1dKQWN4Gr3FS5EGg897TNU6TmcUFyJsDDZEjYGZv1SiDpk1dBRQEzwEFkg2Ivzq+ BAvr9jTl4Ude7U50+URkBZ9mlRGD+D6i/Zp8Qj/CQIAwUBu8cvt2gRT70IxiX6LpSgVw AMTq0BwlImkcviwu6jxBIuJm2Oh6l4/jHk8ghFiK9os56zQV056HdfWpraJyo/9swUAO trjwfxUaJRGKXVIiH+8K6pSLAheeTMRpv8ZJVeGTpmBn/LQz7DIIgvAmTND24uybZLlA Y9cUfhe5hNTyqGkOSEaqplGJYBT30/3piSpIpPpT/oa522UjKrZtThaJMrFdoZ/i3cBZ YFJw== X-Forwarded-Encrypted: i=1; AJvYcCVRWrfKgyrR70D7Z9U1UnZBCOqS/6k96z+MzTk/IjzuMlxuLVy/GS3s/Mre72WhERt5x7V7Zq4WfAZr@nongnu.org X-Gm-Message-State: AOJu0Yzo6SS0vcMuIHJqK73ZY47n5sxqtEqlSO4MaysKwZKn2HEP6gyI ctjMT0nE/9nukKkvsAURR0aX4ktPFemw3bUmD710cUzy3vgE05bAfOV3JOe7is9U0XRa/7NhekU nJEa6u7pVItGIanAwD4sGqDSA+NUGg6vfPjEFu/qd3IAeZyzs70Ih6tav X-Gm-Gg: AZuq6aLpmqAEN9jIcjcf7Eg4hOIEhcT1ipEFOExQ0B5w8OwP8ZmTYV6lBBVRguVDAY9 YfMR2ZQAoIrDEm2/GXPFMyoPQKp1a8wYzNBPUqZjVJDljammWyx1Y9Ave1GHkbZON/9o7PUFlH3 +LwhFuRnXYqlay0pa9clAqnpqE/U0ZSugAwmzBMtsgqPVpg9S+seiPTSvqEo/vthJLUVAaWnk9K J3sHQGtA5cEWbx//VuhzP4cGZZGS6zd+FULcGWzCyJiDHP2koK17gYX0QKQ1Kv/BN3zPTnxPkus O5WgPNDPsB1TVhPpVNL2vpDaOk/1ETwrmW5AfNB6MTUNmKu8R7uejUvQvAzHoF5dNzv7p1Y4hW9 NpsphEofXED4jQtyY3wcPh59N46ohmJKuXHC+Qbe1BReFG5m21NqA X-Received: by 2002:a17:902:d50a:b0:2a9:cb10:42d with SMTP id d9443c01a7336-2ad51004771mr16038185ad.61.1771414996581; Wed, 18 Feb 2026 03:43:16 -0800 (PST) X-Received: by 2002:a17:902:d50a:b0:2a9:cb10:42d with SMTP id d9443c01a7336-2ad51004771mr16037995ad.61.1771414996169; Wed, 18 Feb 2026 03:43:16 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 10/34] i386/kvm: refactor xen init into a new function Date: Wed, 18 Feb 2026 17:12:03 +0530 Message-ID: <20260218114233.266178-11-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415037587154101 Content-Type: text/plain; charset="utf-8" Cosmetic - no new functionality added. Xen initialisation code is refactored into its own function. Signed-off-by: Ani Sinha --- target/i386/kvm/kvm.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 8679e7d3fa..feb3f3cf3c 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3433,6 +3433,24 @@ bool kvm_arch_supports_vmfd_change(void) return true; } =20 +static int xen_init(MachineState *ms, KVMState *s) +{ +#ifdef CONFIG_XEN_EMU + int ret =3D 0; + if (!object_dynamic_cast(OBJECT(ms), TYPE_PC_MACHINE)) { + error_report("kvm: Xen support only available in PC machine"); + return -ENOTSUP; + } + /* hyperv_enabled() doesn't work yet. */ + uint32_t msr =3D XEN_HYPERCALL_MSR; + ret =3D kvm_xen_init(s, msr); + return ret; +#else + error_report("kvm: Xen support not enabled in qemu"); + return -ENOTSUP; +#endif +} + int kvm_arch_init(MachineState *ms, KVMState *s) { int ret; @@ -3467,21 +3485,10 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } =20 if (s->xen_version) { -#ifdef CONFIG_XEN_EMU - if (!object_dynamic_cast(OBJECT(ms), TYPE_PC_MACHINE)) { - error_report("kvm: Xen support only available in PC machine"); - return -ENOTSUP; - } - /* hyperv_enabled() doesn't work yet. */ - uint32_t msr =3D XEN_HYPERCALL_MSR; - ret =3D kvm_xen_init(s, msr); + ret =3D xen_init(ms, s); if (ret < 0) { return ret; } -#else - error_report("kvm: Xen support not enabled in qemu"); - return -ENOTSUP; -#endif } =20 ret =3D kvm_get_supported_msrs(s); --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415092; cv=none; d=zohomail.com; s=zohoarc; b=HWUl1dZxh+SEUwYfz51GJbz/KMrJE+cBlZD7IYbdbAyga9heMuC8nEvxWd/UT0T/RZVZ4xkvV6EWgYXuzyP4JIrEVTvPt6pmC1Pi0mJlU72lCV2fUDizFnd0hgN7LNvmx22F7ia6Mv9vusJbTtfd0xoZ955wzNYYf47V+Nf27Cw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415092; h=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=cB9YNQTiPMfXUb8pkRT8YklB7Tgf9L/mxZrNTbXVbIc=; b=egT8vt4c+n2JlzxzACRpNpJT7dRTztvyjZl+clQKslR3pUOX7MTw6q/FL/D85aGKTfupy64JAmcyY8ll6g2/beMeN5KIdHq4TqaSe8HV0y0+EqubcTdKpG2h25YfWQjsjzEauBceU10wPVzMpzxwn1ab3tnspiZfVNwjKik6wb0= 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 177141509286417.372233111425885; Wed, 18 Feb 2026 03:44:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxw-0003KT-AS; Wed, 18 Feb 2026 06:43:36 -0500 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 1vsfxl-0003G2-3d for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:25 -0500 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 1vsfxj-0007sE-BF for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:24 -0500 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-279-_hbWRvQiM0KOKH5pkISGog-1; Wed, 18 Feb 2026 06:43:21 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-29f2381ea85so275901515ad.0 for ; Wed, 18 Feb 2026 03:43:20 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415002; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cB9YNQTiPMfXUb8pkRT8YklB7Tgf9L/mxZrNTbXVbIc=; b=ixQjjjYHXpLUPT/l92tHwqUk85UUzfNRRhrpIaRyXzQ+MnxADpueZbf6dodLUsfn+M+ako HMVB2qjzm4wEsTSD8f7T9OEzDBaNNhsSOXoS4jutEK4a+rdlvSPhCOMhbZPOURlpyxEFDG BAF+7E7/towtU729TzxnRX6D6rRJ9+E= X-MC-Unique: _hbWRvQiM0KOKH5pkISGog-1 X-Mimecast-MFC-AGG-ID: _hbWRvQiM0KOKH5pkISGog_1771415000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415000; x=1772019800; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cB9YNQTiPMfXUb8pkRT8YklB7Tgf9L/mxZrNTbXVbIc=; b=QxvnOcuVPjSzUI51n36CP10bzb6vhGx3kkiENp97TuGiTDpX4BYNXg6zCFa5+Sg8qg jNKHF0O5hAAJvgOQ1Zk/jNRLC7FvPVKGzvPna7WopgdFxS0xYVOm0VLxQaTpbMWKfM0+ OoW8s6GFMPRbaHTw4GC9TnAm+VJ2t0nfRhUQ/liaiWg/sCuLDr2T51sSAHw2qFDyPAgl HSXyMhNXeuwwbaCMPVWVoYISu8k2AC2+0IOYAy/OelZeHztj+bkVZqZPVBWpWNlS4IBL 8dDp6zByX3QlDoppWtgLB9QE2LX2MY3qwiM81XkN882GBPsGUMPQr5Y7eEuBaC2bN401 Qoxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415000; x=1772019800; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cB9YNQTiPMfXUb8pkRT8YklB7Tgf9L/mxZrNTbXVbIc=; b=WPA9TODzLBuI/HtddS+Q6qMuer7YBvi0PtbUTa8FHAqIlDIegkOyBs1i2hY2tda4uc pClS+3ZUufJXn8mNAY0nJHGM/P+Mt5UxVqjsvdeMfXWLnGBNUdsmKn9Eci7CLKRV+PfC ggo1LXvv5q0lepiykvwFI4E+1XcZ9XVKtxzIE4GKjPHeZk0Z2MjGBwKyI14S8RrUuo4k 5p//Xi8f20LlLwcKj39fZs0USUsV+SC5JBZf3Qj+lzjiuB3Wvf6bF/ljXq8dj0iwz6pQ mFJIHXI9tli1+q/Xe4+Rumfx2+5Eg+qhK6IQBwyPclyP8muTbiTfLiPSrbT8SOKHq1Yh LSUQ== X-Forwarded-Encrypted: i=1; AJvYcCV93BWDrzSqsTsQIu8epEdwvQ0ul3hY6A6dJRIx2gUtIY2LhXfa11C580pD/AYLSMReG68Fvl1Yj+KL@nongnu.org X-Gm-Message-State: AOJu0YxiH35Ct1zFg/8A5cLxJGp1JHjQzci/TJrRjuEBAbNSjpSe9oeS 108OeTaa8m1Gjd0GaHmKPN0B+kt5bten9/ON4iF1lSePQNO8iSultvdheYHPp4x/kJ12yvurKHE XnjPQuS9jYm5sKrPaicv6bkVHfzlhU97NxKsqHWH70D5+xuYBmwrsB9Gf X-Gm-Gg: AZuq6aKUVRwVn3Ankw3aPujULc2BKGW0Vok8+Jr06QSq/8uXYZ1RRz2ni0ynawmvT+M xZNCHvLht4duPP0hLqQLod73TpH5/U6NaWmWc+xbGeSo3nKmBANTlL6BQwmgWOdsZ5r9lx4yNxO bpj/ZM5op6LfwNGmqxi4Cyp3ejeCL/jwYe4RJIluSK8Xf8uKRKltK1w0o7kaQBxuQZNyQxLfihh j/bEWPqTpBBF/HhAZZluCsmbwvTkCbcQ48rgT4UyJbYsa+4AUzGCgMgWBb+fhZkDHBBercsNuo5 jxFxM3FzVMfbwT2eCWJe3abYsCVR6csYb24tdeRexZH0mDI+IVSoL/TQo7RjTEfCf3se/pzl5zh WexoKA04gaYtn8HqVNvyxg5JPOLd39BH20NU1xkPhi3VAh5kn+okH X-Received: by 2002:a17:902:e748:b0:2a0:acf6:3de9 with SMTP id d9443c01a7336-2ad175a51d3mr133355215ad.58.1771414999954; Wed, 18 Feb 2026 03:43:19 -0800 (PST) X-Received: by 2002:a17:902:e748:b0:2a0:acf6:3de9 with SMTP id d9443c01a7336-2ad175a51d3mr133355055ad.58.1771414999587; Wed, 18 Feb 2026 03:43:19 -0800 (PST) From: Ani Sinha To: "Michael S. Tsirkin" , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 11/34] hw/i386: refactor x86_bios_rom_init for reuse in confidential guest reset Date: Wed, 18 Feb 2026 17:12:04 +0530 Message-ID: <20260218114233.266178-12-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415094218158500 Content-Type: text/plain; charset="utf-8" For confidential guests, bios image must be reinitialized upon reset. This is because bios memory is encrypted and hence once the old confidential kvm context is destroyed, it cannot be decrypted. It needs to be reinitiliz= ed. In order to do that, this change refactors x86_bios_rom_init() code so that parts of it can be called during confidential guest reset. Signed-off-by: Ani Sinha Acked-by: Michael S. Tsirkin --- hw/i386/x86-common.c | 50 ++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index de4cd7650a..c98abaf368 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -1020,17 +1020,11 @@ void x86_isa_bios_init(MemoryRegion *isa_bios, Memo= ryRegion *isa_memory, memory_region_set_readonly(isa_bios, read_only); } =20 -void x86_bios_rom_init(X86MachineState *x86ms, const char *default_firmwar= e, - MemoryRegion *rom_memory, bool isapc_ram_fw) +static int get_bios_size(X86MachineState *x86ms, + const char *bios_name, char *filename) { - const char *bios_name; - char *filename; int bios_size; - ssize_t ret; =20 - /* BIOS load */ - bios_name =3D MACHINE(x86ms)->firmware ?: default_firmware; - filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); if (filename) { bios_size =3D get_image_size(filename, NULL); } else { @@ -1040,6 +1034,21 @@ void x86_bios_rom_init(X86MachineState *x86ms, const= char *default_firmware, (bios_size % 65536) !=3D 0) { goto bios_error; } + + return bios_size; + + bios_error: + fprintf(stderr, "qemu: could not load PC BIOS '%s'\n", bios_name); + exit(1); +} + +static void load_bios_from_file(X86MachineState *x86ms, const char *bios_n= ame, + char *filename, int bios_size, + bool isapc_ram_fw) +{ + ssize_t ret; + + /* BIOS load */ if (machine_require_guest_memfd(MACHINE(x86ms))) { memory_region_init_ram_guest_memfd(&x86ms->bios, NULL, "pc.bios", bios_size, &error_fatal); @@ -1068,7 +1077,26 @@ void x86_bios_rom_init(X86MachineState *x86ms, const= char *default_firmware, goto bios_error; } } - g_free(filename); + + return; + + bios_error: + fprintf(stderr, "qemu: could not load PC BIOS '%s'\n", bios_name); + exit(1); +} + +void x86_bios_rom_init(X86MachineState *x86ms, const char *default_firmwar= e, + MemoryRegion *rom_memory, bool isapc_ram_fw) +{ + int bios_size; + const char *bios_name; + g_autofree char *filename; + + bios_name =3D MACHINE(x86ms)->firmware ?: default_firmware; + filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); + + bios_size =3D get_bios_size(x86ms, bios_name, filename); + load_bios_from_file(x86ms, bios_name, filename, bios_size, isapc_ram_f= w); =20 if (!machine_require_guest_memfd(MACHINE(x86ms))) { /* map the last 128KB of the BIOS in ISA space */ @@ -1081,8 +1109,4 @@ void x86_bios_rom_init(X86MachineState *x86ms, const = char *default_firmware, (uint32_t)(-bios_size), &x86ms->bios); return; - -bios_error: - fprintf(stderr, "qemu: could not load PC BIOS '%s'\n", bios_name); - exit(1); } --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415056; cv=none; d=zohomail.com; s=zohoarc; b=a4W7u/P5AA++QeaXSgAUf2teh8ZCviLHm0BTKx0FHhJFSD6chQxRXylnPV42Zaa0o0NT9naTHk0d2Lq9T8522DuSOIGarrHnWt+EBgptwD/c9LmrbZqI/WamcFIltfhqRIaZgQ4f81Ayzgro0RC1ycyCepfjdepl7qXPaP9n7xw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415056; h=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=ESypFcrxb/PTVt2Aex0/LJ0mDUhQITS4Sl+F/ZJ54Aw=; b=OZmvtHVrO9odh9TvSM6HVyrSk+/uNye35ebTSxtA4l7TqqxghWUau4+UhuNkK4HvZXzbHW6eVUv33/OfFURZuS6DKhenbQQkoc16dLYlq0bc4Y1WEoqzQUsUSb41wj52t7wD8wqHPz9YFc1yXtXSvO2dPSE02biXEdYzlsEVzH4= 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 1771415056307281.22900523751366; Wed, 18 Feb 2026 03:44:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxs-0003JY-Ml; Wed, 18 Feb 2026 06:43:32 -0500 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 1vsfxo-0003H0-KF for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:29 -0500 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 1vsfxm-0007sV-LJ for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:27 -0500 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-417-IJKgoeJcOEq1wt5YYhc7zA-1; Wed, 18 Feb 2026 06:43:24 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2a946c0e441so53228685ad.1 for ; Wed, 18 Feb 2026 03:43:24 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415006; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ESypFcrxb/PTVt2Aex0/LJ0mDUhQITS4Sl+F/ZJ54Aw=; b=H4nMefWIlsuV2kHxWUMM35i8Q++6x6y3alJsV6wCStpJH621LYaKUOgbuAb8RTi/VKFq6i anWOmiDOy0xC/a8/9vM3frymwagoJkupixL9PhcXj7afajTvLL2IqYrBJ7IcQvM8PokwkQ sdHUpg+3WNRAna7l6oF0+YM5KpfHneU= X-MC-Unique: IJKgoeJcOEq1wt5YYhc7zA-1 X-Mimecast-MFC-AGG-ID: IJKgoeJcOEq1wt5YYhc7zA_1771415004 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415004; x=1772019804; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ESypFcrxb/PTVt2Aex0/LJ0mDUhQITS4Sl+F/ZJ54Aw=; b=FegC1TRRgZwGYsLKs70w8DS3WbNkxIwr1K9exu2Hx0E67ge9PMuPRFdlhjYlG3couN 04ZkkwJFGpr1OH58+MdHkzsyZcvd5Kt/L32OJjgEvnkDlVJACqNFFoW5cN7WDgKYRsyc cgActER41JpyOJ0ue9g8ecAl+re+UiIEMsZ6lY7rZU+0xnC2YTVogQFxYd3d+KKmUZ+T T6zH+pNDABQOFYnKDk9qdMFKtz4W159sxPCx0VKanMx5gamm19eNspYiQQuSj1XVNb2T 0RJXTcKGFR+037/4a5kP7TU2qOojTasifBWKov7QEbxZ+z21j4hNUMb/37Mdegsa7AvA 3B9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415004; x=1772019804; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ESypFcrxb/PTVt2Aex0/LJ0mDUhQITS4Sl+F/ZJ54Aw=; b=YMBNhsweDy6VemfkhNnXuU1nacp4yIcHd1F/FL0A9ViS63ffUMu6P7nbFSIhVyYnSl /Mnh273JnsCQMSRciKdugQrScd/+kjDcy7kYzqnnKn5gD/2gzsxhWmG+4s8EiWIAMZH2 4Ft3xoQV+l8euHDep7v3PImhGhNoZR4rOreMiFSeUH8nNP6Az69DE0BUm4fIm0CdLUJt BRoiAA3kzzrcryzb3b3Q7KB1WQsSpdpSVi6ZVR7QzV5HggFKWhT5JTRix7NcI6qKGzwP M0buZVh+TPiDTyzXxdrhA5ts0V+nuWsfdV0MZ19jw+Lpo87Rlv0b5KZ40RYKEFVl0uIy O7+g== X-Forwarded-Encrypted: i=1; AJvYcCXNPISosw8jLsJL+886q9yg79zPL68H0h7oyVRk5aAksnUzwIoBOxJ653g5eezPHdkk7CEHdIywoFuX@nongnu.org X-Gm-Message-State: AOJu0YxLoRNwUWBAnyILgynVpE5/mW8R4+zFjf3c29GGSnT2xURBdRwX vAxE1veu4Amakerxzt9THoI+azqFQnvClEfrvKajJafHh/cxAgOhP3CbWnaWJyCsb3LVzY1CFVY mXx2rJlhkqqisxOKOYtJAF2f1BazIg/x4SKia5incAVouE/150V05BNPg X-Gm-Gg: AZuq6aLW+c8sV9jBQdwPYqbFGWZykZ3phe2wwNE8g+5o/FfGam4FNwx0KSn1rmLbRw8 czq0e6+/WPjF4TVD+wuTawuokAafTSKFvcxZauh5CRK5r5IvemY5LBXMloikfIQ3Ivc+6RPd4Zc /hmh7+Edxv//dMhCFqSNvQKLiouU2dvGBOaJMPTWUUyY1vu27JHw3RaxckTOLyYJsi9FYQRh1J4 5qGXZu+C7oLFOMKR7nte+VcJ/itoolRg+phpM6raT/Ze3gcd9VRkhWLsqkX5eUbfnlA88gE/p1K BIYtocKyaeWMx29a5sTPB+DSTEKhJbRfLzcvwU5ABy6aqA0PSfOByEup4ThgAHe1zweBftbiL2U O2xPFimlDXyYYbeKtyFVfviA/wLOAM3YVZprDmKqHp1HDVdvoO4xT X-Received: by 2002:a17:903:2409:b0:2a8:ac0f:9ae9 with SMTP id d9443c01a7336-2ad50f95240mr15769645ad.41.1771415003656; Wed, 18 Feb 2026 03:43:23 -0800 (PST) X-Received: by 2002:a17:903:2409:b0:2a8:ac0f:9ae9 with SMTP id d9443c01a7336-2ad50f95240mr15769395ad.41.1771415003303; Wed, 18 Feb 2026 03:43:23 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Richard Henderson , Eduardo Habkost , "Michael S. Tsirkin" , Marcel Apfelbaum Cc: Ani Sinha , kraxel@redhat.com, Bernhard Beschow , qemu-devel@nongnu.org Subject: [PATCH v5 12/34] hw/i386: export a new function x86_bios_rom_reload Date: Wed, 18 Feb 2026 17:12:05 +0530 Message-ID: <20260218114233.266178-13-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415058036154100 Content-Type: text/plain; charset="utf-8" Confidential guest smust reload their bios rom upon reset. This is because bios memory is encrypted and upon reset, the contents of the old bios memory is lost and cannot be re-used. To this end, export a new x86 function x86_bios_rom_reload() to reload the bios again. This function will be used = in the subsequent patches. Reviewed-by: Bernhard Beschow Signed-off-by: Ani Sinha --- hw/i386/x86-common.c | 21 +++++++++++++++++++++ include/hw/i386/x86.h | 1 + 2 files changed, 22 insertions(+) diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index c98abaf368..a420112666 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -1085,6 +1085,27 @@ static void load_bios_from_file(X86MachineState *x86= ms, const char *bios_name, exit(1); } =20 +void x86_bios_rom_reload(X86MachineState *x86ms) +{ + int bios_size; + const char *bios_name; + char *filename; + + if (memory_region_size(&x86ms->bios) =3D=3D 0) { + /* if -bios is not used */ + return; + } + + bios_name =3D MACHINE(x86ms)->firmware ?: "bios.bin"; + filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); + + bios_size =3D get_bios_size(x86ms, bios_name, filename); + + void *ptr =3D memory_region_get_ram_ptr(&x86ms->bios); + load_image_size(filename, ptr, bios_size); + x86_firmware_configure(0x100000000ULL - bios_size, ptr, bios_size); +} + void x86_bios_rom_init(X86MachineState *x86ms, const char *default_firmwar= e, MemoryRegion *rom_memory, bool isapc_ram_fw) { diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h index 23be627437..a85a5600ce 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -125,6 +125,7 @@ void x86_isa_bios_init(MemoryRegion *isa_bios, MemoryRe= gion *isa_memory, MemoryRegion *bios, bool read_only); void x86_bios_rom_init(X86MachineState *x86ms, const char *default_firmwar= e, MemoryRegion *rom_memory, bool isapc_ram_fw); +void x86_bios_rom_reload(X86MachineState *x86ms); =20 void x86_load_linux(X86MachineState *x86ms, FWCfgState *fw_cfg, --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415119; cv=none; d=zohomail.com; s=zohoarc; b=Lv9CmoZHYwcdufc7ITtmm2dBDvNOuNMb+9Estv86wXLyw01emGd37lDce6sO25s6dnl8ZNWmuL/3kzZPTXjAe83Dc+PqV4vgxiX7LvXr/pjo2HACNZomipL94q6GTiFzc9v7RlTlSiMGZ/YDKJX5TougaMi6PQrc1aEDuLRNgSQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415119; h=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=xtPGtZmrmBLpOcF7mZMrBE1yp80mmA78e975dk/A+AM=; b=JSIdSRDtnmsqCYqeiN0sh0OVddFiuFYM8HskCFfLCA9LY6mB5EVqXL3PClQwRAuuZEmE9Nb3gv00w2ETqDYPrEJpd6Ax8Iv2FzInMzoctBvE11IRo6nOUubu/5LdmQIPGP9MJTYI0RoRjosKs3+ff5ZEu6opq0ei5MKv7tABY1w= 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 1771415119017633.7115314984476; Wed, 18 Feb 2026 03:45:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxw-0003KZ-QF; Wed, 18 Feb 2026 06:43:36 -0500 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 1vsfxt-0003Jp-Bw for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:33 -0500 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 1vsfxs-0007sp-18 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:33 -0500 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-561-HQGSV_-HNhK4HuIgdS3leQ-1; Wed, 18 Feb 2026 06:43:27 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2a79164b686so70802165ad.0 for ; Wed, 18 Feb 2026 03:43:27 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xtPGtZmrmBLpOcF7mZMrBE1yp80mmA78e975dk/A+AM=; b=Qk4rOjWgtsq50ohGZmJDu/RUBeGncr3Td1aPWmEZVOBwZ55Pzd+JFJs66lj52JZsgMohb0 lQaKsacQb8ySoN8u58hs0c86l6LpT7i9WXCPQhB5Q0kHXwKsOGqeAZIei2PXbt0bfDAVbD E0p0DmM4hyIZuQG8K7wELSNvgqLZ04Q= X-MC-Unique: HQGSV_-HNhK4HuIgdS3leQ-1 X-Mimecast-MFC-AGG-ID: HQGSV_-HNhK4HuIgdS3leQ_1771415007 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415006; x=1772019806; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xtPGtZmrmBLpOcF7mZMrBE1yp80mmA78e975dk/A+AM=; b=Guntso94D7gwv/RHEP7CpswEtY2kFJrgv8HNeGC7UMesOHwUwNjfS3HJTjLcsx0rQZ xcSNVlE3XnzRajmHGhs9divkrOKYJwBjDPZHJxV011C+CbdoyfcUWMbSbSWzFjZXLTTU cdY68mJUH6ZQLqhIBUWFhmRMgE2YCOfmkxXE0Q3ozodO98jok4UAg2UrtftG6MHa1wq3 HXMo4TpaI89zC6Y615SFgU0WcWLpJKfgcWt+MmeFv4d1NMqbZx0dyj3+xAvlarAip7Ts KX2M6mIkqKa2msoJWgs/iOAW4nrOjK35DFQQA0MdsekgK+vKniNQzG1xdslMLrGGtKSz IgfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415006; x=1772019806; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xtPGtZmrmBLpOcF7mZMrBE1yp80mmA78e975dk/A+AM=; b=RHQ7uP2QLrJ4VW27/4c+TS5UPvWtLtZfpymjMLVT/cj5E+sbYy7EXYFxqz+8Z/Hp6j F2NcbP34waA7jz5VEcPeNyv5dNRyRvwmt9xQxqsMgxHIlf0rYfG8SmA9bvyarh6u/f7H CYIv9cFqx7dgsiXJFSPHl7wyLReyqI3LkRaPwpVl2pR2lxwMqj3OqH4sjjr0URT18o7v XErKLKq5wX010UGjxIXtMHl+fiUWIOaHW0Yqe2r6T/KoH9cJM6W6uXZWyvjEmdTG6p9I f3o/UCKrZoGIBpRNc+wEHW8ZxMbNI/w5pg0CR0l6uYT2qDN0DaH7ufjsrklkfXYmNDCx CFFQ== X-Forwarded-Encrypted: i=1; AJvYcCWNXh22pTnOHcAIzeNyIx7fEfKpsbBKiVY41HSyt8h+FCtegfYJ0RkR4pNUmU5H9ky4E0ZB3h67/2jK@nongnu.org X-Gm-Message-State: AOJu0Yy+sOT7auDsiLMuM5I5G4SxsFBXfiy3wNFHczCquqMxmQi0GKmu kDdPDDVnNOEqUi74HkHQ9oLX8G/vDr6o0lWxlSMAoBTOU/MuNeNS6aI3r14DNI95yHRyeRG75/X sLfnm7y/j+3509UXwgR4afeLonL0fMyit78Y0GNd6b3TGdrZ6G6tE9XWR X-Gm-Gg: AZuq6aLSxlxmLXeGNTAA3RdZYHG1GVFQIcNUeXdc/dRN/0ZQyl+quFz66Z5QFNi4EeR u64FvhQor6lkdLVT5hIbjqyJCNSsHNmOnKTpiLK74UU2jShq7DbJVxf2Gk8DYUDRCdDAQ5GN9x5 Byfo7VIWyytZWfjzsQ6nwLCnSA2zOc7KvDowq39ZfuGtbZU6a19Nb7PPOiTPXVHaZaTJPE8E3pW Y6RBfLNvyz8ymz1cAcyAcufv30i0rKWf1PzRaTTI8wdCEv926vDIiGPvEfHqOvoi9dsM2vps9vf CVUm4WXzUHX/VC5g236AYlkXHkFF/GIX2X7t1u/O4v0WLiQHgMtc3tksSl/csGwfmQT3ySmZ2Ef M6wIelus/oxU1K1dWQ/9E5pHBKiOEB/Hvkn+QYn8QKZk5fZySUPq6 X-Received: by 2002:a17:902:f54e:b0:2aa:f798:8c7f with SMTP id d9443c01a7336-2ad50fe0da1mr15879765ad.54.1771415006571; Wed, 18 Feb 2026 03:43:26 -0800 (PST) X-Received: by 2002:a17:902:f54e:b0:2aa:f798:8c7f with SMTP id d9443c01a7336-2ad50fe0da1mr15879615ad.54.1771415006204; Wed, 18 Feb 2026 03:43:26 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 13/34] kvm/i386: reload firmware for confidential guest reset Date: Wed, 18 Feb 2026 17:12:06 +0530 Message-ID: <20260218114233.266178-14-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415120273158500 Content-Type: text/plain; charset="utf-8" When IGVM is not being used by the confidential guest, the guest firmware h= as to be reloaded explicitly again into memory. This is because, the memory in= to which the firmware was loaded before reset was encrypted and is thus lost upon reset. When IGVM is used, it is expected that the IGVM will contain the guest firmware and the execution of the IGVM directives will set up the gue= st firmware memory. Signed-off-by: Ani Sinha --- target/i386/kvm/kvm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index feb3f3cf3c..5c8ec77212 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3416,7 +3416,14 @@ int kvm_arch_on_vmfd_change(MachineState *ms, KVMSta= te *s) =20 if (object_dynamic_cast(OBJECT(ms), TYPE_X86_MACHINE)) { X86MachineState *x86ms =3D X86_MACHINE(ms); - + /* + * For confidential guests, reload bios ROM if IGVM is not specifi= ed. + * If an IGVM file is specified then the firmware must be provided + * in the IGVM file. + */ + if (ms->cgs && !x86ms->igvm) { + x86_bios_rom_reload(x86ms); + } if (x86_machine_is_smm_enabled(x86ms)) { memory_listener_register(&smram_listener.listener, &smram_address_space); --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415104; cv=none; d=zohomail.com; s=zohoarc; b=QeusjZsev5zGCQE0QeMYPazmt/yx2YesaEbn6CYzK4TCrabMl1a33Zh55mqFWXgXzyujoBlwBkShoDU+D51xpfrYJ+t2d0aU32Zgni7KWnQsFg5DOnK/HFdKdCNsauWhV+pRLDCF+vO2MNO9aqR6MfqHuGxFhilz6nOr6PmtpG8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415104; h=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=2XVbEovrezKjrEojVg5R7mES5JyammScR5/FG80a+a8=; b=nXE4LQCZ247ckmB9RpzQMKrA3Lv70zu2wGcGV4BHhlsomyiNX/L4Q1FiGC9Zi+s0VWH1QoZBRAfOJp3j2lmiopxS/7B5cysZusmx1gmUBlz4OTtyfmVDax/lmymIiRmD7BJcpK/DxyFnCYT4ohRF1fXlBRuKq+4jrxa+iVvcep4= 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 1771415104269227.32708541463296; Wed, 18 Feb 2026 03:45:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfxz-0003LX-2X; Wed, 18 Feb 2026 06:43:39 -0500 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 1vsfxv-0003KJ-F7 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:35 -0500 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 1vsfxt-0007st-5L for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:34 -0500 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-623-kh7nKkT3PdC5EwyWQ_YQaw-1; Wed, 18 Feb 2026 06:43:31 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2aaf2f3bef6so64011495ad.0 for ; Wed, 18 Feb 2026 03:43:30 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415012; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2XVbEovrezKjrEojVg5R7mES5JyammScR5/FG80a+a8=; b=HyrQ7uKlnonMW2ogOjUxSWVld7Lv00ChtEEjAcBP0F9fp0l8xIn/uoNHwEAk3AVr2yi7vW U+X6IDYrRRI7JDPbvM5iAH3Juzj20YQJVFy7hylATmeB1nTzTTFDCrrf6YjhZ/mjoAFyGC qT3zHzB3SX1/nqqju9P1bt7BG2m1lI8= X-MC-Unique: kh7nKkT3PdC5EwyWQ_YQaw-1 X-Mimecast-MFC-AGG-ID: kh7nKkT3PdC5EwyWQ_YQaw_1771415009 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415009; x=1772019809; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2XVbEovrezKjrEojVg5R7mES5JyammScR5/FG80a+a8=; b=sk/3JawQbAzRU3ft4NZ2fr0wsEcDu9DE314EvjYWcfsT1/sZd6+Z64V+grPrw7UQAJ GfFJYe9eRX2QUY1jvA1UvmrmIdGIxidvfr9ebrgKe0spaWJxEPNvQeiAiVwjBIOnnqeh op/vlOvXMYhECmp6o4kgfGB0LJZt1OMzHac5uX3QcyNekUoCn1pJwE1wrylUKr6sQEnU GUjVH8N4qDmBCKz7fiU5OkJfBv/2yxxbQ3D0CsLPGo+EA7t6/aq89Oc0hisNPqTalfjg 1QzGpZdUHrNen8RoeWON40HrOwKO/JCx6XYsKN9eZyNFLlN89u8OFJg/amh71iJ2gz00 r6Lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415009; x=1772019809; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=2XVbEovrezKjrEojVg5R7mES5JyammScR5/FG80a+a8=; b=iRdH6dnK3rJ+X479sVbFtDMek0sMDMm/pjPQDplUdrmrnvWW7pgP3FsBJf6bifoU/r WDDNf/gP9dsfUvKpY+6OUbiFvjgAr6TlFJQtVSfxwuL8bkJLUQiJ5npxAyn+L09LzvrE PjF+4Ho9c6WkEjiN+2ZQGPgJzFayngkubILhf1y1HiynCMowjGPv9vlwO2wjRlQOlidL C+VjCw0e5MKdY/vrOGaYuZABO8h0TgEHfaU7RDHLWaVgXDAlVV1TSkaYfx2lldUc41e5 LA1Qc5I5/6uHLZguH53wSigahBInqAtG2zqExVZsWYzHi8br+mL0QddUy2wy6GVq1Hw/ TNnA== X-Forwarded-Encrypted: i=1; AJvYcCUO98MNXsFXNZAo0ndef9LdD3KNTpFtXOKbfz2NnrBiGeXQrS8ool+BXCoBIK1f/W5Vqg+0tKNNOPNT@nongnu.org X-Gm-Message-State: AOJu0YxR5SzNiAdzzc2ttW4F8fFZzqRCkfKFKtIZTbzBu75EwvrA9wxF 4mjXguZplV/joKe2wsSKr6JX77UhxpJM//qNqkuSvmH3HvHp0x+gdnjVPTpb2wNHeDdp63qokh3 ZCYnNjQQlCMJRQPMY8iVw17B7xJ/taxbRS8h/8Ius2MGeZdoOSnDwrFYx X-Gm-Gg: AZuq6aLk9uWxV3fl3dCeDs1g2jr7C3ocSQICB7LaX96G528z2JIRFtLyQ88fiS8P+Fb 0dfNkA80GuM9jKZ2HOvj1YT7KDA97jhR1mLqpvhg44VV0msq8Tjd43fVorObOLDfKyQkCSjEWSW MqS3hmL0OIkBmnnNytUDMlpwffEsM/5uWkeaoUEXN9risOAZAvCYChOwusldNDRA6RIduPnUB1u S5CrW731tSAYTn/HoJ9yACK+2bDdSYzgZNyIMFug5XV4ZY1hxQKZoDDpmb0UP5rWvej0yjqt+oZ jwg+mp+PiICQp0v2D4zlYL1E76ekaOe0ZueT0m83TvpdbICrsLp6S6yBx7rc7i2U/tKjsuhRR8j cCBL12m0+HNtlZ+9gq4jiz1tftgbZMEQFEa1r4rLME7U5bN8Ze9GH X-Received: by 2002:a17:903:f90:b0:2aa:e3c7:6048 with SMTP id d9443c01a7336-2ad1746c179mr142629065ad.23.1771415009305; Wed, 18 Feb 2026 03:43:29 -0800 (PST) X-Received: by 2002:a17:903:f90:b0:2aa:e3c7:6048 with SMTP id d9443c01a7336-2ad1746c179mr142628965ad.23.1771415008927; Wed, 18 Feb 2026 03:43:28 -0800 (PST) From: Ani Sinha To: Paolo Bonzini Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 14/34] accel/kvm: rebind current VCPUs to the new KVM VM file descriptor upon reset Date: Wed, 18 Feb 2026 17:12:07 +0530 Message-ID: <20260218114233.266178-15-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415106291158500 Content-Type: text/plain; charset="utf-8" Confidential guests needs to generate a new KVM file descriptor upon virtual machine reset. Existing VCPUs needs to be reattached to this new KVM VM file descriptor. As a part of this, new VCPU file descriptors against this new KVM VM file descriptor needs to be created and re-initialized. Resources allocated against the old VCPU fds needs to be released. This cha= nge makes this happen. Signed-off-by: Ani Sinha --- accel/kvm/kvm-all.c | 215 +++++++++++++++++++++++++++++++++-------- accel/kvm/trace-events | 1 + 2 files changed, 174 insertions(+), 42 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 47589f92e2..7be39111bb 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -127,6 +127,10 @@ static NotifierList kvm_irqchip_change_notifiers =3D static NotifierWithReturnList register_vmfd_changed_notifiers =3D NOTIFIER_WITH_RETURN_LIST_INITIALIZER(register_vmfd_changed_notifiers); =20 +static int map_kvm_run(KVMState *s, CPUState *cpu, Error **errp); +static int map_kvm_dirty_gfns(KVMState *s, CPUState *cpu, Error **errp); +static int vcpu_unmap_regions(KVMState *s, CPUState *cpu); + struct KVMResampleFd { int gsi; EventNotifier *resample_event; @@ -420,6 +424,90 @@ err: return ret; } =20 +static void kvm_create_vcpu_internal(CPUState *cpu, KVMState *s, int kvm_f= d) +{ + cpu->kvm_fd =3D kvm_fd; + cpu->kvm_state =3D s; + if (!s->guest_state_protected) { + cpu->vcpu_dirty =3D true; + } + cpu->dirty_pages =3D 0; + cpu->throttle_us_per_full =3D 0; + + return; +} + +static int kvm_rebind_vcpus(Error **errp) +{ + CPUState *cpu; + unsigned long vcpu_id; + KVMState *s =3D kvm_state; + int kvm_fd, ret =3D 0; + + CPU_FOREACH(cpu) { + vcpu_id =3D kvm_arch_vcpu_id(cpu); + + if (cpu->kvm_fd) { + close(cpu->kvm_fd); + } + + ret =3D kvm_arch_destroy_vcpu(cpu); + if (ret < 0) { + goto err; + } + + if (s->coalesced_mmio_ring =3D=3D (void *)cpu->kvm_run + PAGE_SIZE= ) { + s->coalesced_mmio_ring =3D NULL; + } + + ret =3D vcpu_unmap_regions(s, cpu); + if (ret < 0) { + goto err; + } + + ret =3D kvm_arch_pre_create_vcpu(cpu, errp); + if (ret < 0) { + goto err; + } + + kvm_fd =3D kvm_vm_ioctl(s, KVM_CREATE_VCPU, vcpu_id); + if (kvm_fd < 0) { + error_report("KVM_CREATE_VCPU IOCTL failed for vCPU %lu (%s)", + vcpu_id, strerror(kvm_fd)); + return kvm_fd; + } + + kvm_create_vcpu_internal(cpu, s, kvm_fd); + + ret =3D map_kvm_run(s, cpu, errp); + if (ret < 0) { + goto err; + } + + if (s->kvm_dirty_ring_size) { + ret =3D map_kvm_dirty_gfns(s, cpu, errp); + if (ret < 0) { + goto err; + } + } + + ret =3D kvm_arch_init_vcpu(cpu); + if (ret < 0) { + error_setg_errno(errp, -ret, + "kvm_init_vcpu: kvm_arch_init_vcpu failed (%l= u)", + vcpu_id); + } + + close(cpu->kvm_vcpu_stats_fd); + cpu->kvm_vcpu_stats_fd =3D kvm_vcpu_ioctl(cpu, KVM_GET_STATS_FD, N= ULL); + kvm_init_cpu_signals(cpu); + } + trace_kvm_rebind_vcpus(); + + err: + return ret; +} + static void kvm_park_vcpu(CPUState *cpu) { struct KVMParkedVcpu *vcpu; @@ -483,13 +571,7 @@ static int kvm_create_vcpu(CPUState *cpu) } } =20 - cpu->kvm_fd =3D kvm_fd; - cpu->kvm_state =3D s; - if (!s->guest_state_protected) { - cpu->vcpu_dirty =3D true; - } - cpu->dirty_pages =3D 0; - cpu->throttle_us_per_full =3D 0; + kvm_create_vcpu_internal(cpu, s, kvm_fd); =20 trace_kvm_create_vcpu(cpu->cpu_index, vcpu_id, kvm_fd); =20 @@ -508,19 +590,11 @@ int kvm_create_and_park_vcpu(CPUState *cpu) return ret; } =20 -static int do_kvm_destroy_vcpu(CPUState *cpu) +static int vcpu_unmap_regions(KVMState *s, CPUState *cpu) { - KVMState *s =3D kvm_state; int mmap_size; int ret =3D 0; =20 - trace_kvm_destroy_vcpu(cpu->cpu_index, kvm_arch_vcpu_id(cpu)); - - ret =3D kvm_arch_destroy_vcpu(cpu); - if (ret < 0) { - goto err; - } - mmap_size =3D kvm_ioctl(s, KVM_GET_VCPU_MMAP_SIZE, 0); if (mmap_size < 0) { ret =3D mmap_size; @@ -548,39 +622,47 @@ static int do_kvm_destroy_vcpu(CPUState *cpu) cpu->kvm_dirty_gfns =3D NULL; } =20 - kvm_park_vcpu(cpu); -err: + err: return ret; } =20 -void kvm_destroy_vcpu(CPUState *cpu) -{ - if (do_kvm_destroy_vcpu(cpu) < 0) { - error_report("kvm_destroy_vcpu failed"); - exit(EXIT_FAILURE); - } -} - -int kvm_init_vcpu(CPUState *cpu, Error **errp) +static int do_kvm_destroy_vcpu(CPUState *cpu) { KVMState *s =3D kvm_state; - int mmap_size; - int ret; + int ret =3D 0; =20 - trace_kvm_init_vcpu(cpu->cpu_index, kvm_arch_vcpu_id(cpu)); + trace_kvm_destroy_vcpu(cpu->cpu_index, kvm_arch_vcpu_id(cpu)); =20 - ret =3D kvm_arch_pre_create_vcpu(cpu, errp); + ret =3D kvm_arch_destroy_vcpu(cpu); if (ret < 0) { goto err; } =20 - ret =3D kvm_create_vcpu(cpu); + /* If I am the CPU that created coalesced_mmio_ring, then discard it */ + if (s->coalesced_mmio_ring =3D=3D (void *)cpu->kvm_run + PAGE_SIZE) { + s->coalesced_mmio_ring =3D NULL; + } + + ret =3D vcpu_unmap_regions(s, cpu); if (ret < 0) { - error_setg_errno(errp, -ret, - "kvm_init_vcpu: kvm_create_vcpu failed (%lu)", - kvm_arch_vcpu_id(cpu)); goto err; } + kvm_park_vcpu(cpu); +err: + return ret; +} + +void kvm_destroy_vcpu(CPUState *cpu) +{ + if (do_kvm_destroy_vcpu(cpu) < 0) { + error_report("kvm_destroy_vcpu failed"); + exit(EXIT_FAILURE); + } +} + +static int map_kvm_run(KVMState *s, CPUState *cpu, Error **errp) +{ + int mmap_size, ret =3D 0; =20 mmap_size =3D kvm_ioctl(s, KVM_GET_VCPU_MMAP_SIZE, 0); if (mmap_size < 0) { @@ -605,14 +687,53 @@ int kvm_init_vcpu(CPUState *cpu, Error **errp) (void *)cpu->kvm_run + s->coalesced_mmio * PAGE_SIZE; } =20 + err: + return ret; +} + +static int map_kvm_dirty_gfns(KVMState *s, CPUState *cpu, Error **errp) +{ + int ret =3D 0; + /* Use MAP_SHARED to share pages with the kernel */ + cpu->kvm_dirty_gfns =3D mmap(NULL, s->kvm_dirty_ring_bytes, + PROT_READ | PROT_WRITE, MAP_SHARED, + cpu->kvm_fd, + PAGE_SIZE * KVM_DIRTY_LOG_PAGE_OFFSET); + if (cpu->kvm_dirty_gfns =3D=3D MAP_FAILED) { + ret =3D -errno; + } + + return ret; +} + +int kvm_init_vcpu(CPUState *cpu, Error **errp) +{ + KVMState *s =3D kvm_state; + int ret; + + trace_kvm_init_vcpu(cpu->cpu_index, kvm_arch_vcpu_id(cpu)); + + ret =3D kvm_arch_pre_create_vcpu(cpu, errp); + if (ret < 0) { + goto err; + } + + ret =3D kvm_create_vcpu(cpu); + if (ret < 0) { + error_setg_errno(errp, -ret, + "kvm_init_vcpu: kvm_create_vcpu failed (%lu)", + kvm_arch_vcpu_id(cpu)); + goto err; + } + + ret =3D map_kvm_run(s, cpu, errp); + if (ret < 0) { + goto err; + } + if (s->kvm_dirty_ring_size) { - /* Use MAP_SHARED to share pages with the kernel */ - cpu->kvm_dirty_gfns =3D mmap(NULL, s->kvm_dirty_ring_bytes, - PROT_READ | PROT_WRITE, MAP_SHARED, - cpu->kvm_fd, - PAGE_SIZE * KVM_DIRTY_LOG_PAGE_OFFSET); - if (cpu->kvm_dirty_gfns =3D=3D MAP_FAILED) { - ret =3D -errno; + ret =3D map_kvm_dirty_gfns(s, cpu, errp); + if (ret < 0) { goto err; } } @@ -2707,6 +2828,16 @@ static int kvm_reset_vmfd(MachineState *ms) } assert(!err); =20 + /* + * rebind new vcpu fds with the new kvm fds + * These can only be called after kvm_arch_on_vmfd_change() + */ + ret =3D kvm_rebind_vcpus(&err); + if (ret < 0) { + return ret; + } + assert(!err); + /* these can be only called after ram_block_rebind() */ memory_listener_register(&kml->listener, &address_space_memory); memory_listener_register(&kvm_io_listener, &address_space_io); diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events index e4beda0148..4a8921c632 100644 --- a/accel/kvm/trace-events +++ b/accel/kvm/trace-events @@ -15,6 +15,7 @@ kvm_park_vcpu(int cpu_index, unsigned long arch_cpu_id) "= index: %d id: %lu" kvm_unpark_vcpu(unsigned long arch_cpu_id, const char *msg) "id: %lu %s" kvm_irqchip_commit_routes(void) "" kvm_reset_vmfd(void) "" +kvm_rebind_vcpus(void) "" kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector= %d virq %d" kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=3D%d" kvm_irqchip_release_virq(int virq) "virq %d" --=20 2.42.0 From nobody Sun Apr 12 04:27:05 2026 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=1771415090; cv=none; d=zohomail.com; s=zohoarc; b=kyTuR9PzRTOD0YJdxHPyiv1bPf0KRsA6SrrtbM+TeZk730JDpC09HOlWy1TIxvIOAX74a9NvSORveI5QoK/NzCe4OcGjbj+ICa/fOKpypwxKFPL3Se5wFfDgdmN+SF1lY29+leEc5sVlWj5IxyMENbBIRp30TaJRpJmgjHVxAaQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415090; h=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=r0oM0RRyjLelkT0G5RoaNy8SGcq/Mnkz7KKwnwr3WCA=; b=mj6iGH2S1Uz8zcAbBKX6IM9jpXtpsD/pX2l3RmAKihm+oRvU9yTZvtDvl6aHdjcxJXpYb4xQ7R99v+lfs0bpmsBqsbU47s4HycuHqH8w0+0BYQjlpk4QFkzUN3Dj2hFsLtGmQ31H1MJQMR0zU1we4s+vbRCnqjmgtLtXHUM/dzg= 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 1771415089999759.8990276643945; Wed, 18 Feb 2026 03:44:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfy5-0003R2-3q; Wed, 18 Feb 2026 06:43:45 -0500 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 1vsfxy-0003LI-Gj for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:38 -0500 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 1vsfxw-0007t6-19 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:37 -0500 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-695-gFap8oolNgqNKVoPtH-IeQ-1; Wed, 18 Feb 2026 06:43:33 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2aad3380076so4967325ad.1 for ; Wed, 18 Feb 2026 03:43:33 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415014; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=r0oM0RRyjLelkT0G5RoaNy8SGcq/Mnkz7KKwnwr3WCA=; b=jBqEkMFfW1KkuypqYwZfruMXljPAcnfx/s8zaG2We72ZnpYBxYyPimOlBL6Kw5zvY4lXIU RrTRXX7cSb9CfHQ++nmbyImmTDiLIcqBdpMSprjNp4OqCO/kFoHVImBSlM9b2qTbUhk7is FSBQCLAFy639Sd5p0osWTN9GEUVEVXY= X-MC-Unique: gFap8oolNgqNKVoPtH-IeQ-1 X-Mimecast-MFC-AGG-ID: gFap8oolNgqNKVoPtH-IeQ_1771415012 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415012; x=1772019812; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=r0oM0RRyjLelkT0G5RoaNy8SGcq/Mnkz7KKwnwr3WCA=; b=rDKSbxf4C5BJZwwp/nljkU0qQ6Df414Z7MFHRQG1ly8bAJMbUN/iyqDxQlVUarDF70 AT2Wk4lCyRIYJMlPohlqXYP1uIXZKxSHrSX9eeUp1VV1Jl/tX3GlJ4TLZ+1QCdAFxy9y Mb4Pg5xocNT3Ii4UAIMkqUr8NxATkwIl8lhX9OdsAXECGl7NSschG7J0rMi+7zoxZbVX +29Eoue+24f/Vl13r9TbWRKznM9cqO3nJu1Bw66CJUCutxVZ5tncCZbdknCeqVkc92uW rokPMmsyrsxCJKyqG5NqboYwh81eUGMlv1wnKj+S/ikRshz7iDpFLyL0iX2sL1fhiToT VPrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415012; x=1772019812; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=r0oM0RRyjLelkT0G5RoaNy8SGcq/Mnkz7KKwnwr3WCA=; b=MWxP4BECco4ja+Hcr+alXppmPFFsjza9puPMatWKTbkwPHzCuyrFg9fh/qK6k2lCb5 gUYpKxG/XkBL+zUfaX4esl5FBcgf2UNfESCEs2BeiOf2eiEx0rZ15J3Bn59qyJN5nGsz QK8y+XbmFIBTGgv2voE0AvVJYdzrJevYJQpBH/sGcTzZn1B1MeV2z8MbEZgOhy+dDawU E7KvTGcrUeuAPQsv/1ilpxNYl7qBc9WQmsmAyLDTyHFDhutLqY7bCExB7+/JJAZ2z5fa Lw1RwTlcf9Ekk1W5AZJoiQm56HJn2W1bPyXkgLzasU9LCqhPxWdtptAgQJUC6eywjUPg s7Mw== X-Forwarded-Encrypted: i=1; AJvYcCWmfzti2P1uLLnxjkVjiEjZvV9LWSnf9Rgv0DsRwLGuW9BMoKzeaR64Z9ruP5TpgDg6FgsZgl1LxQPl@nongnu.org X-Gm-Message-State: AOJu0YyLB6CKrc8Zuh6stdoFlD194o0I/Bvmcig2ZdHhxJLi26WWfYkL expxKxIgt2LUfysjsnSF9P20w/6cezlBKJ1dwk4UuowZ/nT9jvJCFSRxIWUJCz1MicYcL3g2K1p L059idAC2H9uk7BCSuEvFd58ZgxD0mFZ54zYRdeBNVlJMY7I/APtaBzunAjKl2W95 X-Gm-Gg: AZuq6aLTBWvdzOccV70wwpU6fyFwCQPXtk2rHgCB8HOxoXoR3No04TKQ2aIQQ7dHaYs j4hWsXhXgBz7jpZVMEYDPtWTNNhgOt42+3zTRinKhs7rp6oVzRqB5Q3UW6aStGqlJQJtLonWjgw gGGvllzyBQjLX+uKFjNC2876ExHyWKx/1gJ5o+U/3T/dF+yFsZWd+XveeUoMdxZWz8/MHRpgiZa n96YE5dFOdldpAxtm9Rp5E2f7AIOugFUGPV7J0D+xiuaLpm4Myo3ytGAeUY0t9Y/R2gTFqRbYPw xeVYsAlQTOhUgiZFo/zxOTcCdhp/6npwQcg21yuKn6rLjdBJnOHhjcUzVz/3temmkP3etdOxjlA AJ0QBjUwUBYsOZyyYWFKd8CCHiMQrtU08d7DQ8bM3bUAXjagsznFp X-Received: by 2002:a17:903:3ba5:b0:2a7:aac1:7201 with SMTP id d9443c01a7336-2ad50b5a062mr13233305ad.3.1771415012231; Wed, 18 Feb 2026 03:43:32 -0800 (PST) X-Received: by 2002:a17:903:3ba5:b0:2a7:aac1:7201 with SMTP id d9443c01a7336-2ad50b5a062mr13233165ad.3.1771415011824; Wed, 18 Feb 2026 03:43:31 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 15/34] i386/tdx: refactor TDX firmware memory initialization code into a new function Date: Wed, 18 Feb 2026 17:12:08 +0530 Message-ID: <20260218114233.266178-16-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415094195158500 Content-Type: text/plain; charset="utf-8" A new helper function is introduced that refactors all firmware memory initialization code into a separate function. No functional change. Signed-off-by: Ani Sinha --- target/i386/kvm/tdx.c | 73 ++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index a3e81e1c0c..fd8e3de969 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -295,14 +295,51 @@ static void tdx_post_init_vcpus(void) } } =20 -static void tdx_finalize_vm(Notifier *notifier, void *unused) +static void tdx_init_fw_mem_region(void) { TdxFirmware *tdvf =3D &tdx_guest->tdvf; TdxFirmwareEntry *entry; - RAMBlock *ram_block; Error *local_err =3D NULL; int r; =20 + for_each_tdx_fw_entry(tdvf, entry) { + struct kvm_tdx_init_mem_region region; + uint32_t flags; + + region =3D (struct kvm_tdx_init_mem_region) { + .source_addr =3D (uintptr_t)entry->mem_ptr, + .gpa =3D entry->address, + .nr_pages =3D entry->size >> 12, + }; + + flags =3D entry->attributes & TDVF_SECTION_ATTRIBUTES_MR_EXTEND ? + KVM_TDX_MEASURE_MEMORY_REGION : 0; + + do { + error_free(local_err); + local_err =3D NULL; + r =3D tdx_vcpu_ioctl(first_cpu, KVM_TDX_INIT_MEM_REGION, flags, + ®ion, &local_err); + } while (r =3D=3D -EAGAIN || r =3D=3D -EINTR); + if (r < 0) { + error_report_err(local_err); + exit(1); + } + + if (entry->type =3D=3D TDVF_SECTION_TYPE_TD_HOB || + entry->type =3D=3D TDVF_SECTION_TYPE_TEMP_MEM) { + qemu_ram_munmap(-1, entry->mem_ptr, entry->size); + entry->mem_ptr =3D NULL; + } + } +} + +static void tdx_finalize_vm(Notifier *notifier, void *unused) +{ + TdxFirmware *tdvf =3D &tdx_guest->tdvf; + TdxFirmwareEntry *entry; + RAMBlock *ram_block; + tdx_init_ram_entries(); =20 for_each_tdx_fw_entry(tdvf, entry) { @@ -339,37 +376,7 @@ static void tdx_finalize_vm(Notifier *notifier, void *= unused) tdvf_hob_create(tdx_guest, tdx_get_hob_entry(tdx_guest)); =20 tdx_post_init_vcpus(); - - for_each_tdx_fw_entry(tdvf, entry) { - struct kvm_tdx_init_mem_region region; - uint32_t flags; - - region =3D (struct kvm_tdx_init_mem_region) { - .source_addr =3D (uintptr_t)entry->mem_ptr, - .gpa =3D entry->address, - .nr_pages =3D entry->size >> 12, - }; - - flags =3D entry->attributes & TDVF_SECTION_ATTRIBUTES_MR_EXTEND ? - KVM_TDX_MEASURE_MEMORY_REGION : 0; - - do { - error_free(local_err); - local_err =3D NULL; - r =3D tdx_vcpu_ioctl(first_cpu, KVM_TDX_INIT_MEM_REGION, flags, - ®ion, &local_err); - } while (r =3D=3D -EAGAIN || r =3D=3D -EINTR); - if (r < 0) { - error_report_err(local_err); - exit(1); - } - - if (entry->type =3D=3D TDVF_SECTION_TYPE_TD_HOB || - entry->type =3D=3D TDVF_SECTION_TYPE_TEMP_MEM) { - qemu_ram_munmap(-1, entry->mem_ptr, entry->size); - entry->mem_ptr =3D NULL; - } - } + tdx_init_fw_mem_region(); =20 /* * TDVF image has been copied into private region above via --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415058; cv=none; d=zohomail.com; s=zohoarc; b=ZI2aCzexMkC7DdFlkEzHlkkcruEcg5mEGA/2RirrQeI4gep+Q4qD/eToeFSlod9ujHihM2889wG79ce1VykVD6K4TSytIKuGx1Lt4sXQkWj7PQBsRxuOMUamQwdk8HBCDbY9RMNakSYvSjAa5uv7vSYHRBV6nE8aMdiu2mSazT4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415058; h=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=kdx//uhe0dGZAW7ELRMRtjQOSKo80AjzaA5Q7pgL+h8=; b=WR26zzwjB4recpOVPDMcRRqNX/MJCrJk/8uS1ZsAIlOXUrcTHR+v+aowcNBoeVN8Eh7olrv7+dPghtsCZKnBwhK7rE+hbZfyHmoONqWjlZZVdiY/0zH2i0ZsEpv5Mg+DZS5bfEyJtFSqDiarzYabDv2lVfXFQgmKhTlp1Mx8lcQ= 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 17714150587788.766515292144163; Wed, 18 Feb 2026 03:44:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfyD-0003VZ-Ay; Wed, 18 Feb 2026 06:43:55 -0500 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 1vsfy0-0003M8-Eb for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:40 -0500 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 1vsfxy-0007tj-RD for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:40 -0500 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-161-0Z29S5MgNumk-8LdIZ53Uw-1; Wed, 18 Feb 2026 06:43:36 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2aaf2ce5d81so62267745ad.1 for ; Wed, 18 Feb 2026 03:43:36 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415017; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kdx//uhe0dGZAW7ELRMRtjQOSKo80AjzaA5Q7pgL+h8=; b=fq/GYgortbxGSeyquXaV7/wQ+81UXESRs+J2LhCcTjMy7xNMEQWcT7u9x2iyAm/hHg2+0e Gl3UHo+ydRDWteeZxXCChMKA2Syr2fbUwCe1WAEpp5ouOe8nSaCq9z15tKGZNMUmhzirJa n9ROktK4wVCsWwZLlpH5o6TX+CLhjOs= X-MC-Unique: 0Z29S5MgNumk-8LdIZ53Uw-1 X-Mimecast-MFC-AGG-ID: 0Z29S5MgNumk-8LdIZ53Uw_1771415015 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415015; x=1772019815; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kdx//uhe0dGZAW7ELRMRtjQOSKo80AjzaA5Q7pgL+h8=; b=oPR/OZFjnstXS3nqEnggTLM0YOUOiGvzChUG/MUgQu+FZQBdXdpUcCm8gLpiw50+7q wWzX7hZ7RNx55drKrmXmNgz/dp7TZmWVnDAZHScVgRirho8PMOMQVe3TfJx868FqONWY 5SW9PumJbB6pLLhi2QYwEdGn4EW7oOr8iDdYxEg3cRxI9YEyBguRUSwAjuC3frpe41U7 YZt+ZbXaSUqEdMEo/fBVkntZHWJeGA2zueeOWoLV6f/dYL3XIsPxi11qBH3s8eawKUp4 /YH5qHtgNkEQWyunxLqqypJnMYetWpvy+DTQPJeMXd5OaDkLTPFJ7aO9TFsDA0g1PNkD fhDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415015; x=1772019815; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=kdx//uhe0dGZAW7ELRMRtjQOSKo80AjzaA5Q7pgL+h8=; b=Aeac+Q6dxO/GkPamFuCNglZOQfk92Y8pSAJttS9764HNXMtodB6mPAlglonzR2sTHB utALFtUjgBXi5o61zHp+CVjl/t/bpIv9H0X8ghrSuJfbeMsVoX9Z5FMX5AB1lr8HkkB7 Cy/BwmQb+qjGwf9cL23sHMt5P7A6Rvn/yQm7NZos2Mle9Q8UKfHG/wl37s07iO7dSyD3 dpl7GCH8s5ClMGMQ7VkxzeyRx9c+67M3BaR7jR3Yp7NlnMdHrEBh2z19Ivk3G25IOgBJ aCpvClNmMmR/rsfEQ3Z1718G3YHE2woclEsxkcZjDU02mn5CdYHzlQwBfzvOASriB9Lb PWUA== X-Forwarded-Encrypted: i=1; AJvYcCUZWRPmlxt88D8eJ/JM872iBj6F5TJcmfRfVv6FywYYXwQtNdn4qv/s9CYvTwDQWs4BRemvwKvLNQ0m@nongnu.org X-Gm-Message-State: AOJu0YzP1TMv1WOWsn6PpOK/1zhMUz9FJltj390QVnJBYddID0RvPqqf Rk7GZ1mvhGiRNDdE2ARpXOtM99HeNk+cwYN1h0T2SvvsYpCsvHj6lwzvUdtehAU30nizbkMhZe1 4hqpFqB4s4/k2tOG5k9fm8iz1L/4y0ZUO3Vr2opUkfOG2KeBfjLYbj9A+ X-Gm-Gg: AZuq6aIR1Yqbq+CvciCBYBZwvpWGHWC2hWdMXH0UqA+G28YI4Sutbkb7pO6QgDrlGv3 BbK/227tW9BUg4kT7noVxrLTeMaU3kLsmW9sc3GQaCOIfK07BIz5V6U15x1ZEiRtPDsscS9bugB 5Ds2APAAbg220pEMAXH5dmzoHbUu6Xm1gEeg70Ps2Cu8rJ3XyzYDkeyZFyI3M81X0MGkUZj/zz6 sr19IOTmGhqlvePykG7TZfwOajzsgj7BM7ax4opyTPJnEqsmATDEbppty9AktCz9sJyy9gM6FZE hEzbr0zKNC4le5CBSaixtsQ/ZT5+ShDk4xyJN6CrrGalBcIg67iM9ZGJuM9vHIAPk/0I+mAfibl 1M7pU8iipzm871eIZEzFF49ZOPMSLRU1fkW7UusUezQRkTgWtLNPS X-Received: by 2002:a17:902:e5c8:b0:2aa:d647:c312 with SMTP id d9443c01a7336-2ad175c5952mr155523725ad.61.1771415015238; Wed, 18 Feb 2026 03:43:35 -0800 (PST) X-Received: by 2002:a17:902:e5c8:b0:2aa:d647:c312 with SMTP id d9443c01a7336-2ad175c5952mr155523515ad.61.1771415014774; Wed, 18 Feb 2026 03:43:34 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 16/34] i386/tdx: finalize TDX guest state upon reset Date: Wed, 18 Feb 2026 17:12:09 +0530 Message-ID: <20260218114233.266178-17-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415060135158500 Content-Type: text/plain; charset="utf-8" When the confidential virtual machine KVM file descriptor changes due to the guest reset, some TDX specific setup steps needs to be done again. This includes finalizing the initial guest launch state again. This change re-executes some parts of the TDX setup during the device reset phaze using= a resettable interface. This finalizes the guest launch state again and locks it in. Machine done notifier which was previously used is no longer needed = as the same code is now executed as a part of VM reset. Signed-off-by: Ani Sinha --- target/i386/kvm/tdx.c | 38 +++++++++++++++++++++++++++++++----- target/i386/kvm/tdx.h | 1 + target/i386/kvm/trace-events | 3 +++ 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index fd8e3de969..37e91d95e1 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -19,6 +19,7 @@ #include "crypto/hash.h" #include "system/kvm_int.h" #include "system/runstate.h" +#include "system/reset.h" #include "system/system.h" #include "system/ramblock.h" #include "system/address-spaces.h" @@ -38,6 +39,7 @@ #include "kvm_i386.h" #include "tdx.h" #include "tdx-quote-generator.h" +#include "trace.h" =20 #include "standard-headers/asm-x86/kvm_para.h" =20 @@ -389,9 +391,19 @@ static void tdx_finalize_vm(Notifier *notifier, void *= unused) CONFIDENTIAL_GUEST_SUPPORT(tdx_guest)->ready =3D true; } =20 -static Notifier tdx_machine_done_notify =3D { - .notify =3D tdx_finalize_vm, -}; +static void tdx_handle_reset(Object *obj, ResetType type) +{ + if (!runstate_is_running() && !phase_check(PHASE_MACHINE_READY)) { + return; + } + + if (!kvm_enable_hypercall(BIT_ULL(KVM_HC_MAP_GPA_RANGE))) { + error_setg(&error_fatal, "KVM_HC_MAP_GPA_RANGE not enabled for gue= st"); + } + + tdx_finalize_vm(NULL, NULL); + trace_tdx_handle_reset(); +} =20 /* * Some CPUID bits change from fixed1 to configurable bits when TDX module @@ -738,8 +750,6 @@ static int tdx_kvm_init(ConfidentialGuestSupport *cgs, = Error **errp) */ kvm_readonly_mem_allowed =3D false; =20 - qemu_add_machine_init_done_notifier(&tdx_machine_done_notify); - tdx_guest =3D tdx; return 0; } @@ -1505,6 +1515,7 @@ OBJECT_DEFINE_TYPE_WITH_INTERFACES(TdxGuest, TDX_GUEST, X86_CONFIDENTIAL_GUEST, { TYPE_USER_CREATABLE }, + { TYPE_RESETTABLE_INTERFACE }, { NULL }) =20 static void tdx_guest_init(Object *obj) @@ -1538,16 +1549,24 @@ static void tdx_guest_init(Object *obj) =20 tdx->event_notify_vector =3D -1; tdx->event_notify_apicid =3D -1; + qemu_register_resettable(obj); } =20 static void tdx_guest_finalize(Object *obj) { } =20 +static ResettableState *tdx_reset_state(Object *obj) +{ + TdxGuest *tdx =3D TDX_GUEST(obj); + return &tdx->reset_state; +} + static void tdx_guest_class_init(ObjectClass *oc, const void *data) { ConfidentialGuestSupportClass *klass =3D CONFIDENTIAL_GUEST_SUPPORT_CL= ASS(oc); X86ConfidentialGuestClass *x86_klass =3D X86_CONFIDENTIAL_GUEST_CLASS(= oc); + ResettableClass *rc =3D RESETTABLE_CLASS(oc); =20 klass->kvm_init =3D tdx_kvm_init; klass->can_rebuild_guest_state =3D true; @@ -1555,4 +1574,13 @@ static void tdx_guest_class_init(ObjectClass *oc, co= nst void *data) x86_klass->cpu_instance_init =3D tdx_cpu_instance_init; x86_klass->adjust_cpuid_features =3D tdx_adjust_cpuid_features; x86_klass->check_features =3D tdx_check_features; + + /* + * the exit phase makes sure sev handles reset after all legacy resets + * have taken place (in the hold phase) and IGVM has also properly + * set up the boot state. + */ + rc->phases.exit =3D tdx_handle_reset; + rc->get_state =3D tdx_reset_state; + } diff --git a/target/i386/kvm/tdx.h b/target/i386/kvm/tdx.h index 1c38faf983..264fbe530c 100644 --- a/target/i386/kvm/tdx.h +++ b/target/i386/kvm/tdx.h @@ -70,6 +70,7 @@ typedef struct TdxGuest { =20 uint32_t event_notify_vector; uint32_t event_notify_apicid; + ResettableState reset_state; } TdxGuest; =20 #ifdef CONFIG_TDX diff --git a/target/i386/kvm/trace-events b/target/i386/kvm/trace-events index 2d213c9f9b..a386234571 100644 --- a/target/i386/kvm/trace-events +++ b/target/i386/kvm/trace-events @@ -14,3 +14,6 @@ kvm_xen_soft_reset(void) "" kvm_xen_set_shared_info(uint64_t gfn) "shared info at gfn 0x%" PRIx64 kvm_xen_set_vcpu_attr(int cpu, int type, uint64_t gpa) "vcpu attr cpu %d t= ype %d gpa 0x%" PRIx64 kvm_xen_set_vcpu_callback(int cpu, int vector) "callback vcpu %d vector %d" + +# tdx.c +tdx_handle_reset(void) "" --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415142; cv=none; d=zohomail.com; s=zohoarc; b=M5CFTPc+zXr+WA5WS7y74Vce4s9D1EdRH2WXxmMQ6ESGaTIY+c4P0u+Ae/R7NG8UGk18yJaWFgq8bxTyEQuM82HPEthpye2d6JDebmXOwmoIDvITEWzz/C7u852l3cgneVswq28P/11vEBdiFQkRVJbFMuxqVd1/iy9DIvcUy1Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415142; h=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=bPhZf11AJ6OznTneTjtivFAiVtwbcW8pDml41uWPO3Y=; b=HccIqpd3LWGQAOrcg+oWZuItbsnXlRH5eNk9Y+TkP1gyTvAYQ94LhgMIKOIqINK3FWDQkmeZUl3CxwnOPIAfrdz/0c2OMussnD0PUbLJf6gksiC5GcK2amsraR+WYcY8dRKl02VUdAMFofGIde75cXJPPpMmaLbvIqb9ZeANfqM= 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 1771415142119696.0334283178613; Wed, 18 Feb 2026 03:45:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfyT-0003YD-Qn; Wed, 18 Feb 2026 06:44:12 -0500 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 1vsfy2-0003RI-R0 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:43 -0500 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 1vsfy1-0007u8-00 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:42 -0500 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-443-JOI0P-UwOWO4SyA8ouclLg-1; Wed, 18 Feb 2026 06:43:39 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2aad3f8367bso62776325ad.0 for ; Wed, 18 Feb 2026 03:43:38 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415020; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bPhZf11AJ6OznTneTjtivFAiVtwbcW8pDml41uWPO3Y=; b=U8Bj2YIikquYxY8wvYYch5bTQcUFcxQ+tp6Mjp0I/V9Rn/MRaBTJiJb/Wv3E1yj1iyF1tF P7Ck1k6c6+QH0YbawF1CdChdQSMkst994pj7wM1sJfX+2dpH/stHh+WA1rHvqdKMeEmq99 5uf4QN6OerLXOdhvLQGKFs9vuSs1pRA= X-MC-Unique: JOI0P-UwOWO4SyA8ouclLg-1 X-Mimecast-MFC-AGG-ID: JOI0P-UwOWO4SyA8ouclLg_1771415018 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415018; x=1772019818; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bPhZf11AJ6OznTneTjtivFAiVtwbcW8pDml41uWPO3Y=; b=VDlDoccDDQKy/3MY81V8sXducEND9q4RlWWYh03lS5pbpgkyb8j4EWUud7WoHTgBJp Eizo9shvUiH0itmL2cDLNveV1L5Y5tTtqndW9kXrG50LKZiYl7B3waD66roZZhCxsS8i iYjNVs0eWwbwXBkFOHyLCRqzaoXwD6MMiFRI/blrhqh/Lxn4ut5Ccy9jxtUdZ0U++QIj F5Skxc2agW5GbfiyG2pV4anfJOKue89BBjwf/FUEz4XYRAvgsF9tqy3/I+7jLxAQ1+nA D7jfnalAN/dZ7/9A5nNy03HYByTN2W9SIHlaLNLAjjK5HUjSjhsAfOeq2TuQgBUYfNaH jYIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415018; x=1772019818; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=bPhZf11AJ6OznTneTjtivFAiVtwbcW8pDml41uWPO3Y=; b=kqkQ67klf1R6LfGs+le+33FyhAYUud5NeAOA6xI6LeTU5C78gI06kTkH3jGSd+ap/O my76m7sGRPyzmEfVhNiHqpJUZasaEpMLwL8LeVTlyrzfESuItJLWGQp2DqT2CZzsGbSF 6LrHgZOSXhkWsPz79A0VWi9Y5yS0olCNSjwW04nNeMUmJc12JHHD2yH20Qq2Wmwpbce4 pQwOAPALXRlTV53D4zgwwfd9EB6pqqIJ9/hgdMwwT/NmBskXA6JDxv0A/XtXa/n66b4K MsJiv6th+7GcbrWkwqUZgSkC5lXt29aDBfo+3qexYEdE4I4HxN9nQN6BSv8qdguvF8ax NVUw== X-Forwarded-Encrypted: i=1; AJvYcCWN/duw2H+mA3TUjN9jQ1C3/5n1eroO9BU7YjZd0yfY104ZIdFtsgS/Y9ARfjCbcjV5qqNOIs76kAzw@nongnu.org X-Gm-Message-State: AOJu0YybNvSXn6asw2Y0ldRHzFkAmg4O5cRt8/A5inxzbn+4Z8GywsGB JDW8hArx4VYbYOCYGE5F7PjEUOU/H6VT/JfoOKejHMAnMFIUo1SnALmE5CJs3FA8jTkI90Yfe4C Lxze4m3QqYkx1rJaTgdrvHiGeGMJDHYA5IPboKgOb0UG0e2ks8araC36j X-Gm-Gg: AZuq6aJAYkuvyQE3s5GIZwXwNlU6kfIain9oK6q86kUroQs8RiqbMBb7usBQYkqk8p2 2oIyCkJzunZrYnLNkg1AY8ipbsqN4ob6FiA5d94HsMrfKS04C5lkO3w6ItutnBSIO8lQUd9mIiJ V0wLkrpj5AaN9WL+MLHqEHQeooI6mamJUOzONqrNmnP3uibDx+BLh0xN2P526iJHUvBWE34ceNc GgZc1yf0TzIocgiS9cYpsicpKC+AFiP/c5S9G6mGo0r7HBwacmYSpBxp0t5LSQ+Nekt6lAZ3OOB HEM3N2rIY4HLfbmRO43FJ1VDkzlDtJx8AwmQZiKc6SXvwlkhf8gyvKQYv6sUlYNT8uk2g0l+hI3 WPzQ/A8X+iht02c2nRmXvEX34jkFv7X+sf9J3Uo1F+QwJ2VAqnUXT X-Received: by 2002:a17:902:f601:b0:2ab:344e:1400 with SMTP id d9443c01a7336-2ad17524ab4mr175576385ad.37.1771415018081; Wed, 18 Feb 2026 03:43:38 -0800 (PST) X-Received: by 2002:a17:902:f601:b0:2ab:344e:1400 with SMTP id d9443c01a7336-2ad17524ab4mr175576095ad.37.1771415017711; Wed, 18 Feb 2026 03:43:37 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 17/34] i386/tdx: add a pre-vmfd change notifier to reset tdx state Date: Wed, 18 Feb 2026 17:12:10 +0530 Message-ID: <20260218114233.266178-18-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415142365158500 Content-Type: text/plain; charset="utf-8" During reset, when the VM file descriptor is changed, the TDX state needs t= o be re-initialized. A notifier callback is implemented to reset the old state and free memory before the new state is initialized post VM file descriptor change. Signed-off-by: Ani Sinha --- target/i386/kvm/tdx.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index 37e91d95e1..4cae99c281 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -405,6 +405,36 @@ static void tdx_handle_reset(Object *obj, ResetType ty= pe) trace_tdx_handle_reset(); } =20 +/* TDX guest reset will require us to reinitialize some of tdx guest state= . */ +static int set_tdx_vm_uninitialized(NotifierWithReturn *notifier, + void *data, Error** errp) +{ + TdxFirmware *fw =3D &tdx_guest->tdvf; + + if (!((VmfdChangeNotifier *)data)->pre) { + return 0; + } + + if (tdx_guest->initialized) { + tdx_guest->initialized =3D false; + } + + g_free(tdx_guest->ram_entries); + + /* + * the firmware entries will be parsed again, see + * x86_firmware_configure() -> tdx_parse_tdvf() + */ + fw->entries =3D 0; + g_free(fw->entries); + + return 0; +} + +static NotifierWithReturn tdx_vmfd_change_notifier =3D { + .notify =3D set_tdx_vm_uninitialized, +}; + /* * Some CPUID bits change from fixed1 to configurable bits when TDX module * supports TDX_FEATURES0.VE_REDUCTION. e.g., MCA/MCE/MTRR/CORE_CAPABILITY. @@ -1549,6 +1579,7 @@ static void tdx_guest_init(Object *obj) =20 tdx->event_notify_vector =3D -1; tdx->event_notify_apicid =3D -1; + kvm_vmfd_add_change_notifier(&tdx_vmfd_change_notifier); qemu_register_resettable(obj); } =20 --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415122; cv=none; d=zohomail.com; s=zohoarc; b=VjPfqQGcScu0WOpmAcTzfDPnCc/9NmQPA7JLoGdo/RVtBsrMV0Bv6xuvF34KpRGKsX1hnyiBkHlcUylLCpBDxnrC+emehwTVy1p+oxvYZvT60ZCwv384Vm1SvV3EEis2tP70A7p2dcMR6fiDNgz0Cfuh47paU/iU4b2XQueRdz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415122; h=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=av9X0K8K/0DXwv9tLYeu3Bap1JDHpXgcHRbzm207TyQ=; b=XNzjQMh5yqji5ilVUzUKPMfgf5dy4gWrkOCvbN7wffrk19OkGr45+Fc11Xhyj6rXvQTN9Kougi6HMbgrCWZ0KDopljylQw3ZjA/0YatSwH00vJL1ztQTRcIjPg6hah8qNOJ/gZKwW8EJ3qpYox61Jx1H0wvNvS0lA+s2S3xp7Ng= 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 1771415122480196.41736925265207; Wed, 18 Feb 2026 03:45:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfyc-000440-0a; Wed, 18 Feb 2026 06:44:18 -0500 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 1vsfy7-0003Ul-Mm for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:50 -0500 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 1vsfy6-0007uT-7k for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:47 -0500 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-495-08Iqm_SwPfmV4-Elw-4rbw-1; Wed, 18 Feb 2026 06:43:42 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2a944e6336eso304900085ad.0 for ; Wed, 18 Feb 2026 03:43:42 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415023; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=av9X0K8K/0DXwv9tLYeu3Bap1JDHpXgcHRbzm207TyQ=; b=OHJzLQf9ByniAKSF4pau2muw4VY0Ew6Z58hK9GMh4SHrqQRsgUx1fymSpEQfGQ5C4gX/j4 5ql8XezIu//pSVyY+D9zL2JBNBWFvEAEkU/o251FoYAWqreiXsiVWGg2adRdNKhM2vXORU FyBdRu+qZftG9kKyxM2Phgh0xpEWBrI= X-MC-Unique: 08Iqm_SwPfmV4-Elw-4rbw-1 X-Mimecast-MFC-AGG-ID: 08Iqm_SwPfmV4-Elw-4rbw_1771415022 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415021; x=1772019821; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=av9X0K8K/0DXwv9tLYeu3Bap1JDHpXgcHRbzm207TyQ=; b=Dc8Lqk+UMAQWHknILNs3nNTErY0ZsxZ45SEQJgj3eEDXLy6eY6XRkg/CYiQwgNlTHs JdVBVRzAOW7CyWjMlQRMgh+FOjI0/NIpyJ0Ma42qMtQKIF2du8SYxzFwsLfcKFR0KK6y ya9PWALoT1KGkQGk0jqKw4L8XjQa9rGpD+6g5S0YX+OoSBWW9JSbidjdOMQ5vRaMOm5o bNLzujRnjA3aJqNNis5b+GLW59WX1VqtC0wYFNShiYSLlqWnt/xeuOjdLSLNBPJbSJzK 7POLsdlO/Juoy3T3vFhlKASJpuoO6ypXyI2TVk/6GWQxJMjhFsWbNRt9vGLWn6u9GAZE vfbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415021; x=1772019821; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=av9X0K8K/0DXwv9tLYeu3Bap1JDHpXgcHRbzm207TyQ=; b=FZar5mWEoCtIOGyxY1GRtoQSIuhNFx1qQ56vT84v/OtKY0PV71mliZ9DzAG63U3tLP K/Ih+jkm21vHp6l+azWUJyYAeJCfrJLjyW7HIBrkqRoVLlW+ZhiX6L3uqP3MxJF9s+ku iEW9O+TTwwax4E35T+3NmjxKX+ABD4F3N7jKLLLMEjVzhlL5rjayDHsAW88iHJcoh9q+ VHtNJICusEKCwTuExqSZgF9ZH2ZJhxskWg51tS9w/yaZaFoYJO1YbhzmUIFrUo6+Adbq iVbsVsUpAsqWe3yzGRxRfQcpAKqKBAIrkjqlmxaJNJ5OjMnVfwRT1XIRQadnIONKZAaV V8hw== X-Forwarded-Encrypted: i=1; AJvYcCWOkmvOYLVd7A2jEN5KRISboKcyknCoI2kccinNLP99OqW4lEYA9B+p8q34/Hsg8F6oH/t5VOFvfaQG@nongnu.org X-Gm-Message-State: AOJu0YwHluo4wPy9kfKCyKJrNF1cnc1KK0UE/syvDNVeREGqYgwbJOEr FuStHTD2HyzNCJN1G/aAdLvUz0YqApU3SghWA/FqxqWmlcQxEs5Id/ay5mrWil7jOZM27NjDCeO 18CD06tI3E/A8Ux1n7cD3Foc5IS3yaXet/Ep13VRp8wy0DwzFJizPjTgRpOyxRu8b X-Gm-Gg: AZuq6aKNljLL6vDLXjic9lVb0Fhy+f7p6GGAxBDT+6sQwmeCe2U7RN5ObM2lyqnPUlW 30Yi7XFgtBfjYs/HtqzH5UkIWvjY3Z6tX6mZJg6xlxhNnG3HecK/9cVo0t8my/+OYNXbs5l//uz PNZW+8HjZnbCXVgr9ob8pjkd0fpiZXk+29tekY7CjCBZAhNBCSzU46elehgJUiFDdeIkeRv0ayl aAatysMfCtRrQn4is5nAgRROJsPnj9hsl2ZO5PDM1MWNqLLLmgwidIMS1wIy9X1yjffTgB6UdUR cmZ6Sf7r3IOYncIQ6699vt9kZLhEv8M8RrdZUPvaGeHwCCQH+63+wF4b3qE68+pdgc2n4Vzt1yF 2C5YmCukYnBnlaYM4W2VsDkrVBBbJRNMpLe9mCjDEDD9oG5Ntz53u X-Received: by 2002:a17:903:2b05:b0:2aa:3b3:d633 with SMTP id d9443c01a7336-2ad50ff1164mr17117415ad.61.1771415021474; Wed, 18 Feb 2026 03:43:41 -0800 (PST) X-Received: by 2002:a17:903:2b05:b0:2aa:3b3:d633 with SMTP id d9443c01a7336-2ad50ff1164mr17117305ad.61.1771415021124; Wed, 18 Feb 2026 03:43:41 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Zhao Liu , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, Prasad Pandit , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 18/34] i386/sev: add migration blockers only once Date: Wed, 18 Feb 2026 17:12:11 +0530 Message-ID: <20260218114233.266178-19-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415124917154100 Content-Type: text/plain; charset="utf-8" sev_launch_finish() and sev_snp_launch_finish() could be called multiple ti= mes when the confidential guest is being reset/rebooted. The migration blockers should not be added multiple times, once per invocation. This chan= ge makes sure that the migration blockers are added only one time by adding the migration blockers to the vm state change handler when the vm transitions to the running state. Subsequent reboots do not change the state of the vm. Reviewed-by: Prasad Pandit Signed-off-by: Ani Sinha --- target/i386/sev.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/target/i386/sev.c b/target/i386/sev.c index 66e38ca32e..260d8ef88b 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -1421,11 +1421,6 @@ sev_launch_finish(SevCommonState *sev_common) } =20 sev_set_guest_state(sev_common, SEV_STATE_RUNNING); - - /* add migration blocker */ - error_setg(&sev_mig_blocker, - "SEV: Migration is not implemented"); - migrate_add_blocker(&sev_mig_blocker, &error_fatal); } =20 static int snp_launch_update_data(uint64_t gpa, void *hva, size_t len, @@ -1608,7 +1603,6 @@ static void sev_snp_launch_finish(SevCommonState *sev_common) { int ret, error; - Error *local_err =3D NULL; OvmfSevMetadata *metadata; SevLaunchUpdateData *data; SevSnpGuestState *sev_snp =3D SEV_SNP_GUEST(sev_common); @@ -1655,15 +1649,6 @@ sev_snp_launch_finish(SevCommonState *sev_common) =20 kvm_mark_guest_state_protected(); sev_set_guest_state(sev_common, SEV_STATE_RUNNING); - - /* add migration blocker */ - error_setg(&sev_mig_blocker, - "SEV-SNP: Migration is not implemented"); - ret =3D migrate_add_blocker(&sev_mig_blocker, &local_err); - if (local_err) { - error_report_err(local_err); - exit(1); - } } =20 =20 @@ -1676,6 +1661,11 @@ sev_vm_state_change(void *opaque, bool running, RunS= tate state) if (running) { if (!sev_check_state(sev_common, SEV_STATE_RUNNING)) { klass->launch_finish(sev_common); + + /* add migration blocker */ + error_setg(&sev_mig_blocker, + "SEV: Migration is not implemented"); + migrate_add_blocker(&sev_mig_blocker, &error_fatal); } } } --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415125; cv=none; d=zohomail.com; s=zohoarc; b=Y9GKLm0Pzxr1s/JYnnwTHX2+zcfxAbdEU0lsMzYmlBP8vNrg1jrZRc7kUSjd1xpbLa1+uds6opMibUxTikN86fexMvkzcKI4hZoWB9wIq9GrNv99+58KX8rMdFCqg+GnOaV/Kgiz31WXC4KIlfe/BZyOgpgPHKLVI8LwyNrvbcg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415125; h=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=N2v6djobNSdTdF+YCpvzDQ17kkQi5jILZoPxzgDYLR8=; b=bKtVzlLaq+wmPBaBZ+DkvLv5aNeKQcrre9giA7FKuhRaMItiIak4idb+/B0OpQjP2VnGXROmgbSbFgnB9L92FN1WNTGs2mTVO/IhIYxA+kLlRgoU8+yGKfVAUM9B+5SilW2MF7tyYWNJZJ/YYmPsph4o3u1S9IYEcZtPQdVybjU= 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 177141512523221.884419527948694; Wed, 18 Feb 2026 03:45:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfyd-0004Cs-Rc; Wed, 18 Feb 2026 06:44:20 -0500 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 1vsfy8-0003Uw-WF for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:52 -0500 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 1vsfy7-0007uZ-Io for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:48 -0500 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-125-W5PzG3PiMp-FLCJqcujqmQ-1; Wed, 18 Feb 2026 06:43:45 -0500 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2a944e6336eso304902475ad.0 for ; Wed, 18 Feb 2026 03:43:45 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415026; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=N2v6djobNSdTdF+YCpvzDQ17kkQi5jILZoPxzgDYLR8=; b=HDtt0HIDHXefXcLNZg8r2hqk9kYp+pNpBnpCJqlvd7NH59gDdIloRFRWt9fSpnLVc//VyO Fi3GOTkQMP3oTk2fKYnrFvBQPq+K2lb6Z2n/Qwk8kYPIS7JI8XcWRAmoud5N9OGlkMDAQW m4KH/2TAQrgobIdJD1ehB+LVoLdyZrw= X-MC-Unique: W5PzG3PiMp-FLCJqcujqmQ-1 X-Mimecast-MFC-AGG-ID: W5PzG3PiMp-FLCJqcujqmQ_1771415025 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415024; x=1772019824; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=N2v6djobNSdTdF+YCpvzDQ17kkQi5jILZoPxzgDYLR8=; b=EibTa4uF4YeWfoxl3kg8hQqvMkR6gDvJygsBBmRRC41XVuGIAm08crIJFj7pOOUz+Q gyPC6FPc+PDSrf1Ab7AG2yqK4D+iiOaRR0aViJoXv8JXVi6UkCtoT4wPCKp7KuqeqhDt ZZKDruaJufWh2B40oNx7nJz4dAEiI7rVSKjuhJ3bLqLNY0Od+CECnTQoq76aEpSM4l03 AIDHzgTscgUiuMQ5RjiBw26YvSchT2rB9fcxv/+3P4AhFM7uFeoUTAYCCSVt7MNqQ66r oCtWAbVwgAQnZ3ul52xy4teU5ghXKjqIi7R7cpVRAmPTHIbk0Y3aN99+NaS2H5pduBwF Dozw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415024; x=1772019824; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=N2v6djobNSdTdF+YCpvzDQ17kkQi5jILZoPxzgDYLR8=; b=uZjMxZv9BjJ3XZhrKucj+T/DSVbkqsR2LDxKHOcbmxwiqkvLW7VF/ZANYYCPx2ws/M tyS/qhjKbJeK27Cpidbebm91hbzVIBlEWNf1awpMSKAN8mGsb7U4YL+6r3fy/ctjFslC KihbO0VjXFx7V5w6BE4xmy1RJ6cJPju6F4w+AYrUO04UYE4Zb2PMRfY/LD84usYmHKkv GuEa9huCUXiiQmmRS9qyUUtfito1y5nlmlYDACqtfGwJsaCjHofUV9sQPUO7ewOMxE0S K5mMMi4Z+kLTAeax7mkjjV/Oo2B3qHjs8zHSWD/RFFNM3tS45EyeU0wRU+XmGWI0c/IY Q3mA== X-Forwarded-Encrypted: i=1; AJvYcCUmLQPm53rcumAlbCNXq0gAACEQ4PsOGoleVL333SH4kHjQWTdh6tZRTDyeUYtgkTIUJJP+DNBtJhCB@nongnu.org X-Gm-Message-State: AOJu0YyGom+oFDED72QiJWbrLwQMMkYkseqG6IuZcVneuuPZMTlivauU Pl6euP7PLFpquIV9ragTs4uNHQ+vFGhueTwEV+h7/73ABjhzPbkSp47zivzeKmV58cG+3SkLAfv l/eCV+X0ILs68ekSyz8BT4WgbSGOnGbc4/HQkWyX6rJV7RS0Rv3pJ1jc7 X-Gm-Gg: AZuq6aJBOkozFcJZ3J+6lX+TIDUl4lcltil449qQh8DFgWuCKshNZAziNMS5xcqprau mdsyM7k4s5CQfI3DuYpVGqdmcQqE5t08nzTyVwJASnuKpI93OdIDMjup5Skl8Wv3a+At/ceMfpa Rf8my12hc6RRPbQL1NB9s2RqaWfNfNMP4+6gfi+xiPciXnKiHJCHUMlWDve7EnPIW1sy+qtvyDw 1DRl/8RGSQbiCbq0nkE4bcWRHsFl8tmARo+bUHP+TwMxJhIBwAAzxVKTq9Yee4AvxQhmu3mJLIS UkVPUI6gDfxJeIkrjdwonV+F7R4xO7u2PqNnHwOMkLLYTsDXnieMtgMVe3uJR9ZNqutpXfbXz39 FCjXKPhVxjDyw0fXR8Fmd5HJLkm4Heg/Xi30uXMGXgnIGcoe02lpx X-Received: by 2002:a17:902:ccca:b0:295:9b73:b15c with SMTP id d9443c01a7336-2ad50f4c562mr14531485ad.42.1771415024598; Wed, 18 Feb 2026 03:43:44 -0800 (PST) X-Received: by 2002:a17:902:ccca:b0:295:9b73:b15c with SMTP id d9443c01a7336-2ad50f4c562mr14531355ad.42.1771415024293; Wed, 18 Feb 2026 03:43:44 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Zhao Liu , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 19/34] i386/sev: add notifiers only once Date: Wed, 18 Feb 2026 17:12:12 +0530 Message-ID: <20260218114233.266178-20-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415143524158500 Content-Type: text/plain; charset="utf-8" The various notifiers that are used needs to be installed only once not on every initialization. This includes the vm state change notifier and others. This change uses 'cgs->ready' flag to install the notifiers only one time, the first time. Signed-off-by: Ani Sinha --- target/i386/sev.c | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/target/i386/sev.c b/target/i386/sev.c index 260d8ef88b..647f4bf63d 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -1920,8 +1920,9 @@ static int sev_common_kvm_init(ConfidentialGuestSuppo= rt *cgs, Error **errp) return -1; } =20 - qemu_add_vm_change_state_handler(sev_vm_state_change, sev_common); - + if (!cgs->ready) { + qemu_add_vm_change_state_handler(sev_vm_state_change, sev_common); + } cgs->ready =3D true; =20 return 0; @@ -1943,22 +1944,23 @@ static int sev_kvm_init(ConfidentialGuestSupport *c= gs, Error **errp) return -1; } =20 - /* - * SEV uses these notifiers to register/pin pages prior to guest use, - * but SNP relies on guest_memfd for private pages, which has its - * own internal mechanisms for registering/pinning private memory. - */ - ram_block_notifier_add(&sev_ram_notifier); - - /* - * The machine done notify event is used for SEV guests to get the - * measurement of the encrypted images. When SEV-SNP is enabled, the - * measurement is part of the guest attestation process where it can - * be collected without any reliance on the VMM. So skip registering - * the notifier for SNP in favor of using guest attestation instead. - */ - qemu_add_machine_init_done_notifier(&sev_machine_done_notify); + if (!cgs->ready) { + /* + * SEV uses these notifiers to register/pin pages prior to guest u= se, + * but SNP relies on guest_memfd for private pages, which has its + * own internal mechanisms for registering/pinning private memory. + */ + ram_block_notifier_add(&sev_ram_notifier); =20 + /* + * The machine done notify event is used for SEV guests to get the + * measurement of the encrypted images. When SEV-SNP is enabled, t= he + * measurement is part of the guest attestation process where it c= an + * be collected without any reliance on the VMM. So skip registeri= ng + * the notifier for SNP in favor of using guest attestation instea= d. + */ + qemu_add_machine_init_done_notifier(&sev_machine_done_notify); + } return 0; } =20 --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415115; cv=none; d=zohomail.com; s=zohoarc; b=USdk+9Rs8fXETVu7VjybP929OehcRAq2TB/jD/CViT/Ze0c46mPvYT7pMSiqSf8EltF05UHve4B/bJUNVK8yUwy5PjO9Yj3XNLn7ROL/kDdHn/6SIXRc0YNqcpMebNxy6X6Q1bzCusQRnSV7Cf9gPbuuH8pzzNKHz59cNi/AOkM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415115; h=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=6P5ZMHhQ1gBULl+0OpCFy+J1BWjsvb7Pt0GdIxytUuE=; b=aBn9JqAiMUIaamkhOXIJVt/LNdPNiOA/oWxex2B6By2xRD1EUVmVZvoQRpdj+wvhH22iRhxaqiW3gr2sHiNJWAfGIjX/mZPtXW2Dt7o+Jol/T/JjeuyMty75ykNFDZV34mm33E1u/NKFIrhBSyraZZYFLMUFHJXnuP26HRQk/Wc= 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 1771415115287295.1111596827418; Wed, 18 Feb 2026 03:45:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfyc-00048J-D8; Wed, 18 Feb 2026 06:44:19 -0500 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 1vsfyE-0003WG-LX for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:55 -0500 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 1vsfyD-0007vC-7i for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:54 -0500 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-551-z1paCqalMVWJUDFU5RUulw-1; Wed, 18 Feb 2026 06:43:49 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2a946c0e441so53230335ad.1 for ; Wed, 18 Feb 2026 03:43:48 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415032; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6P5ZMHhQ1gBULl+0OpCFy+J1BWjsvb7Pt0GdIxytUuE=; b=MHyY9DcnCdObHVVI8YicCJUrkKRFAAY/soMJ7QtK8dv/urBC0ab4uzwtU2AzIXCL0PPLDm reVumu8rhiuUp74fVrQhbm6e2M3QwArysopHguZ75isbb58kL0jxUCegcIJLWJ0vTDfqnK BES/4uvkyKHH1sl5sr2/6XIOL/hv4o4= X-MC-Unique: z1paCqalMVWJUDFU5RUulw-1 X-Mimecast-MFC-AGG-ID: z1paCqalMVWJUDFU5RUulw_1771415028 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415028; x=1772019828; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6P5ZMHhQ1gBULl+0OpCFy+J1BWjsvb7Pt0GdIxytUuE=; b=mAfUU2TCPwCFDK/Nhh7/uKK4Ce/KaXmnYrQ9E1tvAvCsY83bkMg0iryFJel4raIS0j SWy0Ooq1KH3/8nUvMoc3Tm9R7+9gDLNEMjW1kUOQx1pVGGupEu0+QzsuayKfV/48HEeU 55RixzTXmjzELUObw5NvHY69qgIxPKuNREWiqf2fMSg2VWvGxLx7bbtWpfui3ndjO+Dq ECfqQHgJVVDH2oql7eBRhzbt7EEYKDDr8/sshmYaLZOiwiUeDocabIvaNRzyfPPkMCh2 fDDhsG2iwPL45ngOYFT6fTxWp3QvHJCfifvru0VQWoWge5j+Q4//B+magfTR83zS/4r6 9xxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415028; x=1772019828; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6P5ZMHhQ1gBULl+0OpCFy+J1BWjsvb7Pt0GdIxytUuE=; b=nXc1xIF0GtTA0TKJIMYfK8iUF/cT0wC2HuDnJfTvaYBHfBkZXIHCzQLRrozhPCuJTe +bk7UUw1fiZ56KPqYXuYetkvlzMWBBZGx73N0tKmTeK8YrKo2SfcvW/MR8tj0MGvLU4x Of3T3pvLIQzmh/5RkBa6AcMF8+biPSAwkEnGnyJm2uuJCWZUSPjhpi+D098RvvxQhCGX dCXak2AvSQdEW9sGq9RRZSrhF1CJKZ2euu12NW6icxA2fm1Qss4181SbmEmhThCEC4P2 DvTSPBIE4+JmiE/7C8lqits+8xmzoyquv+fBv8mWJcwTcNLAZxTP8+V0vhbDyZOS6q6+ MgAA== X-Forwarded-Encrypted: i=1; AJvYcCXImv6jACC5/kdwkdM86Xu5LvK4fUc60nbrGkPhw3WrwJ07FBZOdH54LRp/dgeHV+2wuPqJj0z5tdqC@nongnu.org X-Gm-Message-State: AOJu0YzqQsx4+CGbwq5AhDkoCz8r05KO+6ag8jlCD5Gx3B64BRq/ExE4 ElgUKijkLOK4Ml6V1WtMorsItuU1L/dWhgIw/LQo9/ES7BoS50nOC+oAmrpvoZZx8Vjo6l1qE+8 d8FWQ24HPjz9cP3kRQhMC4Ob4CffwHgWr4n0VQludkVYDn4C2FlxwtFh8zp4mfVMd X-Gm-Gg: AZuq6aK5sxmh7d56YSwNi/zcykJOq07S2vaeV+/2EZKNgBQ+d47yDnsY3q4ALV1tN7p QNs0rkaECVZqPNO0al0l4Jiwo+1HRBnXBndq173BeB3FM9ixG7pZ7CGyKPPVIDfmC8TcM2lhX4A g5CJyoMEOW9mTxzsvB5oZhDcZ1362uApu19TJ+ZcFBSMZ62CN0ByevP53EIGz03Bmb3YHZ6xCc4 PLovCftsmFiiENbQ8TYyMgtQXlGaHZayYH2Qx/fHIm7DzgcyEkkC1FdWvCJNRy/eJx02OEGob8i TyX6lXpofYEH+M5ZSTWnftlYu8/rr+FCwl32fWL3r8c3wtfK8xJD0ZSfgIrjzd8t32VRX3YQjFp gDg9mS9Lui3MXxqPzqKEVdeqJABcN0cjltLVVvtSh/6IcugxdR9Wr X-Received: by 2002:a17:903:19e3:b0:2aa:ffa0:4454 with SMTP id d9443c01a7336-2ad50f5fd5emr17898305ad.31.1771415027883; Wed, 18 Feb 2026 03:43:47 -0800 (PST) X-Received: by 2002:a17:903:19e3:b0:2aa:ffa0:4454 with SMTP id d9443c01a7336-2ad50f5fd5emr17898095ad.31.1771415027447; Wed, 18 Feb 2026 03:43:47 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Zhao Liu , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 20/34] i386/sev: free existing launch update data and kernel hashes data on init Date: Wed, 18 Feb 2026 17:12:13 +0530 Message-ID: <20260218114233.266178-21-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415116272158500 Content-Type: text/plain; charset="utf-8" If there is existing launch update data and kernel hashes data, they need t= o be freed when initialization code is executed. This is important for resettable confidential guests where the initialization happens once every reset. Signed-off-by: Ani Sinha --- target/i386/sev.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index 647f4bf63d..b3893e431c 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -1773,6 +1773,7 @@ static int sev_common_kvm_init(ConfidentialGuestSuppo= rt *cgs, Error **errp) uint32_t ebx; uint32_t host_cbitpos; struct sev_user_data_status status =3D {}; + SevLaunchUpdateData *data, *next_elm; SevCommonState *sev_common =3D SEV_COMMON(cgs); SevCommonStateClass *klass =3D SEV_COMMON_GET_CLASS(cgs); X86ConfidentialGuestClass *x86_klass =3D @@ -1780,6 +1781,11 @@ static int sev_common_kvm_init(ConfidentialGuestSupp= ort *cgs, Error **errp) =20 sev_common->state =3D SEV_STATE_UNINIT; =20 + /* free existing launch update data if any */ + QTAILQ_FOREACH_SAFE(data, &launch_update, next, next_elm) { + g_free(data); + } + host_cpuid(0x8000001F, 0, NULL, &ebx, NULL, NULL); host_cbitpos =3D ebx & 0x3f; =20 @@ -1968,6 +1974,8 @@ static int sev_snp_kvm_init(ConfidentialGuestSupport = *cgs, Error **errp) { MachineState *ms =3D MACHINE(qdev_get_machine()); X86MachineState *x86ms =3D X86_MACHINE(ms); + SevCommonState *sev_common =3D SEV_COMMON(cgs); + SevSnpGuestState *sev_snp_guest =3D SEV_SNP_GUEST(sev_common); =20 if (x86ms->smm =3D=3D ON_OFF_AUTO_AUTO) { x86ms->smm =3D ON_OFF_AUTO_OFF; @@ -1976,6 +1984,10 @@ static int sev_snp_kvm_init(ConfidentialGuestSupport= *cgs, Error **errp) return -1; } =20 + /* free existing kernel hashes data if any */ + g_free(sev_snp_guest->kernel_hashes_data); + sev_snp_guest->kernel_hashes_data =3D NULL; + return 0; } =20 --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415142; cv=none; d=zohomail.com; s=zohoarc; b=SK7ULoo0QuBagmUv2XQHM1/PeWkNkTDsCkvTFEspkA8cmUqJXeZGEEc17BbRKe4Px2MnD830FmUGcPOTmf97gK/aFJkb5D9LLjjukpBTxgb2iA8lgGs4+JAjgw3DKiZ6XjzPQwMpGW7GoGpfFmhExn8m0a2Ih4GeqM+uC46vgCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415142; h=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=0DJOQ6jwEso0pRS4a8bCDrKdsF6L0AYtEV0u9zd/jaU=; b=OS/zQM0rjY4D4yDLqtmZHKWl2hQSlYHuF2V4c97jtaHGfLMaimhvwTAKNDF730JNRU1/NXTy73GHFm5RVpWCGxtJqKUJpXmxkTA1vnzKho1Oa22+nOpxZumMdIb3kgCkoBcozVVXjlNccu2I6Nxaayy4U9jXypR57EoYNOqMCiI= 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 1771415142077269.07082558720674; Wed, 18 Feb 2026 03:45:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfz9-0004ol-Ao; Wed, 18 Feb 2026 06:44:51 -0500 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 1vsfyL-0003jk-22 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:03 -0500 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 1vsfyF-0007vN-3O for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:56 -0500 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-467-sEMvEn7yONqteUBdSE9KIw-1; Wed, 18 Feb 2026 06:43:52 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2aad5fec175so207988445ad.2 for ; Wed, 18 Feb 2026 03:43:52 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415034; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0DJOQ6jwEso0pRS4a8bCDrKdsF6L0AYtEV0u9zd/jaU=; b=hI1P4j+YUC+bPBLYOYIudCYRXM9CDsAvyYOYLiObcqGqLgpB4RBjmC7VXewmGoyDS5XER5 8ZAWKqmvD0Y0k3ZXqbHfoMLwcmZM/ihncEEQsfpV/VVwqtdML1H9QRIgvwOwE4Uf4qmc0R l/xvh8afpyZ4PoHsk2Qbxnk4g/ZjpIw= X-MC-Unique: sEMvEn7yONqteUBdSE9KIw-1 X-Mimecast-MFC-AGG-ID: sEMvEn7yONqteUBdSE9KIw_1771415031 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415031; x=1772019831; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0DJOQ6jwEso0pRS4a8bCDrKdsF6L0AYtEV0u9zd/jaU=; b=EicXvAvNHeslNx4m3dpEuGEpAsJw/WD5rhWQXIPdj2dfuMGc5MMAK3s4YT2vNWgLaQ M3JI/oW+YRVx24bL514XIpdrddXrqaxvO2nHFknP8WWijsWdc2iKQ8vehPqutRnNutCB 3g7vK7jJx+8DDDY5gJLZG62lLqrNPDnhXwsbk0fWBBJdCrQgLfNHoXAnkCpYu7hmhJ+F AIz7bh9OpfUbRqDu5qtyzvcWVZwjdcBRwGdjmCSIhgnMOPCptXdVW3jG6NHgSc+Wkrcz Nc11iLbHL6AYouakSYp2DAGENVsKQt9Y5wDrE5Qa9k/9NVWCxHbttDXgqqMJeaDfxbal E5+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415031; x=1772019831; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=0DJOQ6jwEso0pRS4a8bCDrKdsF6L0AYtEV0u9zd/jaU=; b=iTVHbZYyVRkd3KA9gzQlskTDo9l17LLWu7ftGcy0adjhJVeAuXs7GxLt6pp+UnmFUk YpTqFilCKiYaSZtzLMMck/fLuu0NUQQxFGbI6d1uffeYO/jNsbf+zilvWzleSRHXBDae Ya9o4WC5WpmTBzEe/sNMRa3JFk3GSWXsoIZybasI8HyZgDdT9qh9F7Cl2EivgaEAdtSv QMyjUJictZsm3n6gTf8lWa02xQYoEmitlUZlyTGKpgNoeXAIXSg8/PiPCC+i9IY4c5td Yh6l0ml1I8AZytgExMX2bMgqY9SzxqXEHOClREU5WgR2HQxX05SVBN0BMscm2Q/O4pF2 56RA== X-Forwarded-Encrypted: i=1; AJvYcCWR+xzTsd8RgGr0V0MfZrTjP5GhsCPVA6vzqsIhCvlKmh6toCN5Td0oiyfzsWeie/ETMkxWC+C8/Mhu@nongnu.org X-Gm-Message-State: AOJu0Yxx1+rQm4iezyviKZPeTMxiriM1vkn+BtbAYCDGeOGG9lnkR6zg Cy9rU8WIdzHZ4i4Y0NKkrL35vmEuaeT0pGYeUkPsBsVGceIqIRgC4BRv+GRioO4gmnJnhKXkjzD Od3jUG7J6cekhJRrHkIuTejBYhZEqCPpiC/1NDuDWuQQtsBs9HFiC9v5p X-Gm-Gg: AZuq6aLYWLLuFXe1omJ9ruhg9P+id9lRKrFlIeCv8D7JlbNWTwB5R0mhQB2eNaLmr4E 5J6z4WT0QAr9XWfI81uif/HVDMDSU0u67j7E5kHdo5Qx9PN2gAH1KN28cAAyQ1GSSQuq+KXnIlM bW84mL3r2OqRAOa5K6G3p3kdsMn7fiNoUlmvGVU8LNXi2ZexRPki6BmV8eJY6VkBQIQ5zDXRchS wk3cyoE6ScofpONBNKTUNwYwtnRzNFfzMEbQAGwCI3pf8eMniISa+Qzu2D+MJmKH8B78QzVcIv8 wAW3PWHnesGRb7wHzHU9niwHUStek1v37fSg75BjEoijg8/Qqc+gfbWmOJCDspTnyiu+oU/hR3m YxRPwMN15oxSofgdSLkthtssJnmc0CMynIu+wk0UA4eaU7twL7HCT X-Received: by 2002:a17:902:da8c:b0:2aa:f43d:7c4b with SMTP id d9443c01a7336-2ad50e9a45emr15686115ad.19.1771415031022; Wed, 18 Feb 2026 03:43:51 -0800 (PST) X-Received: by 2002:a17:902:da8c:b0:2aa:f43d:7c4b with SMTP id d9443c01a7336-2ad50e9a45emr15686015ad.19.1771415030642; Wed, 18 Feb 2026 03:43:50 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Zhao Liu , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 21/34] i386/sev: add support for confidential guest reset Date: Wed, 18 Feb 2026 17:12:14 +0530 Message-ID: <20260218114233.266178-22-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415143351154100 Content-Type: text/plain; charset="utf-8" When the KVM VM file descriptor changes as a part of the confidential guest reset mechanism, it necessary to create a new confidential guest context and re-encrypt the VM memory. This happens for SEV-ES and SEV-SNP virtual machi= nes as a part of SEV_LAUNCH_FINISH, SEV_SNP_LAUNCH_FINISH operations. A new resettable interface for SEV module has been added. A new reset callb= ack for the reset 'exit' state has been implemented to perform the above operat= ions when the VM file descriptor has changed during VM reset. Tracepoints has been added also for tracing purpose. Signed-off-by: Ani Sinha --- target/i386/sev.c | 58 ++++++++++++++++++++++++++++++++++++++++ target/i386/trace-events | 1 + 2 files changed, 59 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index b3893e431c..549e624176 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -30,8 +30,10 @@ #include "system/kvm.h" #include "kvm/kvm_i386.h" #include "sev.h" +#include "system/cpus.h" #include "system/system.h" #include "system/runstate.h" +#include "system/reset.h" #include "trace.h" #include "migration/blocker.h" #include "qom/object.h" @@ -86,6 +88,10 @@ typedef struct QEMU_PACKED PaddedSevHashTable { uint8_t padding[ROUND_UP(sizeof(SevHashTable), 16) - sizeof(SevHashTab= le)]; } PaddedSevHashTable; =20 +static void sev_handle_reset(Object *obj, ResetType type); + +SevKernelLoaderContext sev_load_ctx =3D {}; + QEMU_BUILD_BUG_ON(sizeof(PaddedSevHashTable) % 16 !=3D 0); =20 #define SEV_INFO_BLOCK_GUID "00f771de-1a7e-4fcb-890e-68c77e2fb44e" @@ -129,6 +135,7 @@ struct SevCommonState { uint8_t build_id; int sev_fd; SevState state; + ResettableState reset_state; =20 QTAILQ_HEAD(, SevLaunchVmsa) launch_vmsa; }; @@ -1666,6 +1673,11 @@ sev_vm_state_change(void *opaque, bool running, RunS= tate state) error_setg(&sev_mig_blocker, "SEV: Migration is not implemented"); migrate_add_blocker(&sev_mig_blocker, &error_fatal); + /* + * mark SEV guest as resettable so that we can reinitialize + * SEV upon reset. + */ + qemu_register_resettable(OBJECT(sev_common)); } } } @@ -1991,6 +2003,41 @@ static int sev_snp_kvm_init(ConfidentialGuestSupport= *cgs, Error **errp) return 0; } =20 +/* + * handle sev vm reset + */ +static void sev_handle_reset(Object *obj, ResetType type) +{ + SevCommonState *sev_common =3D SEV_COMMON(MACHINE(qdev_get_machine())-= >cgs); + SevCommonStateClass *klass =3D SEV_COMMON_GET_CLASS(sev_common); + + if (!sev_common) { + return; + } + + if (!runstate_is_running()) { + return; + } + + sev_add_kernel_loader_hashes(&sev_load_ctx, &error_fatal); + if (sev_es_enabled() && !sev_snp_enabled()) { + sev_launch_get_measure(NULL, NULL); + } + if (!sev_check_state(sev_common, SEV_STATE_RUNNING)) { + /* this calls sev_snp_launch_finish() etc */ + klass->launch_finish(sev_common); + } + + trace_sev_handle_reset(); + return; +} + +static ResettableState *sev_reset_state(Object *obj) +{ + SevCommonState *sev_common =3D SEV_COMMON(obj); + return &sev_common->reset_state; +} + int sev_encrypt_flash(hwaddr gpa, uint8_t *ptr, uint64_t len, Error **errp) { @@ -2469,6 +2516,8 @@ bool sev_add_kernel_loader_hashes(SevKernelLoaderCont= ext *ctx, Error **errp) return false; } =20 + /* save the context here so that it can be re-used when vm is reset */ + memcpy(&sev_load_ctx, ctx, sizeof(*ctx)); return klass->build_kernel_loader_hashes(sev_common, area, ctx, errp); } =20 @@ -2729,8 +2778,16 @@ static void sev_common_class_init(ObjectClass *oc, const void *data) { ConfidentialGuestSupportClass *klass =3D CONFIDENTIAL_GUEST_SUPPORT_CL= ASS(oc); + ResettableClass *rc =3D RESETTABLE_CLASS(oc); =20 klass->kvm_init =3D sev_common_kvm_init; + /* + * the exit phase makes sure sev handles reset after all legacy resets + * have taken place (in the hold phase) and IGVM has also properly + * set up the boot state. + */ + rc->phases.exit =3D sev_handle_reset; + rc->get_state =3D sev_reset_state; =20 object_class_property_add_str(oc, "sev-device", sev_common_get_sev_device, @@ -2780,6 +2837,7 @@ static const TypeInfo sev_common_info =3D { .abstract =3D true, .interfaces =3D (const InterfaceInfo[]) { { TYPE_USER_CREATABLE }, + { TYPE_RESETTABLE_INTERFACE }, { } } }; diff --git a/target/i386/trace-events b/target/i386/trace-events index 51301673f0..b320f655ee 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -14,3 +14,4 @@ kvm_sev_attestation_report(const char *mnonce, const char= *data) "mnonce %s data kvm_sev_snp_launch_start(uint64_t policy, char *gosvw) "policy 0x%" PRIx64= " gosvw %s" kvm_sev_snp_launch_update(uint64_t src, uint64_t gpa, uint64_t len, const = char *type) "src 0x%" PRIx64 " gpa 0x%" PRIx64 " len 0x%" PRIx64 " (%s page= )" kvm_sev_snp_launch_finish(char *id_block, char *id_auth, char *host_data) = "id_block %s id_auth %s host_data %s" +sev_handle_reset(void) "" --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415116; cv=none; d=zohomail.com; s=zohoarc; b=iXevuLfFxc7oqZ8uPO5+NzK1jodB7n18XSf/mdJPRKgNY5ff4hrmDvqwmnXXg2gpqSdbi5Kmc9tq6UbwfrkQKl1My6OHK8CTANb44l26UlUtUX7+Y8WQtt+Gsq3XuOwDcxDMVBOw0J/IEZYkYUJ3uS7/MVmAgLf90By2hDK0G48= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415116; 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=P6CIgFqyYot5rxLSuNCk9EOjkct/6qK4uQFmgPOAy0w=; b=FKzYm3FcF8/8nnhEHtmgXCBmB8BskRQywWhtvw+bJUy/FiclBHBI7ljQYqh3cEWPq4Ro/GV0YDbEWMovUjJ0pRwJshgAy+fxbE9reOGa2zzY62vGU9QzJTVKJwjr0MI8KUBiSNdv0JYiljBtwDrZ/dA1KgxnMaJdFLND3ET0xZs= 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 1771415116532557.257741805439; Wed, 18 Feb 2026 03:45:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfym-0004GM-FD; Wed, 18 Feb 2026 06:44:35 -0500 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 1vsfyW-0003wO-Du for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:14 -0500 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 1vsfyI-0007vV-7t for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:02 -0500 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-231-JbQpo2AjMQW_zYwRQktxAQ-1; Wed, 18 Feb 2026 06:43:54 -0500 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2aad5fc5b2fso57019725ad.1 for ; Wed, 18 Feb 2026 03:43:54 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415036; 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=P6CIgFqyYot5rxLSuNCk9EOjkct/6qK4uQFmgPOAy0w=; b=S3KAvhYWckxAhl4xOv04iaM6sXI3JY2j/Od8F6vQ0eXUVygxDe7tRSsB47qPjWWdZXNem0 Up/c0ci6z6MtAy4hAi41mOqcjWkdrIzotfbrZKcEoOc+lhJJuOGq68/IPMvbBmqKR9MOEF us+UUZwmZXrwhnaq/dI1q3cEAumB7LI= X-MC-Unique: JbQpo2AjMQW_zYwRQktxAQ-1 X-Mimecast-MFC-AGG-ID: JbQpo2AjMQW_zYwRQktxAQ_1771415034 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415034; x=1772019834; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P6CIgFqyYot5rxLSuNCk9EOjkct/6qK4uQFmgPOAy0w=; b=gtUCbW4RmUt/bukcn3qOWY1ySjl8czM9L72KV3O8nG0ADHZ47l/FRwzOBnJzROdkYV l08pQQGz87KOT2GX1tw2zb2q5IA89uL0e1LZD9czM40OXF8VHtNf4y65TpWS4jkYmYRt br/sKgU9vWKD/Rilc+X+uci9OHwQAzfxw2dpNkBwJGZzDwiJHZOZrOANVxvGPLsBeEL8 K0LwvHPfWhAqy2Ic8h0CDoJlbYmG/4pM3AOyXSDg7RedjWNQ8NbFE6rli0J+ygdK6Bl7 JbyK7Auz31VGRYnDdhOKBHkD0rBMVVbXf/7CjDH+S15A1dbRpb6ELGR6VUtRnD1UCL+0 +Chw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415034; x=1772019834; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=P6CIgFqyYot5rxLSuNCk9EOjkct/6qK4uQFmgPOAy0w=; b=PtiSWxBM+6I5CfMgq+CNGMxZrqCS+MGMqoVzWrvGqzXFR5SCqu4jrdyaA/evdZSxp4 I8TKg08cFxVr6UYZsixPfWW1E51QNt2t7LHRtkMT2jAqYDa9eHY4E8j0FnRv1RK5jcp7 hLAxBGUznh7FmFKJgewlXqwkoP/lGP1/7vwn9JXnmjWrup38Tqh/J7PNRg3NCxv8Oaxz FWyOEva+1oPZeDYihr42PJAajsEFt+H5TMnMtjrQYNdPRgKe32/0WgH0kZtShwd4Re1E hin7nyJrpa4NcQsQ6opm7YsrBi31PPLvxf7OF96RrtNk857HDMdypJyvMwheiHEowukE jJvg== X-Forwarded-Encrypted: i=1; AJvYcCXG2DILuIr1hS4kQPagazUEthYkRrO1QBsfctSP744TmtRPTNdlb7IPBIxDrF3qyaELtPAMd+DBAk4v@nongnu.org X-Gm-Message-State: AOJu0YwI7gRvPUZ+4IOk7v5ukNn5xBGIHAkonC4Obmno9ucnX87lJr4x siXYZfN8FezyNDDctA9WvWG0YojAlbO8yjT2N5tM7KoN2oxfL2kHQMhhQC6ESNXTjolQUmo0XEG 2wX0MRt0skgjGl4JgF01h7Y60gtRYJIoavYbt7mZnQ0cGk8yu+musQOrA X-Gm-Gg: AZuq6aJpJBPofBnk9re466CdxEKuBYHHCDTBJVRv+NoJyaVkoV+RvFAijpqSaWgE4qO NT4y5btrsS+x3fOrLsI2ddkhto+zl1pRst7XkIF9lA75FkXVzfGsr9Mo2oQr1R5fpZ1/gMArsYj bYb+JpXsdmCNrQi+wzQiAeg3L83NECoiG9tOd14qVtJd13eHp7DxAXi/E7SAXYuChliNvXy+N5o uekBeFdHCPoWydm6S4LpUu5K+9tdIzwNt2EB0kT34Lq1GBpgP+5WkilckwNx6mcM2TErReWaRDH pV95Ev34BZARK59W5WRSMzns8UFh76wu3iUlZBJEjUvz9nyFcBYAlsTsZvUHldzSFt/VFFigW0g i2jz8TY/a4h8ZWgBprIDViHY3qig8GYyOaQR/mls7PvS6nn6EYD7V X-Received: by 2002:a17:902:f652:b0:2a9:5f11:3a34 with SMTP id d9443c01a7336-2ad50e99e7amr12699175ad.13.1771415033690; Wed, 18 Feb 2026 03:43:53 -0800 (PST) X-Received: by 2002:a17:902:f652:b0:2a9:5f11:3a34 with SMTP id d9443c01a7336-2ad50e99e7amr12699095ad.13.1771415033276; Wed, 18 Feb 2026 03:43:53 -0800 (PST) From: Ani Sinha To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 22/34] hw/vfio: generate new file fd for pseudo device and rebind existing descriptors Date: Wed, 18 Feb 2026 17:12:15 +0530 Message-ID: <20260218114233.266178-23-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415118420158500 Normally the vfio pseudo device file descriptor lives for the life of the V= M. However, when the kvm VM file descriptor changes, a new file descriptor for the pseudo device needs to be generated against the new kvm VM descript= or. Other existing vfio descriptors needs to be reattached to the new pseudo de= vice descriptor. This change performs the above steps. Tested-by: C=C3=A9dric Le Goater Signed-off-by: Ani Sinha Reviewed-by: C=C3=A9dric Le Goater --- hw/vfio/helpers.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/hw/vfio/helpers.c b/hw/vfio/helpers.c index f68f8165d0..e2bedd15ec 100644 --- a/hw/vfio/helpers.c +++ b/hw/vfio/helpers.c @@ -116,6 +116,89 @@ bool vfio_get_info_dma_avail(struct vfio_iommu_type1_i= nfo *info, * we'll re-use it should another vfio device be attached before then. */ int vfio_kvm_device_fd =3D -1; + +/* + * Confidential virtual machines: + * During reset of confidential vms, the kvm vm file descriptor changes. + * In this case, the old vfio kvm file descriptor is + * closed and a new descriptor is created against the new kvm vm file + * descriptor. + */ + +typedef struct VFIODeviceFd { + int fd; + QLIST_ENTRY(VFIODeviceFd) node; +} VFIODeviceFd; + +static QLIST_HEAD(, VFIODeviceFd) vfio_device_fds =3D + QLIST_HEAD_INITIALIZER(vfio_device_fds); + +static void vfio_device_fd_list_add(int fd) +{ + VFIODeviceFd *file_fd; + file_fd =3D g_malloc0(sizeof(*file_fd)); + file_fd->fd =3D fd; + QLIST_INSERT_HEAD(&vfio_device_fds, file_fd, node); +} + +static void vfio_device_fd_list_remove(int fd) +{ + VFIODeviceFd *file_fd, *next; + + QLIST_FOREACH_SAFE(file_fd, &vfio_device_fds, node, next) { + if (file_fd->fd =3D=3D fd) { + QLIST_REMOVE(file_fd, node); + g_free(file_fd); + break; + } + } +} + +static int vfio_device_fd_rebind(NotifierWithReturn *notifier, void *data, + Error **errp) +{ + VFIODeviceFd *file_fd; + int ret =3D 0; + struct kvm_device_attr attr =3D { + .group =3D KVM_DEV_VFIO_FILE, + .attr =3D KVM_DEV_VFIO_FILE_ADD, + }; + struct kvm_create_device cd =3D { + .type =3D KVM_DEV_TYPE_VFIO, + }; + + /* we are not interested in pre vmfd change notification */ + if (((VmfdChangeNotifier *)data)->pre) { + return 0; + } + + if (kvm_vm_ioctl(kvm_state, KVM_CREATE_DEVICE, &cd)) { + error_setg_errno(errp, errno, "Failed to create KVM VFIO device"); + return -errno; + } + + if (vfio_kvm_device_fd !=3D -1) { + close(vfio_kvm_device_fd); + } + + vfio_kvm_device_fd =3D cd.fd; + + QLIST_FOREACH(file_fd, &vfio_device_fds, node) { + attr.addr =3D (uint64_t)(unsigned long)&file_fd->fd; + if (ioctl(vfio_kvm_device_fd, KVM_SET_DEVICE_ATTR, &attr)) { + error_setg_errno(errp, errno, + "Failed to add fd %d to KVM VFIO device", + file_fd->fd); + ret =3D -errno; + } + } + return ret; +} + +static struct NotifierWithReturn vfio_vmfd_change_notifier =3D { + .notify =3D vfio_device_fd_rebind, +}; + #endif =20 void vfio_kvm_device_close(void) @@ -153,6 +236,11 @@ int vfio_kvm_device_add_fd(int fd, Error **errp) } =20 vfio_kvm_device_fd =3D cd.fd; + /* + * If the vm file descriptor changes, add a notifier so that we can + * re-create the vfio_kvm_device_fd. + */ + kvm_vmfd_add_change_notifier(&vfio_vmfd_change_notifier); } =20 if (ioctl(vfio_kvm_device_fd, KVM_SET_DEVICE_ATTR, &attr)) { @@ -160,6 +248,8 @@ int vfio_kvm_device_add_fd(int fd, Error **errp) fd); return -errno; } + + vfio_device_fd_list_add(fd); #endif return 0; } @@ -183,6 +273,8 @@ int vfio_kvm_device_del_fd(int fd, Error **errp) "Failed to remove fd %d from KVM VFIO device", fd= ); return -errno; } + + vfio_device_fd_list_remove(fd); #endif return 0; } --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415122; cv=none; d=zohomail.com; s=zohoarc; b=JARnzDonoAv4QrSDE+KYjghFFEOY+e88nP9KZbR7z1Xu6A8wTeQ5PAk59QvnRq2C5CpocuKNd6S6ZX6LLe91Xj6x/6hp7hzYYnp6Sz3TNo1CSr3DUk8v3cEWDjxYVatObi6SGtUpAW2wdwsYoleylfaEdmq3HBQgkmwsZ05luS4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415122; h=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=UZjupKNTcRQ4mvrXCw54dQwnzt6+1apWExSeFIvKWxA=; b=OSIy8dLPXn9qnQXDz9VXockownxIFM0f9IJ9wlndzT+6JVQv/bDgMcPIzwfKyO6g5ykvlFgFawwhFPtSe0bhltRRyXhJl5sSb7R3vlkRIapM0YjXutcHAdy5ESUMDzI/QNYxx1USJ5dG/1jbXIKrGH8ltab5bZFlzB8oz6tyFXU= 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 1771415122251705.7320695251082; Wed, 18 Feb 2026 03:45:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfyt-0004LQ-Vu; Wed, 18 Feb 2026 06:44:40 -0500 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 1vsfyW-0003wP-Ex for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:14 -0500 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 1vsfyL-0007vm-Hi for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:03 -0500 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-2-8bIRKhbWONy_pQKH8W0pog-1; Wed, 18 Feb 2026 06:43:59 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2a75ed2f89dso62619615ad.1 for ; Wed, 18 Feb 2026 03:43:58 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415040; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UZjupKNTcRQ4mvrXCw54dQwnzt6+1apWExSeFIvKWxA=; b=cJd3QDPI+z2LNGyGGg9SpHt1WQBUeKSqxkuqKLklrYnW2p4t/3I0lcjCM6XMIdANmF6e60 hhuyf2iFoHJ/5NG9FUeHt9u5VfUU4R3+tjzNXzaQhod7lQ9RzkjQAzEXwqmC+3SOynQwMS v3zsip3fFj0CiTRV/Zk9DHw1AOETBrU= X-MC-Unique: 8bIRKhbWONy_pQKH8W0pog-1 X-Mimecast-MFC-AGG-ID: 8bIRKhbWONy_pQKH8W0pog_1771415037 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415037; x=1772019837; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UZjupKNTcRQ4mvrXCw54dQwnzt6+1apWExSeFIvKWxA=; b=VtclvY6ku6uV86kbsEpz5BPBcPpvQxvNgHMPVMjDZYp8d3Y1gOzNMxNeIx3BAhjbpe 11rMVnwWEe5lFXbFDnzzDQxkjlDQ0UBVQ6Zanwx2UpaS+yiA+UfudbFyKCTZchABDPmt KEd3ufj516DmK7wl1Er1mkcqEw49K3I6mklvkFj25My11E2EuJX27WIXJN5Wx/yU5rsV PPLEY9Rrqlu4dAL+vg6bOlwqp4HJ2hGgrlrZs4tL889VXMGv4BAhIjHUJttZ3xMHA2M0 n3dG3a81q49dcLZTGUfBFfi22Nii9ffzY56/9k7+bYdH4OBn1NBbcGPEqmczJIt+8JoW UqxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415037; x=1772019837; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=UZjupKNTcRQ4mvrXCw54dQwnzt6+1apWExSeFIvKWxA=; b=L2fFifnqS/K9vUmAX1gfrTnloOXxOl9dLro1hSzVuDibry0DOAP/yD9ptpgpYDLBbG H2DEKBvCtQtaEX8ODA0SUd0voKbAiswnfR82zGnSqEZRtGTgmMLl2+YCACSQscdf1Izt 7pj/RmIX5KNsnKZCaR3Tncg/tuixQXl6qt8kn+uirpv4APtNgJfIuSzZjonPaLE5V4KN zlQhnP/BQq1j+JHYwv0fSe6Ykf2gfDRyT6wVxA088kPg6ILHrWxTYNprPhXGHPyb2WYj d4hMPPZn1ecBQy7a3KErQaXcirwunDHuep+bzG8no8pYd/T43Yt6g4wIll+/AI/E3Z5t f9lw== X-Forwarded-Encrypted: i=1; AJvYcCWZFAKGzFL7E539x+5JEezvvG8/iIkf36tDYlTG/VYsINGvbCCnEqcGjI7Tm/FZ9EW31CbeL/Ot+83S@nongnu.org X-Gm-Message-State: AOJu0YzjaEyw95SMAdyMxGGs3VGk+tjm5ffVYhZ22RLn4awWPxt2cd4r LjASVFg7Dt+4/W452fXjQuivHQPIz4awUwAq61fkHitYMrDe7YebEPp5v5pQOewpl0DJVkRPB0R vuLONG2UyayEijQvKwcyiLsQVEEuwMW230dfWJntGN2bZ1YrlvlwpFduBxX1Kl/0H X-Gm-Gg: AZuq6aLBpygQN0XwFP3IieBw0cMjLijoXJZofvRenlYmkw4mkdyOe0JTrxoO4keZZZr S66wn1xTud5EreDVq234efqXc8q+uHE2ZaBdbsiVCNjPfNhwtf7zXHwhDVuBVgRe6g17G02VRtU bSUpgv8BpDJIYW4YY/HWjQ99viayKh4OJvQ/2cY4sImdpYTmPM1uf8XSVM3hgBzJRwZrCMFN+XD v5TcyQy4ftG1ocXgXQNTb+4coDscm6RUzjW4Qzq/VVNAW6oAqCjCdKgeSdFYD4PkQ3agzsvjBlX MRn7g5RGcoZ68btEa8hBXwPSTgrmCluaH6lNSDEwLGfkXMyLQsXKpr0TKeeW58qLF2ylCnrG5lJ AXQRKjPOa3NrDUkJrLZrVFVTRuwM75Ned1Gdx7u1rH/4wmkWtSUX/ X-Received: by 2002:a17:903:11d0:b0:2a9:4369:940c with SMTP id d9443c01a7336-2ad175366bfmr143509085ad.53.1771415037088; Wed, 18 Feb 2026 03:43:57 -0800 (PST) X-Received: by 2002:a17:903:11d0:b0:2a9:4369:940c with SMTP id d9443c01a7336-2ad175366bfmr143508945ad.53.1771415036685; Wed, 18 Feb 2026 03:43:56 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Richard Henderson , Eduardo Habkost , "Michael S. Tsirkin" , Marcel Apfelbaum Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 23/34] kvm/i8254: refactor pit initialization into a helper Date: Wed, 18 Feb 2026 17:12:16 +0530 Message-ID: <20260218114233.266178-24-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415124864154100 Content-Type: text/plain; charset="utf-8" The initialization code will be used again by VM file descriptor change notifier callback in a subsequent change. So refactor common code into a new helper function. Signed-off-by: Ani Sinha --- hw/i386/kvm/i8254.c | 68 +++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c index 81e742f866..255047458a 100644 --- a/hw/i386/kvm/i8254.c +++ b/hw/i386/kvm/i8254.c @@ -60,6 +60,43 @@ struct KVMPITClass { DeviceRealize parent_realize; }; =20 +static void do_pit_initialize(KVMPITState *s, Error **errp) +{ + struct kvm_pit_config config =3D { + .flags =3D 0, + }; + int ret; + + ret =3D kvm_vm_ioctl(kvm_state, KVM_CREATE_PIT2, &config); + if (ret < 0) { + error_setg(errp, "Create kernel PIC irqchip failed: %s", + strerror(-ret)); + return; + } + switch (s->lost_tick_policy) { + case LOST_TICK_POLICY_DELAY: + break; /* enabled by default */ + case LOST_TICK_POLICY_DISCARD: + if (kvm_check_extension(kvm_state, KVM_CAP_REINJECT_CONTROL)) { + struct kvm_reinject_control control =3D { .pit_reinject =3D 0 = }; + + ret =3D kvm_vm_ioctl(kvm_state, KVM_REINJECT_CONTROL, &control= ); + if (ret < 0) { + error_setg(errp, + "Can't disable in-kernel PIT reinjection: %s", + strerror(-ret)); + return; + } + } + break; + default: + error_setg(errp, "Lost tick policy not supported."); + return; + } + + return; +} + static void kvm_pit_update_clock_offset(KVMPITState *s) { int64_t offset, clock_offset; @@ -241,42 +278,13 @@ static void kvm_pit_realizefn(DeviceState *dev, Error= **errp) PITCommonState *pit =3D PIT_COMMON(dev); KVMPITClass *kpc =3D KVM_PIT_GET_CLASS(dev); KVMPITState *s =3D KVM_PIT(pit); - struct kvm_pit_config config =3D { - .flags =3D 0, - }; - int ret; =20 if (!kvm_check_extension(kvm_state, KVM_CAP_PIT_STATE2) || !kvm_check_extension(kvm_state, KVM_CAP_PIT2)) { error_setg(errp, "In-kernel PIT not available"); } =20 - ret =3D kvm_vm_ioctl(kvm_state, KVM_CREATE_PIT2, &config); - if (ret < 0) { - error_setg(errp, "Create kernel PIC irqchip failed: %s", - strerror(-ret)); - return; - } - switch (s->lost_tick_policy) { - case LOST_TICK_POLICY_DELAY: - break; /* enabled by default */ - case LOST_TICK_POLICY_DISCARD: - if (kvm_check_extension(kvm_state, KVM_CAP_REINJECT_CONTROL)) { - struct kvm_reinject_control control =3D { .pit_reinject =3D 0 = }; - - ret =3D kvm_vm_ioctl(kvm_state, KVM_REINJECT_CONTROL, &control= ); - if (ret < 0) { - error_setg(errp, - "Can't disable in-kernel PIT reinjection: %s", - strerror(-ret)); - return; - } - } - break; - default: - error_setg(errp, "Lost tick policy not supported."); - return; - } + do_pit_initialize(s, errp); =20 memory_region_init_io(&pit->ioports, OBJECT(dev), NULL, NULL, "kvm-pit= ", 4); =20 --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415161; cv=none; d=zohomail.com; s=zohoarc; b=k8HbilWOm6KCwP0Bu1OqRzlfAcYmgYE+uPJZzqB+I1t6j0AZja8iRbNlb2DeVvKbe1u3qtz9430waXrk5+X7zeyj7Pk8j3BGSMdqIorlJxXroTuNBcYrGAnfi8H7m032P3aYYBGAudd6dm0AKV9XcS3ycP20tUSsIjfNGXG8r+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415161; h=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=i567b0vkVMDwtdwVAwszAB2dBBQ7q9jKGjjwGdoXxsw=; b=eEuW7ubdIeqOI5Ek6HUfySVRXqC33S3RuIsoBiEjei/8Nk8clos8sA89bAUHMrNSf67HHzCFE0Eh1XADOE/WiVjv8AnwHnQJBqu0aeWmYBKkMfA9ZDvHcjUkAY3OMvtXxLi6eoeeu5SL9eXMDZ+BULe7URN8Svh0KXo46tSXkKY= 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 1771415161249772.1202717424736; Wed, 18 Feb 2026 03:46:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfzG-0005iN-45; Wed, 18 Feb 2026 06:44:58 -0500 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 1vsfya-00042j-2L for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:16 -0500 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 1vsfyX-0007wF-Tg for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:15 -0500 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-498-Jiy1fpikMSq0Nw0avLrKcg-1; Wed, 18 Feb 2026 06:44:01 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2aae146bab0so63754625ad.0 for ; Wed, 18 Feb 2026 03:44:01 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.43.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:43:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415043; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=i567b0vkVMDwtdwVAwszAB2dBBQ7q9jKGjjwGdoXxsw=; b=YTjHBx3lFHPkaL8visi/xk3E1EyezRES20122c87Q6Vi593v73O6oSs7QDGMv2Mvm0G6OP 9yxlZs7x58t9EMbnW0GEJipn0b6er4AC4bHzhOteINTvV5XlfkrMVXFRWlsWWfi7O2DaSY M2f2oGBOZfMCpOV9Zn9Fo49p+qwga1E= X-MC-Unique: Jiy1fpikMSq0Nw0avLrKcg-1 X-Mimecast-MFC-AGG-ID: Jiy1fpikMSq0Nw0avLrKcg_1771415040 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415040; x=1772019840; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=i567b0vkVMDwtdwVAwszAB2dBBQ7q9jKGjjwGdoXxsw=; b=N0apZ3kjCh8qdVjRoBQr9AQq2A8KwLONaot4LMVBtYzcQEkerHu7Gq21E7eNq0bdcW 6OP+GOwjkbiJC5FbMpKDF84QjdXyzcBAdBSF6lyELukzl1ycG/s9kxnoUM0E/W9+tLis MMqRxHWuG3rIpXGawBWr6HLuQ8Rje92q3QZuG54/OVvywJwt3osFGNoEI1niQv7v9u6O 9aGih5JSmfi+Hnhbeod5PPMyvutvL5TeFSfEsVBAi98tDqrvkweiR2ixCtK5Gj3i/4kc po4yRvDhVoC66R7NiEDn+EOj6gVCgDqmXvXqXmVwslVFQiwpNViVwl7p8Z1XmYDpdFIt zOcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415040; x=1772019840; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=i567b0vkVMDwtdwVAwszAB2dBBQ7q9jKGjjwGdoXxsw=; b=LdI+MsRrM/K/fY8uQU39EZOSxacqa05N9hJjeR9a8G6ujXnLOMjaG3rha7Jo45O16p 8EYy7xK+/4yTmPDGQc8UV0TGvf23UwHPSUhEdmWw+oDe0SNS+9BPmYallcu6ZiUnA0NK 5maUO5j9C3MrRpXlfM8NlqszhsBMyrcb0hM65GVscwR/1qrO9tGvJHodQvWty+oyuxuI 3MijmtbB+P5XLZ05WzuC6VhipS+hOrR5GEnaegZZLqHs5SZLbs2srb6pmQCy6EG8PdtM l9u8lnTh8TN2TD0VFekfdMHVRyoV73YAIAehgfnY9uwHPVIjOdPYoxuku4qpyTPdHnwz m8Vg== X-Forwarded-Encrypted: i=1; AJvYcCXyhODSrpPepUkvKgvPWks3yJW4XTYbKRc+FXppN45wnIES6CEvPeUayfqFAEqU4W0R90kpJTqJruAW@nongnu.org X-Gm-Message-State: AOJu0YzEm9JveUUrFM702dR8eiAS6No5r6ieWUAmZGRE8Ii+Y+OCDpoZ i3prKu7DNz9nxcanwiuyp2ojJcC79+MjZgEXvH6jl2RzL6yZmnyKVF50zW+yK0YAAEDi0W7W35y urfPwhCCqRKkyar1WrNKdmh7ebqg+V8ZzFIs8JdVCWPK3aBCQRftNWCnR X-Gm-Gg: AZuq6aJR9tf6XTNe6cfAw2EW8GkaTBIwD3l+c3bX72tFX9Ipole91nPF+5Z9b5EFRFC 5rL2MQbGgZLajO7GaspiW16RBmpeyOv5Umqzc6otfuf+Yepo5zjrrswcCYCRZYA8DmvTP4H7L42 HsGPT4I/f5oyqh+y659J8yXQEHHbEyXT/9R/VCBn8dum08ISDeEkVV1ljl/vzUSk7sP6JSdJo5R Uah99IEBfZgRhvl2bOvUSb8acEAeFeszNj5HTLkM0tApS2M0LPQ+R5p8ZEFwFjsFhE/+116wfSJ IE3SrKDrqSlr/X4RI891ii1dW1D5syMC2121mMxmf3yxCto3wV4ZK7G17moUGtK5BhkkxRKBfHZ I5oKCZqMMLJxPD9Gnv0nB3aOdiDKhCCHCIxDkN2UL4lN6CSZtBoXX X-Received: by 2002:a17:903:3d0b:b0:2a7:a9e4:babc with SMTP id d9443c01a7336-2ab50647207mr184076235ad.61.1771415040508; Wed, 18 Feb 2026 03:44:00 -0800 (PST) X-Received: by 2002:a17:903:3d0b:b0:2a7:a9e4:babc with SMTP id d9443c01a7336-2ab50647207mr184076035ad.61.1771415040119; Wed, 18 Feb 2026 03:44:00 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Richard Henderson , Eduardo Habkost , "Michael S. Tsirkin" , Marcel Apfelbaum Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 24/34] kvm/i8254: add support for confidential guest reset Date: Wed, 18 Feb 2026 17:12:17 +0530 Message-ID: <20260218114233.266178-25-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415162459158500 Content-Type: text/plain; charset="utf-8" A confidential guest reset involves closing the old virtual machine KVM file descriptor and opening a new one. Since its a new KVM fd, PIT needs to be re-initialized again. This is done with the help of a notifier which is inv= oked upon KVM vm file descriptor change during the confidential guest reset proc= ess. Signed-off-by: Ani Sinha --- hw/i386/kvm/i8254.c | 23 +++++++++++++++++++++++ hw/i386/kvm/trace-events | 1 + 2 files changed, 24 insertions(+) diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c index 255047458a..70e8fd83cd 100644 --- a/hw/i386/kvm/i8254.c +++ b/hw/i386/kvm/i8254.c @@ -35,6 +35,7 @@ #include "hw/core/qdev-properties-system.h" #include "system/kvm.h" #include "target/i386/kvm/kvm_i386.h" +#include "trace.h" #include "qom/object.h" =20 #define KVM_PIT_REINJECT_BIT 0 @@ -52,6 +53,8 @@ struct KVMPITState { LostTickPolicy lost_tick_policy; bool vm_stopped; int64_t kernel_clock_offset; + + NotifierWithReturn kvmpit_vmfd_change_notifier; }; =20 struct KVMPITClass { @@ -203,6 +206,23 @@ static void kvm_pit_put(PITCommonState *pit) } } =20 +static int kvmpit_post_vmfd_change(NotifierWithReturn *notifier, + void *data, Error** errp) +{ + KVMPITState *s =3D container_of(notifier, KVMPITState, + kvmpit_vmfd_change_notifier); + + /* we are not interested in pre vmfd change notification */ + if (((VmfdChangeNotifier *)data)->pre) { + return 0; + } + + do_pit_initialize(s, errp); + + trace_kvmpit_post_vmfd_change(); + return 0; +} + static void kvm_pit_set_gate(PITCommonState *s, PITChannelState *sc, int v= al) { kvm_pit_get(s); @@ -292,6 +312,9 @@ static void kvm_pit_realizefn(DeviceState *dev, Error *= *errp) =20 qemu_add_vm_change_state_handler(kvm_pit_vm_state_change, s); =20 + s->kvmpit_vmfd_change_notifier.notify =3D kvmpit_post_vmfd_change; + kvm_vmfd_add_change_notifier(&s->kvmpit_vmfd_change_notifier); + kpc->parent_realize(dev, errp); } =20 diff --git a/hw/i386/kvm/trace-events b/hw/i386/kvm/trace-events index 67bf7f174e..33680ff82b 100644 --- a/hw/i386/kvm/trace-events +++ b/hw/i386/kvm/trace-events @@ -20,3 +20,4 @@ xenstore_reset_watches(void) "" xenstore_watch_event(const char *path, const char *token) "path %s token %= s" xen_primary_console_create(void) "" xen_primary_console_reset(int port) "port %u" +kvmpit_post_vmfd_change(void) "" --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415120; cv=none; d=zohomail.com; s=zohoarc; b=DaWzp4bBk7CAg3BkGOAAXACKCHDXW8BkIbMLR8dzTHEYTvz4L2IBemeNV/DLYbjxqlyajaCFLARydcYsPK3Ofhyp/m/IQyimVDwktQlQ1bbMObX1sEujKS2uZ8aAHzIkRUxS+r6IAiFT4KONaC+PfYI8PavgdxW8Yym5kJM7suY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415120; h=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=1p5ZbFdSM+FDKoKqpM0RbDlLtsFLRzSauSxJ1myhHy4=; b=gwBrI7JUj4lgibiXzdO+iepm7uqFtNvAJt42ZriNVHym2WHRA+fSq6pkDBES0Ywn1V7L1NtuCMZZNEHH5gt/YBjqthf56/TefL+CWilyD+pCdqu7maf9zv/Mjhn5Cv14TbN2hKqpZ3FEgUY9vYJH4j2vBD95b1qnHCmZRCTcDPQ= 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 1771415120054105.38149811123867; Wed, 18 Feb 2026 03:45:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfz9-0004pD-B5; Wed, 18 Feb 2026 06:44:51 -0500 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 1vsfyY-0003xI-Ih for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:15 -0500 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 1vsfyW-0007wU-5X for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:13 -0500 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-423-q2So8HxEPlOox_Y0CIelQA-1; Wed, 18 Feb 2026 06:44:04 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2a79164b686so70805925ad.0 for ; Wed, 18 Feb 2026 03:44:04 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415045; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1p5ZbFdSM+FDKoKqpM0RbDlLtsFLRzSauSxJ1myhHy4=; b=MDbHzOYz+hQCX2kuXf9s42TsiqCENPhntJsc3jQpWaF/ShgLtN41bbVbzxY0TPNNETXaHe 2o3kzOehzBa2tZMu3jbuCcAqO8JLil4NS2NdKP22l6qaygY217Wht7LRawVOKPBszzbQBu uo87xAy6XQ5i2gcNoRjzBu+7O7RE3AY= X-MC-Unique: q2So8HxEPlOox_Y0CIelQA-1 X-Mimecast-MFC-AGG-ID: q2So8HxEPlOox_Y0CIelQA_1771415043 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415043; x=1772019843; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1p5ZbFdSM+FDKoKqpM0RbDlLtsFLRzSauSxJ1myhHy4=; b=Kg9AuDCYhPq+0NoaF89lc/hnePdr7Q1wFifILIEIWnnK2KMLnxoCikd8MkIbXAtKkB Q3ktesvqmAGbCu0Tmp3cqCFs2TrYMWNuwKQxZ04PIwa1KdEduHzgc4IrPsIZmFTopIyZ GKOA8MHtCyaJGV3HPqphfmyg8idCdVMhJlFK6h4XM5yOKmbUoh7Rp3tsyiPs7ot2CXWn Wih5Fh9AofxgAMDWP/31x1FxI6Kptwx4njHZNP1HJsV2Euriuu/kzGqDuFpVq6oJ9hRr df5f8Owzao4SEeoj9nIjanyAZcfBtAGXFwWi/mLoQTzCPW4V/llWQ5cmS/RtYNStXrXl MYfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415043; x=1772019843; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1p5ZbFdSM+FDKoKqpM0RbDlLtsFLRzSauSxJ1myhHy4=; b=wuNgdOaZ+5x7Okl0c23MBtYWouN7CsveFyuEuXNWs0ckBmloQRisbNjGXQrVqT4KOI fhxy/yKtoM+XncX07GiKjrwg6oItTt+GzaZAbkgheu+UkBUcGqfWeL+Sqp1iGBXQaTYT yq1WAHW9YsCwcOV8HrsvZdyXsfGlCVYEBEWXBqksDwENIs7+YOz3dO85pAZah9pMVr/w cQFRwoAsPw6LL0HVVsL+CzOWhb7trKmhYRryLBcDGHguV7SYYAgroE3HcOcbSEBWxuNV 54xeX017eFWJZsBW2WNDgjFfHZPQGG9pW3fAkpGMEvSABMj4u8GoHgrwh9fNkHfqBdBS ZXUQ== X-Forwarded-Encrypted: i=1; AJvYcCUlbH1GF5F+Aba5WLTMQ8VLKiA2+3VJs9ebzH/joFnpnTnLAL6Q5z9fBkBVbfM4JFfRfsKguXVmX13j@nongnu.org X-Gm-Message-State: AOJu0YzcFfgIb6NveMdVJ8M2+tTBZIbhig4F3qi9rvwV1ZF1PfX0YkXX mGnSSawcAnH89WTsCCqruE5H3jgUGxMelHwF6qpEBzLP4JknzPzNEWAzJLQAGDsrewnwL9zUtWJ /MNureHb4Z+r5TGG4lD5RO2XZYRI+EZu7KgwuW1wAwFMRu9iShwNuRepZ X-Gm-Gg: AZuq6aI6ICZMbkkw8aRLswqucITs5QaLo9U3/kWVAdIUMZeHa/JTJfFhr2PATkrT8OI qQAKuqqNkh7es4RYUR7veGnFA9JmPpbUMWqQolwnJoqhLY7Iy9a7stNVBsGmQgjr4ISyEMx+kHE ZsfXCPEVPKP6NfngbO7E6ZFPpSyxlcpaH0xr5MVIieOT7BlW3Q4RpsRldgfjX7aty/bPukwzajZ 4ucIhnL6XdxBmJp0QWQasVpj91Cyp7U48YcxKTQ0hmfA3G5S0+jBAnBodgX8GqTLbaTUHfKqQhI ShULwPKuzjmCR+oXXG7EJsRr99aAuMl0x1fpnVcCH0WTCZEOUJz/f/q4NHBZhwBgQf1aHIonfqB bgORtP4Yo0BhyfDcvUfC2eaul/tcU2eGX24udlDot9FG1foGPjQbV X-Received: by 2002:a17:902:f681:b0:2a0:fb1c:143d with SMTP id d9443c01a7336-2ad50e74e46mr13383125ad.1.1771415043428; Wed, 18 Feb 2026 03:44:03 -0800 (PST) X-Received: by 2002:a17:902:f681:b0:2a0:fb1c:143d with SMTP id d9443c01a7336-2ad50e74e46mr13382985ad.1.1771415043043; Wed, 18 Feb 2026 03:44:03 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 25/34] kvm/hyperv: add synic feature to CPU only if its not enabled Date: Wed, 18 Feb 2026 17:12:18 +0530 Message-ID: <20260218114233.266178-26-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415122752154100 Content-Type: text/plain; charset="utf-8" We need to make sure that synic CPU feature is not already enabled. If it i= s, trying to enable it again will result in the following assertion: Unexpected error in object_property_try_add() at ../qom/object.c:1268: qemu-system-x86_64: attempt to add duplicate property 'synic' to object (ty= pe 'host-x86_64-cpu') So enable synic only if its not enabled already. Signed-off-by: Ani Sinha --- target/i386/kvm/kvm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 5c8ec77212..ff5dc5b02a 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -1761,7 +1761,7 @@ static int hyperv_init_vcpu(X86CPU *cpu) return ret; } =20 - if (!cpu->hyperv_synic_kvm_only) { + if (!cpu->hyperv_synic_kvm_only && !hyperv_is_synic_enabled()) { ret =3D hyperv_x86_synic_add(cpu); if (ret < 0) { error_report("failed to create HyperV SynIC: %s", --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415200; cv=none; d=zohomail.com; s=zohoarc; b=gP4buefkxpC4ZgSkf33KZdYUioiJtBB6Zl57wkNeeAXcWjzJ2enVbND8zS2+HhdLkHA6ZxkVXpPu6szENacndlxqd/eIXA2Wjz9Npuh+7PL/nc4cqFl+c65aD5OFN6gmZaM8/ST3zpdRUKn/DKChUtN7RPqZ4VnSWhujjit6aoM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415200; h=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=2uA6s98chAA/AAmOAgTNuehQ1wNW/fEWldjPI7yvg0g=; b=AEOmS9F/Ebo+UdfJxsrc++2YjbjFivis/P/MS+BRWwOwdUML5bVmwDcx+0s5yZRMd6mKUG68ct8sIIQKqlde4YpF5J6ae2mobJ34at7/heQdJ3L8hkTAF52azRiPPbK6ajBh17rEwT2AaG3zZ/q+SrnFvNT81LMPHoF4QwkYD+4= 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 1771415200637803.5202061345658; Wed, 18 Feb 2026 03:46:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfz8-0004hJ-4t; Wed, 18 Feb 2026 06:44:50 -0500 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 1vsfyY-0003xJ-Ix for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:15 -0500 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 1vsfyW-0007wy-6R for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:13 -0500 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-204-XK4BvaTUPNCAPbHntx4L4Q-1; Wed, 18 Feb 2026 06:44:07 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2aae146bab0so63755095ad.0 for ; Wed, 18 Feb 2026 03:44:07 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415049; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2uA6s98chAA/AAmOAgTNuehQ1wNW/fEWldjPI7yvg0g=; b=DfvG/Oom3/33HqQTMYzFdPMPMkS7wmibXerdxwg+nOTXOhNCL4e157TI+e02N/5/bcHadf dc++NUYLToljt36W+qf9dC3NMQzQZBlHHaz+gaPYXJpLvKJloVKGTMzGP0EZoiY31D0n05 tkzPXwOxw8VeuWENRf5Xg/ktx4m4OoM= X-MC-Unique: XK4BvaTUPNCAPbHntx4L4Q-1 X-Mimecast-MFC-AGG-ID: XK4BvaTUPNCAPbHntx4L4Q_1771415046 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415046; x=1772019846; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2uA6s98chAA/AAmOAgTNuehQ1wNW/fEWldjPI7yvg0g=; b=HOU3jw0KVFsD59ZdibCENJdf3M0eVNMDgjCYd14lr+hsKqBRkh6WHf2BpM1KMzdEM2 rfy6rEQPvwtEjDciRyU2pNNDr7APGaRn78BmFxbEStHdw5tlDY6txIQFbePgqX5YJEjp TWsiwP+Kpfy/nOIyYiuGm2aiUITZBO5FgARUb869Eueqmb9hTSxbEaetaAjYkhoOkjGI 91eKHXFSExw4GJfzmixgpggcwbs1VA5lc/vPJ2dTUYf1X1UGZcdrDSlhHZNg7i+7UwHs YFFnw3xMtNWIXNr4rsPQ/eSsz8BDQaI3GwiBKadXgv9lymA3TGxQtbGO8O2G52cthIxp h7Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415046; x=1772019846; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=2uA6s98chAA/AAmOAgTNuehQ1wNW/fEWldjPI7yvg0g=; b=p1d3lgsQ8bf8ozgAHWIXTz7gx6A+YaH/w9jx0jJ06PWFNnmjPT6s41I3VlB77y9MNo RowShnX8oK0kv1SXhM+3QVQgSB7ETyu01d3nXXntr23gtRpRsHidQaBYt5Mfkz7zQecn Kbb7NXyS5zVA8ZJPFZr+Id5UAHojw2QsVyIdf/lLLgdzYooCaLiJCB7JH7Zp4gNd6pzS AG/oW/ByhS+w4pbtqqCb+BOuUNcvsj77XGz6neTkJuwOxtqVV4OoqXIIP0QN6f45jQ64 gYakx9xzEaULR08OkllmTd6HxoLMDUA2X86tR6liFHnEVDYy/TUEDgMWnSqUdeCwChh7 TGTA== X-Forwarded-Encrypted: i=1; AJvYcCV0W9xvfYeEaA+go4xwAX89BNI6Tr6PuETjsErktYYBJYgoe6RM2EAcOGf1D4632+de/fzPAyyCARX8@nongnu.org X-Gm-Message-State: AOJu0YzysEOZF/yllosK0mvff6qK7SERqjp/Mfef2k7xj2eaSGWnpCTx bQQrwEMljo/A0MuXFs4/fd6Rt9n6Xj7DsiFrA0wxr3JrgMmJOPQoy4l4OPd0iDgnIgPA/YipNEF /SMEITgLxgyRaSzujjCgr+stNVGEfCh8CH7rkeqlWjQZSf1dvqPUZdymZVmNpS7bs X-Gm-Gg: AZuq6aLmIogDmTDyv1+EIxUeOZdhNxTS1cCRNMv7cimX1UZZrMkrMGQ+Ooiti/fvSCt ESSxJ981fOw9+MtsajDE5BUW5eV4J/VUeN1YnYDLsC1JfgvxgA6eYWTp8qwlKGL2xnnJGHsl4Yq WqZsfiUXx9jOgbOJDgkqd12bkD5pnH+JWDYIkanmrTaLFA+a29c2CH30lXg9h8HTgODlkwcPkZf o7HfE0R0BIUqrKJX0TCqpdQqr0pA+MF3oJbfYWcVHXWrFRsPJrMWcrz7NMnNniqaVAsAj0Xp++7 cZdQ4lf+vUJidCBG3ClgETghEZuy7hSABI7jjHItrbplxAK08qp1U5aB4nED8o2FcbK2SIxFL03 sspCZh/j5TDNiF8Lf8q4GvUEkNEkNvt8crPh4AlT8rLCwTSAiWQOh X-Received: by 2002:a17:902:e945:b0:2ab:3cba:4307 with SMTP id d9443c01a7336-2ab50569fbbmr164911755ad.22.1771415045868; Wed, 18 Feb 2026 03:44:05 -0800 (PST) X-Received: by 2002:a17:902:e945:b0:2ab:3cba:4307 with SMTP id d9443c01a7336-2ab50569fbbmr164911625ad.22.1771415045480; Wed, 18 Feb 2026 03:44:05 -0800 (PST) From: Ani Sinha To: "Maciej S. Szmigiero" Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 26/34] hw/hyperv/vmbus: add support for confidential guest reset Date: Wed, 18 Feb 2026 17:12:19 +0530 Message-ID: <20260218114233.266178-27-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415203948154100 Content-Type: text/plain; charset="utf-8" On confidential guests when the KVM virtual machine file descriptor changes= as a part of the reset process, event file descriptors needs to be reassociated with the new KVM VM file descriptor. This is achieved with the help of a callback handler that gets called when KVM VM file descriptor changes during the confidential guest reset process. This patch is tested on non-confidential platform only. Signed-off-by: Ani Sinha Acked-by: Maciej S. Szmigiero --- hw/hyperv/trace-events | 1 + hw/hyperv/vmbus.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/hw/hyperv/trace-events b/hw/hyperv/trace-events index 7963c215b1..d8c96f18e9 100644 --- a/hw/hyperv/trace-events +++ b/hw/hyperv/trace-events @@ -16,6 +16,7 @@ vmbus_gpadl_torndown(uint32_t gpadl_id) "gpadl #%d" vmbus_open_channel(uint32_t chan_id, uint32_t gpadl_id, uint32_t target_vp= ) "channel #%d gpadl #%d target vp %d" vmbus_channel_open(uint32_t chan_id, uint32_t status) "channel #%d status = %d" vmbus_close_channel(uint32_t chan_id) "channel #%d" +vmbus_handle_vmfd_change(void) "" =20 # hv-balloon hv_balloon_state_change(const char *tostr) "-> %s" diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c index c5bab5d245..64abe4c4c1 100644 --- a/hw/hyperv/vmbus.c +++ b/hw/hyperv/vmbus.c @@ -20,6 +20,7 @@ #include "hw/hyperv/vmbus-bridge.h" #include "hw/core/sysbus.h" #include "exec/cpu-common.h" +#include "system/kvm.h" #include "exec/target_page.h" #include "trace.h" =20 @@ -248,6 +249,12 @@ struct VMBus { * interrupt page */ EventNotifier notifier; + + /* + * Notifier to inform when vmfd is changed as a part of confidential g= uest + * reset mechanism. + */ + NotifierWithReturn vmbus_vmfd_change_notifier; }; =20 static bool gpadl_full(VMBusGpadl *gpadl) @@ -2347,6 +2354,33 @@ static void vmbus_dev_unrealize(DeviceState *dev) free_channels(vdev); } =20 +/* + * If the KVM fd changes because of VM reset in confidential guests, + * reassociate event fd with the new KVM fd. + */ +static int vmbus_handle_vmfd_change(NotifierWithReturn *notifier, + void *data, Error** errp) +{ + VMBus *vmbus =3D container_of(notifier, VMBus, + vmbus_vmfd_change_notifier); + int ret =3D 0; + + /* we are not interested in pre vmfd change notification */ + if (((VmfdChangeNotifier *)data)->pre) { + return 0; + } + + ret =3D hyperv_set_event_flag_handler(VMBUS_EVENT_CONNECTION_ID, + &vmbus->notifier); + /* if we are only using userland event handler, it may already exist */ + if (ret !=3D 0 && ret !=3D -EEXIST) { + error_setg(errp, "hyperv set event handler failed with %d", ret); + } + + trace_vmbus_handle_vmfd_change(); + return ret; +} + static const Property vmbus_dev_props[] =3D { DEFINE_PROP_UUID("instanceid", VMBusDevice, instanceid), }; @@ -2429,6 +2463,9 @@ static void vmbus_realize(BusState *bus, Error **errp) goto clear_event_notifier; } =20 + vmbus->vmbus_vmfd_change_notifier.notify =3D vmbus_handle_vmfd_change; + kvm_vmfd_add_change_notifier(&vmbus->vmbus_vmfd_change_notifier); + return; =20 clear_event_notifier: --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415210; cv=none; d=zohomail.com; s=zohoarc; b=P97j2tGH4TStG1Xf37GBsOTXaOOnYXjSauKOIbDDu1dcDFDC+VLp9RAQx+9Md/QH2GwLTtBiesEHe9GbVQkIfyJEcee2gZ2hpRP8BHvg0fAsd1xrWHt/HD4ZVCaSdG6WCskJ355q+KTWYV+JY7RKF7rsWhCggYACfKmBXbbP+CM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415210; h=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=Lc7U1GbS1JHxjc6G1Vv9nRCpYH775c/aB7pSkgG/wFs=; b=h5bEJT6RxTf0ShLuDHtSXMGKa6D7Nrfc8tJLJegIuFJQfY8aBAb/UZ1Pl1eTnqYShKNJLtDKD5db/1b5KzcJLnPBgBv2694eFtgt1VT/nKpK8dB3y4kq6cRXK/63DOBbRPECiORdrN2QZYv/wbaQgVqleEk9149R6+lboPzDJv0= 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 1771415210462275.1247148897048; Wed, 18 Feb 2026 03:46:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfz8-0004hU-7o; Wed, 18 Feb 2026 06:44:50 -0500 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 1vsfyZ-0003zG-MG for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:16 -0500 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 1vsfyW-0007x3-8s for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:15 -0500 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-426-Lsv1dRo5PZSkPSpkEwDnCA-1; Wed, 18 Feb 2026 06:44:10 -0500 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2ab0b2e804cso69692755ad.3 for ; Wed, 18 Feb 2026 03:44:10 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415051; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Lc7U1GbS1JHxjc6G1Vv9nRCpYH775c/aB7pSkgG/wFs=; b=Vv6AQx+7FPzipL5BqjdS5w+JCSSTM3QXlwRnihfS1FA4BnlWE/4fbIo2/SQB0w+CoOyhUS c1eBpLxHpEyKC3+up4q0XZZCBGNDxWDMStE2NxQdhVwZhEEQdmTVS42gLvNk9xJMwuan8C cIdWP8mW7t/3UCMlx5K5b89GuXrm3f4= X-MC-Unique: Lsv1dRo5PZSkPSpkEwDnCA-1 X-Mimecast-MFC-AGG-ID: Lsv1dRo5PZSkPSpkEwDnCA_1771415049 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415049; x=1772019849; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Lc7U1GbS1JHxjc6G1Vv9nRCpYH775c/aB7pSkgG/wFs=; b=t7bPE/PtL6Op3n/XOfREBTs15TYyr6++U6rqkcss0C+S8hOByUZ7ekrg5N6Htpg+oV za6ZJwjbR+gKnDFUcJo6pCWODPMSWDBbF1d+TqC87iuie3sjM9PfzFtg+X0szPfrg9PW OXj3Ty/XEFOeTg82CLfoWyErrUQToS4LFHSuHzpeaynJN7YIrO5vSHvV1uDUM7YrPDKo EEYqGo7nq5lbpp2j1TBAwfQgX03pOJeZnSYOiuMm7kAp+LDkjzS/HWSa9lCBxUZAFG+s C8DJCaDm4YwpJgMEDeYP2BN4rzgiaUtuEV9y26IXuZZyd9nfn7m0wBMBAZK5LBoZOhnI eV4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415049; x=1772019849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Lc7U1GbS1JHxjc6G1Vv9nRCpYH775c/aB7pSkgG/wFs=; b=jpilxsBSn5LcYVcu6mPwiIddyf7M1oTXukkp8AnqVfEY1SIAiOePXR1dGZbdzNYf+u 9lA1h2agHYErhrKSVvHJ96trPhjEUPEJujmR0SYH+I87c4pFyXZGqzo6S/ckI9u5EV1g 3TpVedMjt/nHnyNVNhVxt6Fa/i0m2gOjaq8QZn/EnjRH4xDLfCvuCzhCnb42lLkGKz0d kNBXSwufK0LnZmz8MrOXUP2FEGArV94/6+B9a07xJk7JP+90ygxph6OHSsf3EBPF/3NA 2QQBSn4x0hKPxUKVQnHL793zP3mzTJ6dKgUXL00LX0Rl8zY6xa/TBntyvjCiKUTGuJ+Z PRBg== X-Forwarded-Encrypted: i=1; AJvYcCWw3kEjKXUqBrZYsM6UwfhbbD11cqOUp3A45CzoxwN+kl0j0FSFJi0DKiEsR14wfvIOMX/Xk30nRXtR@nongnu.org X-Gm-Message-State: AOJu0YxF+4N7+uuOh9s0ZQTHDRRhSdgIMkZ+RaHqd+rt4NkeFY4es5RF OBDaAwGxG+CT/mEp/IplyjKwgkeCtJrdcSgpUod5T4KQr+D+RhCJdYCPmA4YH+TdaT7tMuMDQQw PO5xeZVG8S091u5oKjRC+Tq/opZW8fXOWRa9mcrZaKTDo/sVnn/dVSenB X-Gm-Gg: AZuq6aKuHxabSAT6MWcD8X9RTMgQPGtLrZQSDv65nz6Lim1qLUgbWFHpiJuxJc9J2ra 6zeqw7dltenFSbGDYpj1rZlUcR7J08oEvtwJ1KhoYAXA2f29XkghzskrpDCQLAd+SG6ACoNqwfy 6KYn+/whT1EartCAVvMZ10fH2Ynd1EV0XqpH2DmcLKSNqFPK+6GCs3o7rFHA/LmqCur0Gvp4B02 KCWcwBNQhFRyq/BoKx/VgZeoH7OOdQJcTWcf/y7SKFKMlwL6XVEEkLwQlY01HleW85tqDpGwQWN 8f0Xxbi3w7MeULKgY0rg4GlkNVrGGr42/MZL+8oqNIjik7TQMAPQ4SteZBS632Mn7TRpQaPTqel 2Qmr520jKbY4qnModmTObi7ucHnRq9oPBRxM1d6jZYhRRMgyLQK6t X-Received: by 2002:a17:902:cccd:b0:297:cf96:45bd with SMTP id d9443c01a7336-2ad50eb31b4mr16065715ad.19.1771415049244; Wed, 18 Feb 2026 03:44:09 -0800 (PST) X-Received: by 2002:a17:902:cccd:b0:297:cf96:45bd with SMTP id d9443c01a7336-2ad50eb31b4mr16065545ad.19.1771415048913; Wed, 18 Feb 2026 03:44:08 -0800 (PST) From: Ani Sinha To: David Woodhouse , Paul Durrant , Paolo Bonzini , Marcelo Tosatti Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 27/34] kvm/xen-emu: re-initialize capabilities during confidential guest reset Date: Wed, 18 Feb 2026 17:12:20 +0530 Message-ID: <20260218114233.266178-28-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415212638158500 Content-Type: text/plain; charset="utf-8" On confidential guests KVM virtual machine file descriptor changes as a part of the guest reset process. Xen capabilities needs to be re-initialize= d in KVM against the new file descriptor. Signed-off-by: Ani Sinha --- target/i386/kvm/xen-emu.c | 50 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c index 52de019834..69527145eb 100644 --- a/target/i386/kvm/xen-emu.c +++ b/target/i386/kvm/xen-emu.c @@ -44,9 +44,12 @@ =20 #include "xen-compat.h" =20 +NotifierWithReturn xen_vmfd_change_notifier; +static bool hyperv_enabled; static void xen_vcpu_singleshot_timer_event(void *opaque); static void xen_vcpu_periodic_timer_event(void *opaque); static int vcpuop_stop_singleshot_timer(CPUState *cs); +static int do_initialize_xen_caps(KVMState *s, uint32_t hypercall_msr); =20 #ifdef TARGET_X86_64 #define hypercall_compat32(longmode) (!(longmode)) @@ -54,6 +57,30 @@ static int vcpuop_stop_singleshot_timer(CPUState *cs); #define hypercall_compat32(longmode) (false) #endif =20 +static int xen_handle_vmfd_change(NotifierWithReturn *n, + void *data, Error** errp) +{ + int ret; + + /* we are not interested in pre vmfd change notification */ + if (((VmfdChangeNotifier *)data)->pre) { + return 0; + } + + ret =3D do_initialize_xen_caps(kvm_state, XEN_HYPERCALL_MSR); + if (ret < 0) { + return ret; + } + + if (hyperv_enabled) { + ret =3D do_initialize_xen_caps(kvm_state, XEN_HYPERCALL_MSR_HYPERV= ); + if (ret < 0) { + return ret; + } + } + return 0; +} + static bool kvm_gva_to_gpa(CPUState *cs, uint64_t gva, uint64_t *gpa, size_t *len, bool is_write) { @@ -111,15 +138,16 @@ static inline int kvm_copy_to_gva(CPUState *cs, uint6= 4_t gva, void *buf, return kvm_gva_rw(cs, gva, buf, sz, true); } =20 -int kvm_xen_init(KVMState *s, uint32_t hypercall_msr) +static int do_initialize_xen_caps(KVMState *s, uint32_t hypercall_msr) { + int xen_caps, ret; const int required_caps =3D KVM_XEN_HVM_CONFIG_HYPERCALL_MSR | KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL | KVM_XEN_HVM_CONFIG_SHARED_INF= O; + struct kvm_xen_hvm_config cfg =3D { .msr =3D hypercall_msr, .flags =3D KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL, }; - int xen_caps, ret; =20 xen_caps =3D kvm_check_extension(s, KVM_CAP_XEN_HVM); if (required_caps & ~xen_caps) { @@ -143,6 +171,21 @@ int kvm_xen_init(KVMState *s, uint32_t hypercall_msr) strerror(-ret)); return ret; } + return xen_caps; +} + +int kvm_xen_init(KVMState *s, uint32_t hypercall_msr) +{ + int xen_caps; + + xen_caps =3D do_initialize_xen_caps(s, hypercall_msr); + if (xen_caps < 0) { + return xen_caps; + } + + if (!hyperv_enabled && (hypercall_msr =3D=3D XEN_HYPERCALL_MSR_HYPERV)= ) { + hyperv_enabled =3D true; + } =20 /* If called a second time, don't repeat the rest of the setup. */ if (s->xen_caps) { @@ -185,6 +228,9 @@ int kvm_xen_init(KVMState *s, uint32_t hypercall_msr) xen_primary_console_reset(); xen_xenstore_reset(); =20 + xen_vmfd_change_notifier.notify =3D xen_handle_vmfd_change; + kvm_vmfd_add_change_notifier(&xen_vmfd_change_notifier); + return 0; } =20 --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415114; cv=none; d=zohomail.com; s=zohoarc; b=RQDGv9YVGTwz989A1zPBmBNj59lw3hGAuskkTc69oR9+lvlmJ8AR5ULLGJ4TD/mueJTgJP1d7EQiD/3gjRf4bxDIokpXHCsFhBGxZ4o1eBte/TLZ1LGqxJLkdHlTpOzrfiu0/7RkkY6ObKmrIAuDZpmKlDjrmOzArLDKxFwo2zI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415114; h=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=bSI26ec30q+LRwqH4eGYpPIQO82uWHXpsee53xL/4Nc=; b=dX2SJIbElqlgv6lHFFhXQnigKMXBwpRfftVz2RNvQlfUa4+ypNkGCMKoKRJb3DR4alczgWKNCc6ECsMrlTSvJeYtYyI0JiVRpvqHLRXuxkGYh7LDBwrlhXHdC2L8JWwIBcFFzY8cfYgyBYUGaBZMjn6HLaJkosZxZRGVOHeIy2E= 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 1771415114914589.7746290696964; Wed, 18 Feb 2026 03:45:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfz7-0004YW-Tm; Wed, 18 Feb 2026 06:44:49 -0500 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 1vsfyc-00049T-CQ for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:19 -0500 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 1vsfya-00086K-IQ for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:18 -0500 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-663-wnSUkizfPf2BkakxNPRYjg-1; Wed, 18 Feb 2026 06:44:14 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2aaf0dbd073so66409475ad.3 for ; Wed, 18 Feb 2026 03:44:13 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415055; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bSI26ec30q+LRwqH4eGYpPIQO82uWHXpsee53xL/4Nc=; b=ZlebyLqpss/FauBTABzdwWn+CZeTTXEQXtsd4/WlclqnZzjrIUgyg0+VjN+NwRRkbs1FGL bRkSV+qo8SVjMZSyFaLMI2LGe/fd/LIVx/4R0FEqgp8VxfrHIC9CkkT+O3fmdGDM7zgvaL f1EYt7R5qpM9GEuPHQp5iz//b0a0Krw= X-MC-Unique: wnSUkizfPf2BkakxNPRYjg-1 X-Mimecast-MFC-AGG-ID: wnSUkizfPf2BkakxNPRYjg_1771415053 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415053; x=1772019853; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bSI26ec30q+LRwqH4eGYpPIQO82uWHXpsee53xL/4Nc=; b=bCt7/Skf9mTXP6GRVaA5QpqdE3RxEAh4d8uGFo/rKwL4bXgMsM+c1qbwSW37XPyE/A lPF+gEqKx5x76BImA47cQLga27wOJ1jAHZlr6TsutOsN6jUgOM3jq40EepRY91eNEiiG Bgu8h4vckZdpsJLjyVSqEuiNBtZevhr/nHhE8KFJlnW4hE5eROxHmJU+/eYL8OXKM05J iv7+Vd8iZxIFg2EeXrGftJE23q1tFm5qP3htI0RUWNltyeMZFHWI4CEaY/h1zmPg0eQQ TtoTzyGypTnbfq8JuHIrTCuHYvQUTgncNfO216BaDFhXz3zdgi77ngjusro0W4K1wy6Q 3jxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415053; x=1772019853; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=bSI26ec30q+LRwqH4eGYpPIQO82uWHXpsee53xL/4Nc=; b=FopEgklEHW3xmIlxeY2RZZ6mGPHMRM+oYo9vRoYMx0zmHIUAVdONuMWP/Mo/lodPTp t2b2uVMRpQiyDhFNLxIJtXgdKJl2Lsp8iMJjW3dTEoK/Lvu5UPMNFJdM6q9qN/5VDQmU Wvy69OThRYApjHlTUGtppBBhrka/S6bmvKkYY4qDCCyaa/BlIxbE2bh53KN5x6HKDiYB /xGhdstHZAn2z3aiJE04+Zz9PB6nb2+E1JLYqTrzcUzhru6Cx7Zdth6zGdSQ7kaeNGD2 LfsE3O/lbSv99ZYXWMdlshXgxpkDhTKzhb6m59150dFigdRsI5eN5Ay+rwpeVoOuOamA BOQA== X-Forwarded-Encrypted: i=1; AJvYcCWpmd31qgtwcdzzBq9fQseEORdfNecJor8utWuZiFbhR6WAe5XXoNsQwXnmYTTiCD/Pto/FMfVLZtOb@nongnu.org X-Gm-Message-State: AOJu0YzKUAi+LND0EZgHnlWiGJXrq653xwKp3kvjS8rKvBorcgSSZg3q M5/MEDJ37KvWll1dWvTrrKgMYTBAim/keB6EdIAlCNW8R2bUU56h2yhPiHbRzXk9DxMIW0JLmr4 tuOIwsXwZyYrEQhZNqwrDwj6gzFWJsOgqUaPbXb1AKw84W4MbRcf8WrCb X-Gm-Gg: AZuq6aIA7Z4Fi1v8ZVl0slD/0jmJ9rU5npkzTS9j/RiGavbSLJ2mIGl6b8ub/xNvwB8 yLG//XQHKLuAz2gTod8paIdvJeXEWYn+081yeR9Pv5u9W6lc71bbqwHyoTU8rejRImh8IprOdgJ VLiHDLkE9Ew0T503naDr8PZqhvvDpfMrOuqTg+qBVb73KcV5tV3OsfHVBTwC86UvtQbJ0zZlNKX 8OoYdCocMcL/cA0CCNbAUDwyzVq9+fmOazRaC/NE65iu8dnXsFiQMiaOgVROQZLYrkbC52uqtHN BSYTaQe8alT2oakVB/UOi/aB/JD2bM1Ox+OWSEQ+ErTTw0IT24iSdLwvIdIdMLwtTSSb5GEUjnE atApIkDdryhucCA8e6hSkzmE1Ly2ENxiMTmRfbh7fxPvzFqQHHiZt X-Received: by 2002:a17:903:2452:b0:2a1:3ee7:cc75 with SMTP id d9443c01a7336-2ab50560babmr177022695ad.19.1771415052822; Wed, 18 Feb 2026 03:44:12 -0800 (PST) X-Received: by 2002:a17:903:2452:b0:2a1:3ee7:cc75 with SMTP id d9443c01a7336-2ab50560babmr177022595ad.19.1771415052405; Wed, 18 Feb 2026 03:44:12 -0800 (PST) From: Ani Sinha To: Bernhard Beschow Cc: Ani Sinha , kraxel@redhat.com, qemu-ppc@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v5 28/34] ppc/openpic: create a new openpic device and reattach mem region on coco reset Date: Wed, 18 Feb 2026 17:12:21 +0530 Message-ID: <20260218114233.266178-29-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415116322158500 Content-Type: text/plain; charset="utf-8" For confidential guests during the reset process, the old KVM VM file descriptor is closed and a new one is created. When a new file descriptor is created, a new openpic device needs to be created against this new KVM VM f= ile descriptor as well. Additionally, existing memory region needs to be reatta= ched to this new openpic device and proper CPU attributes set associating new fi= le descriptor. This change makes this happen with the help of a callback handl= er that gets called when the KVM VM file descriptor changes as a part of the confidential guest reset process. Reviewed-by: Bernhard Beschow Signed-off-by: Ani Sinha --- hw/intc/openpic_kvm.c | 112 +++++++++++++++++++++++++++++++++--------- 1 file changed, 88 insertions(+), 24 deletions(-) diff --git a/hw/intc/openpic_kvm.c b/hw/intc/openpic_kvm.c index fbf0bdbe07..b099da20eb 100644 --- a/hw/intc/openpic_kvm.c +++ b/hw/intc/openpic_kvm.c @@ -49,6 +49,7 @@ struct KVMOpenPICState { uint32_t fd; uint32_t model; hwaddr mapped; + NotifierWithReturn vmfd_change_notifier; }; =20 static void kvm_openpic_set_irq(void *opaque, int n_IRQ, int level) @@ -114,6 +115,88 @@ static const MemoryRegionOps kvm_openpic_mem_ops =3D { }, }; =20 +static int kvm_openpic_setup(KVMOpenPICState *opp, Error **errp) +{ + int kvm_openpic_model; + struct kvm_create_device cd =3D {0}; + KVMState *s =3D kvm_state; + int ret; + + switch (opp->model) { + case OPENPIC_MODEL_FSL_MPIC_20: + kvm_openpic_model =3D KVM_DEV_TYPE_FSL_MPIC_20; + break; + + case OPENPIC_MODEL_FSL_MPIC_42: + kvm_openpic_model =3D KVM_DEV_TYPE_FSL_MPIC_42; + break; + + default: + error_setg(errp, "Unsupported OpenPIC model %" PRIu32, opp->model); + return -1; + } + + cd.type =3D kvm_openpic_model; + ret =3D kvm_vm_ioctl(s, KVM_CREATE_DEVICE, &cd); + if (ret < 0) { + error_setg(errp, "Can't create device %d: %s", + cd.type, strerror(errno)); + return -1; + } + opp->fd =3D cd.fd; + + return 0; +} + +static int kvm_openpic_handle_vmfd_change(NotifierWithReturn *notifier, + void *data, Error **errp) +{ + KVMOpenPICState *opp =3D container_of(notifier, KVMOpenPICState, + vmfd_change_notifier); + uint64_t reg_base; + struct kvm_device_attr attr; + CPUState *cs; + int ret; + + /* we are not interested in pre vmfd change notification */ + if (((VmfdChangeNotifier *)data)->pre) { + return 0; + } + + /* close the old descriptor */ + close(opp->fd); + + if (kvm_openpic_setup(opp, errp) < 0) { + return -1; + } + + if (!opp->mapped) { + return 0; + } + + reg_base =3D opp->mapped; + attr.group =3D KVM_DEV_MPIC_GRP_MISC; + attr.attr =3D KVM_DEV_MPIC_BASE_ADDR; + attr.addr =3D (uint64_t)(unsigned long)®_base; + + ret =3D ioctl(opp->fd, KVM_SET_DEVICE_ATTR, &attr); + if (ret < 0) { + error_setg(errp, "%s: %s %" PRIx64, __func__, + strerror(errno), reg_base); + return -1; + } + + CPU_FOREACH(cs) { + ret =3D kvm_vcpu_enable_cap(cs, KVM_CAP_IRQ_MPIC, 0, opp->fd, + kvm_arch_vcpu_id(cs)); + if (ret < 0) { + return ret; + } + } + + return 0; +} + static void kvm_openpic_region_add(MemoryListener *listener, MemoryRegionSection *section) { @@ -197,36 +280,14 @@ static void kvm_openpic_realize(DeviceState *dev, Err= or **errp) SysBusDevice *d =3D SYS_BUS_DEVICE(dev); KVMOpenPICState *opp =3D KVM_OPENPIC(dev); KVMState *s =3D kvm_state; - int kvm_openpic_model; - struct kvm_create_device cd =3D {0}; - int ret, i; + int i; =20 if (!kvm_check_extension(s, KVM_CAP_DEVICE_CTRL)) { error_setg(errp, "Kernel is lacking Device Control API"); return; } =20 - switch (opp->model) { - case OPENPIC_MODEL_FSL_MPIC_20: - kvm_openpic_model =3D KVM_DEV_TYPE_FSL_MPIC_20; - break; - - case OPENPIC_MODEL_FSL_MPIC_42: - kvm_openpic_model =3D KVM_DEV_TYPE_FSL_MPIC_42; - break; - - default: - error_setg(errp, "Unsupported OpenPIC model %" PRIu32, opp->model); - return; - } - - cd.type =3D kvm_openpic_model; - ret =3D kvm_vm_ioctl(s, KVM_CREATE_DEVICE, &cd); - if (ret < 0) { - error_setg_errno(errp, errno, "Can't create device %d", cd.type); - return; - } - opp->fd =3D cd.fd; + kvm_openpic_setup(opp, errp); =20 sysbus_init_mmio(d, &opp->mem); qdev_init_gpio_in(dev, kvm_openpic_set_irq, OPENPIC_MAX_IRQ); @@ -235,6 +296,9 @@ static void kvm_openpic_realize(DeviceState *dev, Error= **errp) opp->mem_listener.region_del =3D kvm_openpic_region_del; opp->mem_listener.name =3D "openpic-kvm"; memory_listener_register(&opp->mem_listener, &address_space_memory); + opp->vmfd_change_notifier.notify =3D + kvm_openpic_handle_vmfd_change; + kvm_vmfd_add_change_notifier(&opp->vmfd_change_notifier); =20 /* indicate pic capabilities */ msi_nonbroken =3D true; --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415134; cv=none; d=zohomail.com; s=zohoarc; b=iQLyAMoI5NbZKPLUhF0HauoHEObGjS5EjcKw9bfcONnbNmwUtHx37WA9nAn9Guhp5vtohXwwr2lizJmI49vRpvwWhrnwe8PZLaiqZjjB2wNxm3f8qb5JZkdGdvLMo1yynZjnjwj0UeAcTBiUOYilibpeEhtjA2EkcUAw1fuBVQc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415134; h=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=L1nGeqoQ1o3VYpe1DNoWnGTiyMQ3GWu83ptlZVbrEhc=; b=oH1msyBlbROLBBox8Y/flctLK20WPdjQTXPc7l55ApRo10nec0vLBzU0bJ6lFqKS1+7fevqhbvQDyO/JbCj589SBhYTixJ7ydxhUY+LyeLsrRmTAsTmfVnubnkx2UuYAb3X68dXZhn+0Q4B99BSA9I65cym+82h/m8yo/AcmMCU= 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 17714151348581021.7011883210481; Wed, 18 Feb 2026 03:45:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfzA-00050L-CF; Wed, 18 Feb 2026 06:44:52 -0500 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 1vsfye-0004Ff-5l for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:20 -0500 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 1vsfyc-00087k-H3 for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:19 -0500 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-77-zDoGtpbgOj-R2SlMEW7uVQ-1; Wed, 18 Feb 2026 06:44:16 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2aaeafeadbcso60782885ad.1 for ; Wed, 18 Feb 2026 03:44:16 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415057; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=L1nGeqoQ1o3VYpe1DNoWnGTiyMQ3GWu83ptlZVbrEhc=; b=JamQZVqq0v2AE1jmLEFxAPr+Tknx26d+SDGTeOMPsOJ09K/ri3qHonI8JF21oWu74j1GFz uGxtkGOrfdOOChQoP3j14ess3ytWv8jFnDiM0OVVmRpK/w5tftos1qlGTMzIVutR6PwzGX KopWAYhYUBGYoKlbB1DRINj5Z/QTiaY= X-MC-Unique: zDoGtpbgOj-R2SlMEW7uVQ-1 X-Mimecast-MFC-AGG-ID: zDoGtpbgOj-R2SlMEW7uVQ_1771415055 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415055; x=1772019855; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=L1nGeqoQ1o3VYpe1DNoWnGTiyMQ3GWu83ptlZVbrEhc=; b=FFK9W6XOQE3TJqj0DPgkyDQMEoGBPrYtz1cabVZyiM7+YYR3oGUAJwqoBbhQhOr+jg 88DfiDY3+q7NNsw/FCyjN+ix4lPa7ciz4dyYKEadf+EtTYmgBH3fnozPVPt1Xhjqvppa czmkkAbfFI2kGSHY7r5hEIwEUEtNvhfBdhjf/9BjN8O7tDGqMZVBS5JwTfIX2Ru/0Lcg yD7Yeuh6gO3MNxqxVLWVUSwZrBbn0hYmO3r2X3D4Ot5YMtFDsiVDbW6f4QqmMPCrpk6R UElb+bB2Tu2L9ZLgjP++xnTwpxcWphk3jCBiqgxCmuOKiZmOxabtsRl4QX4UiLG4sOYe sLfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415055; x=1772019855; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=L1nGeqoQ1o3VYpe1DNoWnGTiyMQ3GWu83ptlZVbrEhc=; b=aVSKNpoLPPUQVg5oI2/L7MA3ewmVNK8qjTYXfzmyR2lSxwBjo5YQV0yqHhnF5i1B+d jgIW8O4X4EGbclpSigMbUy6useegbnFj7SQmRiilmITRAAN9XDO3rYwlwAB0hKq+UuUs SwuH9Xz9WG3lI19hi/y2YwFANB0Urxu3gpZmqSl8IKbP2FfwjOv9yyXUyLE+x531rfaY iRWw9LdU9jH9h9ZZBv5lBT0uqe4GpfxGBax6YtBtb7jTlNc+Q0ar13AMZhwSD0ZBmxyP GPIwdaNGqKu/DOHrX5S3UL3Nwni2hcnoGMXE6guILcudQcrJZ+qcj9NBdt2Yu37hE0ag apTA== X-Forwarded-Encrypted: i=1; AJvYcCXWfjFVPID6gMoRbkLTX6HqRq22SFb7f72+US8CIEMKMF252fBDUbkZ8A8nym9SHylFND5CPHu+qU9w@nongnu.org X-Gm-Message-State: AOJu0YxOZB63txtSlwwnyS2OdNUkx57Bc6XE4fZdN+MaUVAA6sf7U3k8 WgbRylsU5Iy7Hx2Avt1VqPg4NwmIJrKgabzICNIZUn8aVMtsG+7llc9EMcjFWUMAZwi3WS+FP77 0jT9JWZ090wwrByI4tCiiQUsvBYshfJdKOdgGGbABv9b/BoEK2kp6rOCc X-Gm-Gg: AZuq6aJaOdiqQSA7B7DjPIogv4sGmN4QfwumvBnIt1LAtmACyGelDRhf1iAjIDWvLbS cDQnbUOFYB7kDg+h6ABQ7sQpnBX5TtNuOA4aRWoXqD1M+4evyoDuJTYaSp6ugJJ9+L4+7DdGOnQ nFqUlE0YIASMg+buQLM/R7A8QUvSDkszxMidfgGuwcqTa48qy0t5VeDwjGVhxstOVfqtekIRP2d 30xv1zgkN8iGlwllmzaI5kzpbjOfK3HEwUbAHr9XlIwr1QybOT9caIj3Z2UINAS8MHA0LOC1MNW MJh/vUEUPceR35xKXSyndkqvf6bThE3m7JzYAtgnfQ/83fK12lnCRnmq4tAYvhujt4Nj3hBK3Qq Xpsyhu+Xj6sW1A6MOWY0ZZtuH+NFbielknpb8OuZAsB5kaWuwz4kP X-Received: by 2002:a17:903:2f8f:b0:29f:2b8a:d3d with SMTP id d9443c01a7336-2ab50525225mr157634535ad.4.1771415055511; Wed, 18 Feb 2026 03:44:15 -0800 (PST) X-Received: by 2002:a17:903:2f8f:b0:29f:2b8a:d3d with SMTP id d9443c01a7336-2ab50525225mr157634365ad.4.1771415055103; Wed, 18 Feb 2026 03:44:15 -0800 (PST) From: Ani Sinha To: Paolo Bonzini Cc: Ani Sinha , kraxel@redhat.com, kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v5 29/34] kvm/vcpu: add notifiers to inform vcpu file descriptor change Date: Wed, 18 Feb 2026 17:12:22 +0530 Message-ID: <20260218114233.266178-30-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1771415136995154100 Content-Type: text/plain; charset="utf-8" When new vcpu file descriptors are created and bound to the new kvm file descriptor as a part of the confidential guest reset mechanism, various subsystems needs to know about it. This change adds notifiers so that vario= us subsystems can take appropriate actions when vcpu fds change by registering their handlers to this notifier. Subsequent changes will register specific handlers to this notifier. Signed-off-by: Ani Sinha --- accel/kvm/kvm-all.c | 26 ++++++++++++++++++++++++++ accel/stubs/kvm-stub.c | 10 ++++++++++ include/system/kvm.h | 17 +++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 7be39111bb..d7ea60f582 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -127,6 +127,9 @@ static NotifierList kvm_irqchip_change_notifiers =3D static NotifierWithReturnList register_vmfd_changed_notifiers =3D NOTIFIER_WITH_RETURN_LIST_INITIALIZER(register_vmfd_changed_notifiers); =20 +static NotifierWithReturnList register_vcpufd_changed_notifiers =3D + NOTIFIER_WITH_RETURN_LIST_INITIALIZER(register_vcpufd_changed_notifier= s); + static int map_kvm_run(KVMState *s, CPUState *cpu, Error **errp); static int map_kvm_dirty_gfns(KVMState *s, CPUState *cpu, Error **errp); static int vcpu_unmap_regions(KVMState *s, CPUState *cpu); @@ -2314,6 +2317,22 @@ static int kvm_vmfd_change_notify(Error **errp) &vmfd_notifier, errp); } =20 +void kvm_vcpufd_add_change_notifier(NotifierWithReturn *n) +{ + notifier_with_return_list_add(®ister_vcpufd_changed_notifiers, n); +} + +void kvm_vcpufd_remove_change_notifier(NotifierWithReturn *n) +{ + notifier_with_return_remove(n); +} + +static int kvm_vcpufd_change_notify(Error **errp) +{ + return notifier_with_return_list_notify(®ister_vcpufd_changed_notif= iers, + &vmfd_notifier, errp); +} + int kvm_irqchip_get_virq(KVMState *s) { int next_virq; @@ -2838,6 +2857,13 @@ static int kvm_reset_vmfd(MachineState *ms) } assert(!err); =20 + /* notify everyone that vcpu fd has changed. */ + ret =3D kvm_vcpufd_change_notify(&err); + if (ret < 0) { + return ret; + } + assert(!err); + /* these can be only called after ram_block_rebind() */ memory_listener_register(&kml->listener, &address_space_memory); memory_listener_register(&kvm_io_listener, &address_space_io); diff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c index a6e8a6e16c..c4617caac6 100644 --- a/accel/stubs/kvm-stub.c +++ b/accel/stubs/kvm-stub.c @@ -87,6 +87,16 @@ void kvm_vmfd_remove_change_notifier(NotifierWithReturn = *n) { } =20 +void kvm_vcpufd_add_change_notifier(NotifierWithReturn *n) +{ + return; +} + +void kvm_vcpufd_remove_change_notifier(NotifierWithReturn *n) +{ + return; +} + int kvm_irqchip_add_irqfd_notifier_gsi(KVMState *s, EventNotifier *n, EventNotifier *rn, int virq) { diff --git a/include/system/kvm.h b/include/system/kvm.h index fbe23608a1..4b0e1b4ab1 100644 --- a/include/system/kvm.h +++ b/include/system/kvm.h @@ -590,4 +590,21 @@ void kvm_vmfd_add_change_notifier(NotifierWithReturn *= n); */ void kvm_vmfd_remove_change_notifier(NotifierWithReturn *n); =20 +/** + * kvm_vcpufd_add_change_notifier - register a notifier to get notified wh= en + * a KVM vcpu file descriptors changes as a part of the confidential guest + * "reset" process. Various subsystems should use this mechanism to take + * actions such as re-issuing vcpu ioctls as a part of setting up vcpu + * features. + * @n: notifier with return value. + */ +void kvm_vcpufd_add_change_notifier(NotifierWithReturn *n); + +/** + * kvm_vcpufd_remove_change_notifier - de-register a notifer previously + * registered with kvm_vcpufd_add_change_notifier call. + * @n: notifier that was previously registered. + */ +void kvm_vcpufd_remove_change_notifier(NotifierWithReturn *n); + #endif --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415218; cv=none; d=zohomail.com; s=zohoarc; b=j3fDqwCs7EYV539YZDQuxKIMKcna36o9tobJ4aNW1gMqu3gfIZUnLX3HLzx+VKOaWU70gdrUMP9JsA4Tg4DDo9maQHlpK3pG13iJeO4XdlFV/zIff4Kg4NJl3IMkvTrSIRSKk6I9FPfITA7mUEYTZQXakKoAxMZhMyhyaqC1g+M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415218; h=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=ampkMXpvZM0Uh9Dio1wYKLx68wPyoO/FMFpvVez+X64=; b=kx3VP3uWI6TbdqwSkmbR5Fl8ZYPH9jAP5x6OsUjFiAROzhNgxDwaGwpm7AhPa0VVb9CTLc9h76XucJscpFum9QrwKCpha8j8+rInGCGR7cE7QUmjGN7qidyh2bG0pJxPl0dj1yd9V9YBTkNnTy8H6qsKQeP6WbWRJ0idZxox+9A= 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 1771415218839307.58699586948967; Wed, 18 Feb 2026 03:46:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfzE-0005ZY-Q2; Wed, 18 Feb 2026 06:44:56 -0500 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 1vsfyh-0004LW-RO for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:28 -0500 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 1vsfyg-0008FN-6Z for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:23 -0500 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-642-pn--tvHNMgWLULHWhS-CoQ-1; Wed, 18 Feb 2026 06:44:19 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2a8fc061ce1so300799355ad.0 for ; Wed, 18 Feb 2026 03:44:19 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415061; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ampkMXpvZM0Uh9Dio1wYKLx68wPyoO/FMFpvVez+X64=; b=OblQk9wnRNfRb1tSjsID7OnL4IY1Kf0cPAsJecMLpiWPd0HeOK/OEitke7nSkT7wNxglLj XPfgaY0jtpuXMqm7zt6PZKf0EZFFHYBL9Aam9aHH8vfjnGtpduIVVBxioA7pPSrFGdqh2g y8+jqru6ehv9BNjTjepIRevr2VwMSU4= X-MC-Unique: pn--tvHNMgWLULHWhS-CoQ-1 X-Mimecast-MFC-AGG-ID: pn--tvHNMgWLULHWhS-CoQ_1771415059 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415059; x=1772019859; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ampkMXpvZM0Uh9Dio1wYKLx68wPyoO/FMFpvVez+X64=; b=QTE5LJiVUiQ0ThqlmORHzv0TtWegP/NIOC6PZOVUnFEMs/IsgL3t/P9A4H/QufDAp8 hrlDrQP7wUiP33dSnG6t0ROh/gHdWzBQjYXRMRK94PX+b/iqP7sTlFSjYIXDdQCeqloo XAN+DgzAZbQuOjRbEnK70Yf/l1fP+EW7mkVNHWXpw9OLXdKlW7kUqv8P3jmQRnEfX4J0 6rXfiSiRFvhmykzuRXA0onmzpTS5pXanF/DHloQxIZ1JvslMyPGXvpSrTFt4Nw33s1cr ebowGOaGftH7tuAt87U/m8zqJOjgKjdXn4PB8/ieXoGvwLG5+KEVsS4bq5ybkv6rOTt7 PKfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415059; x=1772019859; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ampkMXpvZM0Uh9Dio1wYKLx68wPyoO/FMFpvVez+X64=; b=NXB1n/KGMN3giVOYjdLIPPopr7yRy9q4XquiBUkg9suYNtldGtCPBwJ2uTsrD0mPMS VoXhf332+9fDXJElgJXhlF9bOgEWq1W3nti3o0u/KeMKv86JS5ShW5jon5mlcKkY6UQu JxX2XM/Xwufl1yvX/87BgF6/3D2FsRDmOsDxVNPLXQ/NJfJYwc0RsbR8Srm5r/kkXcJP b3wLsXRvZyrbst8HQgwdUI9QcDYBr4QeuGX2tQGdr9UncNMCISpqKVrTYNVeR7F9pLHI u7/dH5RJKh33XITpCYUeKpaK4cWPN2SEamgQhMDnmy69MBYrg+/zc/zbURvXRsKahlX0 a5Yw== X-Forwarded-Encrypted: i=1; AJvYcCVNYEIYl9Uz0A9deHkDWWsAhmQYEAzS8JUjhyr7QQOM0gbRcoYMt8EnFBsIaWDZrVOLmGSBxj7BxVIU@nongnu.org X-Gm-Message-State: AOJu0YxXg40Fcu/ne536h405vx1FVI/jf5dWpp2yFm7wOrHjvUp5Xs9F dq05kRkXOsFTm7JSUMAn42RKrRaD1ybrEZiVhMq3IcDUEDRhpScJqNQrMI24Lo5iKFIXY3QFHcU 1S/M0NBEiCqF6bSXGUgnFobFwyWHkFQSqw6X8OOi463EptuRlzViilnX3 X-Gm-Gg: AZuq6aIipv18UZEiQkuXo23faELasDhA3xyoR9qStqdQZzPGaj5dD6WmtelXn4ZY62G QhE5zYd/Hc15yw5IjBzbCYmYNaEnfJVEVtpij5CWt822CXNi+pY46DXajL1buRzgofuxZ9kQVAt bpstOR2T1/8Ajc9khrH8cIjE1OFGuuiykWcoPsOnAd7T8oCJRozErPOgGH27TQqwlZ93ml4Py+9 a9X45A3OZH3drAiGJe839KvxELfaym/tsAEtN0cftpA6IMywrCmXPFg36XsWsCwYl0+W4De0zsY VzYjFmxvyUL9MeLtRs1xe1IyYvAwgDc8caPHoNcIbb5sl4fjEpv/f3frjNNkBUWrKOsr0YYI6o4 +4VNl0He16/6vY6GfyMPj7ImjOm9387qKJggSAwnVDgtc6gHWtRDZ X-Received: by 2002:a17:902:f68a:b0:2aa:f9d7:689c with SMTP id d9443c01a7336-2ab4cfa78a0mr167225765ad.22.1771415058895; Wed, 18 Feb 2026 03:44:18 -0800 (PST) X-Received: by 2002:a17:902:f68a:b0:2aa:f9d7:689c with SMTP id d9443c01a7336-2ab4cfa78a0mr167225625ad.22.1771415058526; Wed, 18 Feb 2026 03:44:18 -0800 (PST) From: Ani Sinha To: "Michael S. Tsirkin" , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 30/34] kvm/clock: add support for confidential guest reset Date: Wed, 18 Feb 2026 17:12:23 +0530 Message-ID: <20260218114233.266178-31-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415220668158500 Content-Type: text/plain; charset="utf-8" Confidential guests change the KVM VM file descriptor upon reset and also c= reate new VCPU file descriptors against the new KVM VM file descriptor. We need to save the clock state from kvm before KVM VM file descriptor changes and res= tore it after. Also after VCPU file descriptors changed, we must call KVM_KVMCLOCK_CTRL on the VCPU file descriptor to inform KVM that the VCPU is in paused state. Signed-off-by: Ani Sinha --- hw/i386/kvm/clock.c | 59 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c index aba6842a22..10d34254f0 100644 --- a/hw/i386/kvm/clock.c +++ b/hw/i386/kvm/clock.c @@ -50,6 +50,9 @@ struct KVMClockState { /* whether the 'clock' value was obtained in a host with * reliable KVM_GET_CLOCK */ bool clock_is_reliable; + + NotifierWithReturn kvmclock_vcpufd_change_notifier; + NotifierWithReturn kvmclock_vmfd_change_notifier; }; =20 struct pvclock_vcpu_time_info { @@ -63,6 +66,9 @@ struct pvclock_vcpu_time_info { uint8_t pad[2]; } __attribute__((__packed__)); /* 32 bytes */ =20 +static int kvmclock_set_clock(NotifierWithReturn *notifier, + void *data, Error** errp); + static uint64_t kvmclock_current_nsec(KVMClockState *s) { CPUState *cpu =3D first_cpu; @@ -219,6 +225,54 @@ static void kvmclock_vm_state_change(void *opaque, boo= l running, } } =20 +static int kvmclock_save_clock(NotifierWithReturn *notifier, + void *data, Error** errp) +{ + if (!((VmfdChangeNotifier *)data)->pre) { + return 0; + } + KVMClockState *s =3D container_of(notifier, KVMClockState, + kvmclock_vmfd_change_notifier); + kvm_update_clock(s); + return 0; +} + +static int kvmclock_set_clock(NotifierWithReturn *notifier, + void *data, Error** errp) +{ + struct kvm_clock_data clock_data =3D {}; + CPUState *cpu; + int ret; + KVMClockState *s =3D container_of(notifier, KVMClockState, + kvmclock_vcpufd_change_notifier); + int cap_clock_ctrl =3D kvm_check_extension(kvm_state, KVM_CAP_KVMCLOCK= _CTRL); + + if (!s->clock_is_reliable) { + uint64_t pvclock_via_mem =3D kvmclock_current_nsec(s); + /* saved clock value before vmfd change is not reliable */ + if (pvclock_via_mem) { + s->clock =3D pvclock_via_mem; + } + } + + clock_data.clock =3D s->clock; + ret =3D kvm_vm_ioctl(kvm_state, KVM_SET_CLOCK, &clock_data); + if (ret < 0) { + fprintf(stderr, "KVM_SET_CLOCK failed: %s\n", strerror(-ret)); + abort(); + } + + if (!cap_clock_ctrl) { + return 0; + } + CPU_FOREACH(cpu) { + run_on_cpu(cpu, do_kvmclock_ctrl, RUN_ON_CPU_NULL); + } + + return 0; +} + + static void kvmclock_realize(DeviceState *dev, Error **errp) { KVMClockState *s =3D KVM_CLOCK(dev); @@ -230,7 +284,12 @@ static void kvmclock_realize(DeviceState *dev, Error *= *errp) =20 kvm_update_clock(s); =20 + s->kvmclock_vcpufd_change_notifier.notify =3D kvmclock_set_clock; + s->kvmclock_vmfd_change_notifier.notify =3D kvmclock_save_clock; + qemu_add_vm_change_state_handler(kvmclock_vm_state_change, s); + kvm_vcpufd_add_change_notifier(&s->kvmclock_vcpufd_change_notifier); + kvm_vmfd_add_change_notifier(&s->kvmclock_vmfd_change_notifier); } =20 static bool kvmclock_clock_is_reliable_needed(void *opaque) --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415152; cv=none; d=zohomail.com; s=zohoarc; b=cSScxyAx5a+laBtWEDC7hbowIF6CcGB+1oCsdrATBTgPEXqTJ0S6IkHIplooGmGXaH9ahZ0ZzAoarTERs6djoTPmdTdTbyRd5MXjmM3WBw6Tj13/JtxLu/fQ0TxGKemUL4X9X9f2HZ+16aKz5imS/sLB1ntXTv+HHSs7CfXcdkU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415152; h=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=Dw4c4tBuuNn6IOR3hrguMbcnGJ7OzIOZU45K/GHwsiY=; b=MGF40BOrcKhzfj4v5SqbWoczv33Ms6yyNQf7NiYPgd9LDqcyz2kfeDVmF/5YhUxPLAFqHdiDcz1oz4RXl9/9YR+2H2K1kfVUukq0Nll/CGqrhm/gNSQnKwyBvirrg0L1Fp8wUNxlld+KFa99U7oQjTd1dmRApoIgcIC7kYvSz/s= 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 17714151528831010.4570066167835; Wed, 18 Feb 2026 03:45:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfzA-00052k-Q8; Wed, 18 Feb 2026 06:44:53 -0500 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 1vsfyz-0004Ux-6P for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:43 -0500 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 1vsfyo-0008Sd-QW for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:32 -0500 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-318-08tQpwVfMqyVZZ1aIog8WA-1; Wed, 18 Feb 2026 06:44:23 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2aaf2ce5d81so62271035ad.1 for ; Wed, 18 Feb 2026 03:44:23 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415066; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Dw4c4tBuuNn6IOR3hrguMbcnGJ7OzIOZU45K/GHwsiY=; b=PlsABZTqivdytMxYiuXJydNlv8opuLuubhFW6Mx1yeUXQzV9N+2A4S83yQhZkEvi3FWxOi 5GgXjuDfbu4o72LwhGH55qZuuEcLB0GdqCBHBBomv6QgVnzDd9eL83PpQAWrXH1UaivNyl FYIk5jbdPmzsevD6Ep11gvMqrxMZOIM= X-MC-Unique: 08tQpwVfMqyVZZ1aIog8WA-1 X-Mimecast-MFC-AGG-ID: 08tQpwVfMqyVZZ1aIog8WA_1771415063 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415062; x=1772019862; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Dw4c4tBuuNn6IOR3hrguMbcnGJ7OzIOZU45K/GHwsiY=; b=pcPPTraIDecCjrAAvFj67VqWBN+7rfTORvbGgRDnZYDdlIXpes3vwJjqAhFl+zUltx AB/DAB0I/eluvmMVB2ZOY9vUbEJ1PVC4eyxJniQteNQtD7ESGDzSHEKVCbhLh9zPOeae ZiSNWOnh6bOtLtuM7Hz11j/tkj2uD9FfT+/lBP1ihd7DedtoPfqJwqWgpB07wC6vsumY hP1HyHRfDRPc1Y3jhvmx6dZBqN9OucftBSecEbej7CPUOqj9/+UIXGpR/zAo7XTubfM3 m53i6RKL1BjVgu0QILjtOBApvH69458nw31KcbHcaPWEjGLQxiVzNTjUyvBGBH1yvIYV DzUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415062; x=1772019862; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Dw4c4tBuuNn6IOR3hrguMbcnGJ7OzIOZU45K/GHwsiY=; b=orAesKco68Xp2X9v6DRl3Q6PSA8A9KJHasU3ErKH1+nrBvI3tt5tZ319wCcsO7kVK1 I0ikAxjur3Usu9C9Rr1JE07cM7NYUEUulnRv8fb+ZyOcQdBTt65j5h2gsse4ieM0v9t0 sy5HMdsNu8IiB44e+kiEoSqC8SDGIJLhZjAbevxE7hWwY7Q+nnlaf6BnIJ0vkud52epa r5M0w9sIlsUolunQ18OII6fwlcj2kYpN8CokrYT98Kw25XWgOnHZV9y9HSP0Ce6xFEzE aG6WwpMv1Yh4bhl+maRNfX7ZLZ4vMWaRbtqdPpFiv3tngV5H3PPgJriaiLL546JbRWh+ kbBw== X-Forwarded-Encrypted: i=1; AJvYcCU8WkpLA2oTHounnSZepNi2GQAffMqlBoIMDDAUol+kknJss+DrP+AHSw87NZatN3EuqdpprXBe173d@nongnu.org X-Gm-Message-State: AOJu0Yztk1icz3WMEl4vW5X3mtRdLSlU0yhp/Qv6/o5CyhHjla0KOXun mTduZlkV9DxRHoaEQ3ZB3iHtP3gXZiTdSlBcNAScb+/5nFvuBzsH16IeijTU8w2x3QtIjWOViZz m+NuBVILmh8aSd90riXvphBAB6NlX0Ba6Dhx+t97DM9ILJdcIo5UfLD1n X-Gm-Gg: AZuq6aKsDbWNSRhizCpN5Ri8RaDfPXwBSWqaxNyjDWUBKUv2FVNnEKtReryHUiA07dV au4WN6E1Z8iiu3VcfuuoTZ6QZ76aPs39C2fsylV/S2d8RF/aFWF5e5HAzs9HbyEpUYVShr6T1AS 43adr6wI3Ax7WABMVZsTI52KE7KDQKP/0qsXO3YG1OlgjCY0Ydi+yA9t6A0B+cfieTYFGMv5KMH B1X1AM98GTqo48oJW5B5WoImnEv5loU3UDjJDubrA5WG1qMopUB7PXdUhLM5mjkkrFpXRfdUAal 6Bo2M4WSPW6zAfYblkzZRGV+gk2BksNSMeFX6oeDLmMF3ZNKpHjCr+uofXyQnlsfNuXKqmTiYkY /lblHpK44vCsNRsCNt3J703i/g49MsVc3xh6g9MCXWjddnMe0Cqra X-Received: by 2002:a17:902:fc46:b0:2a9:484c:ff2f with SMTP id d9443c01a7336-2ad1749b6ccmr171339545ad.23.1771415062654; Wed, 18 Feb 2026 03:44:22 -0800 (PST) X-Received: by 2002:a17:902:fc46:b0:2a9:484c:ff2f with SMTP id d9443c01a7336-2ad1749b6ccmr171339375ad.23.1771415062256; Wed, 18 Feb 2026 03:44:22 -0800 (PST) From: Ani Sinha To: Eduardo Habkost , Marcel Apfelbaum , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Yanan Wang , Zhao Liu , Paolo Bonzini Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 31/34] hw/machine: introduce machine specific option 'x-change-vmfd-on-reset' Date: Wed, 18 Feb 2026 17:12:24 +0530 Message-ID: <20260218114233.266178-32-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415155349154100 Content-Type: text/plain; charset="utf-8" A new machine specific option 'x-change-vmfd-on-reset' is introduced for debugging and testing only (hence the 'x-' prefix). This option when enabled will force KVM VM file descriptor to be changed upon guest reset like in the case of confidential guests. This can be used to exercise the code changes that are specific for confidential guests on non-confidential guests as well (except changes that require hardware support for confidential guests). A new functional test has been added in the next patch that uses this new parameter to test the VM file descriptor changes. Signed-off-by: Ani Sinha --- hw/core/machine.c | 22 ++++++++++++++++++++++ include/hw/core/boards.h | 6 ++++++ system/runstate.c | 6 +++--- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/hw/core/machine.c b/hw/core/machine.c index d4ef620c17..eae1f6be8d 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -435,6 +435,21 @@ static void machine_set_dump_guest_core(Object *obj, b= ool value, Error **errp) ms->dump_guest_core =3D value; } =20 +static bool machine_get_new_accel_vmfd_on_reset(Object *obj, Error **errp) +{ + MachineState *ms =3D MACHINE(obj); + + return ms->new_accel_vmfd_on_reset; +} + +static void machine_set_new_accel_vmfd_on_reset(Object *obj, + bool value, Error **errp) +{ + MachineState *ms =3D MACHINE(obj); + + ms->new_accel_vmfd_on_reset =3D value; +} + static bool machine_get_mem_merge(Object *obj, Error **errp) { MachineState *ms =3D MACHINE(obj); @@ -1183,6 +1198,13 @@ static void machine_class_init(ObjectClass *oc, cons= t void *data) object_class_property_set_description(oc, "dump-guest-core", "Include guest memory in a core dump"); =20 + object_class_property_add_bool(oc, "x-change-vmfd-on-reset", + machine_get_new_accel_vmfd_on_reset, + machine_set_new_accel_vmfd_on_reset); + object_class_property_set_description(oc, "x-change-vmfd-on-reset", + "Set on/off to enable/disable generating new accelerator guest han= dle " + "on guest reset. Default: off (used only for testing/debugging)."= ); + object_class_property_add_bool(oc, "mem-merge", machine_get_mem_merge, machine_set_mem_merge); object_class_property_set_description(oc, "mem-merge", diff --git a/include/hw/core/boards.h b/include/hw/core/boards.h index edbe8d03e5..12b2149378 100644 --- a/include/hw/core/boards.h +++ b/include/hw/core/boards.h @@ -448,6 +448,12 @@ struct MachineState { struct NVDIMMState *nvdimms_state; struct NumaState *numa_state; bool acpi_spcr_enabled; + /* + * Whether to change virtual machine accelerator handle upon + * reset or not. Used only for debugging and testing purpose. + * Set to false by default for all regular use. + */ + bool new_accel_vmfd_on_reset; }; =20 /* diff --git a/system/runstate.c b/system/runstate.c index e7b50e6a3b..eca722b43c 100644 --- a/system/runstate.c +++ b/system/runstate.c @@ -526,9 +526,9 @@ void qemu_system_reset(ShutdownCause reason) type =3D RESET_TYPE_COLD; } =20 - if (!cpus_are_resettable() && - (reason =3D=3D SHUTDOWN_CAUSE_GUEST_RESET || - reason =3D=3D SHUTDOWN_CAUSE_HOST_QMP_SYSTEM_RESET)) { + if ((reason =3D=3D SHUTDOWN_CAUSE_GUEST_RESET || + reason =3D=3D SHUTDOWN_CAUSE_HOST_QMP_SYSTEM_RESET) && + (current_machine->new_accel_vmfd_on_reset || !cpus_are_resettable(= ))) { if (ac->rebuild_guest) { ret =3D ac->rebuild_guest(current_machine); if (ret < 0) { --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415115; cv=none; d=zohomail.com; s=zohoarc; b=VIq56Grl30bTuSpkpcJEzzrFVOcjh2EQWXmVST9WHQW8n6A1svcHWjwQjJthhBL8oWh6ljEmBv5Ni6phxDvS4fFZwCmFfeC/RA1dmEqQKOFXp0BaD+hncW71GU5RGV/s2c7436Jm8PuOsMWlMCIZCoftQObPRXxwhgwpSUQffJA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415115; 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=cQ9AmELqqNz5UNGo6YfAytDPC9vGP4ny5Z7LzeX7WVM=; b=WjpbuInNcyGdRpzbiQScm/qOv6BjiOLub2rhTfxEc0qRkYS2P0ij4kZInnGgtAeQk3sjCgtGpZgcBxjoYUGAfZ8alDBQsf2k5wDgtHNmAwrGIIIfsk6/IVKzd7H/508fkiJZ1TCrnuefGaTmDwIyYjH+z41FCMAak6cOR9S1x0w= 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 1771415115054972.362203918208; Wed, 18 Feb 2026 03:45:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfzB-0005B6-K3; Wed, 18 Feb 2026 06:44:53 -0500 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 1vsfz0-0004Vx-Sl for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:45 -0500 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 1vsfyo-0008VP-Qq for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:32 -0500 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-530-2anBYWCsOoS4-79ME-kuFg-1; Wed, 18 Feb 2026 06:44:26 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2a8f8c81d02so49766605ad.2 for ; Wed, 18 Feb 2026 03:44:26 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415067; 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=cQ9AmELqqNz5UNGo6YfAytDPC9vGP4ny5Z7LzeX7WVM=; b=RQ3IsEH7rQUHbbft5k8H/WeuPOFlvkPvqatQd2ufIidKsxLHba6W7WQg/kiTN4V0tSoqqo J7OEoqmuerHzaVYv00/2rj2Hsp09ksF3FWIwU69a7w5cN2T8q2K6F8lnOzL/GQdzrXTgnC fkIoGHSXMFEN20wK2zK+fgHK2ae7LrU= X-MC-Unique: 2anBYWCsOoS4-79ME-kuFg-1 X-Mimecast-MFC-AGG-ID: 2anBYWCsOoS4-79ME-kuFg_1771415065 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415065; x=1772019865; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cQ9AmELqqNz5UNGo6YfAytDPC9vGP4ny5Z7LzeX7WVM=; b=Y+vmUcFost92ev5Z70YK/vtnFozxt1rOd/xuvqjOc8AfguBF6eCrj+kLjS051GxZc0 cH+wM6SxgJc7gqrcBQEZq7LcXe9OmXXz6NSxaT/rZHwz+HI/73uB5QbObKPewIgp6nLC W1AXGT0JLCdydysxiAeCiC792M4SlO2i39163lcPolAJzBCNvE49bu5eyQewTSpjUM4k XuhaRsEmBSvv+qpH3m7W4QAB9D22rL6ngtRL9nZCnDc6esvek9CKUiinudPPw8fOuXZV V0p5mKvmw6vUFuMDbF4SkBPIWO9MuGtpoRSPVT22vSQxFC0IjwTjSI2calCnKPWC3I3O wZmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415065; x=1772019865; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cQ9AmELqqNz5UNGo6YfAytDPC9vGP4ny5Z7LzeX7WVM=; b=opiVjo38JOefQUNICaREf0tGdU53Wb1uLb1xtseAFKxn04tDRtECktiul/EOnFvcFC 2/zEjZF8/bgET18z6uYzgGbilw/ItXtpShMltiy5H0o3aIfmLC7zbUpGAjcowKXG2iMT ztp49OaiXNwaaRvySkMY0P1FyhtQuh/SIIh8Y9AXvIXBbQlN2iApOg6gIhGAi8Z8f7Ez oPhwcGFBhvrBdoLeg5vjpmC3lL8QydFj1ddLnvWX+Y6p63XRcKu5rwkr86L0ZBmkVo9z hEytkqVFrnWVsekdAS0j76rYy9PezCOHeuiNREY2mm+4A7kb84A3tZop9lkk006qq+Xb c6Yg== X-Forwarded-Encrypted: i=1; AJvYcCWgTTR734d28mFbmm54KXB8SAVKW8B53Tv/dtsgdgvXUvQImANxiHDFno4T3VfTcqv9V2V5cgIsqvMQ@nongnu.org X-Gm-Message-State: AOJu0YzMSQDCm48dNhFBKLprnI8oaDMINk1pH010NsvEjYoAZRpaw3FL w0qEJdeZMUW5MUjOz9UKS8UYhVJD1KVdC+d/WYxneAHXsZ42sEVDUXTjYk3KncXVwaNTVQOy248 cqlTRjjDAKJqcjLY3YDLIb1SJvyXO3aCTukm8rgCtcPkxteaByxt/1FgX X-Gm-Gg: AZuq6aJedm0uCLRDG50mKWTXR5ISupf14qzyhdUsajSBaLAlKhjlPJ2ApOc/QBXBqhX OukIkcSKOjhYE4lDnAgwOB/lTRG9oEsCjX5FY1dTXiNTapoVGU40z8NqNUl8hUJ4ERgLTpmcFVr jQa4LeSiKeUTdfvAW82VWP+SxPLgz0xcrSN23fq1WRA+UvBPom+hlpmgBFARCSAfLMhaZLQlQuW JvgGV/AOkvEq6nwoJHhyjC4yXSFtOBIOI866RZO4tEbU20jozK5lyC0d7bHXoGMsfwK5iA2G28j 3ivYbo+rN+yz6pruKCyNWXbhtXGVNYmXNIQHY3dyxGftuEU7pMm2hN7ea4dSZoZl/+TjLcRJf26 XmOOtqmATaHwQzR7wGL/xzX1XZzrsYaZ3G+uVwcZIogNKanjX3Mjz X-Received: by 2002:a17:902:ea0a:b0:2a9:63de:b374 with SMTP id d9443c01a7336-2ab50521f0dmr150977565ad.3.1771415065371; Wed, 18 Feb 2026 03:44:25 -0800 (PST) X-Received: by 2002:a17:902:ea0a:b0:2a9:63de:b374 with SMTP id d9443c01a7336-2ab50521f0dmr150977465ad.3.1771415064954; Wed, 18 Feb 2026 03:44:24 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Zhao Liu , Ani Sinha Cc: kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 32/34] tests/functional/x86_64: add functional test to exercise vm fd change on reset Date: Wed, 18 Feb 2026 17:12:25 +0530 Message-ID: <20260218114233.266178-33-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415116393158500 A new functional test is added that exercises the code changes related to closing of the old KVM VM file descriptor and opening a new one upon VM res= et. This normally happens when confidential guests are reset but for non-confidential guests, we use a special machine specific debug/test param= eter 'x-change-vmfd-on-reset' to enable this behavior. Only specific code changes related to re-initialisation of SEV-ES, SEV-SNP = and TDX platforms are not exercised in this test as they require hardware that supports running confidential guests. Signed-off-by: Ani Sinha --- MAINTAINERS | 1 + tests/functional/x86_64/meson.build | 1 + tests/functional/x86_64/test_rebuild_vmfd.py | 136 +++++++++++++++++++ 3 files changed, 138 insertions(+) create mode 100755 tests/functional/x86_64/test_rebuild_vmfd.py diff --git a/MAINTAINERS b/MAINTAINERS index b0eb77c08f..de74d568e9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -157,6 +157,7 @@ M: Ani Sinha M: Paolo Bonzini S: Maintained F: stubs/kvm.c +F: tests/functional/x86_64/test_rebuild_vmfd.py =20 Guest CPU cores (TCG) --------------------- diff --git a/tests/functional/x86_64/meson.build b/tests/functional/x86_64/= meson.build index f78eec5e6c..c6553d922d 100644 --- a/tests/functional/x86_64/meson.build +++ b/tests/functional/x86_64/meson.build @@ -36,4 +36,5 @@ tests_x86_64_system_thorough =3D [ 'vfio_user_client', 'virtio_balloon', 'virtio_gpu', + 'rebuild_vmfd', ] diff --git a/tests/functional/x86_64/test_rebuild_vmfd.py b/tests/functiona= l/x86_64/test_rebuild_vmfd.py new file mode 100755 index 0000000000..5a8e5fd89b --- /dev/null +++ b/tests/functional/x86_64/test_rebuild_vmfd.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 +# +# Functional tests exercising guest KVM file descriptor change on reset. +# +# Copyright =C2=A9 2026 Red Hat, Inc. +# +# Author: +# Ani Sinha +# +# SPDX-License-Identifier: GPL-2.0-or-later + +import os +from qemu.machine import machine + +from qemu_test import QemuSystemTest, Asset, exec_command_and_wait_for_pat= tern +from qemu_test import wait_for_console_pattern + +class KVMGuest(QemuSystemTest): + + # ASSET UKI was generated using + # https://gitlab.com/kraxel/edk2-tests/-/blob/unittest/tools/make-supe= rmin.sh + ASSET_UKI =3D Asset('https://gitlab.com/anisinha/misc-artifacts/' + '-/raw/main/uki.x86-64.efi?ref_type=3Dheads', + 'e0f806bd1fa24111312e1fe849d2ee69808d4343930a5' + 'dc8c1688da17c65f576') + # ASSET_OVMF comes from /usr/share/edk2/ovmf/OVMF.stateless.fd of a + # fedora core 43 distribution which in turn comes from the + # edk2-ovmf-20251119-3.fc43.noarch rpm of that distribution. + ASSET_OVMF =3D Asset('https://gitlab.com/anisinha/misc-artifacts/' + '-/raw/main/OVMF.stateless.fd?ref_type=3Dheads', + '58a4275aafa8774bd6b1540adceae4ea434b8db75b476' + '11839ff47be88cfcf22') + + def common_vm_setup(self, kvm_args=3DNone, cpu_args=3DNone): + self.set_machine('q35') + self.require_accelerator("kvm") + + self.vm.set_console() + if kvm_args: + self.vm.add_args("-accel", "kvm,%s" %kvm_args) + else: + self.vm.add_args("-accel", "kvm") + self.vm.add_args("-smp", "2") + if cpu_args: + self.vm.add_args("-cpu", "host,%s" %cpu_args) + else: + self.vm.add_args("-cpu", "host") + self.vm.add_args("-m", "2G") + self.vm.add_args("-nographic", "-nodefaults") + + + self.uki_path =3D self.ASSET_UKI.fetch() + self.ovmf_path =3D self.ASSET_OVMF.fetch() + + self.vm.add_args('-kernel', self.uki_path) + self.vm.add_args("-bios", self.ovmf_path) + # enable KVM VMFD change on reset for a non-coco VM + self.vm.add_args("-machine", "q35,x-change-vmfd-on-reset=3Don") + + # enable tracing of basic vmfd change function + self.vm.add_args("--trace", "kvm_reset_vmfd") + + def launch_vm(self): + try: + self.vm.launch() + except machine.VMLaunchFailure as e: + if "Xen HVM guest support not present" in e.output: + self.skipTest("KVM Xen support is not present " + "(need v5.12+ kernel with CONFIG_KVM_XEN)") + elif "Property 'kvm-accel.xen-version' not found" in e.output: + self.skipTest("QEMU not built with CONFIG_XEN_EMU support") + else: + raise e + + self.log.info('VM launched') + console_pattern =3D 'bash-5.1#' + wait_for_console_pattern(self, console_pattern) + self.log.info('VM ready with a bash prompt') + + def vm_console_reset(self): + exec_command_and_wait_for_pattern(self, '/usr/sbin/reboot -f', + 'reboot: machine restart') + console_pattern =3D '# --- Hello world ---' + wait_for_console_pattern(self, console_pattern) + self.vm.shutdown() + + def vm_qmp_reset(self): + self.vm.qmp('system_reset') + console_pattern =3D '# --- Hello world ---' + wait_for_console_pattern(self, console_pattern) + self.vm.shutdown() + + def check_logs(self): + self.assertRegex(self.vm.get_log(), + r'kvm_reset_vmfd') + self.assertRegex(self.vm.get_log(), + r'virtual machine state has been rebuilt') + + def test_reset_console(self): + self.common_vm_setup() + self.launch_vm() + self.vm_console_reset() + self.check_logs() + + def test_reset_qmp(self): + self.common_vm_setup() + self.launch_vm() + self.vm_qmp_reset() + self.check_logs() + + def test_reset_kvmpit(self): + self.common_vm_setup() + self.vm.add_args("--trace", "kvmpit_post_vmfd_change") + self.launch_vm() + self.vm_console_reset() + self.assertRegex(self.vm.get_log(), + r'kvmpit_post_vmfd_change') + + def test_reset_xen_emulation(self): + self.common_vm_setup("xen-version=3D0x4000a,kernel-irqchip=3Dsplit= ") + self.launch_vm() + self.vm_console_reset() + self.check_logs() + + def test_reset_hyperv_vmbus(self): + self.common_vm_setup(None, "hv-syndbg,hv-relaxed,hv_time,hv-synic," + "hv-vpindex,hv-runtime,hv-stimer") + self.vm.add_args("-device", "vmbus-bridge,irq=3D15") + self.vm.add_args("-trace", "vmbus_handle_vmfd_change") + self.launch_vm() + self.vm_console_reset() + self.assertRegex(self.vm.get_log(), + r'vmbus_handle_vmfd_change') + +if __name__ =3D=3D '__main__': + QemuSystemTest.main() --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415116; cv=none; d=zohomail.com; s=zohoarc; b=aNLQjafgciZ41jYQb2F0ZlspPAQc4iU5hnIK9cch25x4a0CESFLpKJiQJLomCl6zzsDvJwdmAkP9ncvTEhSf7i3oisWyBoLtlkQRtaaeon7k/6KJgAAuGgCohVJxM/7W2ILfas7OR4EChZTLiTzkn3hwKarB3ppYMn/tAg4uwyU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415116; 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=wNOtE9iAdY/fz5zXRGOHALzxPR6yavv/SKATwTTFh+E=; b=QiXq6AKMUG0XwiGe+txB3BUi62iWzcB9jgBJ54lFeLyQorPNBQkqvInnXURA3+eIcBfP06Q6YnHIOLlJvkNrAVeXoNJgG5Tl1UHAm29dnD8Ba3wjnRubw9Ufx3wYRBOdb68k9F+hv5nq39Pk1RuQ4hyfZQ93w4Mj7iv9DqG12V4= 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 177141511637453.89502056651213; Wed, 18 Feb 2026 03:45:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfzF-0005dX-IJ; Wed, 18 Feb 2026 06:44:57 -0500 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 1vsfz1-0004Vy-2r for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:45 -0500 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 1vsfyp-0000DB-Th for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:33 -0500 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-670-dfzRB1vKNK6m7qjMrTbauw-1; Wed, 18 Feb 2026 06:44:29 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2a7a98ba326so11896075ad.1 for ; Wed, 18 Feb 2026 03:44:29 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415071; 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=wNOtE9iAdY/fz5zXRGOHALzxPR6yavv/SKATwTTFh+E=; b=TCM4Qtmw8H71yZo/+9Ch7r4JuaD6noICSCOb2PmrLNoKpkRYuOvKvE7Q+SLH4ARLb5jD8x 9wq8tTUjma3fH2Q5uwV6mOaAwenakUFOL66AkIM5Yo0yFcJdtfNzYd0c/HiaMrWim5iY2l 8ANJCOkDMb+KBLGR7yGaAcUdyEieULk= X-MC-Unique: dfzRB1vKNK6m7qjMrTbauw-1 X-Mimecast-MFC-AGG-ID: dfzRB1vKNK6m7qjMrTbauw_1771415069 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415069; x=1772019869; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wNOtE9iAdY/fz5zXRGOHALzxPR6yavv/SKATwTTFh+E=; b=LcZV4Gonm2W7NipZXPj/nC8KuJ+2U+8hqIWT+qBmm5T/bs25PKNXnP/gmwKB4fQpO4 Ijl1C4opcLc5DD+1PGwogedPqqelgjLPMWZpnWE0pXVac9KUSfUl2RkUEhsjda+Zavpu arzfufpFQXLMp9cOiB0NgJlWpoTwWmR4JlcjwPL1ZJ3Op1FWbqP5WDj0Hd6NywvU6zlE EnwyJxAG9TnapB+ZycxnJ2clMKogs7oazyRuN29v8OcGDtVutv8OYoWgkd2UgGuB1G+x 5YSlCR3pnAdKlj/n281hKsgfKsflp8GxUCnuej5TMMa1JgrAVEXJN00+BOnuy9WPSumY nAow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415069; x=1772019869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wNOtE9iAdY/fz5zXRGOHALzxPR6yavv/SKATwTTFh+E=; b=ARJPYsdY0Ve5cifAmtdz+NyNruE1CEmI1DGTPn7eHFpZTQWZ/9AWaeySDtdDqL6OQd jays+Vsuwwf2yC8N2qGF6kOU1J1kOdv8k5AJ8wToC7mvGGP3u2gY0wHL6E/RkjeaQ6eR dyAWGaVGSsZqkcYsLVpC3V+aDJWcGrXcbHnoP6UkB9ql0qAVCrJpVLM5ABbOvdZ6A0tc e3GxnAfUhRP9TOsBK0RRpwhUpS3LHSSGZBFWFxCLzMm57ephv9UW0Wwrdv4qQPAKjeUs NXvhHPm9pBiQvkV9LBHDLQmX7KXR7vAJjx8JCzQVK0p8aLJls1S3sAtORaFhXXOs/LDf 0bBg== X-Forwarded-Encrypted: i=1; AJvYcCUBjKONs6684XjQVVJqQXgJm4CrbBNEHKP5dBV0ZmKf+uMmWarfA01p7cjd95o6iTdWNS46g6gLMWKo@nongnu.org X-Gm-Message-State: AOJu0YySOUFU1xSaDIGlq60FlY35rS1Ugv8uDVAohyy9wwcic2l0Iq6h CdSGPl18kZMK0A5r0sPIQ/k7y9kwjIU2J/r2SvT4G/ENXHlU30g+Ycbo+OCoA6rdi/h9PHnlWlV 7ETkZH+C/zvLCFcIZTr5oHmZqyhIG0XpOrTfrocunstHNVDqOvUyZCICU X-Gm-Gg: AZuq6aK1HmbZnsws4AxRQVns8F68lUdNrRfOnn5WbQ7IjitVvgjCR+5lKKRmWIdI41g LYvHHJxtU7nwuC3rinrhueMeeYtTA+34LM2r8S4VJXjDlvK7TwYk3ZAzqTYO+nRYsC6TOCIg8jz e2fXkFTKMcgFMn5VqwYRCVawmQ8OcuqQY+F4B4OuZnOVkfNWupryjjSRaeJnEWJUbnxgQQ33s/+ J8y1TrzTy96rGNK5Vlq2M50TqWdiJ1Y3+rYTVxMrFTsSznMCd0SQAnhrtZLwf3cDcpf9Hi9EJCy JN+5YhzeCnfqvEsoykv7P7+5LtDXYan8fsUYH6e0MDB7dfeJ+GTUB4ve0k4gHtbeksBOjvgSIiA JhhaZGFobM/cYJr7Uxz4JBmUul13v0gmYNJlnqM/d1xEey6NrPPKg X-Received: by 2002:a17:902:ef03:b0:294:f6e5:b91a with SMTP id d9443c01a7336-2ad50bbdcdcmr14727675ad.13.1771415068725; Wed, 18 Feb 2026 03:44:28 -0800 (PST) X-Received: by 2002:a17:902:ef03:b0:294:f6e5:b91a with SMTP id d9443c01a7336-2ad50bbdcdcmr14727525ad.13.1771415068359; Wed, 18 Feb 2026 03:44:28 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , Eric Blake , Markus Armbruster Cc: Ani Sinha , kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v5 33/34] qom: add 'confidential-guest-reset' property for x86 confidential vms Date: Wed, 18 Feb 2026 17:12:26 +0530 Message-ID: <20260218114233.266178-34-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415118782154100 Through the new 'confidential-guest-reset' property, control plane should be able to detect if the hypervisor supports x86 confidential guest resets. Ol= der hypervisors that do not support resets will not have this property populate= d. Suggested-by: Daniel P. Berrang=C3=A9 Signed-off-by: Ani Sinha Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Markus Armbruster --- qapi/qom.json | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/qapi/qom.json b/qapi/qom.json index 6f5c9de0f0..c653248f85 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -1009,13 +1009,19 @@ # designated guest firmware page for measured boot with -kernel # (default: false) (since 6.2) # +# Features: +# +# @confidential-guest-reset: If present, the hypervisor supports +# confidential guest resets (since 11.0). +# # Since: 9.1 ## { 'struct': 'SevCommonProperties', 'data': { '*sev-device': 'str', '*cbitpos': 'uint32', 'reduced-phys-bits': 'uint32', - '*kernel-hashes': 'bool' } } + '*kernel-hashes': 'bool' }, + 'features': ['confidential-guest-reset']} =20 ## # @SevGuestProperties: @@ -1136,6 +1142,11 @@ # it, the guest will not be able to get a TD quote for # attestation. # +# Features: +# +# @confidential-guest-reset: If present, the hypervisor supports +# confidential guest resets (since 11.0). +# # Since: 10.1 ## { 'struct': 'TdxGuestProperties', @@ -1144,7 +1155,8 @@ '*mrconfigid': 'str', '*mrowner': 'str', '*mrownerconfig': 'str', - '*quote-generation-socket': 'SocketAddress' } } + '*quote-generation-socket': 'SocketAddress' }, + 'features': ['confidential-guest-reset']} =20 ## # @ThreadContextProperties: --=20 2.42.0 From nobody Sun Apr 12 04:27:06 2026 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=1771415200; cv=none; d=zohomail.com; s=zohoarc; b=Ai6HeXUg2BA7EK6uJIy7MnE+hDY2wcenIXElUlzpXjThBPKGTAnKy/1WUHd5Gqz2MyG8lVA6GlQSQv3Yrmgjfe3Hgin7VDrucctcddMcdBZNO6zcQqy2uJOvlNJOnPkxMhjTEbM+bBvBd+KFJhNg1w0RqRw7i7jI/JZqcYinklk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771415200; h=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=igOnGXXgq3eDAiSjsSp69SbZ2aYSYQJQPNazxijENj8=; b=QQOW7fhWC77SJSkfse79n27GFeItnNlKMg4tL1o2v8iCNcaUnynRLHm4vNXEm8synCic7tgpmJmbAdicWaWLCQtgbisNsmIUUolPoj+Uat9LgwBsBEBCs8PUULrV0Ra4Otp5HDCUR4Uk4LfYIiDI+sEU1gKytlHfxw+eGv5JsE8= 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 1771415200686142.98891319466907; Wed, 18 Feb 2026 03:46:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vsfzG-0005jo-EE; Wed, 18 Feb 2026 06:44:58 -0500 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 1vsfz3-0004WV-6j for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:45 -0500 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 1vsfz0-0000GS-3v for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:44:43 -0500 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-684-Xu-bK31bNL6PIHJFJmUCpQ-1; Wed, 18 Feb 2026 06:44:32 -0500 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2a76f2d7744so57571955ad.3 for ; Wed, 18 Feb 2026 03:44:32 -0800 (PST) Received: from rhel9-box.lan ([117.99.83.54]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.44.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:44:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771415073; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=igOnGXXgq3eDAiSjsSp69SbZ2aYSYQJQPNazxijENj8=; b=SlBIpqtA8j6i1RxQv5BYjbtI8z2MCcFzFoMFjfzE4AOREfT7Dx0FpM/oP5tinV7geZFHH2 +F6+nxoa2qKl4c3AwZ9camy86peSV4MIyV6B8HWhEy1bVjDpveaYM6/Qf91SfmkYzX9neb 1QiCdYiISxhbG7J8won0wLQ8pDUjD6k= X-MC-Unique: Xu-bK31bNL6PIHJFJmUCpQ-1 X-Mimecast-MFC-AGG-ID: Xu-bK31bNL6PIHJFJmUCpQ_1771415072 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771415072; x=1772019872; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=igOnGXXgq3eDAiSjsSp69SbZ2aYSYQJQPNazxijENj8=; b=bNJY+G/JXmM7pl4oP/jG/dTPwiO0krF8wHwiN4+pog4Une0f7XqrgPFr2WDHF7/Zr9 aWFIhnJp7pIRCHYkEFr639j7exGZRMTl6AbYIPQTtCP+yA3Otv1zF9dZro13paSlBCi2 cCH5QkNMlfPO6K5c66uYxM7/D3doSu5JdSwId8eEVQq9XHRrKiNOzWnNhzSqUM+WeBMK +/pTpTpmghWfEE/UGBJWVAZCqhFzBaB/ynT367NL05U26dB4b5YR5YTUoZ/LDP/TMh0B o3p50zKvesuLgwAs1MivdD/QYH/XHNipg06KW7jJ285T7v6UCJdrrNaSxxpfOAPJhqYY yLqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415072; x=1772019872; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=igOnGXXgq3eDAiSjsSp69SbZ2aYSYQJQPNazxijENj8=; b=ISTYYKl9kQnSEQnJ3MyluKu4sqPs17ggLpB3/tuNXbZwqtUssgcyTyxUaLyXwqKnWP NHwy/wxzDO3AFRC3WZoTlH2ISmFsg8H4chfbMdEIpyAbTxYd+XBe+6ykObOHLUQHwM+j edYUy2i6QiDsfpMiRnNZbA04Ze4YL3eoZhRz3FyPtBWiCwapZxlP8nUZo0Pbw6AYN2Cg 4+Gz6kFOOjheBepuhEJyBVjgGH34MaHFkkIf3UV5Afv+/OwOrffLJ/YokkjKmNmElTS7 3and8fqz3k8Wj6a4vKPCdPWSkVn4KWN+QkxiyZXZ9WVTVbrT+ktzl/LrfF9kObCLgQ/a 5nxQ== X-Forwarded-Encrypted: i=1; AJvYcCX8q4JXDi/BMNowa2rtLFlChOA8IeJLkY3SvfmBIK9FeJwnog+U/plhHKT6wBol9ucZaC1pt+76pUEN@nongnu.org X-Gm-Message-State: AOJu0YzfMrabAQYNixyfvyUBzmJ61umBu7Gm2KgtxykC4HHLlgFhQOGZ D48Uset7DSjedQvZ4ksURzTDM5o8ge+yYFgoVmNx9jHIJVhnVjxMaHddA+Rer5EJxO4pqN9Zuyp 7vRwIxmyaA1IJtU0izp61BvKcCvR/p+kgdLV/Dpe+ORF06a6a9xCiF6Hf X-Gm-Gg: AZuq6aJVGjrI04YRwsYrpSiM0J73IhwokVTIqOUVvIMsfNi+X5TjhcEoPL1nc1RHFcm cgUEDvrATfdvWGxAczseR4GT2sev9OwwapxZLKc6ss83jXDagJt0Cq6F7xx8IS5fLjHeRJy1G8m Kl+M66vr2PhwknWy5xFQk1Ohh3V04qBcMdlbUq20CRkfYGldEFmuzHIUqcWoicWbPKqULniiekc q5ehkLmfPWrIzl7HAIv8j1D4gadDiJc96n7ppIy4uf/rANux9HsZ9A49aYAplfnT79mJ0av59rJ j4k34oXtr1zDL+n8MfHcdWhaWP8OdttYmnarhK11r4TXogrNPSDaen3sUOUFB371hHPf42Ssv0J YFvZxTDEtPW2EBv0yMgys3fsUcW/uqadDjnqXmnZl89KIA3YAX2Dj X-Received: by 2002:a17:903:38c3:b0:2a0:bb05:df55 with SMTP id d9443c01a7336-2ad50ec19f4mr17451675ad.21.1771415071624; Wed, 18 Feb 2026 03:44:31 -0800 (PST) X-Received: by 2002:a17:903:38c3:b0:2a0:bb05:df55 with SMTP id d9443c01a7336-2ad50ec19f4mr17451485ad.21.1771415071261; Wed, 18 Feb 2026 03:44:31 -0800 (PST) From: Ani Sinha To: Peter Xu , Fabiano Rosas Cc: Ani Sinha , kraxel@redhat.com, Prasad Pandit , qemu-devel@nongnu.org Subject: [PATCH v5 34/34] migration: return EEXIST when trying to add the same migration blocker Date: Wed, 18 Feb 2026 17:12:27 +0530 Message-ID: <20260218114233.266178-35-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260218114233.266178-1-anisinha@redhat.com> References: <20260218114233.266178-1-anisinha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=anisinha@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.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=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: qemu development 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: 1771415202592158500 Content-Type: text/plain; charset="utf-8" Currently the code that adds a migration blocker does not check if the same blocker already exists. Return an EEXIST error code if there is an attempt = to add the same migration blocker again. This way the same migration blocker w= ill not get added twice. Suggested-by: Prasad Pandit Signed-off-by: Ani Sinha --- migration/migration.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/migration/migration.c b/migration/migration.c index b103a82fc0..495664e01a 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1696,6 +1696,10 @@ static int add_blockers(Error **reasonp, unsigned mo= des, Error **errp) { for (MigMode mode =3D 0; mode < MIG_MODE__MAX; mode++) { if (modes & BIT(mode)) { + if (g_slist_index(migration_blockers[mode], + *reasonp) >=3D 0) { + return -EEXIST; + } migration_blockers[mode] =3D g_slist_prepend(migration_blocker= s[mode], *reasonp); } --=20 2.42.0