From nobody Sun Apr 12 05:51:24 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=1770877611; cv=none; d=zohomail.com; s=zohoarc; b=kY/FI5PrVOpwxA6aybbVV+4D6XxsIKaQf8O2PYPPvsMKCDSnPEmgZNTlG9DTAq8WCnLtrwb+xaiMts0DsFI0DszGZrFWxup3IEXekqCyM88zqATBzL7RVBtGv6k2lYvMFSPWcrTVjs8DilhgHOEUOcUqfatDOtPX+MEUqUnyAnY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877611; 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=u8BwHOpnoiGVi9W+T3Y/yleQ5+CcGtx7LvYvltU6aAQ=; b=b1KD3U/utUq+7FMuRPN58NuI+J9EtbbF+1zKcePXuxLu4cW8ETxI/qAxN+GPkdQLT6NhCZVlTr3V1/ibcTWo822mT9BpSz826o/GM1kmdZiNCyNYaSAZBtOO1g4nXDxhB1nVODEwpnKFKMu4HsOIeXBV6B4popcRRwjJ9i0rPf4= 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 1770877611531824.1614735375001; Wed, 11 Feb 2026 22:26:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ94-0007YW-Ml; Thu, 12 Feb 2026 01:25:46 -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 1vqQ92-0007Y5-G0 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:44 -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 1vqQ8z-0005Bc-QN for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:44 -0500 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-612-a-SPFk0TN4q3fjUzxCdhfg-1; Thu, 12 Feb 2026 01:25:39 -0500 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-354c0eb08ceso7659257a91.1 for ; Wed, 11 Feb 2026 22:25:39 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.25.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:25:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877541; 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=u8BwHOpnoiGVi9W+T3Y/yleQ5+CcGtx7LvYvltU6aAQ=; b=DVBc2Yw1wk57S8yw5G26E8Dqz1ygHBIdy9eM6+YRQYPX04/HhkXKjVS9Qk9QAzctwra5RE NtSpeAgp1YcaP7dUimKyiSNKzTERbEGvymi1mbYTJ/yCcQHqpqqIE903hBRFRyBENnHU1v aPbG6U/wNj+OC8SWVD4fpkNeD9mMZA4= X-MC-Unique: a-SPFk0TN4q3fjUzxCdhfg-1 X-Mimecast-MFC-AGG-ID: a-SPFk0TN4q3fjUzxCdhfg_1770877539 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877539; x=1771482339; 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=u8BwHOpnoiGVi9W+T3Y/yleQ5+CcGtx7LvYvltU6aAQ=; b=UAN+zQY+JfLio09uoKgcWMP1I6QNJO05c6gB0920/WPeRKqJeJiNQAw06o0d6PJD3C uPjFTk7dCjxz/3RPeJvu6yVVviA2P8xoJpfkrmerOA9ruS3FL/i5mHI1F7htzDKbjmVg Dhu2NNGMeMw4ZlsGmMYf2UL5dXULiC2EHFa8ty2cJubH3nqQ5s6C0JqkJwtr6YyHFw95 WQ0Wcdy5Uwy2gGOC53TwSkCaNWw0yTYhQ3uNT1Mjtay/gN2W1nKumr+I1LiViJuffii9 W3RoyJB3wpGsf96qnE0EMeCqccJIt9oC4HRtomOtS+gyAbI+RO9P2ppgr3gO1LvHnM6r GhSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877539; x=1771482339; 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=u8BwHOpnoiGVi9W+T3Y/yleQ5+CcGtx7LvYvltU6aAQ=; b=qekuvFdgkstYxK7kjaw99LGFwO4CMH8oNlLmhTOCUZEv/2lcK6H38wOzz1LIHn2B2A rEkLO4W/iPg3poMCAYS2uk2g0RqsI3urjgDNXBijsUgiOlKumhx+F5x14hvSZOYe42gi FEQTWmUS1xJ3NZrDtBJ57WOMcVbPw9fT/1gtBcCxC+PlhgNDSeSZ8vxHNMe94Caw4ny8 ROkkfwT2XqzCMyGzoeFTHGNNSBLryMHLoPsvfwDG6voj8xnK6tEYaYOn026l7+MvY4O/ J43sEpA2uZNmh0Uyp5Nd1EvZLQoHne7rS6UUDOcFhMnaxY3eZK5bh2u4N0gaeLAPPsfJ dycw== X-Forwarded-Encrypted: i=1; AJvYcCXAJbo5tt1W+82An/0osGrO9TMsxp2Hxw9wB8nM80+FLvmIH6D8gbVocCmMNY89FDVLOevHXTkgmXvQ@nongnu.org X-Gm-Message-State: AOJu0YyWzo8WS1VbM6S4tlUNIKvBXGs4Xocfk3nxeTPZlcGe5LsCbGYD sB8b4vfRRV/YFWWQat4CTHo2+3RcKX3K0NNWoDQ+elTV1nxIbeuqGWjJQ8vPTwNIAdZiFOGzFnt NKjf4wYecKnvX+5ylH5/a2O4A0ATh8Bx4+0UCeBGtkqSq9MfpkwpYNWyU X-Gm-Gg: AZuq6aJrO4jGhfvOljUdHoXPn2jJY/rUeVZ0wUP55i5UZ+s4F0zhAo8X0usNZbJbQlF F3N+T+qWUY9KaaumKuNB138L3ghvlPOuhmj4n6O9mkGdiMqudo7dJBOKg4QZ9lAj44HTgjzz4J2 CEdtVZyzSURz2d5JEKCSW+O0Ah/xsn5LY/l5gWVzaAFy04IM861r9RJRovF7/GBCIwjF77M9Mc6 jWLhxL2QnIuNth+qWVuEGdg1wlML8AhvLPkybjZqYXw5fb6ftO9PTUCcNelTdhWn7N+UbKMb2b3 KsYCdP3Ebh3IHqwEyebtqrLcaaR5TpquxoBKPw7BVqNQbDw7Nq4pyNos4Q6uRdTOtRjNs4UBW84 HnTakxG0mXnj/4PrVzTvOmuSEFVbUNvXFhhV+EIw08KoeaxB2EFYeckY= X-Received: by 2002:a17:90b:1f8b:b0:356:41c2:897d with SMTP id 98e67ed59e1d1-35693cbd055mr1186994a91.8.1770877538770; Wed, 11 Feb 2026 22:25:38 -0800 (PST) X-Received: by 2002:a17:90b:1f8b:b0:356:41c2:897d with SMTP id 98e67ed59e1d1-35693cbd055mr1186983a91.8.1770877538479; Wed, 11 Feb 2026 22:25:38 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 01/31] i386/kvm: avoid installing duplicate msr entries in msr_handlers Date: Thu, 12 Feb 2026 11:54:45 +0530 Message-ID: <20260212062522.99565-2-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877613323158500 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 0c940d4b64..da1ed3b62a 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -6042,27 +6042,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 05:51:24 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=1770877759; cv=none; d=zohomail.com; s=zohoarc; b=fWlLHGYzOo0xQC685t2Hovlhgura5vOxdahiHelJugAZ9NmgBQKAwjgJrNRyGmpky3vizXMmV9NTvcK1qm/2Q26osLXADmV6V2WnMRl/avEs/XeXNCOB3jLr3pA/oI1I7blgzRAalXjGpU8ra7BO8mBVjWCx0Hg8tMeNxm8lsik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877759; 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=/1VlHtYGbkfW+qN/OA1sAKbbnZvFUDWI/CtmetDJXqY=; b=T/UnmwFYScMQx3BNS8JMJP7lV3Tg2USZhOlSJLUtGgBAvG4EFUd6vNC4wVwpB8PGncU12PIxZudrpXDcWHsvxMQWz/Ew+MvnW0ao79TmrLsTQnUyeghrw7t86eXEDPY1bXqTvOMfF5/hlLhNq0p9TuLLOTjsNX3JBSfDGX1g3bw= 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 1770877759112467.4560525742679; Wed, 11 Feb 2026 22:29:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ97-0007ZF-He; Thu, 12 Feb 2026 01:25: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 1vqQ96-0007Z7-9O for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:48 -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 1vqQ94-0005C8-Mb for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:48 -0500 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-217-ckoYampSPv-OEOiFmxXdag-1; Thu, 12 Feb 2026 01:25:43 -0500 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c6e1d32a128so896464a12.3 for ; Wed, 11 Feb 2026 22:25:43 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.25.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:25:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877545; 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=/1VlHtYGbkfW+qN/OA1sAKbbnZvFUDWI/CtmetDJXqY=; b=NVDNfbdGLv5n4A228J1bftSZ8vpsOE8Q9XxQ2FFHeJsRozMrNycA4M2SXD27l2RcP9E7EG P5XpINdOF6I2rumFLP4CPU3y8e1Z9FcSZQL7LMSSBUScP8c7UNnn7sylpeXBlVKcKKIcYs McULGWZ0BhfQCBSqwwZ3bjZUQQdp57o= X-MC-Unique: ckoYampSPv-OEOiFmxXdag-1 X-Mimecast-MFC-AGG-ID: ckoYampSPv-OEOiFmxXdag_1770877542 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877542; x=1771482342; 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=/1VlHtYGbkfW+qN/OA1sAKbbnZvFUDWI/CtmetDJXqY=; b=nrGTHCl5a5CY/EgpNNEVuiQGeFo9N3S34c4EoYIbC/B1oYac2fIrxS8uEd3ZjP590s ZTMbh8eCU3zoYBy5jrGv+/QmwdC5fd/LGjZc6ufaFXpiG1lGkYJfmLysyE9zruMh39sX rXY+ofsofnuMfAGsp4rkS9YGx4c3CKUcxEQKcKaAs5yq2RdEOjkLo/vxTELEi3Eq56Y0 IALGsxhlqN+lMraucQVrKXC1OHaVzZ8MpbC9tWvBAioM100Kxxy2+NyBf3/eDuZijduP HrlTYcbk30SRSC2CTGhmvYtZdmJCeIkgsshLyBegYzyV1g770eRb9e+0oaEizEarcvwC l85Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877542; x=1771482342; 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=/1VlHtYGbkfW+qN/OA1sAKbbnZvFUDWI/CtmetDJXqY=; b=uUgmvHv06sFqugdLaQDw+cQky7DjaUc2JfMfQUVGMGpp83+Ect5dF3flGl09b0lL0x KeotMlaUfgpnUlutX/5sI40WTgnFLXnUM2hhU3gI9MlJyIMp6MfwRl4Rhf0308Zzcscm 1Ce2or9HM7BZujah4GsWVYR4r/wqieXm0v3kOj4xquuaAv7cxYqJxFj2R1dkMmNnGVDl cjSr1UF4kJql2TiesQrqUNrg7pLoq++PqqvktcDEWSElynu0I8lz3ERp6jSRXyTMDR1d Mla6lGB44BpijLmuJoAS+47WutKbbJgnVdjneK+n4Ov+KWOo9ZOTG0H+VwbXguqIJnui oD9A== X-Forwarded-Encrypted: i=1; AJvYcCV/73iEZMkqNGKIs2D1T1geBMwrim9gAnkMhf47U2W9nz+CyPiT5IkGBGiDI8Sst3WOEuFFrjoWzgoJ@nongnu.org X-Gm-Message-State: AOJu0Ywxqc5x6cz7YYEH3XOVLBkgaG6JjCp24w4Mei94lHA/4EOuYsnc mcQvSEHZr8iabi9CMgM5UF/Vfg6gY8NTLtzwNY3AJ27mFF2enoXGtEvKe84oIXxoVS0ovPkB/qb AlzXUGv0MAWXxh4U6n/Qo55vfYrdvNhIyH5PffnmVVee+M0J9Zk7mjhio X-Gm-Gg: AZuq6aItHlybRipDK69x5saI3OlyS5y3X1PhmmbqmQtl0nMs94fS25OGPhxRJzxlbhY dXbceXIY/9hsw4kTgKtboe8IcjrFpl1cX0QBzJw5MY9F1AzXGWyU6ubQF3zDYqKuHb1+X2JUV8t A7pg76ZYbXnPUVKyxSQGeW/Tyj/5hK8STg+lW6PKRiDJSLHl1Z9ApgFIHXlDlXRcdKY5CtFygp9 LY8np5EQG8EnVEzz0bouf1gQxHXGWqVgW4/xAWbuCeLEfhdORatytWFQaeECRmYZtNzxKyQHZJg op3WbzP7MpoJK6YPV6+SiJjz9IPeGSsrwjBig9XSFlTpQA2DK7ETHgMEWgXSeMdSCGI8ZUaebmY aUBjRmaTtp6Npio8X/LR7BdFZCyj+PuDVT4Vm9pcA59H7vaUVmR8DUfA= X-Received: by 2002:a05:6a21:3b49:b0:35e:e604:f78b with SMTP id adf61e73a8af0-3944845c420mr1507972637.3.1770877542143; Wed, 11 Feb 2026 22:25:42 -0800 (PST) X-Received: by 2002:a05:6a21:3b49:b0:35e:e604:f78b with SMTP id adf61e73a8af0-3944845c420mr1507949637.3.1770877541761; Wed, 11 Feb 2026 22:25:41 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti , Zhao Liu Cc: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 02/31] accel/kvm: add confidential class member to indicate guest rebuild capability Date: Thu, 12 Feb 2026 11:54:46 +0530 Message-ID: <20260212062522.99565-3-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877760864154100 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 ed2db56480..5d58260ed5 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); @@ -693,7 +692,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 05:51:24 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=1770877650; cv=none; d=zohomail.com; s=zohoarc; b=RZnnc4yvI9jliWNPMUOMJodNMn+ED0YipSebOgaHMmKUrbgbFgBUYJ3UNgDux28uHvbw6q8iWvtpqISD3senQ0Cfo/m9jMGOakXQ7dhr7QIwl5ySGi/jGCqZgkiSUueymi4JtAJhbEshOKdmSn2QjxlcL4nK9xHHT3u7Ig2LrZ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877650; 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=pHG3b4cYl6HI67xkeHbu34Z6D7hlRIGcfFnOo5hYIvQ=; b=NVOKDX3jAetztl2UO28caUkY3pxYuBL7YhmNPerdqOq1f/K/RNrS4YGknhMf3VnmfrjuFa+SYR76j52dQqjzHeY3hHJJFK5O+x06Swrca0Eixn2LaDs2/5TrFDrbSfPYnoWIs2+wQHWPCaFwIAFd1DyKUR2K0cHjyH7rQNBztiI= 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 1770877650435712.9870245372601; Wed, 11 Feb 2026 22:27:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9C-0007Zo-AU; Thu, 12 Feb 2026 01:25:54 -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 1vqQ98-0007ZX-Dn for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:50 -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 1vqQ96-0005CZ-QA for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:50 -0500 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-232-JwjOEMXTNNCiBsdiSpp4oQ-1; Thu, 12 Feb 2026 01:25:46 -0500 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-354bc535546so5945613a91.3 for ; Wed, 11 Feb 2026 22:25:46 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.25.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:25:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877548; 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=pHG3b4cYl6HI67xkeHbu34Z6D7hlRIGcfFnOo5hYIvQ=; b=cP9E2Q/6pst2irkWygASgIITGWU+YpRnjYt4x14x3KD8d1R0/yg4TE5W+J2V4dwMgt8zzs LwQO05vu9a4RkbsPjEsAyXOY6tvdIYgg2rjTww+9/GAVxpfvgoexyPTFNlLO0K9CZfE6TR HGezEqe04ouhAKcDqxh6KUV6tg4vrDE= X-MC-Unique: JwjOEMXTNNCiBsdiSpp4oQ-1 X-Mimecast-MFC-AGG-ID: JwjOEMXTNNCiBsdiSpp4oQ_1770877545 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877545; x=1771482345; 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=pHG3b4cYl6HI67xkeHbu34Z6D7hlRIGcfFnOo5hYIvQ=; b=hRb+BmHcO7v6aPdgMQLaxI2Q3xkkGvq7DL0kSQ+eHg0tQ6BIospgeAmMDCGxYcUkHy V8Yz554xQibGfO5TBTozUqB8J/RHXK/FU2Zh9Dm7RUM6GUIu7Bmafpjlj0P0a4ymWVo1 Wp3pyLCW7kuvVeU2QnZ8a6QjS6ROtAagfREbPx42jsQxTqOu+v6gv1AWlNHyZpmx+SXS JSNx1+HGgT2qgBZAinJxfop8zk93prL6HpSgFnjh2oI9I527Hs2GrthLn54JroO9oM/a IyhVPLqLMmyh7JZATHvdOEjCBSSgEKTD8jjx3wg5+gWFReHR5eMxmgx/6GQ2+RcWryb+ eLBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877545; x=1771482345; 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=pHG3b4cYl6HI67xkeHbu34Z6D7hlRIGcfFnOo5hYIvQ=; b=DA7AT7sYC+SsUN981OtVGCrt0M4XZVC7mB80Oncpt3TLNyZN0MAgLagsxhFysAjPPG immBxmKICM6LmOodEKxe8YxddPqOC35c1K9BLUSwUo4PUUNO2VDdNdOkZfGBqjrjuk7J D3uHHTi5Sp0vmogXqLatbdlaH85dAH93gK5QlFDw474et+0alXxgjWSQohDA4fPSD69F 621/0FrJdbz6eD2KaEE/oNUTrCmH2zXZOSWEAFJmsoakv0AzpuP+TEl3+BrPOF0qWTjO MYDOvS8bYek+cRhTceJC+cwg5miUkP2Bl4HqI36LmnCTesrReAWzgBj7tqCOHESsz9mO tMSQ== X-Forwarded-Encrypted: i=1; AJvYcCW28v9EBclQO/6P2hsywr9unGUixGtWLFbgxBSKsTpfiS2bomJ9Y6NiOGfgZ6hM+6uIYzvvMzJfVbnW@nongnu.org X-Gm-Message-State: AOJu0YwPvtVShfm9nh/MpoWFAvHhOQ/Cd0XuL5kXHXGOVoeY5CSl1TSK 6foGHnKvtaj1dHgaKTpOuCZGU51ccSDFF+Mr16k8NAeJRXnUJiRNATL15jb3EjDIUO4C/0rEKoN NU/xTkBqQXanTNkA/1JTxJ2/Pdlj7lSPWHcNsG76qYLeBHA8dW0/XlxIr X-Gm-Gg: AZuq6aItbKqjb3dC+/w3MGrhonWI4GW0XtdisraOG6s4jv0OWfYZCZPXlHftbeS5Ciz UrHaVBSaU5bfWXNq9OO9HucI0nE/FCoTxdDszWnQV1TOWRGWO6iw0q42drDgf+lkOeGTyU2L6El G8oLkVauHCIQZAuI/tI0ok8XpgN5/W5GRAnCcnYH/JTO0qpRLeylNRgs9mCkodI4wS9xA320tfu bfNItN3wmvwh6+ZrWsUo+xa2tdFVmmhL/GSlWMe8kZqSlwXIXrEsk3qhDF9pajBZuIvR/HLwH8c 45gAwLfIQ0HpoqVSotlSSlNi6DuRbtkgB+IUvWIYRqOTaY1WUI2FRltoPIKEdtXHY5EtknJAD7P 4VsE+EVYL+25R8yLE68Nr1fGHmPVidV4URr/26obBwYATjB1LZPLrhX4= X-Received: by 2002:a17:90b:5289:b0:34f:454f:69a9 with SMTP id 98e67ed59e1d1-3568f41a0cdmr1587793a91.28.1770877545225; Wed, 11 Feb 2026 22:25:45 -0800 (PST) X-Received: by 2002:a17:90b:5289:b0:34f:454f:69a9 with SMTP id 98e67ed59e1d1-3568f41a0cdmr1587776a91.28.1770877544747; Wed, 11 Feb 2026 22:25:44 -0800 (PST) From: Ani Sinha To: Richard Henderson , Paolo Bonzini , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Cc: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v4 03/31] hw/accel: add a per-accelerator callback to change VM accelerator handle Date: Thu, 12 Feb 2026 11:54:47 +0530 Message-ID: <20260212062522.99565-4-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877652564158500 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, "reset_vmfd" is introduced that would get called when a confident= ial 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 | 1 + system/runstate.c | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/include/accel/accel-ops.h b/include/accel/accel-ops.h index 23a8c246e1..998a95ca69 100644 --- a/include/accel/accel-ops.h +++ b/include/accel/accel-ops.h @@ -23,6 +23,7 @@ struct AccelClass { AccelOpsClass *ops; =20 int (*init_machine)(AccelState *as, MachineState *ms); + int (*reset_vmfd)(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 5d58260ed5..0a74e3ade5 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 vmfd_reset =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; } + + /* + * different accelerators implement how to close the old file handle of + * the accelerator descriptor and create a new one here. Resetting + * file handle is necessary to create a new confidential VM context po= st + * VM reset. + */ + if (!cpus_are_resettable() && + (reason =3D=3D SHUTDOWN_CAUSE_GUEST_RESET || + reason =3D=3D SHUTDOWN_CAUSE_HOST_QMP_SYSTEM_RESET)) { + if (ac->reset_vmfd) { + ret =3D ac->reset_vmfd(current_machine); + if (ret < 0) { + error_report("unable to reset vmfd: %s(%d)", + strerror(-ret), ret); + vm_stop(RUN_STATE_INTERNAL_ERROR); + } + vmfd_reset =3D true; + } else { + error_report("accelerator does not support reset"); + } + } + if (mc && mc->reset) { mc->reset(current_machine, type); } else { @@ -543,7 +570,15 @@ 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 (vmfd_reset) { + /* + * If vmfd has changed, then vcpufds have also changed. + * Need to sync full cpu state for non confidential guests. + */ + 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 05:51:24 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=1770877730; cv=none; d=zohomail.com; s=zohoarc; b=PLZpkOxoX7ub8yJNetDY4/x60WzqUa2pvpJ86232yyhXK+LWMiSpx8I6NYiHVC/bk6Ct+GRvw3y/v2IPFQo8OP1AB+zbLdBAth7c7cxLwWLpkCh5+3BK/q8XsnCOt8ITa7TOakSb5PVEWMSQ+I4AHe24dv5mF7lkviNTKbYHPEY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877730; 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=L/nnsL+cOMuRhpKoHvJAlEwVokFv8+6syMlbrbhj2saqAcWhh2zn1irzdiNm8mnp+bRwiTayYH9N8WPtu0pMzlYTVVvH00mV5bvIAGWm0T/wKt8+gpjGBsMtvg+qo4y922nSoEGh/NejUhOt5Uh+6Z8dqyF5wPQqTpotmDIIv9k= 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 1770877730078765.5996519374569; Wed, 11 Feb 2026 22:28:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9Q-0007b9-B6; Thu, 12 Feb 2026 01:26:10 -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 1vqQ9H-0007aP-OW for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:59 -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 1vqQ9D-0005Cy-IE for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:59 -0500 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-131-qxpI8AkIMnaIe5PGyGXssA-1; Thu, 12 Feb 2026 01:25:49 -0500 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-352de7a89e1so2597503a91.1 for ; Wed, 11 Feb 2026 22:25:48 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.25.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:25:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877551; 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=UA/8+BUzd5t4aralgdZgzJO8S0faIpabSpWs1bSkd9+0LD3RAIG3L0gXhZh087mNfUyMp4 y0qCcsWxR5rKVAJBrRTq39Tts1KziQAJDrpiVcVCz0ASNoNIUc81QfepwDOpnj3A9/Am7m 8k1A/qk3s2CTBiQpblvajdFOOLrifxE= X-MC-Unique: qxpI8AkIMnaIe5PGyGXssA-1 X-Mimecast-MFC-AGG-ID: qxpI8AkIMnaIe5PGyGXssA_1770877548 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877548; x=1771482348; 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=LcR6n4HXpcgdzNuK9X2ewFpR8tlstAQcdjqPJztnhIJdTUfXhB9ImtKtg2QVWUWRxA tlR/1H3k4iinkRDcJcuJoBhq0lm1ujd4rumD/B/sz0ot1HjiBwJ366Xer5us35x6mIfF UX8wLCf2OugomjFOttElXyrBTtzyTL6iQ+AA4dERf6oIimxgF3Oxv6ioqdzKKSKFBfoT UiylrgQrT0UNq3ioauUR3iCRT8Ug4hS25okZxZFqvgYQnTIAy6DVc5P3gO1PXzePZyFu cQsGpsu0qoZQ24IT+D6ThQGls65Z6mFrc2Ov9jHPtOn2Ri6/hc7jGuk1lpAJmGYQxT4I VE4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877548; x=1771482348; 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=iGCka8XYapVSFtCF3A6lLoJ1RBRQZYWvpLGST94CgNpiX708X+GZm9FVrcqELbetlL JieM5VnH8lMR7KlAfqjJOp1NYEa1OmkgCE6AGfojaxZoLiplpJul5EIqLaSeE4HdTWul 6fiA1Sz07wc/y1UcDQt93MhN5Nmi4mUhDsSAIsVemhkBtzuvQRT4bMCsWsViEbNT2GR3 /2aEp6wK3MpLLj+4PloVhC+Nn9qWZxaHkMMXwsCXIj9r2CRggliulG1NPvPko7kT0iSA SVQcE7KMBeX79W0QI4FTY8x7eSuLO1gQBP+/DN6nQ8NU06hVs5sMpEnEwNyJOK1TqP6r GpDQ== X-Forwarded-Encrypted: i=1; AJvYcCXlk1zJJr6W/kQKNEAFSaZBt0HjFG28QEDo7rzwQzK5YOT2/Gq2iVmLJcvP7zSN/5udMTe4zheFos1N@nongnu.org X-Gm-Message-State: AOJu0YzQUM6qmm9xJ2/YQvOaXLDRmuId3tCnCzz7Kbe0xA6JL22LkZcE 6SH+QzqXt0lAFl40hnIBUKc/egrOFLrfKUmhE+AR1iy++YHecs1KjPNAmh6Ie/fbqeSqhhJPa56 Sk6ZPHmWpN2U8KekOMzHxYl77tDRTGnZb98Die2QQrra4S7W9VpLmzIhs X-Gm-Gg: AZuq6aIwxNj2PmB3i3SyGfeRNhONyibI4A6IQDqQsXrpbnTCb4IHwVoUegtZLfEW4zb AY9CDwy+SrciAF+YHt3Rs4iXU0oCtvMKqA0wrQzzwDnHeZ5djjrhDr3BAdF3OPScLdijIrnc7Ub GcKyomeqjbvSZBxg6ytmBoHl1xLiEnHiipD9H2yJh8Hrecc8b/pwhjxSDq9dU9/8yAHmzpNcMlJ mjzUEXh4X9mtKzKRflQ8YnhKos/x2HOi2LOjF0/2vuBeYFxPHQRvweWEG4fCpf+VG+ZbaLqeg9A YdMYJw12e97GX216LePA+hthbGkp6LTgmM+iGuzvGEBFjStqDskjcb++sfH3WbQU8BF7CCFGsLC HfR7Sir5VEIuDvLOpfuGjO8LJb4u+Mty9WS+cA3P8uqJIYIPiUtQ43KM= X-Received: by 2002:a17:90b:4d84:b0:343:684c:f8ad with SMTP id 98e67ed59e1d1-35693c924e2mr1222981a91.4.1770877548125; Wed, 11 Feb 2026 22:25:48 -0800 (PST) X-Received: by 2002:a17:90b:4d84:b0:343:684c:f8ad with SMTP id 98e67ed59e1d1-35693c924e2mr1222970a91.4.1770877547789; Wed, 11 Feb 2026 22:25:47 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Cc: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v4 04/31] system/physmem: add helper to reattach existing memory after KVM VM fd change Date: Thu, 12 Feb 2026 11:54:48 +0530 Message-ID: <20260212062522.99565-5-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877730886158500 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 05:51:24 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=1770877670; cv=none; d=zohomail.com; s=zohoarc; b=F2HdsnNJopBUCL8m3o+bQFnxTgxFzhU4VWn3YeLa5ngrr2XlTEfWPOBxV/p8ZMKpDoxjju0ZpNced4YZZpTNTX0yQUl8gnqaL6b1vh7GBdpqTQScU6kW9A1MjoKilxtuLHsjCVPc1DlHEhcIF+sHVrlfANjuih4pRj2ZTsY1Jjs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877670; 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=J/oOoBR4IfX+ZbFVC/5tNcGKvnGUc2oW6vwtrqPYGD4=; b=Ldjm+c60HQBgc7I10WgSNvEKrxN8dE4Z5gK5/HQGtMEWMl3gOM4RLZw9FjwKpVbmj0blgnneHGMdHZNCgQ/HBNmR/W2Dggzc/UQchAErCwoaOhbua+64qPih2uLy9aVeYKQo3lXcUh5a0m149TgvmxtCqtqZ/96o9SlfCknuEMw= 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 1770877670547583.0189608657666; Wed, 11 Feb 2026 22:27:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9V-0007gg-TQ; Thu, 12 Feb 2026 01:26:14 -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 1vqQ9J-0007aY-8S for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:02 -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 1vqQ9F-0005DD-7S for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:00 -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-322-twGXeIc2Mo-Hl4Geysdz2g-1; Thu, 12 Feb 2026 01:25:52 -0500 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2a7a98ba326so20676635ad.1 for ; Wed, 11 Feb 2026 22:25:52 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.25.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:25:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877556; 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=J/oOoBR4IfX+ZbFVC/5tNcGKvnGUc2oW6vwtrqPYGD4=; b=aSQOsx9wt6cOIK541dAeJRAgFKGV/aF6/n78eWoMINO/a0BvomdPROPQqrRJGhd0u7zGEO CewAQIMuzx2AE4/TCSMtILHL2HABD/pgZbCRfqzL6cP70JIZRutA4QGoSNcGqFKCACWEND 80hacBMzkutP+eygyW+sfqz0PeQuJRQ= X-MC-Unique: twGXeIc2Mo-Hl4Geysdz2g-1 X-Mimecast-MFC-AGG-ID: twGXeIc2Mo-Hl4Geysdz2g_1770877551 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877551; x=1771482351; 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=J/oOoBR4IfX+ZbFVC/5tNcGKvnGUc2oW6vwtrqPYGD4=; b=rIYTjIULCeV1HHa2LaFbdoLj6mOBujt1jYi+VoilwmuEIjt73CFjMAZy0xLdlqHvvc iVq06JZnikwngbl/NgzP66xr9K/1Sqkv1RIfXK3W6k+KDj2rygK4b+J7pPXg1/cuxqWb D3x1WHb3Tix6fPn6FxMcaxgyz1gHhLS9RFK9CnUD4O3JZ/yn/lY1dQwlKVSHHfUXpVB7 oOYSX2YbsnWATDmfSEVXVcIS85WIBfY+SNH28IBX00KVbTrSCN9ahZTJ37dgkrfIrVB0 u6SP2fJ6gKJDXK/405gGSVXy/qJCgB1BrS4uojyy7f9AJUa8AtaThDxCmQXaSahwu/64 1Xcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877551; x=1771482351; 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=J/oOoBR4IfX+ZbFVC/5tNcGKvnGUc2oW6vwtrqPYGD4=; b=iTipV1zNmiyV4wKivAirpn0n0zzLG7BvIsaJ3nbd9BxZuxTPPQ4UKvvJeKg4jxCxMa +2RxjeuDd5HlvF21uH3b3dk014EaAXqs/7TEQkQpvBwIOVhe8AmLnZ0ONY/bdFfkrhB4 ttzKmXanK/WLfjkXayYgytQF8Oh1s4gf1EmrTevfuebYTypYYUYRvrdmev22HzccoyiO 3Da4wmTjZnOYJx7Pc+o+ZtVozJ3S57GAz181wN/lJ5v7ARO2FgSaj06XMk//gnsqJ252 uXrbibO1WJkfgd57wcYxlYrNuzf58wLLv5Jqy24SQl5fAWyH2ECzRnj5QBi1+f8cRvdU X5Fw== X-Forwarded-Encrypted: i=1; AJvYcCVfyXYWyU9eVh3w9DygwTPMMrVq+KXvlvgcwBDIcPKQJ7X4dp2qKRuzQekrGndFQAZQgaJeuuWpBaJu@nongnu.org X-Gm-Message-State: AOJu0Yw3g6KoddST+ee2sJ+8Ye8LwgcEQIb1gc175FdqRzLUM3ytSWP4 rCAY2jOlXF2nKcDgaiK0w41x2hatdp85sJyS+6objGdkAi/g6WTLBjYs3KtS5Yt6ndn5LLt8g2e jR5WLYb6IcweKc9cna0tbx66EOjQXW0d1DHi6SgKbHEZTkTWHqAokzf60 X-Gm-Gg: AZuq6aLqnWktyCDcntnB/8BPiQi6O2OoEEHCJ7S3n8uV6WUS3NKDzVJb2q01rsGTAdY 4cH9j3OSLfx/qhMahAyxu3tV+Q3dfeFIPt/SauG1f/O06m/OuRKtOe3R9WHAFZSyVSUPt+rKR5S 5PRrD8FNpvgD8TggnbHKI8lA89tJOJ+g5C6eAzHlZc4aQBiYw6dJlk3ZLH6PxuGaCpDhuSCE/nW /49/oNtkOrE1rak1DrxuVsiR0ze6OkIchkclY6R9XRfXU5VufoLcLh7PCbPa6RgnMD+bD133QJp FebU9Nbio4/6QGsCyQensQksJHZzx6S14J7m4Zuf61ilnhoytlD4h0cQWgXrtwo93jYgBbnF0cT Coe7eCvfT+Uwiy4RRWbYt1dCrdNahLAWrBYr71zeC2M/Jh23dpttbt7I= X-Received: by 2002:a17:902:e948:b0:2aa:f5b4:9a2e with SMTP id d9443c01a7336-2ab3a667bacmr14492455ad.11.1770877551315; Wed, 11 Feb 2026 22:25:51 -0800 (PST) X-Received: by 2002:a17:902:e948:b0:2aa:f5b4:9a2e with SMTP id d9443c01a7336-2ab3a667bacmr14492235ad.11.1770877550902; Wed, 11 Feb 2026 22:25:50 -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 v4 05/31] accel/kvm: add changes required to support KVM VM file descriptor change Date: Thu, 12 Feb 2026 11:54:49 +0530 Message-ID: <20260212062522.99565-6-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877672745158500 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 65ac60b86b..a88901a7d7 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 8301a512e7..46243cfcf2 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); @@ -4014,6 +4087,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->reset_vmfd =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 da1ed3b62a..83c15f098e 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3252,6 +3252,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 05:51:24 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=1770877657; cv=none; d=zohomail.com; s=zohoarc; b=bBhZLbE7LAAjwkiDybimi+K2Im9onqYKhA10yg04j3lZa6vJCUUxteqMsRkzNrOqubi6ei51jItEgjzQfQO6svHHbudbRLizSUPkUD3ZCwSogx1AmN5gLX80qK1I9e8IkeeYbQ0G1pyI7W+3XYsOb0znFXfI0szIJleJ6x8kdUs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877657; 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=o5PlrDMoIrug3cAYm+kTR0nrJ7BVWWy0jAqCy4UtGT4=; b=fvQ/O292nEwXT/4du8pHnMIJboAPd55ZBY4VK+WXzjlgMJ1GryC2jIt7VS3b/ImKNoKPWaun1Qx0TKqn1LnBte0qxFsnvRcMcOsaIxqECLH+pUC9IXYJDB/qbbwF2EbAyJ9FghshOYjBi4AmkbFdZfzl841PfQ/vMFr5UQGfMlI= 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 1770877657019190.55429572091248; Wed, 11 Feb 2026 22:27:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9S-0007c8-LL; Thu, 12 Feb 2026 01:26:10 -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 1vqQ9J-0007aZ-8c for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:02 -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 1vqQ9G-0005DL-28 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:00 -0500 Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-681-MNuYQgs7M1-sLltbBOGLXQ-1; Thu, 12 Feb 2026 01:25:55 -0500 Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-35301003062so17081218a91.2 for ; Wed, 11 Feb 2026 22:25:55 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.25.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:25:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877557; 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=o5PlrDMoIrug3cAYm+kTR0nrJ7BVWWy0jAqCy4UtGT4=; b=VRQ2AKBCBm5nMg8CecryXLoLuzPCwC/KE6i6ny+LWbmJL0snqDxbPTCky+WkKzlJuN/zDq QNFET9jOdvWBTP3wP6KZrlxJ38QgJts27RF5+IdGuyJ4lSPq5Kh2+cb7XaEhwdpq7vSZZ3 0QH4+mJcXO+T6KroP3I2u/bgs2I07W8= X-MC-Unique: MNuYQgs7M1-sLltbBOGLXQ-1 X-Mimecast-MFC-AGG-ID: MNuYQgs7M1-sLltbBOGLXQ_1770877555 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877554; x=1771482354; 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=o5PlrDMoIrug3cAYm+kTR0nrJ7BVWWy0jAqCy4UtGT4=; b=Te8ah3Yq/z0nYL+kFRuiC6u9Z2erDt9av6Zq0pHDbnKZCFUyUwIub5eCiNuYm8MzFA dgiPC2B7LNEYjU/IkZ6Gw5HH54FZ1uijqTS4hb63Py+LlxqdVdTcH6lWOHxt+DObf94g yv/cnDCZRHIT54kpH6YUvehgzIdSKYnAEEdNKcG2kl9M3htncKlNtl4+DFrtt0L4stx7 2cTCPn/vprblHItSV/lKux1Jzid8O4dw9ezjjBKLDwLiy5dEMe2yjHpegepIqytp/AL9 D7qckwm6BadZ170r2jZbAbDDjg3Ikzs3d9+Tia4xPjKOWF/SBkHe7YFQ2q6lQg7umCf3 1M4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877554; x=1771482354; 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=o5PlrDMoIrug3cAYm+kTR0nrJ7BVWWy0jAqCy4UtGT4=; b=bz5j4Fv5Mt0Zs5UlMu69zDPxRxaofT23xyk51vBZRgsuw40as7ouqOBRjTqZNimLC0 83PCaoPE17ARkJLqn2z8ZsZVHOfBvvHTnUDJpYaQ1nd7LV49jnqzaqR0rMlET4zFt1nI ywDZPICt7gI1hs4mTwE4dhBJccXtVYxvlGRKhW/NfOLaFHgfKbc9Ak6pylIErFX7v1zF EgBZ/txyAHRAHQbfUwg+mSV5ldZh0hbCZTDj80duQC3ukgLE6S3YquliaFsA6heGQ2Nk 6idheMd6MqT1T6hfVhH7PzkOKvqLignWWS9/wdQwtWc1mv+52Sp3p1QfO9i0BdVszv3U 5pdg== X-Forwarded-Encrypted: i=1; AJvYcCX0f3vvfgiWBMAiDCgRRO/DojFvX8fVvqWDqKmnY6+/oisdpKz2c+s/OWKtLCnFP2Twpqrbh5Y37cbi@nongnu.org X-Gm-Message-State: AOJu0YxXdpxqHTrlU+OiinPzVfU9WN/Ejw539KUcpWGjPeBFY/euUr4Z YX5glkL+OmCfAPAcuq1nPUHrjrdomB7hH1BbdixayyHX5WYKmsdXKtlNO0ikiIk0rxcKYTtOYWk 9FUgr91AMb25cMKbcZsuwp6I/k3OEPG1WrD9y7FyvRYKUQOsPi6h0FcJT X-Gm-Gg: AZuq6aLXrQY5AvZlhUF8El9hUt4EfSsbxQdUz5yF/lPk6LAPke3fUh9rHj7aJvqJd32 3TNquOoAyi9FBZ4P2Ngz0C+udGitYtv3grUgruMBqtPexjozD/kx7HTfTVuQ1vQeM7VQtj9/FpK aK6NwW+1LN85konCHsAR//zA09XIX95st6i5h370G3DuIgdNZ31Sx2F5BHyH4ao4pFyTa+1h3dg IHuTrR9RIOmNPpmdnQvicv9fjGLOCnT4cBbLEHuB9X02HCWVJbZDQPpXXuxR8733c21GXHC6N2v pVE5IpRlbNM5ILIuwO9rWN/fAJfqYfVxRb8ByR/I58AhUtAm1kcbJoHQJzxoIV7y2mu8tIy1K2x sQM9vQSBfMNSNkkdZLfoSa4vkPZFNCL/5qCA04VlGGBhWGKU7fpiydOQ= X-Received: by 2002:a17:90b:2dcb:b0:356:1edc:b6e with SMTP id 98e67ed59e1d1-3568f2cc67dmr1813344a91.8.1770877554535; Wed, 11 Feb 2026 22:25:54 -0800 (PST) X-Received: by 2002:a17:90b:2dcb:b0:356:1edc:b6e with SMTP id 98e67ed59e1d1-3568f2cc67dmr1813301a91.8.1770877553693; Wed, 11 Feb 2026 22:25:53 -0800 (PST) From: Ani Sinha To: Paolo Bonzini Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 06/31] accel/kvm: add a notifier to indicate KVM VM file descriptor has changed Date: Thu, 12 Feb 2026 11:54:50 +0530 Message-ID: <20260212062522.99565-7-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877658659158500 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 46243cfcf2..30d6295f53 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 05:51:24 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=1770877733; cv=none; d=zohomail.com; s=zohoarc; b=YV1GS9T37KddT8mt7ow1Ua6oPaqpTKpEQmqV2J46G7zVizU7K/oSTEt0vPIObwJj8mtSmCeIAmyuKufZerdWmJTK09J7o8nDcqTL+KANjuwbJbpd6t28bXEgBD/xhTbc6ttnqvtmDFZ+/p1tyE6csu/5tCecSXDAhLfp/xf5IU8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877733; 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=+nJSPq641/KU7PW2uyxECihx9MetPiHgqWCX0M+BsoQ=; b=n6gmBzzn0qGRXTTkv6YTWMe/3ilsIRX3UBWTqErUMPtAo3bKH1KnPwgLY0vZ6ZlXYVvRJ7bfTHsx8FMmYsCM4p48UGKMtnq/BDVo7pbhTYsWZYle3rD48lzYRxsafMNvcGaK2l4kJy/dTbzgMEMYRYnB0arvDFeF/c2nVyjjX08= 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 1770877733375691.0373602978653; Wed, 11 Feb 2026 22:28:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9T-0007gW-J4; Thu, 12 Feb 2026 01:26:11 -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 1vqQ9K-0007ae-Eu for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:02 -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 1vqQ9J-0005Dl-1E for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:02 -0500 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-624-PLXnubtUPxOf_Zz1lpyTpQ-1; Thu, 12 Feb 2026 01:25:58 -0500 Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c6dde310601so3630480a12.1 for ; Wed, 11 Feb 2026 22:25:58 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.25.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:25:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877560; 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=+nJSPq641/KU7PW2uyxECihx9MetPiHgqWCX0M+BsoQ=; b=Z6OBh5NkH1u8KfS0XdznSciIGvUIGde1X0Io1I46G3mrUzZJxU2hH7lF7szIsXyLY2aAqZ 9576eFYMs4ayTqnrG5IpzSlKOAFgmcdSKpEGZq9uliaMclclleExTtgOnYwAuFXNkVAQ3V lYH8P0vGZvKjreuDtAZDT2m6bgh/1W0= X-MC-Unique: PLXnubtUPxOf_Zz1lpyTpQ-1 X-Mimecast-MFC-AGG-ID: PLXnubtUPxOf_Zz1lpyTpQ_1770877557 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877557; x=1771482357; 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=+nJSPq641/KU7PW2uyxECihx9MetPiHgqWCX0M+BsoQ=; b=ppkmw8/sU/Ex71rOKqHkCups+Ll2QPadEmjbVWdX9tsWpajolH4jrgnC+24iZEt/FB RR/ixjAf/6yMJUI14fnrsvU+029rpd85uu+1gRZuHSAmHaXTbsFQitpmG0onP9BKnTNU R+Ep+sKXXz/iND6QL8/cmgMaBlEoS/fVSekhb2oJqRD3EGZ6IN3q1hhLh0HlxwbBF8mh LGRaVsm0bcnd/ZKTBAAa2Uw+NDu85GuCW43WaJ4OmWTRdu3qRsAVWVohQ/4wGqpzsFpc 9RyIoTRvYyubx4wS8+SLm8W+ZKx/SXUXCNnJs4fPDyc2rYjHi/7pixQqDQ/vTcmAc3Q0 S+9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877557; x=1771482357; 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=+nJSPq641/KU7PW2uyxECihx9MetPiHgqWCX0M+BsoQ=; b=SEZUuY9a50R3o2S/24VGVURLDYcchrsylTU//QXzT12ygTjxxk056cMqxGm6aqLkNJ iKwoORehpV6SlxUtVcWsakNXRc+E80GvnmODQgvDJLMhHj7Kcru1+Oce+pAlxCUBU0ab 3SLQAfzUm6AoMw3742AiDsZjSdor7rnjYCqwYB8dA8y8YOneIq+5pyY/HR06o5N2LS3N 7qY29C06xg5NXF0PfFhsqa6TqvYv1DaHQiZseTeoljX493Dww1mZl4PftBpIO7Rp+JRm GKcyaCNQy0hYYo2S//pUBjgfYmdjSHT96K6KkLSLOvxoU+CSyd9JkVrPwobg9G1fY1f9 miBg== X-Forwarded-Encrypted: i=1; AJvYcCVmn3KVZO9/AE+PGI0swxI5kTBu1RenuIYvNN0AHUFSXYKsl2cbHX0HBbFz5DlmwExrCn28C2MWiH7S@nongnu.org X-Gm-Message-State: AOJu0Yz152RIXDKbv35WlB2VuY0jzzNcU2E9mXy/gWF+i7QIdaiiH2Q2 be6adxN2GF3yKgh049FY6s3sj3aVyEg5DFoUDr2QyxkfFrfTXZgAxFHkwOzjiTmgfSx2gpfJ8Ng uSD6vgdDecIal5tMYZ7I1TfJ0O4V42qhoUECyIOr7gy2ooDH3uLV+COBB X-Gm-Gg: AZuq6aJDYhqgOmMT+6rtz28fvEcWCJWSLQ6Tb7MAhRskpsyYZqyIsyN88JKjrEwdPR4 tZnHs56D4HbYVyKqqd0Gpk5TqrxgF2xAPq2fYhAo3WSEcMKFIcOdTwXMnrP7vpxhKOknMqpwGVq bl40t71MRIne2V8rVhikGgCMphuM52fwEwVsz/Th465uF8Rd3bjYpOlzQYNeMfo9Ob72lMAS12M 6gABqAXXulXfcruMD6IJuLWKSk58fcWYTDyTXdMYza/IIDCVL+2MBpzqLCcybzXrEbfG4x/AuTe 5A4AJEIl7nja/lbRxMkNDqTqJB7pEnmiuBcejV5mG4u9n53kR2WDbTA6X/om64Osr7zMyHs+vgH VUbn8kCsKkfcUVvIzfBnYlW4Cb9b6CEcgiLt8xcD4nGIBKoGreen5TDY= X-Received: by 2002:a05:6a20:6a28:b0:393:7575:a8d6 with SMTP id adf61e73a8af0-39448bae9femr2036472637.71.1770877557395; Wed, 11 Feb 2026 22:25:57 -0800 (PST) X-Received: by 2002:a05:6a20:6a28:b0:393:7575:a8d6 with SMTP id adf61e73a8af0-39448bae9femr2036441637.71.1770877556999; Wed, 11 Feb 2026 22:25:56 -0800 (PST) From: Ani Sinha To: Paolo Bonzini Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 07/31] accel/kvm: notify when KVM VM file fd is about to be changed Date: Thu, 12 Feb 2026 11:54:51 +0530 Message-ID: <20260212062522.99565-8-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877734923158500 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 30d6295f53..a6ff16a037 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 05:51:24 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=1770877662; cv=none; d=zohomail.com; s=zohoarc; b=PRQLsBfixT9CV9rm5VYneeB3jgKmH8YkZxbyygYwHwve7bGN12RoFJ8L2LacAhH465KnNZNrALsDOnoFvkZhmD4SHY7AuTKBNEnQ9Yjvc2SuoDYvtPDpYIa79ZDF8PSITfrkWRvXNwYBqtDLrcfb+OEvBmoZOyRxyHElmbHobHU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877662; 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=gaiZHj5SPB/rag/yYC6RdeZjL5+Ke47uV0afXoVShvg=; b=cRlTE0UpmDahBbaZ7Lf2aUv+5b1YgfK73Str+iAHzvhseDxypUUboMKHij/A/5r8Lmwh2s6qaeZrOTVZp1hyT6ZmdGuf/BXWMls3UPtCgRtAgr6s2uU9B/LoSFJW/WwEgwLUdZbxzfGYFrq2CkEuXyIazimKugMlheQM3vWUsbw= 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 1770877662004691.4165914141358; Wed, 11 Feb 2026 22:27:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9Z-0007jn-NT; Thu, 12 Feb 2026 01:26:17 -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 1vqQ9N-0007bO-2d for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:07 -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 1vqQ9L-0005EK-KY for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:04 -0500 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-312-v7MLTPhYMsauQAnvAQS1kQ-1; Thu, 12 Feb 2026 01:26:01 -0500 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-35641c14663so4471201a91.2 for ; Wed, 11 Feb 2026 22:26:01 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.25.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:25:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877563; 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=gaiZHj5SPB/rag/yYC6RdeZjL5+Ke47uV0afXoVShvg=; b=OVvsHA3BAmbJgjBmPSM9+a4U6kqdh/pDO3jXu7uWbDAxF07jvWRqgmoNuvYu4F0XC1eZ59 ifla2RpsrQ8cpSlj5qDZQ6rCPoeCsmR26Vaq4jZNK0zofGF6caUWhxlKqH/nqgvVLvFDrL /zCaXgQ1X6P71lckZzD9tToQnRffj9o= X-MC-Unique: v7MLTPhYMsauQAnvAQS1kQ-1 X-Mimecast-MFC-AGG-ID: v7MLTPhYMsauQAnvAQS1kQ_1770877560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877560; x=1771482360; 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=gaiZHj5SPB/rag/yYC6RdeZjL5+Ke47uV0afXoVShvg=; b=BuGZEbPIPwiN3sVKlh8crCIhv94c9F5Yx1d2cjLfGOaiZ93mlmLytthh55Cprnz1v3 zwbqBOYnBR7RyTLNqja8bFbr6e1s4ttyqkgbiCqCNhP8Gd9OV/Db2H4S4bd6eeRxw4r6 sJx6W/1KWaRXh1x/vq6QrquChbsY/wswTQB+8IhEV5uH/3yfkp4S2zevMfxQ5DeNQyT/ pzsiadfL1+SJbzU6h79pjPRfAmSl7m95ygsHeev4mixmzLpC+34yWUDCiNen/20C4Udp vgMIu/IA8qdkLLXOEH3S2Q91WNhfKxnL3H+u07GT8jYoSqJReFoY77DM1ghi6WfbLxhd dz5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877560; x=1771482360; 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=gaiZHj5SPB/rag/yYC6RdeZjL5+Ke47uV0afXoVShvg=; b=j0zPV94jGO6B0p/hPK7CZnnshmhq+344pDlrlTWVhMB9QM78XjDW5EJRQKqeU2zKQF gY/fUBWHScZZYIVslF8ZWZJaCi7rfGl9I8wnO5ofZRVYHbVDJNpp+/sx2S1GSDDWXKXz WjgmmK9VceLch3MSQJVApOV0/DHh9tXHG47sQEfSVWdaUGERwpPY8Ex+tMSpvN5u+MFY e0K5mEvE94GhEi7KflOFdEVEhaPBAsgmn3f/k89V+VFIBuLawCa0tfqEwmf4xCDKd/QR 7Fw6+Im7miNh1L3dhfI4l6GMWMoYGAHWz3d45wdDLzicTWUI3hbifyETQelVOatW0I3u Jahw== X-Forwarded-Encrypted: i=1; AJvYcCU3kbtju14JDk1LlANDDUOkqH0UCT8Ya5iL2IMyfccopiLf4lGlH+pyvzz5ih8VKU6di12VvVS8zfEW@nongnu.org X-Gm-Message-State: AOJu0YxU2yBGAo+JrC7PFGgY1OlHDKtBucqEGPSTuHbETSqcIU+lrVHb Qo92D+UWQj6Wu2B0XILvSglbykMD5Ep13o0PkurhSecHk+0XZ9jwXOOax/+VgVYk3p/YUFv5yJY CzfpmD/TlhBgigZc3CEOVV1VnBgnBKNZJxB7EIRQlCYd32d0cZuSfDMsL X-Gm-Gg: AZuq6aI46F9zO7lN0Ci9cwfXRsIWhVpWYrsWGbLm7atDXbeXqTqceai549STLoTc5Xl pOUHLB43l0jex3BUQSKUhYFhdyHH+Nn6xWUa9bfj75ilq15caA6iNbai+KhywVnbk6RAmQx4ceB K9kUwKiP5sekOZMi9VjaYOPTun8uCpttwdr4Yca8OI9PJPbbnCM+lgXAnYHTReXkXxPG4RSO5Tw MTR5bsUHS6eeILYSBIHxdeeG6BK24mLCl0AJwn00D9u5KLKNZxji6Cz3FOFBVemEQqz0UscV9db ZsO1nGwRRC0VzAiOP1Il0hNPGijgryq97SRKbrMclnPO+FfTTLd23y8ykquzLelKIwSQalSB8c+ RGhp3vov5rhvzyYCtdEyG+STs8nSzM4q43C6gDj/lKAG5GVfCwNQl79w= X-Received: by 2002:a17:90b:3912:b0:353:356c:6821 with SMTP id 98e67ed59e1d1-3568f2b7610mr1774883a91.8.1770877560308; Wed, 11 Feb 2026 22:26:00 -0800 (PST) X-Received: by 2002:a17:90b:3912:b0:353:356c:6821 with SMTP id 98e67ed59e1d1-3568f2b7610mr1774860a91.8.1770877559964; Wed, 11 Feb 2026 22:25:59 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 08/31] i386/kvm: unregister smram listeners prior to vm file descriptor change Date: Thu, 12 Feb 2026 11:54:52 +0530 Message-ID: <20260212062522.99565-9-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877663584154100 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 | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 83c15f098e..5d9b79529f 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), @@ -2748,6 +2753,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) { @@ -3400,6 +3416,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } } =20 + kvm_vmfd_add_change_notifier(&kvm_vmfd_change_notifier); + return 0; } =20 --=20 2.42.0 From nobody Sun Apr 12 05:51:24 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=1770877676; cv=none; d=zohomail.com; s=zohoarc; b=EHQi6dsb+9XuhX40UwavkYaMFE5FZcXZE7C0XCMGitPrKmGZCrHmspsu4I/ZmTOZDa0u8XpftvCfDVb9PcCvSTRlSycmWVXmhqN5KRr2cZLwIyV40OcyUQGKdioSUrJ4+jgRst4jk0NIfoA+K3PjNQduQlwpbNnmmGk9OVrU5Qg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877676; 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=22GpwhOlGGm3YDWl4oHQuQsIgR+l63T6jAvu0DmCDfs=; b=ipnVTDWeuDGzE4hRmsv3Zuv+ziuATp00O+PKDuhXof/htS3PyXvvuEASuKEvwLqxrb7Co1jcep8eXc4k3LeyvgQEQGsLqiOHHeCHdg55ChhIhh7puKbZ1DHiiu2CZD6ku3N3b9thCVI3b4XZCVhZki/0hUxwidUgnhmmWWiqoDo= 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 1770877676968783.5552333954082; Wed, 11 Feb 2026 22:27:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9T-0007gZ-SB; Thu, 12 Feb 2026 01:26:11 -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 1vqQ9Q-0007c7-KP for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:10 -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 1vqQ9P-0005EY-0x for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:08 -0500 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-561-hT-A8krOOgCRENulYDsmfA-1; Thu, 12 Feb 2026 01:26:04 -0500 Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b630b4d8d52so4137199a12.3 for ; Wed, 11 Feb 2026 22:26:04 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877566; 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=22GpwhOlGGm3YDWl4oHQuQsIgR+l63T6jAvu0DmCDfs=; b=ObSIu7yjUx/8JCQPKCZZHwJLv2P+iCCksa/EJtsC6Q1V65MWavoniiMdJs/WjAmSNaZFTR 7n4r4bmqnjW+zhWSSyYfcV++6iCw4AZGXII/fEiKQGNPtzdQagO3zcZgO6yZh0WwSA7m4w Ie3tty4cAUnkAOok7COLUUHPt2N2LiY= X-MC-Unique: hT-A8krOOgCRENulYDsmfA-1 X-Mimecast-MFC-AGG-ID: hT-A8krOOgCRENulYDsmfA_1770877563 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877563; x=1771482363; 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=22GpwhOlGGm3YDWl4oHQuQsIgR+l63T6jAvu0DmCDfs=; b=Hc2r0PcAO9nPq36oicNoIJuISr3e3QYXDgYQNd6iZg/1FSRM1Gqv9gvVGc13uBvqEE xu5Y8n1J60b93/dRneAifVy+tgplS842sGXas5tcLpJpi2ndsGUNXWakDNQUg4zd7Kh+ c/x/8RChtPNQxar+XIi6LcJpT8Nt+IONJKUubEHH0F3c0ZnpXfkM5C69pTrKJugi12LY j8Lzdt/VweTRSqAVK4XPDjvLki9XvBDsD3OuLlmaXVlB5uTL7Rp+SEWW4ZAr77IItWga +JpggVmKEbtM0vGcttJVNtpILHr2o58fJaYE2TeN4fnrQy0y0EC+SzlkmbkycwqOkKzR iZHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877563; x=1771482363; 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=22GpwhOlGGm3YDWl4oHQuQsIgR+l63T6jAvu0DmCDfs=; b=A7jT1d/lHGe9JIeOdwGvzBYCYS7/yIg0uKFuKwxwMaoT+hj0UHUJDGENiDBpukiE25 gZGAFXEnSYaVReSSb93TRJkJTFdsJhYzymPOSnnyFpwGUx4v50w4P2YxWBB6TX36FZBA aqyY8hdUX1EXh/1b0js4uduZzkkvEDGfBvBgZuJsuZyJVKqSbdPSF5dTJ9hjIfiTCR2I fYNMuLT4V6B8YbHRS1bwVxrpW7WXepvTUIOkCFaPqR9pFWsvLDdV9LGRNv4sOqGTQnas mxBLwsS7qBaLBRrQ7WjSuoRvJfQ8OG1gjP1B3TR9NHqMWj4ZOL6vGVUn3SFepDHUq0/D Nz9w== X-Forwarded-Encrypted: i=1; AJvYcCVry81shMM+1K6bCtDHb2O7MMwx6oYFZFz6DjS3AlJZ47+sv6+8IPBDetJIflUIGLjm9VDvBV6zd3oJ@nongnu.org X-Gm-Message-State: AOJu0YxiDqUlJVqNCpfBpQAznVl17UoeJ783fKkshpKgsY2hq7m/0bqE z7aAc9zPY+yRZxK2vur2hB5ZBptjKhp28MIRsBArh6tzOPXkG7Sh5OA2lHOCYgI3zetb5I1lFUQ FCFYL8s86TiMbwGjZrt+7RN7ZxJe9Kfatns0R25w4gx50BqaRxCFhs5Xf X-Gm-Gg: AZuq6aLFxTr7qp+Sn9Z6CncjnthoCvwQtCg9gqzlRrauoG0NeEQqHXYur9Yl6LKdNbi GjbR6jHGiryb/0JCtAzlHeKhW18mfxUjorvzoT0O8YNWPGY4bNogWQnT05qXnM7/gwBI+f4gDQW zfHS6fkxnaPJ4mOdH9tfWZwglf2/LWe4oDapLIi/sw6GRrXHhfIt0nYG0u/wQ04uiHzWd5sxCK8 ZoEPGGAGHnAGz+0XV4rkpV4DRCJIdVr32wshZBi3i6jHTdwcHGNShgs+/+hUIZn6SGPq7jc0SX2 37u40EfiNug/OV/DmKBaGmahhxJSAnw59gxt0S3fgMpm+fnF1D6yB6ZUJRf9mDOumXxxbQRbBok PTU80qtXm7IlCAuxqephwEsJkZUGjmWEQEO5OyLAdz21FZ3cGy4wW4pA= X-Received: by 2002:a05:6a20:9f05:b0:33b:5a3f:3cbe with SMTP id adf61e73a8af0-394488554a9mr1595686637.54.1770877563432; Wed, 11 Feb 2026 22:26:03 -0800 (PST) X-Received: by 2002:a05:6a20:9f05:b0:33b:5a3f:3cbe with SMTP id adf61e73a8af0-394488554a9mr1595668637.54.1770877563001; Wed, 11 Feb 2026 22:26:03 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 09/31] kvm/i386: implement architecture support for kvm file descriptor change Date: Thu, 12 Feb 2026 11:54:53 +0530 Message-ID: <20260212062522.99565-10-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877677791154100 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 | 82 ++++++++++++++++++++++++++---------- target/i386/kvm/trace-events | 1 + 2 files changed, 60 insertions(+), 23 deletions(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 5d9b79529f..e82a6e9eda 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3268,14 +3268,52 @@ static int kvm_vm_enable_energy_msrs(KVMState *s) return 0; } =20 +static int xen_init_wrapper(MachineState *ms, KVMState *s); + 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; +} + +static int xen_init_wrapper(MachineState *ms, KVMState *s) +{ + int ret =3D 0; +#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); +#else + error_report("kvm: Xen support not enabled in qemu"); + return -ENOTSUP; +#endif + return ret; } =20 bool kvm_arch_supports_vmfd_change(void) { - return false; + return true; } =20 int kvm_arch_init(MachineState *ms, KVMState *s) @@ -3283,6 +3321,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 @@ -3311,21 +3350,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_wrapper(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); @@ -3352,16 +3380,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); } @@ -3408,15 +3437,22 @@ 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 - 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 05:51:24 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=1770877734; cv=none; d=zohomail.com; s=zohoarc; b=PL+NI26bL76th5++dwhVQnQ9QyGmBQnnP3zLIrHPLbVHUN9gq1qT798EJJjMrGIn+D7xqsvRaldJzyA4I9vTIrXgQVPImttsoInDrhx6J1qgEJ9mszN3q6bD9XDhn3pU11u/fjt5rN3j40Ktw0Pvd4vA8MH3RA7onX2/5BJoTBw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877734; 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=f3dHz72pMGOzBjOAKTFnNPZbVkxnwyGphMFnDiAHDeY=; b=VktNxlk00K2w3kG3Hn2mWATBKnvK74537QfxNxss33wsLSE4DE9NmSMJ25xLCH3RwYfKiEZ5gM7N+C61wp4/U+HLT//apt/YSKKl8iG4ppOsjNE059saJNqeZVF5etWdLLcMM0tLPeMHcfkmKjklip5YYOeZL8LVGwYTmL/nxD8= 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 177087773485763.377640801312964; Wed, 11 Feb 2026 22:28:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9b-0007mQ-Ug; Thu, 12 Feb 2026 01:26: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 1vqQ9V-0007iu-NS for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26: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 1vqQ9U-0005F5-6c for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:13 -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-575-J74VAOXYN0SG7A_8_mZs9g-1; Thu, 12 Feb 2026 01:26:08 -0500 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2aad3380076so9723005ad.1 for ; Wed, 11 Feb 2026 22:26:07 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877571; 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=f3dHz72pMGOzBjOAKTFnNPZbVkxnwyGphMFnDiAHDeY=; b=eEpcAihmvQn9vsatnPAL6WiQDB5jCZA1JT+hcBsjh0DCLV+HSrHnv4OzjEBwNfB1eLUkez 3SR9Sm3ePrSSXHahlSq5Q0a04TJk86aqiMJtT58vQRVBdJeug2D/HdpiDfAb3wgW7vLIwT M77EpEAU2UVVYXh2YQb0DNRq6Q/sBIE= X-MC-Unique: J74VAOXYN0SG7A_8_mZs9g-1 X-Mimecast-MFC-AGG-ID: J74VAOXYN0SG7A_8_mZs9g_1770877567 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877567; x=1771482367; 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=f3dHz72pMGOzBjOAKTFnNPZbVkxnwyGphMFnDiAHDeY=; b=pN1hHD+GGixSSXlb7ldv3gDUFrjxbO8df96AfJu6bgHlXxen6/72vIj2RvR0a+JuGN irs7ULS397LvDOL7Bvsbam+ldXVf9Pl8iQHjQRqOX5i4+qZw9n+O53wn82ZZRxzKo8/a 9L2uudHT31P8L0plA/vszol50+nhm8FM2nPAtjyd6Lh8RSS3IdgEx/ZnAI4faEiccQxV 19l540wTm2ZzFflal4+iqEDIR5YoTagruFNqU51Oo30g5/U9DzjUQyNhUhVC1cJWx37M h3kR6gEft6wkGDnSqJyTo/zDWt4wNADRe6L9N7Dd3M/DVS6K14WfoNO4J5KVFiB9ekFK ZOsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877567; x=1771482367; 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=f3dHz72pMGOzBjOAKTFnNPZbVkxnwyGphMFnDiAHDeY=; b=Y8xmWT/D2mtgN6sevfnj//v5FDONl/rlFi2pckjcm9ldH5yIuRyFQKkGGN0psyaic+ fvvYl82Vtpe4QCU8SPsowVEptdceD+zkD8ibPtZIqlpuN//B9Pqa2zZYGMcQVhZtgc5r ue2s223JGM7DFLFbDWaMxQ6g69GcqV3BS/1oybafZTkt+akJFLNdgUcPAwuOsJcZt3Xn 5cSKiUmJy2zHLgkwpOA09xlbyta6qRaw0gpM8TDU/SKHXU/blZffTDuuk9DAFEKwzqVT 2apHFgDvxo95VYuPdLgtdEAqofLFXBxFCOENDnVWMHNE6d4d0RKHlCR0JkzQYRu/EsE3 beYQ== X-Forwarded-Encrypted: i=1; AJvYcCVMwjvSpepAVat7KJLDv9SbH2wOZNE77ZwxZYpNq57jP8brrB/UKz+JhSbMKX2v0Gc/EhIWBPpb5Xob@nongnu.org X-Gm-Message-State: AOJu0YzateeEFxm8+eLKL9RVB5h3htuqOyaHpd/Qz22D1Y66gXZXM4ia MvB9wL7zRRTKx10T+7Pf5OzFY1pPL/TiWt7QMiMGfKhRJy5i1BNBJK3gFC1d2iUd1Vqju4zbNL3 XBqdW/aeN6qLifMBudvbwLKQMPMYRrDVoOTDmEuTrcm1GVBbcodwRjBNU X-Gm-Gg: AZuq6aLBIuzU+CrIcjE1/2DOwyZ5SOQOGCYXX8bbQ5bonIKDM1AbNX4YLiddxf691OI PXmb8L05aZlcosLehJoep9HMHd6IRbMJHqH8tomPp9OWKDQljpVpNf8ljq8qqCev4OO7L4pLoiq P/IgdFXXxYlf4im4fD/pppxUMkNJ5tXtEkQEzmoghLNrjIvYJ4YlU1paN+x97vsLOIiaexT2kud EJEc8xGYw40csFvwQVX38MThr71CjjI60RBY8Du+Q6xMBqOw2w27VmRod3qevs9seClgP/dfR2O 9WTqqVimUR3iYe+eYrSYNCAu2H0V9h1aDHB6SzDF4K86+7eBk7tjA+g0FnNjNVhFNQVC6PcswiO 1bwPXjRMakJp8pGuJxlkw30dWbvfzpBnYy+BjMSXJHJf4gWuNQRo/I8A= X-Received: by 2002:a17:90b:3a83:b0:340:b501:7b83 with SMTP id 98e67ed59e1d1-35692ca72fdmr1269136a91.10.1770877566933; Wed, 11 Feb 2026 22:26:06 -0800 (PST) X-Received: by 2002:a17:90b:3a83:b0:340:b501:7b83 with SMTP id 98e67ed59e1d1-35692ca72fdmr1269119a91.10.1770877566499; Wed, 11 Feb 2026 22:26:06 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Richard Henderson , Eduardo Habkost , "Michael S. Tsirkin" , Marcel Apfelbaum Cc: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v4 10/31] hw/i386: refactor x86_bios_rom_init for reuse in confidential guest reset Date: Thu, 12 Feb 2026 11:54:54 +0530 Message-ID: <20260212062522.99565-11-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877736551154100 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 --- 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 c1c9224039..18f2e2cfb9 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -1024,17 +1024,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 { @@ -1044,6 +1038,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); @@ -1072,7 +1081,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 */ @@ -1085,8 +1113,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 05:51:24 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=1770877734; cv=none; d=zohomail.com; s=zohoarc; b=OfLjbgmfOdsnoQPfXLiycwhe0TOCy7r1buWuEFTaoChzqmwAg/X1zittnb3YFYVeFLcYEC7fy3UIvq1R0gMdek18lp8Prg+N+uCBx1gukjEEVRYoUkQQwiRkkR+ubqIzRVUAE5tOilhdzJygxac8qlvbReq1Zwhi6W7N14GchSo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877734; 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=zlhPepsbkrDPw6Fl6PcI0YXFm5apjWAR4raOyitrg44=; b=G5NDTJh6vfgvxeVu5vA4A2IeaD2EgXgDLAQXg4TJGlojW684Jdkhm/sLN7K1Lh2i3uFte0+LloEg99jkGTuwaZQxJEj4LgrpGhoJfAGVeFTjMq0TihAuPNRWqc53pkFE2DUmGKZKsijgeRXJok7cU96qKd0Us2fSmvX+kwin5K0= 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 1770877734451673.730386262137; Wed, 11 Feb 2026 22:28:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9c-0007mR-6M; Thu, 12 Feb 2026 01:26: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 1vqQ9X-0007jQ-RO for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26: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 1vqQ9W-0005FM-7s for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:15 -0500 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-97-6z6_XUTvOOKexsM1x7TXOg-1; Thu, 12 Feb 2026 01:26:11 -0500 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c6e24ee93a6so607045a12.0 for ; Wed, 11 Feb 2026 22:26:11 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877573; 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=zlhPepsbkrDPw6Fl6PcI0YXFm5apjWAR4raOyitrg44=; b=YkfD17Y3KIkYIXaaWN33ogG/aP6OgzNirjihwTh7JW0937aeRlAvjeVqgz7/PfO+EaU7c5 lqhTW9JTiVLsxc/+DoDbkSR9711SxILJhJV7nMBRU0KEiTRdKnKJ1cVqLfFe4Wqnq184Ak gZzq8XIIUaoThQnRiZ2/IJewnDKXo/Y= X-MC-Unique: 6z6_XUTvOOKexsM1x7TXOg-1 X-Mimecast-MFC-AGG-ID: 6z6_XUTvOOKexsM1x7TXOg_1770877571 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877571; x=1771482371; 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=zlhPepsbkrDPw6Fl6PcI0YXFm5apjWAR4raOyitrg44=; b=n6ReXjyt4MGCcVFCB6wq54ytWLIu8QOT8C4DFQdNfEqit4UDBobKeY14gH8piNZsXd j00Q3kqlwSEHMRTtZOM15vi4XKLzs3yV6K5Q61GwD3eV1W9nv4s9xLv9zxLO3LNE6vsH ZLiP/SYLbcO+ZmFin1H3jV1u9IbGd3akG+Cwh77JZ8q8Dzufzc/62PRSRCPjHdCdok/h r+jVfPOz6Ode2L+lvM7W0S9igBHWVr01ycdW1I/0n43FXXGFR3lqvnvxqIKo1X/NByEM rVdsPe8CVQtRPyh3ifkSlF7FARYUt892ya+sosYwv2YJArx16+79GSd3iO5xoM687TMN Rrfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877571; x=1771482371; 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=zlhPepsbkrDPw6Fl6PcI0YXFm5apjWAR4raOyitrg44=; b=ZfWFvQnkBCzU4Q+Pe1kCZ691boQCYY/WxS8Med/zcD6pf09NcMNgTRMEpRcxKL9ZZL 3pKwODyFOFDJ0k/jtYF5XJfIpN3oQQWA4LtgWVsVoP5JhInU7kXwqFFCwZnZ6PfNXZvj /6IRj2Oku3G40wfmCl0oHIwoi19vY+dI38BfUI9Wr4co4zPqpc/gIJg3QYup1hZqBz8l 7S4xZ340eVWBhxOCQrUU3adqNHk4wOY5gvMEngeBQHU6QDPI7oXr4qUeDeJEF9a3v+vt rqu2r4vlI074RdJu2g9S7xAbUWbEIp6+7pN1X2ry3BD/zAVFmIz5AKiD8JKw8n8F0gWl ow5Q== X-Forwarded-Encrypted: i=1; AJvYcCWYBjr/ZoTMvqzNHLE33PtD64gEndJqCnCZQKda0cXc3NyX6P0fm7h++HTA4MnVSiqowoGsydF+svii@nongnu.org X-Gm-Message-State: AOJu0YytjzFvaWQjv/3gbb4AYZqfaBJledcaAKAWSRYQdg3/uveIEveQ rhaQQa23l+t4Pchq+iuCga7fgFonXnuxh4sNSV4hK966sIR22RI7Os8xKyfci47Qa6QcQ3Fxhal Kpj9cDGGAkKPYUove5Y7Nr+zjPNqnQvXFrdlowwOucwHPO/2WWdLpo/yF X-Gm-Gg: AZuq6aLy+siY0pLix756uJnBq++MSVBprB6XcHXuizB4mfxUo/HVi6tpQidCoHejIbu BRu157RzzG0pjqBynTpRMZPT4WzNHkZwKm0/JhcM0Far3IPP3FB8JIxkwq4bFGB6Zs8gfibP5cL QXIDjRL7E9wo/En+WQZQlExmPshnKiP72CLi0ZhGRn9akru+iKQEfocBcU0BE10xI0OyNKh6cLg jJvj8JSqmj3pFfsZqCiiElOVrQIfdgCZLl8YDqvVmLa4xRhz75fFxr7i0u1u0Gllkq07WkshhA4 oueE2eTo2h801GGdMQuVMfppWgXbvVQgoSzlMfJ4dML7HEKNecQaXbVGtdB0SYR14dwfJYkNHk5 gQs2lkiUqVNVAzoqdt48J2lPQpCJnC/KT8gB+X7TqD1swLq8i7wU3ook= X-Received: by 2002:a17:90b:4a8d:b0:353:2972:74a4 with SMTP id 98e67ed59e1d1-35692d84ac5mr1321827a91.13.1770877570779; Wed, 11 Feb 2026 22:26:10 -0800 (PST) X-Received: by 2002:a17:90b:4a8d:b0:353:2972:74a4 with SMTP id 98e67ed59e1d1-35692d84ac5mr1321815a91.13.1770877570366; Wed, 11 Feb 2026 22:26:10 -0800 (PST) From: Ani Sinha To: "Michael S. Tsirkin" , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Cc: kraxel@redhat.com, Ani Sinha , Bernhard Beschow , qemu-devel@nongnu.org Subject: [PATCH v4 11/31] hw/i386: export a new function x86_bios_rom_reload Date: Thu, 12 Feb 2026 11:54:55 +0530 Message-ID: <20260212062522.99565-12-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877736517154100 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 18f2e2cfb9..b5759f6993 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -1089,6 +1089,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 0dffba95f9..66080da54a 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -127,6 +127,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 05:51:24 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=1770877666; cv=none; d=zohomail.com; s=zohoarc; b=Bwdpa+6Z+G821/Mhu/saN6K7s5Ey/IKJFn9ewXLeE2QZz8HYooTebHhz8kWA4iO5iwJiyTuQoH/3UGRmv7ELeBW8W7Fkqx4j9mM419KKtzNMBnVcqL/dv16IUqR30O0t0ZdX/NP6vij/B2DjUy9OZcaLAEYtWBeXWTkO5xzGsL8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877666; 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=3B3ktj7wTRZtGaUxqIgngJ0a4ysK1is7v0SePu1Te4o=; b=R9VTKAkbraMq0+xkpDyM9PUBU9533MWnX5DpjAInVXkYinc2RZ9/YZTqpJcXfgL09k7/iPnCUSjp/DocZ7rtg+YWubOEheIhSyruMsEcuvwEmv/6FrRc0bhqZlrkqxt5lMn2QB3aRLuIkvGRNPWwIz7g2DoRsLYC4fg0JRADQ74= 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 1770877666477291.5955123461831; Wed, 11 Feb 2026 22:27:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9g-0007pK-6R; Thu, 12 Feb 2026 01:26:24 -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 1vqQ9c-0007mS-AU for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:20 -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 1vqQ9a-0005Fs-Vl for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:20 -0500 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-6-kAIUa2EiMAmMbYyDrXAF3A-1; Thu, 12 Feb 2026 01:26:14 -0500 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-35449510446so2831354a91.0 for ; Wed, 11 Feb 2026 22:26:14 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877578; 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=3B3ktj7wTRZtGaUxqIgngJ0a4ysK1is7v0SePu1Te4o=; b=bt75U2CwOV9ih5WAGbX2YEHDxZnauE0fMMdtiSxX8MxhrNOmHj9G9J/1oz0rrqPl2vPBe6 BgbFpVGCGraqSdKeqelvSHY6SiftZICC9Rfn0Ty2oCs1WCWKenFV4MRxG9PG9tumyPacg7 PZxQXoY32u31y+LfIW9iCsshgSNjuHU= X-MC-Unique: kAIUa2EiMAmMbYyDrXAF3A-1 X-Mimecast-MFC-AGG-ID: kAIUa2EiMAmMbYyDrXAF3A_1770877574 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877574; x=1771482374; 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=3B3ktj7wTRZtGaUxqIgngJ0a4ysK1is7v0SePu1Te4o=; b=V7n82+V4nqq+mVamQJf5N3zrAyiV7dPc/yBpQtonst1gjnf/K0C8z6GEqUgu2nK2Dr Vh1PaTB6AtxEC+PpoKfFxGZb/uQ8WE5ro5DHe+AZ9SO1W5ai5X2rLdo2txe5mc9Hm6Yp KLSZ7P67onU1/Mk/b2sedRuoqiGh3eU1w2AYVOM6g5n7HERGH5X+8tZqKwT1asGWDmJ2 alRtNx00E9/UTlDDKpNiDuFmkMDPkIGN8BZmTmWBO4FU1H/1QPUxMqi6tYCOeP1Z/yBY IBWAjtOfLjledFA1CtI9I6Di+YQROgXj47v3rMrI5SGQBtzG6qlesKp6ojD0Mi0lUFFf Fc5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877574; x=1771482374; 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=3B3ktj7wTRZtGaUxqIgngJ0a4ysK1is7v0SePu1Te4o=; b=A+669BJIGARS1sr9vXeZ6nqEA2CjK5iA3H9KtbE6EMxoX/y/Pe0l43NX60wPaYxSZ9 sjYYxIMNbpoLxlX408gqVXOLW9LZVURKSP3Y8MVrDDfcSHMgdOmkHK+AS5hjo5To0DMk 1gRTM8f/4FpGwkZYPhRQhCERGkbulRZfM7v237jRg5DJnvsKkWIZVqh2PGt4El89PweE q8Q0X5tSv1SQjLRnm8Ph1TO5q/Bx9ra/oXWjGp9mddydG1gxGsQyQxDzAI+hGJzU02Wd 7kSuFFCiVphhjYCWVjTiDMs5sgW7YeNiiiCy/kWLsDbF+tzhWrTVuMiCBX5EEkPox0mh 4ttg== X-Forwarded-Encrypted: i=1; AJvYcCWMvD+zRUbtC6lxivXbtyDybTRq5dyLCOfAgGG9GnoB5MhOz8K1F6uX8cxn+k18+S9rnFRxRQuYpm3F@nongnu.org X-Gm-Message-State: AOJu0Yz8cCZXuEyMtUm0O9vZVAtQICYP/PUmRkYRkol/qXc6JDUWPhi0 a7r4dzje1Mk4gG1i5RMbhsU3fuZwgj6hEStv+4VdXPfWL2TIizEoStUUFGSYRZCXTsiTA1ogKd4 FFCWpWNHVPKkjGcqLBBZW8vDcOQl99wtjkdxO2y3nON/6rYsvcNKdjx30 X-Gm-Gg: AZuq6aKRqYoLFX1QndNtlirFAmMxShrztW5eoChJhKKjmbIuwjc7okQantkrEbrJdRL uvcK6pfUbT8314tU02fT1gEBukcNT+JIepjSSJTBlBFLl5vYdpGfHTv/0LIyhWlkX4zLm8BUSDS wprDvdnF/Rnq4nIoHVfHAxsptXo7UV9l7STlywBAmpvE2YVb87e1skxU2rB0PKTP2R99AyA6p/G rjWlvxXKTnqw2KULnliJZYV9vNz2W/xSaZybC6O6WRWV1nM+Pd8q8MIdFFPFGeLG2bpOauPdFIC YyWtqitzkhxGvplbWaRtolhpDcYxZVS4aAxBSek1l9tK2jEu4VozDfC60Aczb9CkgXjz7nhX1WF FbVtxEKbYm9F92sONFLkorvNNQGG3j10RjY975amP+FJs6FL2loHfAX4= X-Received: by 2002:a17:90b:5287:b0:356:22ef:57ba with SMTP id 98e67ed59e1d1-35693cbd17bmr1186775a91.7.1770877573702; Wed, 11 Feb 2026 22:26:13 -0800 (PST) X-Received: by 2002:a17:90b:5287:b0:356:22ef:57ba with SMTP id 98e67ed59e1d1-35693cbd17bmr1186763a91.7.1770877573345; Wed, 11 Feb 2026 22:26:13 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 12/31] kvm/i386: reload firmware for confidential guest reset Date: Thu, 12 Feb 2026 11:54:56 +0530 Message-ID: <20260212062522.99565-13-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877668790158500 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 e82a6e9eda..eec2f27a0f 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3281,7 +3281,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 05:51:24 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=1770877745; cv=none; d=zohomail.com; s=zohoarc; b=mIum928YgSFzjL/2upEBQIVv4CyCqpQlIufbngfjngr7qIhl/cem0mInoh6VbtFP6uLwSHj7951Mt1SftmSrgnVZgQbma0OqWXXz9AEdz8S0Q8EiZ7zFe4h1pVFfu/SWRkTqIPKuEivk2ihzn3Zo8cc0xGM+iAa85B3jUzoQAp8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877745; 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=npi3eP36456mUDuK+ax2iLB1NMn8InaMo9diT4vHZh4=; b=NDzAH+DFv53NLBYDuv9xTmp0/PO9kEkPacqWHd7OTjhCxRKzQVmGVHZ2hlXTbToSlyJNEyWj1stjqHGlnHDozDhoyscbHPDpb65PQNBjhN+LEvACB98zXlWru+VGs5SfWRzlFHNTNUjFr6BueaRhiYKPNTcGmfM5NghHK+dxB68= 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 1770877745754957.6805062434335; Wed, 11 Feb 2026 22:29:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9e-0007ni-Eb; Thu, 12 Feb 2026 01:26: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 1vqQ9d-0007ms-Kt for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:21 -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 1vqQ9b-0005Fx-QP for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:21 -0500 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-330-gN9iWca4MP6kkyL5HZW6hA-1; Thu, 12 Feb 2026 01:26:17 -0500 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-354c7febaefso5791843a91.3 for ; Wed, 11 Feb 2026 22:26:17 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877579; 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=npi3eP36456mUDuK+ax2iLB1NMn8InaMo9diT4vHZh4=; b=el2udbjHwBtLw+s7RRymsfKtnzJZm7W2n5J6btcXliF0FFTOszj/yVkFamNtDjzr8PHb+S 5/Q8uNxX7GkruSEUHe05jsOEwjxwfv9N+7cRObeZih+PTKwLJzyZMFFWYAtuBGKrA4FLcI VsMhbMgi1BWSNa6TIQCoim7bPP6GLXg= X-MC-Unique: gN9iWca4MP6kkyL5HZW6hA-1 X-Mimecast-MFC-AGG-ID: gN9iWca4MP6kkyL5HZW6hA_1770877576 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877576; x=1771482376; 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=npi3eP36456mUDuK+ax2iLB1NMn8InaMo9diT4vHZh4=; b=NBTILwzf+ouWxbtQZtIcoT80Pw54q7cu76pBqOa73zrOCfrmIy7Mp2qKyHROo3LB40 c0WHdSpmeVlhOWbp+FC8Grr8VFpTWbnvNq+VTbBwNypQwG7wHOivq6ESUbgQ+GATzMBM wccihGTfXjo7U0sRWH/C9p+ZIKBDzaYQbit2+JKH3lvwxt4xoiX5dWyx8wXBdDd+Ax5H Djeb3cu6l5UqwkQXDMYwoxSVQNHbXV5AzjtZ7U0+a3e12OxG71UA/XQGF17tzf393SPz vJjmdD5aeR9flBfhOxZRSP4+XOYY+VlUHjX+OUPuR2ronTQnr+eYyk2tFC/aybTgy1KN Pc8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877576; x=1771482376; 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=npi3eP36456mUDuK+ax2iLB1NMn8InaMo9diT4vHZh4=; b=c5pkDf98FMmZwluxdiEpem0eHGpOB6CKapk551YIVVKGoQTVB95NV66AgElmXHIq9F JOvk0Q3la2K4j5iFdiKT8zycUlTefutdOXlFPeHchBkfzpuPxQK+ca20689TB5LoY/tu jMN7vqvkcsCA1EKktGlKjN3HSGaxdbYzLHGYmwaTnNAJaI4e4xxElIDwlqIA0bQ+cDAG NSSJxA7wjMvYr4JhjvSBQaIm7vyFuBk653Clkc5K1pXBo2iR4fU8ljTK613wKMt7kHfE pxtvhl9njF7NLJfsUU21x8DGox/N0RfolIXE9d4/2VOyFsc4fSojs8CqJ5e0eCSQFhAC ok6Q== X-Forwarded-Encrypted: i=1; AJvYcCXHQPd+tiDKpfrc2GC7k4x53Ks4FLg0tD6bBt4Z0i36O+Hc8syf8pVGNG5UjXrslEDMgBH+PRN/M6BU@nongnu.org X-Gm-Message-State: AOJu0Yz84FbipzOaMICe2ZT32xZD0Kd6ALja4wuUP2pjhpuiQlWCp+JK lcfekhqHAj8x7rm86rZcc5nAf1xAscNhG2p36uSPRAfirHS1TDIdefHAYbXeHyDS0Lh6+o2dpDY p54ZR7//LWZ9sTbpsPJo8QxVU+YLOI65ZgO1aX6j+7Q/X9xIfyvr06n95 X-Gm-Gg: AZuq6aIjxwWMXQ2MJG1DruWWIjbQecMR/HY3XPNHHFZdaVqr/jfw67iQQnwOLF3ceam KmirIgVAeaSJT4o1OeeiBMIp2ui28GTPbCaFTBIFNKvkF7KG2EnG6DEU3Ihme8U1TaoLB9+SV+j qU1nJW7G3jcLaKIUkle+75EtHtoN0VqKvka5pXZWhicjDB+AMOsLrggUhvCo5XzYvNfmAS3HRlN 7cI1XzR3joioMDzsqX223IqobpDBFWHysbiMecG6NNXRnphGjusVoBOxhzvqyxcgyTu26WP01Np frdo10+PcfWw3yd3dmrbIBSRRJiQUcvlJsGX2PUf6+iPIg8Hvv0RmEleDCFyY5EOP7f8kvB1vNm RSs1WvFvIX6s/Z5RCe1Kcl4hivduo9vuifGonJO6b7aNOFNHGeTUTNNI= X-Received: by 2002:a17:90b:5403:b0:340:c179:3657 with SMTP id 98e67ed59e1d1-35693dd1630mr1151669a91.33.1770877576486; Wed, 11 Feb 2026 22:26:16 -0800 (PST) X-Received: by 2002:a17:90b:5403:b0:340:c179:3657 with SMTP id 98e67ed59e1d1-35693dd1630mr1151648a91.33.1770877576087; Wed, 11 Feb 2026 22:26:16 -0800 (PST) From: Ani Sinha To: Paolo Bonzini Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 13/31] accel/kvm: rebind current VCPUs to the new KVM VM file descriptor upon reset Date: Thu, 12 Feb 2026 11:54:57 +0530 Message-ID: <20260212062522.99565-14-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877746716154100 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 a6ff16a037..5e81bf8ad2 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 05:51:24 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=1770877755; cv=none; d=zohomail.com; s=zohoarc; b=aFmRhowOknl28DZV+8h/4xj1gAtC3YGSlpfNVi89ooGJTm9dSBdyvsnAxOvvOQgOU/aEpME3Xi2xFyA0akqemDLMQS/aWjtl+12GYGFLjCUD/iUYm3vi5p085mca49vBJXvcM+wVJ8VhTBx9jla0lwOqxvnWI98OiyedTstAmMY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877755; 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=HCdSwGHgIl2VD+uIYI4iGS/qLb0Jihe0uTwDEcqin/H15yGmi6yzpLE6esV2SZGMmCY4VqS64EVs2NhPjiFEMTNRXXm/EorsMImaHpgiqeEOs7uxEO/jtYL0PFj6PlPqMVcolRnm47Jhfu/Qki3XGGkVqUwmCJrOfSK5fzQ9Pk4= 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 1770877755467372.50685236334084; Wed, 11 Feb 2026 22:29:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9h-0007pR-Ge; Thu, 12 Feb 2026 01:26:25 -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 1vqQ9g-0007of-0V for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:24 -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 1vqQ9e-0005GJ-Jd for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:23 -0500 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-404-FzaEgHZUM0S_ONheAyyv-A-1; Thu, 12 Feb 2026 01:26:20 -0500 Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c6df833e1efso6933432a12.2 for ; Wed, 11 Feb 2026 22:26:20 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877582; 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=fGRnX71GZoCIBlz6/VE0TQ4CLRcX++ecFB5Sw5Lh8QDYjBgDPtk+hS04UiTKr5vIvPGB1m afbP0qEfczZ6Sp3fsf9B/ueO/LUZZbuU908ClhEGknCOxftXS8s2c00jzTccs7BqoVJAqj qPJGCIgIgWgrDPt2ld/5bdrGsOjsT6o= X-MC-Unique: FzaEgHZUM0S_ONheAyyv-A-1 X-Mimecast-MFC-AGG-ID: FzaEgHZUM0S_ONheAyyv-A_1770877579 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877579; x=1771482379; 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=exVYpTtFNzpsX8XvIeRXRqEO5+bqRnQFiJh+7xWbq/tz7QRZf5lwzH1+te3gGpGAhz xkWLlDHuq4GL9sl/ZjOmlJG365AYdfn8AMoMVC73oU5qMgATKNp8dOac423/pzyX2RSJ P53+QfpXS5tmsHLQ+VI7XzsGtzlQpTUgX+HdW53qk5iVi51l/0VN+Z0ioBGwkFrkC0uA WK6/1OSrErosWbDHYAQl4A3r3qLNIsSSPD/y1tcAmQbW6zf1kHJ9qS/UlpmAyLAh6LCL j7Fn4bm4hQfAb98iKwY1/OLK3O/Wnx1niN4eeaJI6ElNccRSVqnsM0se8kSGHPoad0BC Ajew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877579; x=1771482379; 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=h8qv1rxKMv6No0VLQZwS/hac5y1L/SVFKeDx+lgPp/XGxmgJ2Uagmq6zSshGsQFeKW 7zoD/v5OPwYeidgNuKIL7hGANAADzyvA9bSB6kvePgK6dL5P7YJUGBk7bM6lKwg945fe qMaEkPEPfd1JHdjQHE1MEjGfsHj/t51sLITNRN3pPLOxot7vH4N/H063IZlEOF6BSYl1 27qyJN45sWTxBAv4s2VNFByUeUA3Ear3P8NNMARlYTYwDQMzuE4bO2kUVERb1NW4s+Bu DZRNMbkZ04o9nFL+nH5W9pbBj7KHCSB7651x2NMXodrTAhokMqXOYK7KlpBGrVUZidbb 1N3g== X-Forwarded-Encrypted: i=1; AJvYcCVRMTuEhTrITKc8I1FYxHMnsuSrFO0vrqFpYFA5RzKDRaNSRZEYaMJaHRdFPAz0ksfp5IiKWZt1UyHk@nongnu.org X-Gm-Message-State: AOJu0YxtKZoiOe7cUylF5tXeR4uHt1A7CCC0puz1r+SqJXu62rBKtt/s +knpbUYLOfCQADVFBAq8PkmUMLRXIB32LXK/4NcjJnKYeoI+ghgmtDL80txra4bjEPHzgkHQQ80 mZVxsltiotmW6oR6K7e4WKx2/hMtoAeXl9WGxV00UgjP2q+PS9Y8rR/4C X-Gm-Gg: AZuq6aJIgt5EU3hhmhtNChyMECvEi8Hv878bULIMKGvr6vdJT/rucgdvDnYaF1nn+XT gT2D5+UUDD4WzpTsrjA6MTKvDy+KXN8FFcxcgzqVU1uDv+8wBiOKoPL0lie1xrHKLoOeB1lqlsB ORxlVEL3KLvUbFBaps4zxN3jdAdkAsxyKZB9beTWUo89s3eRe0V6aPFWgg+yTVpBuCaYol10UMl KR5ErXk7I3eOUqeTCRzGf1u5E6QnpeRn4ZhekQvmvZ5wGu/UKhYzF0K8OkBsfQKJr2PaufJG4AN CN+iwh7IH8LK4ekAxt52SfdwMT0lgPmuPVAkkXxvejjRF7+0qoLgfY3r2LqOZQaXtk1tVVBrq64 5CWUVaVAXpT24r2uDr4SYKk0QZgwIprjx3BcY6Ud6gOdJX+Fy3/0z9as= X-Received: by 2002:a05:6a20:430c:b0:394:426b:6791 with SMTP id adf61e73a8af0-3944897ea20mr1572075637.79.1770877579384; Wed, 11 Feb 2026 22:26:19 -0800 (PST) X-Received: by 2002:a05:6a20:430c:b0:394:426b:6791 with SMTP id adf61e73a8af0-3944897ea20mr1572056637.79.1770877579043; Wed, 11 Feb 2026 22:26:19 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 14/31] i386/tdx: refactor TDX firmware memory initialization code into a new function Date: Thu, 12 Feb 2026 11:54:58 +0530 Message-ID: <20260212062522.99565-15-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877756998158500 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 05:51:24 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=1770877776; cv=none; d=zohomail.com; s=zohoarc; b=ZxYTJlEvaWGo22KoTSPPdQ9WKSBxbzqOrQVWIvHKvas2+pO+eEpaanIMg+Ipx1JCdgutqrG2VykStA0rGJSzIze/dffnfSubgXv2xxyQt5mHkmXEmAqwut3snI4g5tVBSfXppeHJ3uzVtNa3pMXLNmO91iTOO2+N8OaD0YAhCNw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877776; 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=kwtV/1DIVc6nbTeiTU5zsri6cxr3KogpBpLwwmIP2C5exYdQ98hEDnZA9uOr05+kWY0OeDgBbb+mCvpl01IvhPLcTvMhziQHkGAzYLIoHttC40lrD8ARGvSYscHf2hUFJYzP4tHV7cxVSSuGLCPW7z9vy3rl41tMrR3i4/SgrIw= 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 17708777765281002.4891461239623; Wed, 11 Feb 2026 22:29:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9l-0007px-0h; Thu, 12 Feb 2026 01:26: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 1vqQ9j-0007pj-Dt for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:27 -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 1vqQ9h-0005GW-QP for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:27 -0500 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-338-yRju11d6O6iIUIt3XRyu-Q-1; Thu, 12 Feb 2026 01:26:23 -0500 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-c6e18f1cb86so2858451a12.0 for ; Wed, 11 Feb 2026 22:26:23 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877585; 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=Wy78EA60hTkWSyYoslH8x+mV0+WazeYatzk6feFygGTf4RvCzB2rc22DsMeAWKakSC7swM bD6PJi41EVKvp0gPwxTMUidj9RkXKGs0kzW8+AK93cIUA9wjmt3L77SquH0ihCKFBL0FlY ARSkNEJZ9PydeW9OmgNCgM1kGnoKLFE= X-MC-Unique: yRju11d6O6iIUIt3XRyu-Q-1 X-Mimecast-MFC-AGG-ID: yRju11d6O6iIUIt3XRyu-Q_1770877582 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877582; x=1771482382; 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=MyVhMt45e1UmGbS6JkPJtVmyi+4IzQnm9K6/2okfG4LKdfw1U60G+30oZFo6ti77rn xh/HPG+9fIF31svg01Cr7mI5aY8WR+ecCiFH9jVy3fu/O1wF5bEI25gtnfwvGQVty4Tj oJJeE+eiNq+tzyajwfrZSCw7eyFYRIlB4EnMmpsrd9oPqwStGQS9Fwmf2OAl6zUIEN0D I/IIVQqojpQP6LDIugGQpKkGgeBkKp8ySYZlqMMfU4ii7OwWtQki2QDrQUuwMiLvptxe Dzl50TCBOzsiFdrJ4KIKDFD+umTkSn0web2BUPAcXGhatBgVlsbeTZbTF2T+Tr8Zumul GJ/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877582; x=1771482382; 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=ReJ0jzvU+0JsQz39+dwOZj+75Tg9fMlE83Q1avusMEdPJtx8fkrjHU9R090OzfHaz/ YjvEClvNd62rSvWS/I1CU318PS04McDWlaK23XZRfj+X42rzh6iNIpRLeKSgBjy4aQtJ IfydSTUl6LCMfoD7p3+FhMNo6gqlL60CBtrtlVlxPHrFpxzn7Y9rfk3oKg3v/i/KrgYS w/2OZbfuV6C6iMdoNcTPKUMruTpFTdp/R1t5OaN4jC5s2RPAsAtILDiGW+zlrYYHzJU4 IQLk3O4cVjCsFdVBRLDQHPbaV22cn0EVsGlrFZM2o45z7homvd9uvMoOmQhv7BeuFlMA HuVA== X-Forwarded-Encrypted: i=1; AJvYcCUqeY4pYIngRxkR9KqMF/FrkttEKZkLo0Bqqy3gSbo8xY9DfEtnYPdyiDgDzh/iirWaxpJcCC1ZfUsb@nongnu.org X-Gm-Message-State: AOJu0Yw9O6n8O1e//HUsLDV9xdIeDyiQrd+RGoy/iMC9hKypC4YKYzT0 lhZDLd/PPq2+zrchmRh+LXkG2ONuTwJRTPg1rwIz2B7w8Genu2yxKbonVyq6aVgWh14Kbbl/C4O sBTwikl6bDDmg2uYKgmj/yhFXype0x/iG8AjwzEtztz8u7MWiT4Q0hb8T X-Gm-Gg: AZuq6aJ4jxk5b3/mjyA/9NYG/rgz6vr1pBHzQGSqWy7c5BfnNMIme9b6rj0yyRot5Yz 16C3Xj3n7V1UQvgJoYHIMLyK4KjFyJb7ZoxwFerDTGeAaODEhpIXW0lAl6ucMnHifefE0DS7R+7 7pHpBMf1FI5UNjdNcYsv07ybiWJRUaeHMEU7YzaIRv0Zn+oGeCDpqbbGZoydpNilvLiBb003Hmd UjCbxceIG/Pc/+ljOSBQQx4yveimp+kPyphKmPE7gmz8HzTR8PCfUuwVVeGf7XDsixkiT/EwiMd hdP5D59IjxuKWwg19wR+i7qQMNPypH/Q+WUNGS0d8oisrUqMAw0t9vG2x1b/IvwGNYJC6WuHbql S7aHRYsurRyMJWjy/jPOnEXglOom+pXzEmKaBztyze1SXISL+oNEtvgA= X-Received: by 2002:a05:6a20:2454:b0:366:14ac:e1fc with SMTP id adf61e73a8af0-3944897ea14mr1768766637.78.1770877582401; Wed, 11 Feb 2026 22:26:22 -0800 (PST) X-Received: by 2002:a05:6a20:2454:b0:366:14ac:e1fc with SMTP id adf61e73a8af0-3944897ea14mr1768746637.78.1770877582040; Wed, 11 Feb 2026 22:26:22 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 15/31] i386/tdx: finalize TDX guest state upon reset Date: Thu, 12 Feb 2026 11:54:59 +0530 Message-ID: <20260212062522.99565-16-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877777097158500 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 05:51:24 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=1770877677; cv=none; d=zohomail.com; s=zohoarc; b=U3HgKC7kcn4J4j84e746iL+lpgifij7MLnixV22gJfTajoVkNMFZDCyw7cyufOIOcrakNHNY2y61ttxSTd8Im2c/7U6PkRFQyiWxaNKrCOzJjOIc00IJWYJu6PATPtOCAwHkjDVYH6u4gDj01fZx8pPhTZsyB90YJcuBPjBPTiY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877677; 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=BnLJ8uAtDUYEUjDVvLxN0zrsdyC88iULsA5fcdOFAPkXHdRw7lE2pGz6sI3NUkaVLZSu6SWYjv/hxlmJLNz88Qka5MD+QQbGDUT1VQOk/1jCiD582rhflDaTkfdqGDGW2jeG8cizIdN4Q5Lfb9PVuB/K59Sd3vAuKuDQE0DSIn0= 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 1770877677656145.42630060720967; Wed, 11 Feb 2026 22:27:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9m-0007qM-KZ; Thu, 12 Feb 2026 01:26: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 1vqQ9l-0007qE-U4 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26: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 1vqQ9k-0005Gn-KH for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:29 -0500 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-507-1re6DG6JMFybbm4PjIuCag-1; Thu, 12 Feb 2026 01:26:26 -0500 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-354c7febaefso5792037a91.3 for ; Wed, 11 Feb 2026 22:26:26 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877588; 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=A3NhNfBDB5ZwFLkZypugI0rN4zUe5OU7WZ/ArY2YtGXxK6k5XrZeoLjNdviA+dN2+crx5Q tzpFlGjVyZUvbmmVG15O8jAWjI1fBboZEF9jiDETYNsW5KfdG/kmF71/GxTmFrdpB+POoD pvG8FJX8ZonpXu5wqENU6c9P3YZ+/WU= X-MC-Unique: 1re6DG6JMFybbm4PjIuCag-1 X-Mimecast-MFC-AGG-ID: 1re6DG6JMFybbm4PjIuCag_1770877585 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877585; x=1771482385; 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=CH1JpQQIPUwmKk9zZkC2O68HIfjm1Rk4ECflAMum467A1jwjqphqqd5d1hWdht+FrA hXrqnvqvcjiq20JqrQln/1T6+akiH0gr18OmNPAhDa5Ga6mKjxyUZskcU3UyQCdYkG2Y rWRRAmv7ohl9WLhnF2/ToV+tF2agme9YJ27EfYonfaU9wwBZX9ByLckCh9VHx49ZlxfJ sLQe7PybsBaSin7XcKsAgKB2z1wmcsufgLdMAVULMYoUs9C8r9Hrtcegy15HXNzGxqBo x8FTqapyq//JCHeZ+z+b8Y1MBKrrGDC0JMzab34gOE9iIn7TMBDQHNAqHlzeNtLw84Yb e+KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877585; x=1771482385; 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=RF43A9eZFE2DMDo6y/5FxYS9Hl3FyweGNEoJpvbeWymso9lRBOK0Q7EF+NGwYb85dv hnaOHJd1Lc/rPF5oklTG4fhjajKr0m7eg1ZTjVJg1YdZutLZHqxlDwtUQeEV3bp7A98f E1FlGnTCHzsNuFaHDlOMLZF1060gOBSTEdopxYf5/+BZUis7DYmOlyDQfOx3VVtoP9a+ ZxGepFNiuVpUhzBraprYGG6kr94z6KIjY+HbW921Me76ZiY9+6OmeK/wNJOOHpG0cyOH +XERAcaccBtc27SWDyD9M8pMN1PcewTypdck4trYavNcj0YmVTRhHCrhnac6rAydAUwG nM5Q== X-Forwarded-Encrypted: i=1; AJvYcCV8y9i7/XZLfTw4SkA28KVyGZkQDM8YXqaipiFSVtBjGn0zwqAb2EIDtsYiwtsjKMzQj0h+crvPK+J5@nongnu.org X-Gm-Message-State: AOJu0YxSbiBSV64e5OdvbrNvvueb9EKs/IpKRbKvtF+8x8MaIx9p7VVo NOXMg+dal/fdD3lSw/zGGbjln3ExWehNnhIe4soFovIzC17dD5XuaFB+k16sd2Bi6IKy7ivIeA5 /cZU6D3P8OSq1ve9cREP+EVoPsafpdL48Y+lvvcrV/gAMfXcRlxckcM++ X-Gm-Gg: AZuq6aIdFAu1fnqumKuskDsS6VPhalemjXCiZGvBWDDTRii9vt60XiWvEUVZvcl+xDR ZO+vIG1Wt+Be4QDuzycQzQG+ZMDVO77y8PVQ3uHuXj8VOylJK3IMpEdwV2FGb+W2BBboShc+I3b nTShO5TTJRgqX2isknh7F/a3wc5paLx6RpczCWbvg/2TG8EBN4MMAfGk62zAd4hZ5eXoCmfHHs9 C4tZvyNw+ebg+5WQv+fv+3vRfUQWnMVV018iCVRh6QN20N6wWBGEZVn6FsDuUBQ9DXRSP8TW2eN ru2KqFelenTt04iTsKoLixe8qgcLOKqpp5bq2WDamXZiWPqKYT0+eFOPkAVExEZVlz4wxVvKK7B YOMxfVYBm/fPruvB7p+I6GsAKp29GxBTsbOxIppsZpRT5CovY9fBNBMM= X-Received: by 2002:a17:90b:3f8c:b0:354:c7f8:6d7b with SMTP id 98e67ed59e1d1-35693dbbc2cmr1055216a91.27.1770877585310; Wed, 11 Feb 2026 22:26:25 -0800 (PST) X-Received: by 2002:a17:90b:3f8c:b0:354:c7f8:6d7b with SMTP id 98e67ed59e1d1-35693dbbc2cmr1055206a91.27.1770877584981; Wed, 11 Feb 2026 22:26:24 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 16/31] i386/tdx: add a pre-vmfd change notifier to reset tdx state Date: Thu, 12 Feb 2026 11:55:00 +0530 Message-ID: <20260212062522.99565-17-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877678754158500 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 05:51:24 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=1770877663; cv=none; d=zohomail.com; s=zohoarc; b=SupUbl83x+/sBtEkn4tAoc3xAGwC5yTeKcX7wVgbBlQDtIXhUZE6JYg/40nPc9D5e21hEy/hXZzAwNKPFBuBCLn1y8J58mp82vSWO9YPtXQrJeu/hXhcBkSqfpquvez9AaA1pbxoceS/iLF2jgM7rYkiF/5ZD+aQLSer8oLqeBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877663; 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=8zpSCPimmyA0e0qP7Kcivb9yeJXq4znZSTQUpfrxyiE=; b=dorFCXrW1uyr8uWoHAf+hqTY/6dc6xNTqcqKTL8N0xSeXiLs+N5xUZEPMQtni/d1zy44PI7A6DObhuGSUQbma++eI3Ul7XzRoMsedofvzCiyK9vHybocbjtajYPHul/GidylFXa+90xcc4erosuhMiN3EeqRaqK2MxugSt+u5GY= 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 1770877663185936.6690631844272; Wed, 11 Feb 2026 22:27:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQ9v-000895-OQ; Thu, 12 Feb 2026 01:26: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 1vqQ9q-0007qm-46 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:34 -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 1vqQ9o-0005HI-PC for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:33 -0500 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-223-e_VCarWfNDSnPbfqHNC5Dw-1; Thu, 12 Feb 2026 01:26:29 -0500 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-354c44bf176so5391282a91.0 for ; Wed, 11 Feb 2026 22:26:29 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877592; 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=8zpSCPimmyA0e0qP7Kcivb9yeJXq4znZSTQUpfrxyiE=; b=UABHAlq0PpfeQMQHoTOolnwfzXaiTB3q7/d4YlrM1xa8U0Tv1nM/uULPoT3K/JAe5zbCzk OgwdRfUsqUDZEvb4ifhNu9cPHGDNE07NjL6bQitUvZ8Qcy3e+dHY2VdkouMDXPKIx191cE wLMNjHxQjaTNr5rHNEsuKR60pq3uomE= X-MC-Unique: e_VCarWfNDSnPbfqHNC5Dw-1 X-Mimecast-MFC-AGG-ID: e_VCarWfNDSnPbfqHNC5Dw_1770877588 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877588; x=1771482388; 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=8zpSCPimmyA0e0qP7Kcivb9yeJXq4znZSTQUpfrxyiE=; b=GTqX+k7T75a2wPzxcLtZVBrJA/OMlqExTYG3gk6c8dhgzC8VSfPSgKFJv+7xik05v8 BR22StZFY67C+JGRJ9YVxfQJpk/AluVumHSO0qwWi9CxhIT+UXLrRfWheQk1iWrkGQ4j OO3zpYzboBkcVpkSCGPtJE6HpEbaKoGCTLgqLHdFLOoJogQeAxkDhN6LMB2O1MM7m2kX WLMTfpOPIcEmqt2p63G7Ko0JV6f1NMbwoehOaKTSNnvp06JzAvQeUJOGfUEJ9f6L0T2J vN/MP6sgCm8cDmWJpLAMDnh+qBWQqEdaHkid/fqLduUi02jknmj5uNiPomyl9H+yv3Bv SnSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877588; x=1771482388; 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=8zpSCPimmyA0e0qP7Kcivb9yeJXq4znZSTQUpfrxyiE=; b=gVClAPTiMOwkdJ07i9Ccxq589X4gf8kXX2rQqWfgjptL9K8+zPHk3KF3mU+eKg0B13 G7zr5Uc/Im2UUT+72TyMoo8KlXV43OWVBrNAF+sJOkRPSOV18doQSSGxNt9gsSb0XjyL hvoAAy7+/rTFV+DbJX4iripWL1VL+IFD6NTQoScbNhm9JDgTOVoI5Rm3ijaQ8stRDDH+ 54tF2ZlUDEg1jBuRgEWEK8XRvZoplBBGY1Ou0Q7kYMFTYQk3qc8dPKDK4Q7ZMvMf4Y3Z OvepJfuGLfR1V/891j0vr2rKEt7RdV+AGSJrzS1d93+vVubbwIhiiWQo1MycylBRcU8V GhpQ== X-Forwarded-Encrypted: i=1; AJvYcCVkJ7Q+i6Hc8HyRRgaqipNmPX2WA5SPYeNV7+pPZhCjSu9psM8VG9Mi3nihuiLRitCD0l0u35yBo6Nq@nongnu.org X-Gm-Message-State: AOJu0YzfU24ACV4QwUsSafU//DxtrmHdSvSw/781AuoaFAE8IBgSB6ks A5OdgdTa4nUPtl++M36KZlxO1Y5LTG2IC9YnD9TQPudf0vKxkvNct076WpyDZctYxmP4vQaEg4/ 0BquMZ2vN87XnRGheEPK8X6VquOlnFGaBJYPyU5NMm2gmh79igudlAkXV X-Gm-Gg: AZuq6aLrSoIfCt8VAAR/XAS1eKXMYj+jaGNO41/X42gSAtAByMiY8wZfY0x9haLPpyl ntkZxcpWCTztX8ExrhksjYe6tYq4lVsHAyDJdrLTadFk8fu7p4/rgKBZ0O99oVkFbprNsZiI2cu vILae5kC34DgOxmaczAXsmPAPfn69+4LGf+wEqMrYlsM/TWokVvSx9tARzAaOICPqMz/8D8Ar4j NY6B08wigX2epYI+SUnEh70DPnaqdWHTM/HI4murhale0cdT4RmkUm+M/4JalkHRvT/zZKl7ww6 1bJ4ToSuVdyJoNkl7HxpRfIw2NoVNXkDq+kz4bpTpzglW0fy+oB8Nx+zAb/PI5VlfSaoDFnGJXt 0ZP9jW8W6VNETFwvCR2MKRgAV2qShityVmI4gcIH1Z0ZpcWxfa5/VlDI= X-Received: by 2002:a17:90b:3503:b0:352:c995:808a with SMTP id 98e67ed59e1d1-3568f327382mr1457960a91.14.1770877588516; Wed, 11 Feb 2026 22:26:28 -0800 (PST) X-Received: by 2002:a17:90b:3503:b0:352:c995:808a with SMTP id 98e67ed59e1d1-3568f327382mr1457945a91.14.1770877588157; Wed, 11 Feb 2026 22:26:28 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti , Zhao Liu Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 17/31] i386/sev: add migration blockers only once Date: Thu, 12 Feb 2026 11:55:01 +0530 Message-ID: <20260212062522.99565-18-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877665524154100 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. Signed-off-by: Ani Sinha Reviewed-by: Prasad Pandit --- 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 05:51:24 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=1770877791; cv=none; d=zohomail.com; s=zohoarc; b=T/Wpj29ab3MGZbP4rGO2VPrkGHa3OG+FvXPE1F9slLJujzV/rqBFlInKKVfaAkF3x/ePgTBMr9Ob8b1TsKBpC6sIyV20+kxu/sdJX91hfXu6bohmbYanjWMHjzv2qYWou6W+QnsRpdRMt4uTx7YqdtPA38+4vryldpSdSTKZV+Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877791; 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=Tmdm5n7lsGIEUG9sX7o+5NPgto0b1GNHbIWacscGNwbkg1Nc+txuwb9DtnYMVi3G3oDEBS/y93hFmg4DMuu41u18u+aiAfhFKUEfsLYtOpGK7WtxJJrJ5w3eeG72ZdGaqG+qS7suILf7n3v+cBs5TP8k66hEel0kW+P/ibXuQPw= 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 177087779171452.32277682796553; Wed, 11 Feb 2026 22:29:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQAA-0008JS-Ag; Thu, 12 Feb 2026 01:26:54 -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 1vqQ9t-00088D-Mo for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:37 -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 1vqQ9q-0005Hg-RJ for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:36 -0500 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-550-rl7rtaKFN32K6QnAzU6ddg-1; Thu, 12 Feb 2026 01:26:32 -0500 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3545cc84ab1so19431821a91.0 for ; Wed, 11 Feb 2026 22:26:32 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877594; 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=N91RSOogkor8hu4JuMLwNZd8DlGmGkooV474rc8tsq0fIADtW7tkplXofivGA1M2CkpyWT vuTTVZ02JHIgY/W8l0ydUcrtNeMKmOVxxJWS3oFjRLUwk7MIuR6W47NxbW7U9bQPuACLKd yvwQUce9cKFYIslXQY62gYQE8q20ftc= X-MC-Unique: rl7rtaKFN32K6QnAzU6ddg-1 X-Mimecast-MFC-AGG-ID: rl7rtaKFN32K6QnAzU6ddg_1770877592 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877592; x=1771482392; 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=JBU0BMyzeegtxubNxyf5TWdESxO8A7/tQKZuWqCZJZmqUsnA34VpLrwvRxm2QJaSn9 r+7bvjrZFjeCfs2JJoU6BZrwtFuPf4+1lAld8dIjr25lc49CDVIjyxiMVE2QSKbkDhva iz3b6tTLVx5ICRQqCCNOh+O/XdDTZzEdYTZxGXDtoA4i6NZPCe3cX04ISkgYfSPGwmXh Pma0fjt7tJt1La2gD7j/dHJO1OE6y7D+La+/XOc/fRd92+VW1L7ls51yvAwTLkmkYxv2 zYkPLkN9wtrAq9YSsc4MerDpua9WmWqgTFhcNK8078iwfG01xIAWiHLGTRMhBtP7wXyP JR/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877592; x=1771482392; 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=Puyt9NFIbww/OvzdoPyLa7DRZia9zj0vW09iyireN2eA/pAOvUq1djn27VJSOJ79sT UCJ/bBRcQ6PQr7tjuwqoDZTvU1eqUhn6/F/fEQFc6K/AIfqpltlSunYhIc2DL/+VDXk0 qtx5F2AeU5eRN8+uy/uDL9ydZECOj/ow1Zjk6hQbJtLjSHaa8eNnMX/Ylx9MZqAFJbUu 9WXFZt+f7wrunN5KcunpbilvNPASqVD2bQ5kt4DZxKBS/UftOTnoHCXeyc8JqcRNbQgw OIc5hPwpZUSpf35kkkGvAgkx5CflgAQvcMjfGox+KEMLN7JdWAQJSodmnsSwFBAks2Yy HL5g== X-Forwarded-Encrypted: i=1; AJvYcCVEgb54NbT75TLwQZ01RwNP/dmWd+y5BUO46hGnUeTwfhJStVrjbD3nXRn/cKeBLR1aj+AwV1SMznH6@nongnu.org X-Gm-Message-State: AOJu0YyVUaprweKjIVM3T5ODgAF6DuM/LfGpGKjNGMo12OkHwPp1MovN 44UaoT6Y/gb2NbNWc7duWHiib/2uY4nh0z0DuuW7yliwlkJ+3rSoS8+O9VFq80V1mTKkihx6b3I RmfOuWnwZZWA+xf2EHQS4rTBYAQKSOMnQASbpjpNIfLALDc3dKWS/0nQG X-Gm-Gg: AZuq6aLJwJgQ4vI2aaBr8m8NtijBZbNVoh4/3ASotLWNYjBnuj9Z5hXmVQgTILx6EHF G0zkliNNEHD3YcSQnnsU9sJ6if8CtCqVbC3n5yeOz8DlzsPmiZ0PH4hWVR7xXJ9foJ1NxnN3w7N m0tdNIxUGS/2DNA/72wM0lBWn8qDS9jvEo3Gjtr99jWRQvUZsp4ZS+u4bsLESjwv88ER94HmJ1E bHTi2sBTVCTfXkcsIWQvA82Av/28GcxlsgvfhH0xcvDh9snlP0UfIjV8SRGFLY1TFlrae8JP1jk GYqcVvhzbs789CCK7L5lNaTPk3Jc6VR/pyj2gBD+OtnGKJES1hufKw+YCvLdV/ZP+xZnMIpujp/ JOWUNMY4ZLfyMx0PAHTQhyZpFM/ClZAWloRIokaEr1C/w22Z4mhDaMS8= X-Received: by 2002:a17:90b:350c:b0:353:883:affc with SMTP id 98e67ed59e1d1-3568f3e4ccdmr1651316a91.18.1770877591667; Wed, 11 Feb 2026 22:26:31 -0800 (PST) X-Received: by 2002:a17:90b:350c:b0:353:883:affc with SMTP id 98e67ed59e1d1-3568f3e4ccdmr1651305a91.18.1770877591360; Wed, 11 Feb 2026 22:26:31 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Zhao Liu , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 18/31] i386/sev: add notifiers only once Date: Thu, 12 Feb 2026 11:55:02 +0530 Message-ID: <20260212062522.99565-19-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877793317154100 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 05:51:24 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=1770877712; cv=none; d=zohomail.com; s=zohoarc; b=ZaJtiskhWrJzEM+6ily/V6jZ+pfWvVwUtRjj4fl7+YT6ATfsVv4vf3Q5iY/SlsjzvTF1creCPjvVv98Wjae8BaT4owUbuLw25eRm5zGggNFUHo8mTvYAi/mf2WMFjKdeZHGlpHGLW6fT7BchAt1Jt0arHCE6LIlER1kUTEvzM2A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877712; 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=MvVx/pRFURJvz5duRwilOSF3LIsdIYQ3thi1gJX8/Abh0eqXteVzlwEO/Dm4OGVtdjDx/if4q8+QcCDHNfx51bCS4Jya0LPpb8Gt6OGd7OSfyjM1KYVeUD/yMkkNoTNR730TO7o9uXZfrcrGI3DWw0brWTOV0lUsVMLZKa51rNw= 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 1770877712032494.21821666468077; Wed, 11 Feb 2026 22:28:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQAJ-0000Ai-0R; Thu, 12 Feb 2026 01:27:03 -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 1vqQ9x-0008DE-V7 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26: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 1vqQ9w-0005Ic-0T for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:41 -0500 Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-282-Jpk5HuFOOBGG-MpYLcLVmg-1; Thu, 12 Feb 2026 01:26:36 -0500 Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-35301003062so17083099a91.2 for ; Wed, 11 Feb 2026 22:26:35 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877599; 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=aslgK+0MHk5X4bse6+AQL0+yKKzAGrfvpX3a14A2oWKp8taswV4nU6yVLgoR6Me9TvEXgC /gI/2/jcBTyQfNO9jIbAShvslYpZIWGcLwn/8WyeOCS9j+YFRdWW+dVlwxCtoKG3RIpw7+ r6GRsOUwgRJ+tLhFBp4YGVkNsm+W+ys= X-MC-Unique: Jpk5HuFOOBGG-MpYLcLVmg-1 X-Mimecast-MFC-AGG-ID: Jpk5HuFOOBGG-MpYLcLVmg_1770877595 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877595; x=1771482395; 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=s1jOxxPnJbG5GNG9fvGTgqG5FcY35bgemKJL9nUY/S287HWbVThwMYsKXyPNbHWXlc xFLcIBqcuImrDr5f6OKOaoz1Cr9q9b+AMQWyB2afMjUfmH+TQuBhVShUdk/PZqS1NeyU +aDlso9iJI3g2RHEAsVKwuXkK1Ckt7bqPLsuVsefxW/VWQD5A3io66GZ6pddYg/cLuEe tMnhL3kuzb1kf6bNUVC03XGrvJUtcObxCUNv18Qo9ApdtvcGmltNK77x/C0gUQBuo/Ap VCbx12bDI60eaZf65xpNyERaBKx9BatzGpG7Yn4+MhiV7sedyVsVZ5UX3dDjZ1bwCKaf o1+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877595; x=1771482395; 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=dT2mmCJGM5Kaql+qhWhrTSNvqN3g1I/Xq8EhCaWV/y8V8r+K0gEruNLKCqVDrGBByk zkHv8rZH5UeJo1UBkmnE24+KEqBPb21sjY+JCLSszphsBQdPEVKugpKi4HidAGekbmQ5 5140B6oGgFyXzbQw8YP/80z0BUMBO3m/5g3vs7agiXnxfu9N8sJpXlJzB+Zhgc95slr+ Vfse24ESs/lPE3atVsFLlVlxAE7IuI32KkyfdZF0n55kx+iGLQp3R9fNmnKHRCLAdH25 DNZUFb7hY+Bz5epzqcrcjKKiCjAtmYyLCkbQdaTF8zD4P+7e/96p5rvQ/+01kHfNLhZN fmiA== X-Forwarded-Encrypted: i=1; AJvYcCV4E4V+lBajTimKkuJvUyCTTLRv6+HOY2AY7MeLNLRJ62XLGvh2HuQiG2lxbr//BJwB4SB1GkT6GVC3@nongnu.org X-Gm-Message-State: AOJu0YyzBaP6yYmKuKPtv+DGaPj4Ul0p81Pzgp0Pic3GUuSXuC5GNzLM fB1IefyB8tC+84qrgwkIh1g6vNWhgY2ToKVzmF0qd1JYXtHGxwyYf1VC8y9At3VDr5cWXnAtx7+ t1Mx0cyJ+GNC5NhTsUkUloRcbWPI+iGRg5uGfiVrL4EpJCahjXeOz8cBr X-Gm-Gg: AZuq6aLq+Way1OCiGjoHt7ebaFKXBwXjftOhAvp4ZUyLGqIj0AorT5eGWj1etKiETnN MBOJmU9RdyN3L5dDRsC3QVTmlNLws45uC/5sd0zISNqvHtuh1NZzX2xfKNVLU7z69wI2fisYyhC 1jL99iMUQ95qKa8XCtvG4dec3ztfaNMEzhAew8QSvjFTf2c2g3w32JOG0haq9MSCnWYJk8sX9oG Z4ZSQdb1+uWKICD5d+A1DBWZ3HLhmG0WIsqBHdGcXEXFDC1BqitbBCbToOP0nd9abWyaWxbZU4C hOSB4J0l6prqqDpJB95OtBXUHsgpVlBEZYvKFFxfghWWbMIn2M91E2G+6RMM9SDiz+sTQ1Q5w+p b8NMJeMiG/puGQTxUAePhUplW+toCVFoy6Irtqmq4q45SJqN4yKdcPi4= X-Received: by 2002:a17:90a:d887:b0:356:72f3:acaf with SMTP id 98e67ed59e1d1-3568f525fd2mr1628237a91.32.1770877595003; Wed, 11 Feb 2026 22:26:35 -0800 (PST) X-Received: by 2002:a17:90a:d887:b0:356:72f3:acaf with SMTP id 98e67ed59e1d1-3568f525fd2mr1628229a91.32.1770877594670; Wed, 11 Feb 2026 22:26:34 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti , Zhao Liu Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 19/31] i386/sev: free existing launch update data and kernel hashes data on init Date: Thu, 12 Feb 2026 11:55:03 +0530 Message-ID: <20260212062522.99565-20-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877712975158500 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 05:51:24 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=1770877655; cv=none; d=zohomail.com; s=zohoarc; b=Q2sQ1w3j6yIkeKLZfJgcyvhmlc2tknzx78QS2ASOdMcQgZkznlaiNMaHf4AYD04wqpYpcHB/EhmQFTHRZeBiVstFP+6DHCORF4a75ziMmz0fFm9hUidQGhq5tRXXuVDaJWAY//Way6Jdvq10is1U2WdlnJUKfJZVudzpaUACu28= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877655; 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=JloxsEHl5LxpO1KnhSiC/lxy5Gf86OtvkYrcvGyLvZZCSQL6G9eesWdCTVYLHRCDDdtyYJ+frYO5pDgGP/i+eNc0aL74nwO+bbWDaW9zOeOURvYkF4+gWBnyNHxz34P9CcqqYYdeQXoXSnqX/irv2VsWgAbW3I+Yzm/dM4xqR+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 177087765528119.481133287739453; Wed, 11 Feb 2026 22:27:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQAU-0000NH-JC; Thu, 12 Feb 2026 01:27: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 1vqQ9z-0008DU-Hb for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26: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 1vqQ9x-0005It-Si for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:43 -0500 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-587-RE4yzThzP22hCJWd0OIN6A-1; Thu, 12 Feb 2026 01:26:39 -0500 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-354c0234c1fso5776983a91.2 for ; Wed, 11 Feb 2026 22:26:39 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877601; 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=OFmJmj9hmUauZnXAnQHzB+nespDjoXGcaEgGVerv1MMaylsD8J691H62w0aQTf6NSPskq2 xIfdCQVDffdmCQjaaQKuuNcKwJN6X+4DsPW2ASWYeaWBBkhydd+ZzwWDPZ+ubk0OhyE7WJ Je5UuVYdprtXzdTC4+qL9R5K/kdgVqg= X-MC-Unique: RE4yzThzP22hCJWd0OIN6A-1 X-Mimecast-MFC-AGG-ID: RE4yzThzP22hCJWd0OIN6A_1770877598 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877598; x=1771482398; 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=TlzzqbJjvV35uVM6+BMORRbTbHGMHwnK90lPpafG4HQYzaaho8oy0/J6GmMNPUjS0k +IDqIRJvglctPoZbCt/RQ4F5BKO5GgYMYATbDORuiSXpOO5eJe7M5allAEHjiRD6DHq5 VM5hDJv0HCzfXUQdcXDY293/IizbmefGxRJ1Ql1qYwxYBZnsSN7ztpB49ZfDPAnztZM8 47R2l+Pw+y5xvlIl6YsbIgEn37el3P2BzXpYWUi5miivBmBIUUrNFzKaqRk9pKUJP48u bqmHLFrvAG2VLz2RikSmX2Ep/+3WRi2TZkuREItUdv/+AuNjSGATbc/iiKsbG5a+7e7n HcaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877598; x=1771482398; 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=hOEdd+VV6EXdEpjdQAz5acMep7ipXVp8HlSLMwMm5R6mh9D7ngjbvQBFt3PHwI2zy9 FnpdJhrqJR1uehFG10HQq2Q6/uj3ifC1LGyyQpEmz+vCY2+jHKl3o/RpRq2VBVNHBXOe vvafvkSdZ3FJ5dkGOZmmya7lbs/yvhReC9CF73073pG+j1AFpV3aTem3rYcvF7x7s16H mRD2gjRq+OSQ8zxeviEu2/x8fNC9GsXOc0GXh5trElecz0KEn10MGohLlwkJKm9Cgbpo aQKaZE9pcr7jSOkHPBQfH5wJ19UjHe96PgsoEn+UykGSqG92ZqtzU+D4lSqnVUg7QWHC YXtg== X-Forwarded-Encrypted: i=1; AJvYcCW6LGnAbm6d037Y9YsJM86jd2w4uJGUxcg9y0O5qH+O8+04JMuvBtdQ007DWzJW9iKi6rMhcJnJrrXH@nongnu.org X-Gm-Message-State: AOJu0Yzq3yoX3kcNImgTkE72OZox/skWgDdqlfPuRzIIPFAelvvaI1c1 lDkmpSDn4F48hbQBJm0ElLdT4/j7IVpUxO7uCbNbR/pXDjf9CttWJY6D9/yolmE6CVnFtmFDGWW 8BiL7dPoyieJmcIQOzfodllvF8OYb53aar08+09JnJ9SF7eKT3lRA8e7T X-Gm-Gg: AZuq6aL8ayOj93ecjiyCkUeJo3L8nmfToSNnZaCVveC/3ffUes/NsRLtghqi4M+Od8b EQtDVRs8fMzkI7/pDBEiFM2KauvdWg7rAqvZH1C8Z0m5HXt6GozeOLm74Rm4yg6AilliPqlt++F E0uECgS0/WU+lJ0Jqn7Day3mjTXVyANtkFm9OwmzhLjI7/KM3llpO54aC6X/nN9O/wBuWIyc7Ls 0eABBhz1cPD2BPAHqlD+QpqcOKMgDx2Z+rZnr1hJbfMVa9Cw0qIX3kRH27A1w9eeT04xKjHNei8 1k1NI1fsfxUgvFiUMwo3f2CH6g/c2FlIKJK13b1gkLiI7a5rV9eHledW+7mAJHfT6rM8pui5vdC 6GG/1nOK2QmE5G96zp4+c5pCCVbfLnMwLSTLAVfC7Mdj3xXiLFdMNI7I= X-Received: by 2002:a17:90a:d78c:b0:34c:6124:3616 with SMTP id 98e67ed59e1d1-3568f41819amr1375487a91.27.1770877598305; Wed, 11 Feb 2026 22:26:38 -0800 (PST) X-Received: by 2002:a17:90a:d78c:b0:34c:6124:3616 with SMTP id 98e67ed59e1d1-3568f41819amr1375471a91.27.1770877597934; Wed, 11 Feb 2026 22:26:37 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti , Zhao Liu Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 20/31] i386/sev: add support for confidential guest reset Date: Thu, 12 Feb 2026 11:55:04 +0530 Message-ID: <20260212062522.99565-21-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877656817158500 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 05:51:24 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=1770877654; cv=none; d=zohomail.com; s=zohoarc; b=cbk4SBpjmY80DfG7leUPfYoXF3+HWWootNO3A2zI5mjw85f8bw7uzda0Hv2q9MP8CvCmr4XcXmrbM9jT+uX70FqCN0B1g+VJZ4fWK/qL9njW9u7fWrSAOvxnLGUcWStgc/MxRDsQOyZsK0fHdhahp3I4Rge+1AY2f1Mef5NJ3zk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877654; 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=XewWSAUDjfVoUcn+2YSpUOr5sv9iz8ihTRQjovE/jgc=; b=SCiEUpkw4yDCdyJh0OXTL4msbA0MaLuiiD3iBxGFcGTAXlqdLDHxNQl/9/NDJdSvYA1jy6ouqOXaX9wdZQIZk53dedKoQNzPXO+lslCo/VzVv9PIX4nG2KDf9OuQ5JIb7xWNP37PrrwzRYr0QJfqg42PbRiefgUzXm+E6eB9KuI= 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 1770877654767524.6708013463335; Wed, 11 Feb 2026 22:27:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQAi-0000SF-77; Thu, 12 Feb 2026 01:27: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 1vqQA2-0008JO-4M for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:47 -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 1vqQA0-0005JO-ER for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:45 -0500 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-422-eEG7hRiHNUGn7dTw7hTO5Q-1; Thu, 12 Feb 2026 01:26:42 -0500 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-354490889b6so13899830a91.3 for ; Wed, 11 Feb 2026 22:26:42 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877603; 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=XewWSAUDjfVoUcn+2YSpUOr5sv9iz8ihTRQjovE/jgc=; b=gelOIoP8s4CvnBnGv2sredYWWzwxi9uL26b1pQ3o8px/PgTLrlHdhdRGP6R9yXXiUqzuRC GFAju9D2/vX8hTNCiaMc+h9DmhD5INNPtk6qWCD6GWX8QBn2NIZ0iEBopkPr6GI/PUcelc PCXZNFRyJqMf7qT3ncef3WrqtNjrZ/w= X-MC-Unique: eEG7hRiHNUGn7dTw7hTO5Q-1 X-Mimecast-MFC-AGG-ID: eEG7hRiHNUGn7dTw7hTO5Q_1770877601 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877601; x=1771482401; 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=XewWSAUDjfVoUcn+2YSpUOr5sv9iz8ihTRQjovE/jgc=; b=orzKNXAYx4sEkN7nWhfFcjnf+z+OdAeRvMHGf/PbKr8jyET+FoMyaRDLRuqpSgnCp+ t8vC1TPqgDaIOkkI0EPZZ7C+VEbE5WqptVFLasmGYeu9FRx+/ukwx91/VtrEruwzKHLz O5Jfr4PUevGfuN9NBhhpf90MjT8QQdenDMAhyF+c8crcDMp9NoJ60BPX+acf4EVV9GsL Ox1WouuQ3u0Yr8U2RzLgUaEQ+U5Qvf8yLd9btjS2f/ylK7BXkuTranQzimu44UwRXvJC omnktd+iXRKlH/YOrHLkyKo02aZBUwJPDeo7U7XFyFLjxU+N08Z8pRWrKopo2QClSbjj Lwyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877601; x=1771482401; 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=XewWSAUDjfVoUcn+2YSpUOr5sv9iz8ihTRQjovE/jgc=; b=gPcLsQ3UzCvaG3UZlUk1RuAULF4QJcOj1ELLHCbDLOUaWGVU9VcFvRWGqk155i37s4 HWtgePOrzCzTxe3f47ngrzzsl3dJjumZE9e9qhzS4fx0ltmuvcm3VHA8TsrFO2XW6hR+ kKV/xqv+jG58Zrd+dveVOnNluDqSYZ2deQQHcW4nFqrghyiS4Y/w3A/x7oRGCP1sd/QY jSU2unOQSTpUKZ2ORKMkq3XlopB7K5HkfAVSUNTfA+gPzKjBh592AVOs4m/NHwssfFdZ hX/uYILIpELwu25Q47VDQkfUQpEgtCbdJ8VZSGFo1r1LeyYD4OaK0Bbrevk8KosHATNQ qZ5w== X-Forwarded-Encrypted: i=1; AJvYcCXYpfhK2Wsz/qFVh9S6xSoyMa/xrtKJmKRn7X4SE3a9EtLNaH3kowoU6QCAx/bt48BxjOdbo+gZK8lV@nongnu.org X-Gm-Message-State: AOJu0YydVt6DvtzP4EAIAvk8iaRYFBQPxfq/69nLauUIxYfB4a5uYf92 DZUsaQj3Jr8UPIpI0QsXAmRejkH9XO9h5DNR2nfOZehvuU+zGK4RE4kZkVCO7skyl2vuDJM3UH4 2Rh+BOfI7SN0FGe5yYKIUD4b03KsxZksOFM/4zqJFmmse1o4w8rQfEnAB X-Gm-Gg: AZuq6aKufV9MXJmnAGoVBDksInsFzLryKrqh3tURBPhR3NN2zPOaKqBKElR3NAxDKB4 Rmo5B9Rm6Am0y3Va6ALB5cmFd1tcPXW4O7B7ys6MGifHmI5mk+SIZfU2rUnVM5P3x4ExspE3y7u e4HoTd/20MJ5BBrWmtjYprsEjCZHuB7Xpim6J7RKtPBoisqZbtmr558cHR+DWyAObotGJdc0sYl SgHtMMaTkrLFDTrhKE3MOh9+fJirk87f1iWyrGO8wbI7eJxBkQxVx+EoxQbJSvzc83Ru/Kyno2x YB4h0QfB7I4clObeLUWyswcp+7SsEKvTyTxWS4BGynezchr1qNWf48Nr9DBGglCqpNmUsUVPFNa +udiUOrwuXeDXM862UnIKmTek/mwNs8uCHN/BHUViKdvm91tHi+gZoFI= X-Received: by 2002:a17:90b:33cc:b0:340:776d:f4ca with SMTP id 98e67ed59e1d1-3568f403e39mr1685792a91.26.1770877600994; Wed, 11 Feb 2026 22:26:40 -0800 (PST) X-Received: by 2002:a17:90b:33cc:b0:340:776d:f4ca with SMTP id 98e67ed59e1d1-3568f403e39mr1685780a91.26.1770877600641; Wed, 11 Feb 2026 22:26:40 -0800 (PST) From: Ani Sinha To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Cc: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v4 21/31] hw/vfio: generate new file fd for pseudo device and rebind existing descriptors Date: Thu, 12 Feb 2026 11:55:05 +0530 Message-ID: <20260212062522.99565-22-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877656797158500 Content-Type: text/plain; charset="utf-8" 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. This chnage is untested. Signed-off-by: Ani Sinha --- hw/vfio/helpers.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/hw/vfio/helpers.c b/hw/vfio/helpers.c index f68f8165d0..2ff189a53b 100644 --- a/hw/vfio/helpers.c +++ b/hw/vfio/helpers.c @@ -116,6 +116,91 @@ 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 that case, the old vfio kvm file descriptor is + * closed and a new descriptor is created agaist the new kvm vm file + * descriptor. + */ + +typedef struct KVMVfioFileFd { + int fd; + QLIST_ENTRY(KVMVfioFileFd) node; +} KVMVfioFileFd; + +static QLIST_HEAD(, KVMVfioFileFd) kvm_vfio_file_fds =3D + QLIST_HEAD_INITIALIZER(kvm_vfio_file_fds); + +static void insert_fd_to_list(int fd) +{ + KVMVfioFileFd *file_fd; + file_fd =3D g_malloc0(sizeof(*file_fd)); + file_fd->fd =3D fd; + QLIST_INSERT_HEAD(&kvm_vfio_file_fds, file_fd, node); + return; +} + +static void remove_fd_from_list(int fd) +{ + KVMVfioFileFd *file_fd, *next; + + QLIST_FOREACH_SAFE(file_fd, &kvm_vfio_file_fds, node, next) { + if (file_fd->fd =3D=3D fd) { + QLIST_REMOVE(file_fd, node); + g_free(file_fd); + break; + } + } + return; +} + +static int kvm_vfio_filefd_rebind(NotifierWithReturn *notifier, void *data, + Error **errp) +{ + KVMVfioFileFd *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, &kvm_vfio_file_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 kvm_vfio_vmfd_change_notifier =3D { + .notify =3D kvm_vfio_filefd_rebind, +}; + #endif =20 void vfio_kvm_device_close(void) @@ -153,6 +238,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(&kvm_vfio_vmfd_change_notifier); } =20 if (ioctl(vfio_kvm_device_fd, KVM_SET_DEVICE_ATTR, &attr)) { @@ -160,6 +250,8 @@ int vfio_kvm_device_add_fd(int fd, Error **errp) fd); return -errno; } + + insert_fd_to_list(fd); #endif return 0; } @@ -183,6 +275,8 @@ int vfio_kvm_device_del_fd(int fd, Error **errp) "Failed to remove fd %d from KVM VFIO device", fd= ); return -errno; } + + remove_fd_from_list(fd); #endif return 0; } --=20 2.42.0 From nobody Sun Apr 12 05:51:24 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=1770877784; cv=none; d=zohomail.com; s=zohoarc; b=b8xQhG0vYTe4FoOwFX3v+3+jv3MBgtsdzOu4yKmnnSNNBst5HbzMxrP9qSiIqUCEetA7bii4d9QX2P20oftL/j92iw4AmY2cHY3yJNQT8imqg8IY/VrwBkM+KS7miSw2nB/e9+vr72fDjfchD41qczKg477Nke56+lwcSA0b9yc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877784; 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=kRauxSh0Y15msy5aevdp7ULa8Nin5D66OCktFVyd7i7XKBYfNDY3DkOL+YGqEQszotASXUD6aCG33+/4oBxl50Xod8mOXJsuWzsb3WzXf852mr0/rTHa3Hxw5ChVmi8vInoaIFPI61alHAs06AuU6XV0Kpqzkt+b2WBxsozBigM= 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 1770877784876653.1368799572251; Wed, 11 Feb 2026 22:29:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQAl-0000aL-Ku; Thu, 12 Feb 2026 01:27: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 1vqQAJ-0000DF-3p for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27: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 1vqQAH-0005L2-Ge for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:02 -0500 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-41-Vk9jKtBYPpK3MpMctRupRQ-1; Thu, 12 Feb 2026 01:26:59 -0500 Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c6de2c762aaso7163339a12.3 for ; Wed, 11 Feb 2026 22:26:58 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:26:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877620; 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=E00qI7/xJTtascKmyzCFBaBkMvpssx986fI85uKZliYzrd0U6hYEKaONMHUvpAZxxq9f0k XSg5SVPCxFm0BBr7m1ZsIZM9sdxcLI++fVZlECNgwmx6Jq87QHd4OOLex60bNISu9sdqQd vhtZ3hEE1p3D7pl+ny77E3K3k3L1czw= X-MC-Unique: Vk9jKtBYPpK3MpMctRupRQ-1 X-Mimecast-MFC-AGG-ID: Vk9jKtBYPpK3MpMctRupRQ_1770877618 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877618; x=1771482418; 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=oFKxr40o7hbCh8RBA/iyGRHpymxTLoBJX/mSQWTG5NLY1NVeSexLTNmasjUxqNgn9v X0quYhi1Qu1e/C4M1AFCvAPhSpemrh5dzEgHmVbcNfTJBwhuduMEhMkuEP1RzfjoSggI UIRmrDcVbqBcqp3pg6OhR2FbVbjn2Vm7h9Ah66XEVqWAbPrXwXXIRdO1lvmKS1iKWJkt TAIus2QpIYU3lZXqRmpDh/s/58VtmXG686TpveDjzSoa5N6c7hpcHspKu9UVeKDIU71k negrqWqcAieHiIQgOQFn1rvxwA5TpR7ejzkAZmrayadJc30zaJj2yF3lMhsLSF7f0X5K 4DqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877618; x=1771482418; 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=RcXDsK7ra9MjlodJ/mjg5/4Eqz+TcLLMcYFqR/r7gKMVMr9fXqvGEeYD2QDKNKXkYO ZhRhCm0byqrvBQnXfMCJUf+NUjckLigMIJZdyBpBi1R95TEfbF6tUg4UD/z9ycmrw1DC gYpNBUsDmvIIqwwkl55l7szMBUhpztnxmhJMrHouufnEuy4mXsSIYjxXXMwijYfGTnsh aSMgbwbOLefenRk6M/AZI1MVfLQsu8R/qVgleUyAvcjRSfWyfzFUaVDfm5k6BZw6HIol Cu0/oV0ScKoD2pSht3CQ3rGyTtL6YkSK7/EyrNnxTJ1GMQMEGu4AgZE4teg1PTHHSUfQ PK5Q== X-Forwarded-Encrypted: i=1; AJvYcCUbwYZdVGD1R7uW621/1olPJEk4zWRYlulDmW3BCxIVdbHyaBkALES8XMxnpo0u5iYB2F4XjyPyzSv1@nongnu.org X-Gm-Message-State: AOJu0Yz72FgsDN1yxWVgiyJGCyeSohKW00Qp8JXsmNrlbtvTlQiEAvDB 0PQhqt1LAiP5p2BJdwl9h7EGLWloiSbsSVqMIfqHXnPB0iBXROii4bvDY23HHWOn7QORNUOA/bn 8d5ntOyk0+Q3l7KZ85lW4gJNXcLBQS4hVuNFIK4yAPZH+WYuzsjoNfHyn X-Gm-Gg: AZuq6aKKd+L0W6BlGGpvHKfbC9eBy1Z1I2NNxdSrbYbaWc3POfO6HMz/ucxQpIAvsXj wvWPMHFgZRZIA1wI7gieJXYZ/1wiOFlnty+ihXUnLAqyThIPFnL3vBued/mEwdz9p7snJLYSrES +UKsdZZeq/hyzu5mhiJ8WZymqcdQffbjN0wJz44PLvPn10gEO0HCbDqPvTxRbZsSO9kdqgP97jq zC3kMM2bZg1UDs1I93SgkXglPIbQ1dkxikZgTYSwnlW2ozhDVqIlsAPSUgmnmUwDAe8qD6Ek0O/ n+mqHOwKj2dnfqOG5D0h/YU67mPqg31mruptgAbLbI8fjR2X2KND+f4PWusikcgq5rV4C8pcS76 ClyJQjAlI8C2nIWUfwpKUPoo9NuvJFV5hNR0pg2CeKsxfaG5TPoelUG0= X-Received: by 2002:a05:6a21:9d83:b0:393:39a0:f1e5 with SMTP id adf61e73a8af0-39448833aecmr1749573637.48.1770877617872; Wed, 11 Feb 2026 22:26:57 -0800 (PST) X-Received: by 2002:a05:6a21:9d83:b0:393:39a0:f1e5 with SMTP id adf61e73a8af0-39448833aecmr1749052637.48.1770877604107; Wed, 11 Feb 2026 22:26:44 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Richard Henderson , Eduardo Habkost , "Michael S. Tsirkin" , Marcel Apfelbaum Cc: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v4 22/31] kvm/i8254: refactor pit initialization into a helper Date: Thu, 12 Feb 2026 11:55:06 +0530 Message-ID: <20260212062522.99565-23-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877787215154100 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 05:51:24 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=1770877762; cv=none; d=zohomail.com; s=zohoarc; b=GprBZLYVP8g9aMft5pcNecLBTgYM+rwSl/txafX6Fvy9bzk1/AhCA/j9Ynu9Wiel3kiuqKTwyUHltNB1/4N+QzGdAY6IV+VtVbKzVgmFnRQHaxrsrYih2h5kQf+XI0vKetPuQGISL/hVVzuCvqAb0NnBK886twzhezDVgpV7r44= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877762; 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=RRP8/h2Ma6Gwt92Ecu5GeJyDPjnUfxmUj+vqDF87ww/CyNCRLR8XwPlUSHq6x+PhzL7b7T9rUiorjZLk1Gwl9MOAW18n4qme2gB0JFIkD5Xa5bgewdoLDwnOSI5TBYIry0l6HWS6n2Q68nl1Gho4Sar/GmUoiu9sp7JW9mGHFlE= 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 1770877762234990.3013654829773; Wed, 11 Feb 2026 22:29:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQAn-0000mf-Cf; Thu, 12 Feb 2026 01:27:33 -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 1vqQAO-0000MY-2v for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:10 -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 1vqQAL-0005LN-Ny for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:06 -0500 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-213-ILAUJvMwMbyPwrNkhIcXXw-1; Thu, 12 Feb 2026 01:27:03 -0500 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-354c44bf176so5392447a91.0 for ; Wed, 11 Feb 2026 22:27:02 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.26.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:27:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877625; 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=PYRoZWIILrgd/uj7rccA88BxDOxVxCkvKtJszwoloU39sfDyhRgIxFPEXs9pTYARLMpkwX hCPkWGBNmuFsTcki73OVgUip+uJE7tGV3k75kmscJgfhVsqux1qnO0ZxmGFn1e+hBlbm+Y BNviXzx0YNc983skh7FQ7Vbw3kd1S3Y= X-MC-Unique: ILAUJvMwMbyPwrNkhIcXXw-1 X-Mimecast-MFC-AGG-ID: ILAUJvMwMbyPwrNkhIcXXw_1770877622 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877622; x=1771482422; 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=LZGp9E3ThHH9xKNWDWJywDfAloJ81pvaQ6l2hgMSqFI+J6RWB09LqRscj+JS/lxkZb JNIE4tCV5jircSFHunO5JSultrTQXfGDyfJGZFWTaoAdpvJYnhwKmEGtnb8nZ9p06Wc1 cUbdotA+Z6YYmRxU6KGHrAnjrxU+4JtUfLMhM20tqW0AQLumxrrqHDD5+KHtYtHV98nB dYuzToIoUeJbjjqSW0qT8ocrAWzKJqEjOqmQH+9hvaRLzekt3cUScVub0jGVpaalMabS m9p/68y4Jgm6Gzzif0vQC5p/d9mE7gtwVyNP4hCMjd83NlNlIeTwPoon5zI4eGkvYZms bPkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877622; x=1771482422; 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=rfThaAuTe6+iTQOLwvUw+N4EXHO89m6n22BSFvlJNu3/9IMw38Eb8bK/FDaIKKq4CO NK01fqSotKNvbp++3QICVWdWhSLtjHLtbVjpzdAMJ7dLTaSCs+pdj9rJeo5BDx1KKU+h hZTlw1894MbvUtQJB+Y6hZf7UIwB71PKhRL4oSsL974E/Y2YSv4xwBXzStq7XyV7HQ4P xWosD8H82i5CKQKgcgrEsXhV5PIBo48jV8SeeLiDWPWznBxepOCW8IBZsqXkYRMFRlYu Klnr9A43Ocex1xssaUDZ34ip6J+a5yoa7Pb0TNrxeYZVQMc4zvNQu46mtuML58LraPqj ypeQ== X-Forwarded-Encrypted: i=1; AJvYcCWT3yx2R2QQv4ttyWYqxYNIBqJgeV6HSPEtZqxTJy7AOHbJ4xtg9FqzeYnGq0+KABrFmQYxS2RLW7Xk@nongnu.org X-Gm-Message-State: AOJu0YyYVoXjBhUf7LQclfmguwIp10YcSebj5nlbaa/yQnzzLNVRiuss dizoBWbO22K9m13rVHwUk0JZqR3LQZZ2uldjkJJa8EqrigUX1RuLNLptsk46HBxPVv1wmGs+6/q eylFa43b6kkWXc7LkM0x1dH5C6qWM5+1euiwbpTEGgAPe5Jg1G90EZ+Yd X-Gm-Gg: AZuq6aK2ejmLwZluQAsd0X7Yzz1bBzdlGso8VjrW/ommO9IBCy0iQwQHICCbG2WscSM IynmehfrR2BS0JKcMPa8KPY8yMVvvTimpsykDPfIkuNEMe+WIqhlOfnQprX5y/M8MnlEnzBjCeJ TAitDXG8d7WT0EKmvjjZYd6AmLUwwoM7FU/x8tHB1J3wUPKI85HZTn197ey3l/EkQx1i63+kuxm +jSJQ0TpqpSgebFztt9GQr5LmeeQ0hyUtL+Hq1G3KbiA0Gv9TnYi+rVZNwUH216qRQ1AcYYtD9Y hiEypJRSTyVn30JjVbJ9+tM6Fb9cnC/Wbcq3h+aggKmtj2MmHHQg4CT3LXIiiJxQHfSjolEIttk 6ZQD8v7W4nc/FHNP3ZX9zIp9YDgleisHC80CzBvoX7rbO/eWCux0vF7A= X-Received: by 2002:a17:90b:3141:b0:354:ad98:7d1c with SMTP id 98e67ed59e1d1-3568f31c280mr1956670a91.11.1770877621949; Wed, 11 Feb 2026 22:27:01 -0800 (PST) X-Received: by 2002:a17:90b:3141:b0:354:ad98:7d1c with SMTP id 98e67ed59e1d1-3568f31c280mr1956650a91.11.1770877621506; Wed, 11 Feb 2026 22:27:01 -0800 (PST) From: Ani Sinha To: "Michael S. Tsirkin" , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Cc: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v4 23/31] kvm/i8254: add support for confidential guest reset Date: Thu, 12 Feb 2026 11:55:07 +0530 Message-ID: <20260212062522.99565-24-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877764892154100 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 05:51:24 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=1770877683; cv=none; d=zohomail.com; s=zohoarc; b=EEUxRd75B8yDfB53kYPZkql+qjAFGKAPZbr2Chg7SFrEyuepI0FFpds99D1EsvWNbxwU88i0bIcGJ4Dg94ywfP5FRr6iwDCN4Xd+5szJyXlT3Hxe/87Gi8Rbmr1uvXyT+XDQQr2g0uUNAirWgVj9C+sPtvKo8x2yPyEGcIx+OVI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877683; 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=qFtSZXlJPHuHUflcek1m2W3gH++5/UpYdLyjc7W8PbM=; b=U+nyqlk67ojr4Ha90LcGU9H8B2k37rGNI0Z1fKNVdTo27qK/8vc4KL4sSdPCCuXnE26FGdWmSE/k0+7jLvTYagm6+dx1xyL1qKNUhdg6M4JG3uJt25Ujqntn8QAslqRLZICvxPvz57vV9ZHyEri1J30eT2p9syue1iAJK8BmtdM= 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 177087768338095.59157705059533; Wed, 11 Feb 2026 22:28:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQB9-0001Xo-K7; Thu, 12 Feb 2026 01:27:59 -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 1vqQAQ-0000Nh-03 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:12 -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 1vqQAN-0005LW-SF for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:09 -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-607-hsPXWwPqNP-mC77n9XSUig-1; Thu, 12 Feb 2026 01:27:05 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2aad5fc5b2fso29418025ad.1 for ; Wed, 11 Feb 2026 22:27:05 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.27.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:27:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877627; 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=qFtSZXlJPHuHUflcek1m2W3gH++5/UpYdLyjc7W8PbM=; b=hTit2pnKVT/HDYRSd6InyKEW8a5/z70XAVmhe/jWDNVq/hREJyCVwhWD2PwDWj9Y+FXhcj zppA+hAcE56PEJ3/GiN2mqh46mM5E/F8lNvp1yS7gpRk/kaJc/KyvW3wAHs0j8qHTzhYU1 87UiL54UfGEFmrWbv22v++96UsZkRL4= X-MC-Unique: hsPXWwPqNP-mC77n9XSUig-1 X-Mimecast-MFC-AGG-ID: hsPXWwPqNP-mC77n9XSUig_1770877625 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877625; x=1771482425; 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=qFtSZXlJPHuHUflcek1m2W3gH++5/UpYdLyjc7W8PbM=; b=FC7wAprqoIXXFjnn5b/w7lARgSFxNaqjZoNgZItRpjIHhigBQKzuIVoGWBYtC0ws0Z tH/oCI/i5CPxpNjuWhRb3Vh+3iqG/er4tlKHxDSa/+JojQ+4RIy51Qm0BlV1m7PloWsh MoAeIU/1WRJlJ/MGEDJXhira8qJvCcktVzW3z9PL/Kz0aQ1CniI9cLfBCBPAqRzkEObU v8xDJhM0XE6j0nuqkz721n3wVQTv5ghnrZ9FVl/83tbDRdhrCmqCIYR9DlGEWpgj18cP MalDZVLLX3NRaH69lzrC1ekcsuoC6/J4ztNJiRkfC7irponUYa/aeh7pwzF+wPaSB0xb JAGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877625; x=1771482425; 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=qFtSZXlJPHuHUflcek1m2W3gH++5/UpYdLyjc7W8PbM=; b=vLSOlYv2zbOkw21+7kW9QsZ8LV8FHdzozGbQ1WKprWz8W1i5SkuzIy8i6gc+nF4DkV jPoK2kfLU/YPQ0ybhiMqeab0aWC9RIp5mqo2LI7oiZHZ0OZd40tBiMkyp/zdto0rIpnI 08TnNAJo4sjJNXYyMD70qCXF30SR3jFEz1S1GiMNzuI7r2m5lU/wwiefOY3rIJ9E2DDU onF9AgwoZLCYUb3tqvdtXWZ8DrPF8s5PQalvg80lkAymnu/4DaeUQHf9uTUzMFou35PL l4ubHkO4g84Wkr/4HWlpnsjH+SxiaVkfaBdr1czqusrCttNb/5P2+q3Q4Il2oC5sRMGZ dtVw== X-Forwarded-Encrypted: i=1; AJvYcCWGZlpPo5+J+KZMXoFWTz/Et8HgmkH8z7LXp/ZXK3aQHPfY/3BNbeMtUbzXpPHN64CljLR3iR2OXWLr@nongnu.org X-Gm-Message-State: AOJu0YwlMmE4blckjD8lnrRCIp/3vZXS+8uvdNb4qI2TZ4KVnDHT6DlQ gN+JRuRdsmUMV3PGw12CpVDpfRBHjWJaaFxljxLa5Vq2XgS1UEdXKcbQQ7M5rhf9oo3ml5i6tSv /1MFqsj9KYu4yh+64Of30LcfFd5I1P8ntaT7PEDsZDgkatL9Qb0ULFXjo X-Gm-Gg: AZuq6aI0SIuMZcbr8ESOvZAM1QgBaCni3e/h8K4s4vU7Zp+mODr/l3M5kCVh3F2heij La1lCvF3NlSWDJBaiK/cq0ZmD2qs1CQsbGyYMf4tpAtwbnOcxRGuvmlDXLUHQvI2c5iJDdRWGIw 3pjsWsnw/gzw6SNBWRKsTLpYXCQ15bBLHSYADcB13umSxRY+gozrB2XOWQz36/6Vzfq0E7Gvk7G F/EQqUU7u+c7MRiqgaSbYlK1GD6eSr0CFoj8H4qepUqhTi6XH5JwJL+ngyVDPyzUekkPWBOmbv1 0hyibuToLPhf4DinRPoRJJlG/t4aM2V8vFIAKTT1kA9mEr5xPUT7Z8pNxJUu6lfP4qPPHbM4naA Z7QpzSvMe314Bou7mKioEVWE8mLEZ0WtRwb/9K/hQlNYyxvwyjpulWmc= X-Received: by 2002:a05:6a20:cf83:b0:38b:e750:bc27 with SMTP id adf61e73a8af0-3944cfb92abmr1329201637.58.1770877624791; Wed, 11 Feb 2026 22:27:04 -0800 (PST) X-Received: by 2002:a05:6a20:cf83:b0:38b:e750:bc27 with SMTP id adf61e73a8af0-3944cfb92abmr1329185637.58.1770877624461; Wed, 11 Feb 2026 22:27:04 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 24/31] kvm/hyperv: add synic feature to CPU only if its not enabled Date: Thu, 12 Feb 2026 11:55:08 +0530 Message-ID: <20260212062522.99565-25-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877685757154100 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 eec2f27a0f..a6b773db34 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -1752,7 +1752,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 05:51:24 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=1770877764; cv=none; d=zohomail.com; s=zohoarc; b=IDFPR3Xll5OfmqOp5Jwe9bFSAr9pQudBXo6KZvVrSlymAaFtmAklHwF0QWrtQTbbWmO5WVSAC+9Qg6JgSmqz1+Vma7zdQcUW1b46jfa+YTDixZ2tdRpHHiPwuigXLGKNKlr1fdDTByZhF93AObZBMgIaCfjtiYErARGFZwrYwXY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877764; 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=iJyQIZvDv3QJzeQh63bSO8JdIoGzLvu6XgxIth/VxMD01Tbz8zzjKSM7SKizuv87+m4K+Mi8GD7wztTS72EeftWzS7Oh207GJ5EKgbhZbhgUzcOSQQDC75J36uM9Ut5nVUjMxrmJ6YJlQ6Aq4PzAMxcbcVNQIaQ6v5+SLrLM6fA= 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 1770877764767431.6641730622416; Wed, 11 Feb 2026 22:29:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQB7-0001HC-Kh; Thu, 12 Feb 2026 01:27: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 1vqQAR-0000OT-SJ for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:13 -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 1vqQAQ-0005Lp-D6 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:11 -0500 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-683-MsHdjDvwPmmjZQ3aov2p7g-1; Thu, 12 Feb 2026 01:27:08 -0500 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-353c9d644b0so4403478a91.2 for ; Wed, 11 Feb 2026 22:27:08 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.27.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:27:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877629; 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=il9O366HAuYlFZmYZU9E1XtqfVAeNSXG9QY9MJ3WNResd6uQW2yfqJF6rfhTAINNRScGe9 Q6WJYXpOlcKSd7+1M8wkZRp5Z+vgmsPFPEo411x48irhD1vDQ9Ed2GWbnzI0QLAQpKFeVy yxDCcbu6kUcTErwn1/qDXr1QTkpZjhs= X-MC-Unique: MsHdjDvwPmmjZQ3aov2p7g-1 X-Mimecast-MFC-AGG-ID: MsHdjDvwPmmjZQ3aov2p7g_1770877627 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877627; x=1771482427; 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=QqM8fhiDpp/x2o5VPFtypq3indXGb/S34C4fjYUDwhppN5Bqu4OEu7LORjoWe8ZaZ4 5CtRfIfwNuqoLpryiSNK7KRY8jRrNGLOl19rCiap0E0rogh8GYTzgMBlMXtmEE1zlXq3 /E7yhdXmSobPghAUuu5nZ7xRiReYO5yAJADuKPTTFgta2HC8AxEp1+L9RfJhrj18rMK4 gLY/304ZMipVGtf3gpdOgiJBYISQvOouL3gLMW4MlWaKF8LNM3GmkOqTow6F96RkhPNm wjDcqOf+cas4FrsKcOf+MuJ2AbT7xNkMV4JccRWcedHTgmxURG3IDJOkixOx6J1/y+01 +Z2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877627; x=1771482427; 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=l+bpxENoWDUlPQug4bSDDCYAIChpu/r/OKzrcyuMiCUT/i8t68UGcXwSnAHjWhurco L834y7haztt+l3RfFchFjP1w461hUfJaJVWrWpdxXSpBp/Ui5gzOosIqgph1qBHevgXm f8jZ4VpJHSIWcbOUS+Y8K5ZHgXJMZWidYv4GoxwBwQdAAR6zrh7y0mB3M7KiaXogeZEm k2bGyL08FJGjyLbYR+RGBGPfhAZGb8KwbYYYHdoU+CzimyfeUCN6bx1ufGlEELIE24ht 7yyGIQQEvpFDN0VLUKry8bkh1PaBBCEsiByxoxZfXY7Zi+O9xPBm7gtW3D/niPchmxxc V+4w== X-Forwarded-Encrypted: i=1; AJvYcCVG/gaulgM2byBndEplMDBm7wQbWkJp50T7plipW6iaZpXwRckD7OAUstX6Xc4JtMZ9BCeiu6zzdSVm@nongnu.org X-Gm-Message-State: AOJu0YwEfRtl3y65WcWE+x4TaGCXbbh9e9hdktjDIE8rjN5PCIGArSIm 9Wshr3WC8ljTV0hpe70XOIYOLVPZZU8OxCNA5MJCDK+maDNH5xX4jouw+uQylW58otUGoq515xj XjxNy2GtFGWr160ofczZe+H5oZGUwhFvbQu+wFk1+WWtZdGugrOhXfewf X-Gm-Gg: AZuq6aLmWjmt2+VqxXXBIrv90Zil2zqi78vWVpp5ZIG/hXvZCahjE99INyYj5sdeXsD BVG7IIglAMopdHGKQ6quIDiDwRNsKpA7xgqYWQ0YFX8lYZVOQqiFkcRveU46ZCip1L2swsJURFI zdw29cutAwq7lHdE/02MvvhZCS6UqfzMSXwIx7PxokKFcOzyZ37A60XJ+wLAOC4DxehY+VaMPOw d6A+3EUzVvJIEkTrwqVGLOUk/oYshBvaQ739imFhVUa0uODo4fMVjkUfGQtW2b4z9GhWz/hBWQn Ds9kxlbbVXhL/DXsX9ubtKcoUc1tGx7itoZhB+p5KZB9wT7NE6U29xh7xx+AgzsAl4g8wsWlmQv qolwGOit2eWcdWt6y/laigSjXfWRsLhQ4ZREe1qtGPJnDSIV3SGTMNRw= X-Received: by 2002:a17:90b:1b0a:b0:343:e2ba:e8be with SMTP id 98e67ed59e1d1-3568f307a58mr1581638a91.10.1770877627321; Wed, 11 Feb 2026 22:27:07 -0800 (PST) X-Received: by 2002:a17:90b:1b0a:b0:343:e2ba:e8be with SMTP id 98e67ed59e1d1-3568f307a58mr1581626a91.10.1770877626939; Wed, 11 Feb 2026 22:27:06 -0800 (PST) From: Ani Sinha To: "Maciej S. Szmigiero" Cc: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v4 25/31] hw/hyperv/vmbus: add support for confidential guest reset Date: Thu, 12 Feb 2026 11:55:09 +0530 Message-ID: <20260212062522.99565-26-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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: 1770877767045158500 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 --- 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 05:51:24 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=1770877790; cv=none; d=zohomail.com; s=zohoarc; b=YKYQG2+fitoF+z1gQ40jV8wQn2Ez6lZEW6NrhtsSZlikQwcX6cez4kKnjQc7fxyw/5RlzenProOr4x9d0d8wkbSx1KmWDw8e/Rf4EEN61lzxBiEoWcHnITAhpncXeFHI5892KTceagoL0hP9so6+RWIO8NPhBNcepoqkuPa5AAg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877790; 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=mHlb76AJifQ4VYiZmy5TcslkfciZxV765pLgaTwdDGitq9SHTpb+8ywn5Lhv1SBBzgyQZV2RVyISN4C8n6AT0WjDz3gAKg4G/DN26XQ3OTJ45PoUeHM0DkuY3egahLNP2Rz8pSeZHeV9kLG/+bRhRzbo0wkUbAvqXgrjUmmRrS0= 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 1770877790463583.5985232857577; Wed, 11 Feb 2026 22:29:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQAr-0000yq-CW; Thu, 12 Feb 2026 01:27:37 -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 1vqQAW-0000Ri-PO for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:23 -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 1vqQAT-0005M9-Pw for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:15 -0500 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-592-rzUMDyRrMGOsw0DY62gVgA-1; Thu, 12 Feb 2026 01:27:11 -0500 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3545dbb7ee6so2365795a91.3 for ; Wed, 11 Feb 2026 22:27:11 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.27.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:27:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877633; 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=Gsl7rIn9f/mGs/sB6kSZmpZo6b/EMvb1K/nunuUXPu99NZmsLBJEaCfiCgZRrTHD1TxdBE axNpfY0/8Byzo+CN7kUZmxN2MNCH134k+ssPJOPtisHzcaNQ/8FAyu3O2+YbdtCibJZ0ek y8bA0BzcQvMyihPEDN0tntVqy/LbuVQ= X-MC-Unique: rzUMDyRrMGOsw0DY62gVgA-1 X-Mimecast-MFC-AGG-ID: rzUMDyRrMGOsw0DY62gVgA_1770877631 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877631; x=1771482431; 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=KUuCa0Cg8xI6dXjPJNqzRJ+wDHfQdl+/sq/xImyvydXkD7dOwfDVRmGoULzK4LIk7e Rd2GQ7V+KP8IjOWE1PQfdmha+xXKbb1OXlF7Egn05XxkOpxRh5gAau1tIcoVoz3kTw2+ qFVReuu9bDmaYVXW9wMZeiVkqFgA3nzk6Yq+CQO4iE42VdTzA7s8lQH9rqXtKq97Lppd VIwRYgmn2qJ2icdlfethGMNCmYNN1WJSJD1cvsQG1eHOCrZhw/yFpTzFHQEsyMtUR4sm QHTVYRXPhJlS25be3bQxSbRYl6WRyfTJRTgzmRD5JkBIgViwFZRaxE6Vk+qtKdDrM+H/ 2FEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877631; x=1771482431; 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=fdj4KYXIP1TKSQ8xOBIyBod9KRh5VxrIlovSTfYasQVTXBOglnRIFWyIie/SH9Vwui +qPOe3seKLxLcKGxYmyT0k4eYAzJiMWivFjQebDNakYS37ReIy49dhTjgR08KyLKwmfm hFNKGIDWVSI0cBsFAhksocFjFkv6txT5xu6APIZt/mpj+1xmh5Ijm/G3BHCQW7KxskUV jhoFBAUhI3gWt/vEBuOEw9SbGjELZGejrNrpRbedJATUU1t1IYmUL/GILeuTuSuO35Ko JYfVnyaCOm0RYcKQTqeFdMOxO2iJe2dMld392DKbPO7oIJV2X9vxeQavo/uR6Hb4RPP4 4Viw== X-Forwarded-Encrypted: i=1; AJvYcCVnugi2Fk468IihsGCCRnXJreLaAlozyUb1+kbQgcNK/9IvmtlOQfOOblQ3aKPtOckTQlNdvOg7MPr1@nongnu.org X-Gm-Message-State: AOJu0YzIPgZrWY/3u/bNu6qXe4WZPrQA4EPJHWDfcQHZxeHS21KqCs+Z RsEGwnPQmYyZ+PV761PpSdkXEMZbgjGaHjF9OKvnjX+RNEvO/xwYpyuVh0DKs033eMAyYgfqlkA l/vFdrYS4OI88HzW9QqpiyKEUbbUp1eD/WZgrb/QN9B0/Qm35mPQoCmf5 X-Gm-Gg: AZuq6aI9XRMFQ8ukKdi7Vy25BkqcQ+ZfqqKSrzK30y/uk28qWRLAJPROD9AjljqlW69 6u3iQhC9+3UIeo1iqiuULAY9jwF8+TFd7rL/XPB3lWEhX6DcPI8LGz2lWSW3mkUglKtIl+j+r4b /8g2Kz1B5WuUaJEhog1FRYES4X5UgFZAWyxXD4sMXb6Gz1yBjt4HB48HxmrOn+2yQsli9k3QRAx GLk+8R3gLlHu/CQCqNTPYAq5d5m52OQcVhoarLK/Sf/Q4beP/qPIqzyj4k1GWdlPskgjSZ8v8/d HAsW/BgiPjOpGDFkp3A7mPcNcE+iWmv1aNOMMozKmJVeS7ay59ydYU1VhqmxDUA2waCJ9IaZ3T1 1HWp76j3PHZsW2FOpCUJklY/sZbG3atVHtd7a/ZZJaaiqYtN0PSFbKiM= X-Received: by 2002:a17:90a:d2ce:b0:341:2150:4856 with SMTP id 98e67ed59e1d1-35693d5e966mr1153069a91.17.1770877630752; Wed, 11 Feb 2026 22:27:10 -0800 (PST) X-Received: by 2002:a17:90a:d2ce:b0:341:2150:4856 with SMTP id 98e67ed59e1d1-35693d5e966mr1153054a91.17.1770877630409; Wed, 11 Feb 2026 22:27:10 -0800 (PST) From: Ani Sinha To: David Woodhouse , Paul Durrant , Paolo Bonzini , Marcelo Tosatti Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 26/31] kvm/xen-emu: re-initialize capabilities during confidential guest reset Date: Thu, 12 Feb 2026 11:55:10 +0530 Message-ID: <20260212062522.99565-27-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877793336154100 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 05:51:24 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=1770877759; cv=none; d=zohomail.com; s=zohoarc; b=e33gNnnYHfoJJ6iRX6b5G2zYFxSmKNSBMaypt4Om+Rl3wihDVUhck0VW77APOA0r205/YaYEWBXeMVAqL1RuYpFiTmmvrQSH/mg9oq8lQEo+ahQmbnRVfqTg7Rnj8sT289g338abBp/cKPYiQjN8hmavJQVwHbYIRtyQdc7LpzQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877759; 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=W4OhaDkRGx2q64KRFXddf8CNhMC651BGkLS7ObgBBRt1C416K3YZfkBYPxGY82jG6B7E7CxUSJ2HsCAJsssh3HKJ9CA9F5QUp7KbFH1yOPFingbS1JrcjQ/Z+5N8iEoRWg5H9kWw7OekH+JNjlVrZIOKGFWXeUKhG9496PnDS2c= 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 1770877759520216.8792004264143; Wed, 11 Feb 2026 22:29:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQAp-0000wo-T0; Thu, 12 Feb 2026 01:27:37 -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 1vqQAb-0000Sg-9W for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:27 -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 1vqQAX-0005MJ-0h for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:18 -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-594-bJRNQtlPOy6jLNPszDNqMw-1; Thu, 12 Feb 2026 01:27:14 -0500 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2a863be8508so78266305ad.2 for ; Wed, 11 Feb 2026 22:27:14 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.27.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:27:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877636; 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=b/ARzrE7l+46ak0fmlFtevNCNnlnXFrUGmL/vJKg3U+i7nqm4EhaSjxvQgD0s2pKkmlpsG CNpAyj9uvTMoJRkgcHOhKChzRy6JlFE6hqCT4lG82ubAO3uvsPiQEh45k7LylTYr6wHm1O aO6ap2v5GxrpvITK8VteyaDU1RU6L0U= X-MC-Unique: bJRNQtlPOy6jLNPszDNqMw-1 X-Mimecast-MFC-AGG-ID: bJRNQtlPOy6jLNPszDNqMw_1770877634 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877633; x=1771482433; 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=LuPjpmT67Hv8r/EBhzfQEa1EVsuIBvXSDSUqU4r6GosgYTVMxiIkhVsx+Z5GMzjD+z TUrdytJWiQ5QZCmHZJH34jzXX3wmPJs9We07SZE9F64E35Zc07nkYDBGI5Si0+Amw3j5 E5pLVYcQ7mRaIy8MwZ3kfx/BvX0iyGRUsUXuLTDfPGACvyaT+d8Mgv41l0K8KsiQcFFG q5+K5Mm0aIGN2vFwV3U4BzZRlAq6jCNJvXqyzIQRcMXOHjVoYhbNQaQJ7v6vAeBxeBJW 7ALy6aJVpEiYiZyQrpocBcWB1LV4kPkyrd71qwqxE/tuCZJWaymC9Oi2sL7SYjNBX8P7 yTxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877633; x=1771482433; 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=TmkyOGDIMELGkVaVmrU3JtRtPpqqvWJDY/Y9YzFpWoeSHPMMFsHRgUWQG1Gu582n8B O22tuzfysLkqlq95f51tspIw4usgxc31Vp+PF0vsvHlyshzfCgVHP2u0n2qHTOzzP4oz Qr/zPsXj4pVIlLaTtiAlj9XPLSqwOdRZ+xdP85dP0MjEn1QZGHv+7TjtahzpHDb2IcIp 5zuSffe/wki3qoBT3UK+j+8vifgHXT5qu7fYINoAyN6SPaYMGVtwPbbAZIUk/D1fBmv2 OJeIhrHfcrZ/eUf5sTW+dxljBQ8PWXod5+FahBfSlR07F38v7vy2/l+Z1QqKiZooaPzv MelA== X-Forwarded-Encrypted: i=1; AJvYcCVBDn799CCYmzEIJxwQRFiqVtZxARrNodi/M67tUUgubp1+DqijCnAInif9Nh9pF5R2xso9amr7OAo4@nongnu.org X-Gm-Message-State: AOJu0YyHROF/uIaAiY7wAsnzKbs+8GRrWc1NOsjigQ6sX/ALr1Q94hZl KJ/U8aUIELVOBPmnADy7nDAL8kRJow2ck05wVV6w3AQBDD55bKmyjp10VcMzQsCSJKng+PpAUm8 n9m+AZORXhx/QokYl4NDyQAIL0mWrOvnXHMypgIfCoqI6WsgyaxAivm5L X-Gm-Gg: AZuq6aKl5T+JqnRbIZp2t1kokPoC4V/fh/B42ozcXPAf5jFhNUzZX8UJsByrwN1zwOO 5X4pj3bHQFz5+CduJmVXC7hri0ZDRZcMmVKBMBXkr/pqxcgSdnisz5MgJFW0YDf3kod+o7f8Spm esexZlAc7K9POQDY1xqzs+CZMqg1+oojCkD6NRjK28N6/xV7/fMOStxJIKPYUyFgflc9DlTB/GJ Ob27Yn1zzAIYmKx1LG79RvCINTeaRabg4jpH70t6UIbbGr/fllgXnlNdlJOjyVMVjFJC0Io2PXW RkYWaaFswYcD1O/4znRJ9bOzKdmYxiqsp1+qX7tfZPBWzs1MzuWFVXd12r+bWXDXVPAjCCcj0BM l0b0UOL5JwpSXNp8M9KY9NPZtMkZ7lMkWhoXIVi5Sf0oh/RvYjMjtSMM= X-Received: by 2002:a05:6a20:a103:b0:38f:df47:87b2 with SMTP id adf61e73a8af0-3944883cb87mr1895470637.53.1770877633583; Wed, 11 Feb 2026 22:27:13 -0800 (PST) X-Received: by 2002:a05:6a20:a103:b0:38f:df47:87b2 with SMTP id adf61e73a8af0-3944883cb87mr1895445637.53.1770877633122; Wed, 11 Feb 2026 22:27:13 -0800 (PST) From: Ani Sinha To: Bernhard Beschow Cc: kraxel@redhat.com, Ani Sinha , qemu-ppc@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v4 27/31] ppc/openpic: create a new openpic device and reattach mem region on coco reset Date: Thu, 12 Feb 2026 11:55:11 +0530 Message-ID: <20260212062522.99565-28-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877760874154100 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 05:51:24 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=1770877707; cv=none; d=zohomail.com; s=zohoarc; b=HUsWSOqDbkTM6aZ7vN6EoMvXz+tDjPt2tuuevIzx8jcVclr/ENXzo0N1eIZMb2xIW9qRwiJBnT3d5iwkoDVXEE9Ol08fApzdEaZTsnTSOkn4l0xlFkpOSl73wezQq8Ofps7Md1eHieWHfKEtRnz0ETbB5t93uXv2D94Weglyk+E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877707; 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=5baHEmSS1KnRdwjNGuB0g+ltPY1ZMuCXtAxZqqNbqAo=; b=Ji7RSv9vQ5cB4rwhbSBTtFtXZeVw6UYP33mMtOdxROHjeODsCCoC7NjbkFTS3CDwth0XA1V6DQXUIzkXk5z4cePZJJJfF9glq5HLj0kPCObL2yQPzr9xbexOLnCUAea+DhhdLQ46nD3n1sP+LNxbZTVOmFW60tryEOEkFLxoJ80= 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 1770877707564816.9627276722631; Wed, 11 Feb 2026 22:28:27 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQBJ-0001r7-24; Thu, 12 Feb 2026 01:28:05 -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 1vqQAc-0000Vj-U1 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:27 -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 1vqQAb-0005Mh-1f for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:22 -0500 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-502-nqrUuCPFO6apyK9dRyhlOg-1; Thu, 12 Feb 2026 01:27:17 -0500 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-35641c14663so4472444a91.2 for ; Wed, 11 Feb 2026 22:27:17 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.27.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:27:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877639; 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=5baHEmSS1KnRdwjNGuB0g+ltPY1ZMuCXtAxZqqNbqAo=; b=SCMLHjoydYn2nwVOVf4GkGvViFSQGdzd8rBuy1ikINfFZBJihuK5aZEOTTSVABU8bejW2F oDeTNHrSqeNi55KF6InZ6Z6StZsad5OjHwlvTB8zYUGxw5EVuIcLVllcZs+QaR1KInHfrT 7Qn36A4hJLIJR+LWeNsoj39ajxQqYbg= X-MC-Unique: nqrUuCPFO6apyK9dRyhlOg-1 X-Mimecast-MFC-AGG-ID: nqrUuCPFO6apyK9dRyhlOg_1770877636 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877636; x=1771482436; 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=5baHEmSS1KnRdwjNGuB0g+ltPY1ZMuCXtAxZqqNbqAo=; b=Pep0k52vQzvCJS5n54U+Z3ru/hMXFeT6hxMedsUKc+11j0IHusoWYwzkl2UuiGZBAK wZimpkShRGo4b15U1hXHWQeWhvClUx80Yd6HsRl/8K/d5wXzS6+iPFx3/WjzwcIof1bJ 2NHpFAbMla9pdQf7zNwqSHsa7KOSGZ2pAvLuBmd1fq9lSFThuJ80Oc2QWjzKu/UWi27T bxQi9xhzAb0an6+EesQxedVoh3f/Tr4lZMezP2UiuPm1/mVnR59xVmz0yUqahz5nWR2C /x79/qh0JOdqQFBlCwrLzqKywfYULvyC6EmfRSGLi6tPGsrtf+hoccI+AO0BlAl188jA 5FpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877636; x=1771482436; 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=5baHEmSS1KnRdwjNGuB0g+ltPY1ZMuCXtAxZqqNbqAo=; b=vqz1kbFjwHjQ8W6aNxyDpw/R8urYuZpNpvOFNFrJyIEDFy12/Eul6nCUBRn2pti9T0 YN0c3Hm96aK3AYnUWyIG2g2hqeXaLi0MTFvuYnJD41caAwRvXSk/Nw6iHwWSl5kb5rJD 7m3PnH1LGjxLIKusWtwar3d2oAEaoPEbWIylQ+DoPp88Vr9pNvXwkX+5JuUQYLNPGYUy 0UiPTM3BRH6AMSPh2rE0nlppoQNuucMI6O6J3r/wph6gPO12OBg5OZTpem4BDQ+VRhuk 1nRVsRX3eYUAvZxHBDrafqouvCwtuuG6JHhTRAG03RmHwMAoMaLRtBxdUdwAajub1H/x Mcbg== X-Forwarded-Encrypted: i=1; AJvYcCVHmthH4fEfFsUu8zRx8M3JTt168A5mk0A8K6UhsLf+znM4yAyCNLQPDToXQtMa5L175uguE+Ves6yw@nongnu.org X-Gm-Message-State: AOJu0Yxe4NDY216T6Qikr8WIGslpBxF5cykDOO/UuSiCDkr1xGnmA2fq +oh1rpAtZZyVenUPbRfX4Mh+cC1ZYUOUe01cJA3GOUk0vBmDKOW7gOImOFcBSOAwusb24hqMPGi YenlS52zfGeZGGtbNIPibw0xXK9N0vCEiiHLoHTbnuLnFRP2LBunsEiKe X-Gm-Gg: AZuq6aLiJ++7XmufZcOnXMFtKA74NEfVi96l4s/paRin4m89YRiMydnjiXkOVgcqB0Z 2yvCwlaJFYonMiIi9c3YPNXfY8hZrDdXaH+uQia3C4KZoDb6/V6tG7QcOE9gnNdEB6thsRp6Ss7 /j7S3Q5RFf7jQLoaf0YJ7BUwd3CJ5V299Tm0h2YDMxkmm/NkNhCeKvuUJpXC+e1AyxEM3qXJIkF A/yiyfM8fDaqXlM09AymhIj26g3aROLBntXqJ4nwseyQLDIWTexyn9Gpg6jgUOKiGC/3aEgFbhG eHK9NQ/DCHETEQOTV6lasXagoEBhV9NXCVH812WJBGckm1dL00NPiyxuzVQQ2DlNqhkdgwOlqyK SCV0z/uprJG60HGHS7g5Ih3Z8Lok+0fttfsspLsqwFgIcU94lHNaZaVs= X-Received: by 2002:a17:90b:3851:b0:34a:e9b:26b1 with SMTP id 98e67ed59e1d1-3568f40232dmr1584981a91.26.1770877636223; Wed, 11 Feb 2026 22:27:16 -0800 (PST) X-Received: by 2002:a17:90b:3851:b0:34a:e9b:26b1 with SMTP id 98e67ed59e1d1-3568f40232dmr1584965a91.26.1770877635918; Wed, 11 Feb 2026 22:27:15 -0800 (PST) From: Ani Sinha To: Paolo Bonzini Cc: kraxel@redhat.com, Ani Sinha , kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH v4 28/31] kvm/vcpu: add notifiers to inform vcpu file descriptor change Date: Thu, 12 Feb 2026 11:55:12 +0530 Message-ID: <20260212062522.99565-29-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877708855158500 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 5e81bf8ad2..4d4d361708 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 05:51:24 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=1770877747; cv=none; d=zohomail.com; s=zohoarc; b=TZj5caR320w77oGNUiWepjfw4nODS7GZn/wekJMs2NaDUa7niIk0kRecnbfCCOL+1bnAyRXUPQ1SeLONSWHgLs2wwQYBzSDfXSqkLSrr+kH5p1aI2g3yji90gG1z5KUBKtjiLi6WBiMhVtoR6IQuMtykJKhFk+auZmMCN/kV4YE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877747; 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=kQlEZSHYu5ZXlsT0O+fx6eYG3I15FdBQAntZ83UahvNkBToiZJVDnCV5kVzIwXbrwP7+kEyV+qqY0qNZ1uho1SPo/OZ6E4tLmLT6NWb22wPCeswYIjYrQ6fg6anjknL7NJ29x1qAQkg+DybRaWQjJ7xF+9RBG7t/M5ieVQg9OLk= 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 1770877747569378.4485623879275; Wed, 11 Feb 2026 22:29:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQBL-0001xW-7U; Thu, 12 Feb 2026 01:28:07 -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 1vqQAf-0000Wj-K2 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:27 -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 1vqQAe-0005N8-42 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:25 -0500 Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-294-ul1nktETPOCk9CrqhzWFfg-1; Thu, 12 Feb 2026 01:27:21 -0500 Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-354bc535546so5947833a91.3 for ; Wed, 11 Feb 2026 22:27:20 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.27.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:27:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877642; 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=EAHInAtMfLUqLNU60tFKgQkAMG7PEI1+kHgdqzg4vJs0WtSEAh4lECZoHMb9eePqhcS3KO JbJnek5B2oT4Y97JqNgD5uD3xZrKcOhyIXD7Snz4rvSzrxkATMsPZam9dSHlT8r915PAlL z4lYGZ53N9oWwUsq5xky8Wunhbj4JYs= X-MC-Unique: ul1nktETPOCk9CrqhzWFfg-1 X-Mimecast-MFC-AGG-ID: ul1nktETPOCk9CrqhzWFfg_1770877640 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877640; x=1771482440; 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=kUnNFuxZdVe+YcJhZAmfxiabz+UT5yea43Dk47tw9n8F0SglIquhsREk/Dc8w53/ti yYDl53usb3k5THgMNxgzEGQ6Yh7snLDQGrkp1gzY5Dy/V7V+s0T4d8NV1QPJrAcAxUUT /vQlwAIfC9aodDl7THLPmmHCcHwO+V1f9rUxQJl/3KX0sEkXhlQ2TGCcXrSvFu3AhCxl bVClEBlwM7BKrxTqdlK0OLpaDHMKdvsP+S7VYs4FdCpruIxVOCKMiOhyFawHVrv79mAz c8IaiB2MXSJcMqyPYHkrib3/PkRba0XAfCEmqVJEUPtm2uangNx7DDuoDdCpkd5L/Ayp UgBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877640; x=1771482440; 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=JUqH7vI6mfno8WP43u9x9h9E7bNluu4hpxKG6T5ixPVBbFgVT+b25zs+8ajjvm2Opv GOxNvmbbzH0xnfWojNYo/rmv2osginqNiLE9/YP409nnUapaz3j39tLF3mIKfKM1Fe85 dE59Ky8ZQOrq0BP2BIPYKzY7i48t30W+pBdoKZkAMPM+Ogqd7lQtcyhKUPkUjQakt3A9 E8cFVomdEjej/sCgcNXRmOfYSh+RQ5G2vEGHyWLJe6Tho4XfY3JfdZhbX/KYZUW5MZHA j8KLRUuVxu9eYGHgibS+Ej+H9HnufI8antud3S646G/frBfa0nYzJ4wbnhleMdJrmr5z JKDg== X-Forwarded-Encrypted: i=1; AJvYcCXV/Y0x7FzSNwB5o9axdnSZeoHukKvLdo35+JLWHAUw7L9WkbZrH1pQqnMJCWclNmtr5lFoTmhkyabQ@nongnu.org X-Gm-Message-State: AOJu0YzSo4xnP+V1mQzS13US91w7fkL8c/kEKlLrLsu/K5rhW8vXLZJT wREB4O/EuK+63qQ/x9qhmNGHrad/ZHJAYoLCthGEMStUs6p9KQB2bhL/FfrEMOQmcsTe8ZGhmTa A+ZCr6QdXSwGz4Ik560HadgJwad/afSBuDn8ejqspH/wbBZBYeq8BVs/7 X-Gm-Gg: AZuq6aIQElMcD7LFvIbK+piTart4rWtBcuiiBuj8g8p+rbJUQiK/oJ2qCQ19px2L60g ya1R97DiXIE4vFuTGvOUQd5FQLpfO3I+Krte9Yl602ssAh446CX09SzA0dxKh9gWI3yqOdEOfCF 4zS0pIhI8IfudgVziipagd1+MiZ9psJCHC5zIjfFly0ioFiVh2szcCB3WgfQRIMSP2j5RJFDQI1 ushv8kggzrXmPXKfGbv9GXeX4RVnfOUYgdlCjmx7ugYfYYjcYinHuaK89pYyFZkZQ9VGl++vCjl QY5xSDjqiYUyuRg6tVnLYJPOjCxYSaxlPkR24wDnZ+1xt+R0Dy+01jtYTPkTcbMw0iMUwSuRERg XN4nzwGQR9jQHS9hMt+zeolR9bG5up2BxgjZK4XcRFTxWzcPJQzFgFSk= X-Received: by 2002:a17:90b:520e:b0:341:8491:472a with SMTP id 98e67ed59e1d1-3568f2e017fmr1860998a91.4.1770877639783; Wed, 11 Feb 2026 22:27:19 -0800 (PST) X-Received: by 2002:a17:90b:520e:b0:341:8491:472a with SMTP id 98e67ed59e1d1-3568f2e017fmr1860982a91.4.1770877639375; Wed, 11 Feb 2026 22:27:19 -0800 (PST) From: Ani Sinha To: "Michael S. Tsirkin" , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Cc: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v4 29/31] kvm/clock: add support for confidential guest reset Date: Thu, 12 Feb 2026 11:55:13 +0530 Message-ID: <20260212062522.99565-30-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877748964158500 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 05:51:24 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=1770877721; cv=none; d=zohomail.com; s=zohoarc; b=jVq1YM7i84Kn4XzIbIFgunG3mT/l+866UqD3dT5IdWQGp4VGT+Nx/5Ff2qsj+++wdCbF5CqJuU9LxGPBpKAiDx15W/ps8ouZ9JjRsJszAtQVxil631QMhSp7/byBYCJI3gwV5c6Pu0KnVd/yrH6PElAXWEChs8Jkfz8ISp+N0Ng= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877721; 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=M1UCM7z53H+LxOmB5d/FdTplSUqdefLOAGc/QpHzO9M=; b=n/w3XsuNcPvuDGLx+aGuVnhrHgolK87SC5YjHwmlkQTmC1bAeZsLa10x3qcoVbo25O+KjfeQe94+inqPpn3xl8yVVsZq1crRynDQ/I4DrxQpxMaXchQ+kJh5Ix4M/AHD0eWTC6A6qjjNtigCqHjUBwLZdYg8ZZ92M0SBoDAOBGE= 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 1770877720994403.9599273670642; Wed, 11 Feb 2026 22:28:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQBN-000299-Oa; Thu, 12 Feb 2026 01:28:09 -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 1vqQAi-0000aK-Ia for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:31 -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 1vqQAg-0005NP-U9 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:28 -0500 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-668-UPqFaFUMO8ucKxzjnivDzQ-1; Thu, 12 Feb 2026 01:27:24 -0500 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3562171b56dso5577703a91.2 for ; Wed, 11 Feb 2026 22:27:24 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.27.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:27:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877646; 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=M1UCM7z53H+LxOmB5d/FdTplSUqdefLOAGc/QpHzO9M=; b=LBdWndDSIUy2jsjsHz+zl1/do/TaK0oqel2WMMab4wsmicbJU/KAWvWPfZLEIOmevS7uSP oXcBkpEoEwepKczuAEbzAGwdceny7Mby97MnglFHTpmgsCMKKAbz2d9ZE18sD1ZRH5mIzu EH/6tlyxdWzgU+l1UJp9OnZKzhpenug= X-MC-Unique: UPqFaFUMO8ucKxzjnivDzQ-1 X-Mimecast-MFC-AGG-ID: UPqFaFUMO8ucKxzjnivDzQ_1770877644 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877643; x=1771482443; 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=M1UCM7z53H+LxOmB5d/FdTplSUqdefLOAGc/QpHzO9M=; b=O819v+VBCfrkmP2sNWR3Xd+qOqqzc+pMuGbpAF+KM+qepddwnB6YKg6qJ2yJa5H+39 djMkLTuMBmkPDdRBXZWiZJ46XTeGUck47n1jqvQgpFc+9pdxNosryFi37PgoWYOQa6ig 2r5exZ8w87e3Nfjhod0YS4A6FK5TGdARIR1+zyqGEr+Pj/9DTConwpZxGPpDqmJ9NX2i 41y5U9pwHl5QLWYO9k3KR+WRLqgPeOfKH35TC9E7Sn/b7fBzLIHunaRIrq9cushjbLLb wPwGABR8MoZ+m7PG9BI3XYfartQ+GW307h5R24y+XblmE/4eB3bI+hvf8CYs6fSLVKx0 M2aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877643; x=1771482443; 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=M1UCM7z53H+LxOmB5d/FdTplSUqdefLOAGc/QpHzO9M=; b=HiHTBRa9hmTsG1G3WY86MdGd8scc0Tgp+oA5k6rGPQomd3LLjRSHcw607NtyMt/ZdA oQ7T8Xg/s4Pkhtis9G6ymM60MlVjlmQ2w7QpDcO7OSIIiFa60c6u4KX8QUuuI+s/xObB Mv9NXYX4+YpYnRyL2jHy63kAfYlJekBMiroJxQQOO/ywrbabEjWaN5Yf+FasFoyHDRfI EbdOLUyyO9bFLjEZPWCK0dHdk3kEchOfIFzFtT8II2PGcXehG/wMaamHF5G0mJ1UMQ3L axOPTXv3xJgsufsBbv8sDxToftSoIdVbAxMXIDJW3kJAry9Cy1FIO3DBdxAPXtd+SQ9Z r50A== X-Forwarded-Encrypted: i=1; AJvYcCVrmpRPHzF9Rv5gOBZH1lF/jLzqR50sroqI0wYjNyWOkzHzpeOIwCyCoE+Wbpgqa8prXzkTIQyyiD4I@nongnu.org X-Gm-Message-State: AOJu0Yyg6MMYF5O2sI3o9bx7+j4Oabs5or05C/YtGGNcBpg+59NLMpVk FGZlHEg78rTuCdtPn2dBcjTbdXxk3yMv0rbXhB/2o93kif2dqemhJcx6dxQJghjRrCE9qBeV7ce VZWMrBBFiZdZIzdD1jiaz1kX+56zUCu5tTmxwbGwbnpBC5bUpX9B6i/RV X-Gm-Gg: AZuq6aLjETa7fUP8U1GCsLU/DqL8/q/pIgvTrnY9FKarDdNsVDIn7sdw4C/xniZu3M3 cwm97eWqTq3ZMKBmnlddfTdOnJ/PBags0APa5ZL/fd9VBlYzeAbB02efE+f+LJMLoIRXNd4BbZ1 ymGpA/IC4vu7eZLGAx5FqQ3r6DKpnM4VQ3I2SLB7QJhGhaxQ5pjGQfr/yjnEku1GWf95MxO8rkc Vg5JvjZgYNPjZU0GFTyMuvHHr9mhttOR7mPdSN4fydJ8XoKS0zvhmMBLxgcugW0ukeaQKaZomce McxDLbPLRAHfPYWvRbqKbCv+pZYl5OeIPa5fxuVXJ89q1ywgHM3/8uv87Da/LoJAjmIN33SBGrD Cbf6jbdzmvjWR/p6vhOummzr0Yw5gOEZ545908/R/getTjh/Iqt5dcwA= X-Received: by 2002:a17:90a:ec8d:b0:356:24c8:229d with SMTP id 98e67ed59e1d1-3568f3deb15mr1545581a91.21.1770877643542; Wed, 11 Feb 2026 22:27:23 -0800 (PST) X-Received: by 2002:a17:90a:ec8d:b0:356:24c8:229d with SMTP id 98e67ed59e1d1-3568f3deb15mr1545561a91.21.1770877643160; Wed, 11 Feb 2026 22:27:23 -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: kraxel@redhat.com, Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v4 30/31] hw/machine: introduce machine specific option 'x-change-vmfd-on-reset' Date: Thu, 12 Feb 2026 11:55:14 +0530 Message-ID: <20260212062522.99565-31-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877723078158500 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 | 20 ++++++++++---------- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/hw/core/machine.c b/hw/core/machine.c index 6411e68856..95d7650db9 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -450,6 +450,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); @@ -1198,6 +1213,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", + "Generate new accelerator fd on reset, " + "to be used only for testing and 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 07f8938752..ee3cc9130e 100644 --- a/include/hw/core/boards.h +++ b/include/hw/core/boards.h @@ -447,6 +447,12 @@ struct MachineState { struct NVDIMMState *nvdimms_state; struct NumaState *numa_state; bool acpi_spcr_enabled; + /* + * whether to change virtual machine accelerator file descriptor upon + * reset or not. used only for debugging and testing purpose. + * It should be set to false for all regular use. + */ + bool new_accel_vmfd_on_reset; }; =20 /* diff --git a/system/runstate.c b/system/runstate.c index 0a74e3ade5..29953fb088 100644 --- a/system/runstate.c +++ b/system/runstate.c @@ -526,25 +526,25 @@ void qemu_system_reset(ShutdownCause reason) type =3D RESET_TYPE_COLD; } =20 - /* - * different accelerators implement how to close the old file handle of - * the accelerator descriptor and create a new one here. Resetting - * file handle is necessary to create a new confidential VM context po= st - * VM reset. - */ - 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->reset_vmfd) { ret =3D ac->reset_vmfd(current_machine); if (ret < 0) { error_report("unable to reset vmfd: %s(%d)", strerror(-ret), ret); vm_stop(RUN_STATE_INTERNAL_ERROR); + } else if (current_machine->new_accel_vmfd_on_reset) { + info_report("virtual machine accel file descriptor " + "has changed."); } vmfd_reset =3D true; + } else if (!cpus_are_resettable()) { + error_report("accelerator does not support reset!"); } else { - error_report("accelerator does not support reset"); + error_report("accelerator does not support vmfd change reset, " + "proceeding with normal reset!"); } } =20 --=20 2.42.0 From nobody Sun Apr 12 05:51:24 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=1770877740; cv=none; d=zohomail.com; s=zohoarc; b=RndsvNj6nt4+JyeoI8s8KFrU/UqLlr0IHsHlq+wwu0KLkZrMcwqq0lqFpgVFMk4wgKJFAckC8vrDKMQwbQYIx0kmc8fnC+MeGMdOX2ezLr/FZvIMz63sXaL8mwWXe5ifRagA3xWGr1faBOuI46fxyIztGKK0YMH03ZSbcM9km94= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770877740; 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=dIIvsU/cmXTMQHhWbp8xpt7mJK+6PPrS2lODajVDTYo=; b=ZNoZ1sMg9TQNkB5sxdiAurLK0u3wiW9vCUKb9mH5ogkyawpfyngw5zqh7+SL4mafYw3CIsWDQ6ksiCAB2e98wrORssQFfdnLjtGC/+sh+TsNS4lvkUHQPMo8UM5ShgLWuH47uPVBKg/G2vxrqDDKRBofIWii42WLHjMiEsVQ2hY= 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 1770877740774619.0210906148021; Wed, 11 Feb 2026 22:29:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqQBQ-0002MF-O2; Thu, 12 Feb 2026 01:28:13 -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 1vqQAm-0000k4-Cr for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:32 -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 1vqQAk-0005Pf-78 for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:31 -0500 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-38-G_52xn_KNfm_88sz88IbPA-1; Thu, 12 Feb 2026 01:27:27 -0500 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-3568090851aso4212252a91.1 for ; Wed, 11 Feb 2026 22:27:27 -0800 (PST) Received: from rhel9-box.lan ([122.164.27.113]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.27.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 22:27:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770877649; 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=dIIvsU/cmXTMQHhWbp8xpt7mJK+6PPrS2lODajVDTYo=; b=dlMCEED0C2JEE/YuHHetFcBo+BBpKSmaynLCtHeheNzK7ytYgaxYC2ysqL2lHPYB4Fw9i8 FN7n2epLrlaMrG4hud2we05Pa+XLN5gJyCDPgXeAFgqDKnLNNs/XLZI3scB0rkMR6pT3e+ /GBc6T5/ArUO/bEIbP5esvjEsPthixM= X-MC-Unique: G_52xn_KNfm_88sz88IbPA-1 X-Mimecast-MFC-AGG-ID: G_52xn_KNfm_88sz88IbPA_1770877647 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770877646; x=1771482446; 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=dIIvsU/cmXTMQHhWbp8xpt7mJK+6PPrS2lODajVDTYo=; b=gVattix4+214o0Om/yDJNWbs/HaWnMsrs69adjQ/Sv9ncz8t2kb7tSBPzwmitoLaLP OcKICmR2SBaGt+KjJfh8WxjzwqIhvGiwZ6/BkNefXmzU0tZclpvsDhYIttEVAqbfocBY X6Fe9ASFL0FoxOYsZZ9Vbv3UNAWOOzgM8BMDbQoowbYJAjj1xdbW9aK3JFT7PtYV/7dK MBELx/Pletu/qBFd47Z5y0fbo+8kH0b72pwFf16mLGUKG2mOYTf8ayGPl7qDDJNLsdp8 QNcieLUsjOJE4xAqBs4Ir4ZmvIpQwBiKLIlOQZUTMQj0P+W9p7afS2BEjhEmq97wEJQQ yguQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770877646; x=1771482446; 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=dIIvsU/cmXTMQHhWbp8xpt7mJK+6PPrS2lODajVDTYo=; b=VYt8q2lalTNzr2ifn+ZH7vcHc1Wv4qvNEcQc19mlxe/s3XoFCD2fkTaKX8+Ao4wMPY TsKi9zG+xvTMd/gE/zPPI/jHX5K8czbYFUlakFLi9E90Vm6/sM7vRqfSucDPZBjQaZnJ Baj7lsF0KsNAfblVHoZVmYMC+6RsIeKUT29PSp6jNU9ZrPHnaYp+61UBooxNxr0bGRgm b8dMvo7WMcuO+6hjiLRoz9Bqv3dBBMftYsvnWhxDjTOTWkEcZRuEbQL6DTDl0iowGtR8 hROOr0+WUkjMYPSjUBcaWRme8LgV7IHOisimHpzi1lL/7ts2rnwTYNqaOpBEkoKxq2lS rtfQ== X-Forwarded-Encrypted: i=1; AJvYcCWl9hDxsx4tdabkyRSPZ3Gtn61co2u+l2+ChkX+qfb5miXJnJacgJ77gg83SflDUhq+xmPswRn3zWIy@nongnu.org X-Gm-Message-State: AOJu0YyLZ/T5tz4b3gXQSD0Mw/ETwpoMH+3dzsDdDlqjXSzGlf7+lT5S CT1ktYqLvoW00Jk8QKiEUSk1oH8vn9t2fzRARvmfHbZzeLZC+ktxQ+mzbu6Wf1C8YzTNlEhng3I qoG1Fa8ivD2QsR1B/LwbAbrXWEmhOJPS3S/PnWvlazZaX7vI1D4xV6K1DGXCiZ2NL X-Gm-Gg: AZuq6aI362K9F6OCAXMyZm7ENe7uf9g4c0QdrtP3IroeZuYyfxf/5xFrMb6wkytCuVl jFrpo9BJMAa08YFpwJ2fRMO1y8Kn8iOKiLOkGwKRldidVSyGuQLT95w2HVWjEe5YH0Q/pu+hMaf Dy2WuRUltf+qBIYNGTy8bZXTRuLP4dHStBCcVTwG8W63k+27CYnod6KxiJvKFobqsN1op5MC/oJ 7Etiu1E4ye8XLkIFOJh1nc8k5qjPJ3U0dnSVKdlnJVn3SNXsojC+jYCyEMl9L0pBfzLpA3xvoEd N+nUF/iu1XzIoAFbzVbZsrUvxmOpH/i/IW5j+WRcRNExExDWqAxBH7Uh2lBIo349pl877b79cB4 VEwqmUoOAqaAUQ+RLA6XOahGc3OrFCNi2C6ABrT/liSA7q6YHtSMNQY0= X-Received: by 2002:a17:90b:388e:b0:34c:2db6:578f with SMTP id 98e67ed59e1d1-3568f3edd72mr1657487a91.19.1770877646370; Wed, 11 Feb 2026 22:27:26 -0800 (PST) X-Received: by 2002:a17:90b:388e:b0:34c:2db6:578f with SMTP id 98e67ed59e1d1-3568f3edd72mr1657473a91.19.1770877645948; Wed, 11 Feb 2026 22:27:25 -0800 (PST) From: Ani Sinha To: Paolo Bonzini , Zhao Liu , Ani Sinha Cc: kraxel@redhat.com, qemu-devel@nongnu.org Subject: [PATCH v4 31/31] tests/functional/x86_64: add functional test to exercise vm fd change on reset Date: Thu, 12 Feb 2026 11:55:15 +0530 Message-ID: <20260212062522.99565-32-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20260212062522.99565-1-anisinha@redhat.com> References: <20260212062522.99565-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.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=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: 1770877742991158500 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 + .../x86_64/test_vmfd_change_reboot.py | 135 ++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100755 tests/functional/x86_64/test_vmfd_change_reboot.py diff --git a/MAINTAINERS b/MAINTAINERS index a88901a7d7..cd62cbd57a 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_vmfd_change_reboot.py =20 Guest CPU cores (TCG) --------------------- diff --git a/tests/functional/x86_64/meson.build b/tests/functional/x86_64/= meson.build index f78eec5e6c..784d9791cb 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', + 'vmfd_change_reboot', ] diff --git a/tests/functional/x86_64/test_vmfd_change_reboot.py b/tests/fun= ctional/x86_64/test_vmfd_change_reboot.py new file mode 100755 index 0000000000..cb7370e465 --- /dev/null +++ b/tests/functional/x86_64/test_vmfd_change_reboot.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +# +# KVM VM file descriptor change on reset test +# +# 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 fc= 43 + # distro which in turn comes from the edk2-ovmf-20251119-3.fc43.noarch= rpm. + 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 accel file descriptor has chang= ed') + + 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