From nobody Sun Apr 12 08:56:21 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