All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sriram Nambakam <snambakam@linux.microsoft.com>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Subject: [RFC PATCH v1 33/42] drivers/virt: rename VBS park loop to secure_monitor
Date: Wed,  5 Aug 2026 04:03:15 -0700	[thread overview]
Message-ID: <20260805110324.25067-34-snambakam@linux.microsoft.com> (raw)
In-Reply-To: <20260805110324.25067-1-snambakam@linux.microsoft.com>

Replace the secure-plane park loop (drivers/virt/vbs_park.c, CONFIG_VBS_PARK)
with drivers/virt/secure_monitor.c (CONFIG_VBS_SECURE_MONITOR), activated by
the "secure_monitor" kernel command-line option.  Behaviour is unchanged: a
late_initcall spawns the "vbs-secmon" kthread which hands control back to the
normal plane via KVM_HC_VBS_VTL_RETURN and acknowledges VTL calls as no-ops;
real per-call handlers are plumbed in incrementally.

Also drop the unused security/vbs/secure_monitor.c, which was never wired into
the running secure-plane path (it keyed off "vbs_secure_plane" under
CONFIG_VBS_KVM_PLANES but was never activated).
---
 drivers/virt/Kconfig                          |  16 +-
 drivers/virt/Makefile                         |   2 +-
 drivers/virt/{vbs_park.c => secure_monitor.c} |  77 ++---
 security/vbs/Makefile                         |   1 -
 security/vbs/secure_monitor.c                 | 266 ------------------
 5 files changed, 52 insertions(+), 310 deletions(-)
 rename drivers/virt/{vbs_park.c => secure_monitor.c} (50%)
 delete mode 100644 security/vbs/secure_monitor.c

diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig
index 88e40eaba1c2..5d964f124afe 100644
--- a/drivers/virt/Kconfig
+++ b/drivers/virt/Kconfig
@@ -13,20 +13,20 @@ menuconfig VIRT_DRIVERS
 
 if VIRT_DRIVERS
 
-config VBS_PARK
-	bool "KVM VM-planes secure-plane park loop"
+config VBS_SECURE_MONITOR
+	bool "KVM VM-planes secure-plane monitor"
 	depends on X86 && KVM_GUEST
 	help
-	  Minimal in-kernel handler for the secure plane (plane >0) of a KVM
-	  VM-planes guest.  When enabled and the "vbs_park" kernel command-line
+	  In-kernel monitor for the secure plane (plane >0) of a KVM VM-planes
+	  guest.  When enabled and the "secure_monitor" kernel command-line
 	  option is present, a kernel thread hands control back to the normal
 	  plane via the KVM_HC_VBS_VTL_RETURN hypercall and then services VTL
 	  calls from a shared calling area.
 
-	  This is independent of the full VBS/HEKI stack (CONFIG_VBS): it
-	  implements only the park/dispatch handshake so that any secure kernel
-	  can act as plane 1.  Calls are acknowledged as no-ops.  Say N unless
-	  this kernel is used as a VM-planes secure plane.
+	  This is independent of the full VBS/HEKI stack (CONFIG_VBS) so that
+	  any secure kernel can act as plane 1.  Per-call handlers are plumbed
+	  in incrementally; until then calls are acknowledged as no-ops.  Say N
+	  unless this kernel is used as a VM-planes secure plane.
 
 config VMGENID
 	tristate "Virtual Machine Generation ID driver"
diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
index fa91899a356d..22d1121ba5bd 100644
--- a/drivers/virt/Makefile
+++ b/drivers/virt/Makefile
@@ -5,7 +5,7 @@
 
 obj-$(CONFIG_FSL_HV_MANAGER)	+= fsl_hypervisor.o
 obj-$(CONFIG_VMGENID)		+= vmgenid.o
-obj-$(CONFIG_VBS_PARK)		+= vbs_park.o
+obj-$(CONFIG_VBS_SECURE_MONITOR)	+= secure_monitor.o
 obj-y				+= vboxguest/
 
 obj-$(CONFIG_NITRO_ENCLAVES)	+= nitro_enclaves/
diff --git a/drivers/virt/vbs_park.c b/drivers/virt/secure_monitor.c
similarity index 50%
rename from drivers/virt/vbs_park.c
rename to drivers/virt/secure_monitor.c
index fabb6beeea7b..2d181c32c439 100644
--- a/drivers/virt/vbs_park.c
+++ b/drivers/virt/secure_monitor.c
@@ -1,31 +1,41 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * vbs_park - minimal KVM VM-planes secure-plane park loop
+ * secure_monitor - KVM VM-planes secure-plane monitor
  *
- * This provides only the secure-plane (plane >0) side of the VM-planes
- * park/dispatch handshake so that an otherwise ordinary kernel can act as
- * plane 1.  It is deliberately independent of the full VBS/HEKI stack
- * (CONFIG_VBS): it implements no security policy.  Its single job is to hand
- * control back to the normal plane (plane 0) via the KVM_HC_VBS_VTL_RETURN
- * hypercall and then service VTL calls from the shared calling area.
+ * This is the secure-plane (plane >0) side of the VM-planes park/dispatch
+ * handshake.  It lets an otherwise ordinary kernel act as the secure plane
+ * (conventionally plane 1 / VTL1 / VMPL0, though the index is not hard-coded)
+ * without pulling in the full VBS/HEKI stack (CONFIG_VBS).  Its single job is
+ * to hand control back to the normal plane (plane 0) via the
+ * KVM_HC_VBS_VTL_RETURN hypercall and then service VTL calls from the shared
+ * calling area.
  *
  * Control flow (all within plane 0's single KVM_RUN; see
  * arch/x86/kvm/x86.c __kvm_emulate_hypercall):
  *
- *   plane 0                        KVM                       plane 1 (here)
- *   -------                        ---                       --------------
+ *   normal plane                   KVM                       secure plane
+ *   ------------                   ---                       ------------
  *   fill calling area
  *   HC_VBS_VTL_CALL(ca_gpa) ─────▶ switch_plane ───────────▶ resume in
- *                                  (RAX := ca_gpa)            vtl_return()
- *                                                            handle call_id
+ *                                  (RAX := ca_gpa)            secmon_vtl_return()
+ *                                                            dispatch(call_id)
  *                                                            write ca->status
  *   resume after VTL_CALL ◀─────── switch_plane ◀─────────── HC_VBS_VTL_RETURN
  *
- * Activated by the "vbs_park" kernel command-line option; without it this
- * kernel boots normally and never parks.
+ * Because all planes of a VM share the same memslots (struct kvm_plane has no
+ * memslots of its own; they live in struct kvm), the secure plane sees the
+ * same guest-physical address space as the normal plane and can read the
+ * calling area and the GPAs referenced by each request directly.
+ *
+ * For now every VTL call is acknowledged as a no-op so the normal plane can
+ * make progress; the real per-call handlers (self-protection, HEKI memory
+ * protection, kernel sealing, …) are plumbed in incrementally.
+ *
+ * Activated by the "secure_monitor" kernel command-line option; without it
+ * this kernel boots normally and never parks.
  */
 
-#define pr_fmt(fmt) "vbs-park: " fmt
+#define pr_fmt(fmt) "vbs-secmon: " fmt
 
 #include <linux/kernel.h>
 #include <linux/init.h>
@@ -44,7 +54,7 @@
  *
  *   [ call_pending | call_id | status | arg_size | resp_size | buffer ]
  */
-struct vtl_ca {
+struct vbs_kvm_ca {
 	__u8	call_pending;	/* 1 while call is in flight		*/
 	__u8	rsvd[3];
 	__u32	call_id;	/* request id (set by caller)		*/
@@ -54,15 +64,15 @@ struct vtl_ca {
 	__u8	buffer[];	/* request data in, response data out	*/
 } __packed;
 
-/* Set from the "vbs_park" kernel command-line option. */
-static bool vbs_park_active __ro_after_init;
+/* Set from the "secure_monitor" kernel command-line option. */
+static bool secmon_active __ro_after_init;
 
-static int __init vbs_park_setup(char *str)
+static int __init secmon_setup(char *str)
 {
-	vbs_park_active = true;
+	secmon_active = true;
 	return 1;
 }
-__setup("vbs_park", vbs_park_setup);
+__setup("secure_monitor", secmon_setup);
 
 /*
  * Park the secure plane and hand control back to the normal plane.  On the
@@ -70,23 +80,23 @@ __setup("vbs_park", vbs_park_setup);
  * hypercall return value (RAX).  @status is carried for tracing only; the
  * real result is already in the calling area.
  */
-static u64 vtl_return(long status)
+static u64 secmon_vtl_return(long status)
 {
 	return kvm_hypercall1(KVM_HC_VBS_VTL_RETURN, (unsigned long)status);
 }
 
-static int vbs_park_fn(void *unused)
+static int secmon_monitor_fn(void *unused)
 {
 	long status = 0;
 
-	pr_info("secure-plane park loop started\n");
+	pr_info("secure monitor started\n");
 
 	for (;;) {
-		struct vtl_ca *ca;
+		struct vbs_kvm_ca *ca;
 		u64 ca_gpa;
 
 		/* Park; resume with the next request's calling-area GPA. */
-		ca_gpa = vtl_return(status);
+		ca_gpa = secmon_vtl_return(status);
 		if (!ca_gpa) {
 			status = -EINVAL;
 			continue;
@@ -101,10 +111,9 @@ static int vbs_park_fn(void *unused)
 		}
 
 		/*
-		 * No security policy lives here: acknowledge the call as a
-		 * no-op so the normal plane can make progress.  Replace this
-		 * with real handlers (or move plane 1 to a dedicated SVSM) to
-		 * enforce actual VBS semantics.
+		 * No handlers are plumbed in yet: acknowledge the call as a
+		 * no-op so the normal plane can make progress.  Real per-call
+		 * dispatch is added incrementally.
 		 */
 		pr_info_ratelimited("VTL call id=0x%x arg_size=%u (no-op)\n",
 				    ca->call_id, ca->arg_size);
@@ -118,19 +127,19 @@ static int vbs_park_fn(void *unused)
 	return 0;
 }
 
-static int __init vbs_park_init(void)
+static int __init secmon_init(void)
 {
 	struct task_struct *t;
 
-	if (!vbs_park_active)
+	if (!secmon_active)
 		return 0;
 
-	t = kthread_run(vbs_park_fn, NULL, "vbs-park");
+	t = kthread_run(secmon_monitor_fn, NULL, "vbs-secmon");
 	if (IS_ERR(t)) {
-		pr_err("failed to start park loop: %ld\n", PTR_ERR(t));
+		pr_err("failed to start secure monitor: %ld\n", PTR_ERR(t));
 		return PTR_ERR(t);
 	}
 
 	return 0;
 }
-late_initcall(vbs_park_init);
+late_initcall(secmon_init);
diff --git a/security/vbs/Makefile b/security/vbs/Makefile
index f24f31727a65..01e831e28ac7 100644
--- a/security/vbs/Makefile
+++ b/security/vbs/Makefile
@@ -7,7 +7,6 @@ vbs-y := probe.o core.o
 
 vbs-$(CONFIG_VBS_HEKI)		+= heki.o
 obj-$(CONFIG_VBS_KVM_PLANES)	+= kvm_planes.o
-obj-$(CONFIG_VBS_KVM_PLANES)	+= secure_monitor.o
 obj-$(CONFIG_VBS_SEV_SNP)	+= sev_snp.o
 obj-$(CONFIG_VBS_TDX)		+= tdx.o
 obj-$(CONFIG_VBS_HV_VSM)	+= hv_vsm.o
diff --git a/security/vbs/secure_monitor.c b/security/vbs/secure_monitor.c
deleted file mode 100644
index c1221ad5019b..000000000000
--- a/security/vbs/secure_monitor.c
+++ /dev/null
@@ -1,266 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * VBS secure-plane monitor — in-guest VTL dispatcher
- *
- * This is the secure-plane counterpart of the normal-plane kvm_planes
- * backend.  The SAME kernel image boots as both the normal plane and the
- * secure plane; when booted as the secure plane (selected via the
- * "vbs_secure_plane" kernel command-line option) this monitor takes over
- * and services VTL calls issued by the normal plane.
- *
- * "Secure plane" is the highest-privilege plane of the VM (conventionally
- * plane 1 / VTL1 / VMPL0, but a VM may have up to KVM_MAX_PLANES planes and
- * the index is not hard-coded here).  "Normal plane" is the requesting,
- * lower-privilege plane (conventionally plane 0).
- *
- * Control flow (all within the normal plane's single KVM_RUN, see
- * arch/x86/kvm/x86.c ____kvm_emulate_hypercall):
- *
- *   normal plane                   KVM                       secure plane
- *   ------------                   ---                       ------------
- *   fill calling area
- *   HC_VBS_VTL_CALL(ca_gpa) ─────▶ switch_plane ───────────▶ resume in
- *                                  (RAX := ca_gpa)            secmon_vtl_return()
- *                                                            dispatch(call_id)
- *                                                            write ca->status
- *   resume after VTL_CALL ◀─────── switch_plane ◀─────────── HC_VBS_VTL_RETURN(status)
- *   read ca->status
- *
- * Because all planes of a VM share the same memslots (struct kvm_plane has
- * no memslots of its own; they live in struct kvm), the secure plane sees
- * the same guest-physical address space as the normal plane and can read
- * the calling area and the GPAs referenced by each request directly.
- */
-
-#define pr_fmt(fmt) "vbs-secmon: " fmt
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/kthread.h>
-#include <linux/io.h>
-#include <linux/mm.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/vbs.h>
-#include <linux/kvm_para.h>
-#include <asm/kvm_para.h>
-
-#include "heki.h"
-
-/*
- * Shared-memory calling area — must match struct vbs_kvm_ca in kvm_planes.c
- * (this is the normal-plane <-> secure-plane wire ABI).
- *
- *   [ call_pending | call_id | status | arg_size | resp_size | buffer ]
- */
-struct vbs_kvm_ca {
-	__u8	call_pending;	/* 1 while call is in flight		*/
-	__u8	rsvd[3];
-	__u32	call_id;	/* enum vbs_call_id (set by caller)	*/
-	__s32	status;		/* return code (set by responder)	*/
-	__u32	arg_size;	/* request payload size			*/
-	__u32	resp_size;	/* response payload size		*/
-	__u8	buffer[];	/* request data in, response data out	*/
-} __packed;
-
-/* Set from the "vbs_secure_plane" kernel command-line option. */
-static bool secmon_active __ro_after_init;
-
-static int __init secmon_setup(char *str)
-{
-	secmon_active = true;
-	return 1;
-}
-__setup("vbs_secure_plane", secmon_setup);
-
-/*
- * Park the secure plane and hand control back to the normal plane.  On the
- * next VTL call, KVM resumes us here with the calling-area GPA in the
- * hypercall return value (RAX).  @status is carried for tracing only; the
- * real result is already in the calling area.
- */
-static u64 secmon_vtl_return(long status)
-{
-	return kvm_hypercall1(KVM_HC_VBS_VTL_RETURN, (unsigned long)status);
-}
-
-/*
- * Apply EPT permissions on a normal-plane GPA range from the secure plane.
- *
- * The secure plane cannot issue the host KVM_SET_MEMORY_ATTRIBUTES ioctl,
- * so it asks KVM to do it via the KVM_HC_VBS_SET_MEM_ATTRS hypercall, which
- * KVM honours only for a higher-privilege plane.  @perms carries the access
- * bits the normal plane should retain (VBS_MEM_*); KVM translates a cleared
- * write/exec bit into NO_WRITE / NO_EXEC memory attributes.
- */
-static int secmon_apply_attrs(u64 gpa, u64 size, u32 perms)
-{
-	long ret;
-
-	pr_debug("apply_attrs gpa=0x%llx size=0x%llx perms=%c%c%c\n",
-		 gpa, size,
-		 (perms & VBS_MEM_READ)  ? 'r' : '-',
-		 (perms & VBS_MEM_WRITE) ? 'w' : '-',
-		 (perms & VBS_MEM_EXEC)  ? 'x' : '-');
-
-	ret = kvm_hypercall3(KVM_HC_VBS_SET_MEM_ATTRS, gpa, size, perms);
-	if (ret)
-		return (int)ret;
-
-	return 0;
-}
-
-/* ── per-call handlers ────────────────────────────────────────────────── */
-
-static int secmon_do_protect_memory(const void *arg, u32 arg_size)
-{
-	const struct vbs_protect_memory_req *r = arg;
-
-	if (arg_size < sizeof(*r))
-		return -EINVAL;
-
-	return secmon_apply_attrs(r->gpa, r->size, r->perms);
-}
-
-static int secmon_do_seal_kernel(const void *arg, u32 arg_size)
-{
-	const struct vbs_seal_kernel_req *r = arg;
-	int ret;
-
-	if (arg_size < sizeof(*r))
-		return -EINVAL;
-
-	/* Kernel text: read + execute, no write. */
-	ret = secmon_apply_attrs(r->text_gpa, r->text_size,
-				 VBS_MEM_READ | VBS_MEM_EXEC);
-	if (ret)
-		return ret;
-
-	/* Kernel rodata: read only, no write, no execute. */
-	return secmon_apply_attrs(r->rodata_gpa, r->rodata_size,
-				  VBS_MEM_READ);
-}
-
-static int secmon_do_set_module_perms(const void *arg, u32 arg_size)
-{
-	const struct vbs_set_module_perms_req *hdr = arg;
-	const struct vbs_module_section *sec;
-	u32 i, n;
-
-	if (arg_size < sizeof(*hdr))
-		return -EINVAL;
-
-	n = hdr->nr_sections;
-	if (arg_size < sizeof(*hdr) + n * sizeof(*sec))
-		return -EINVAL;
-
-	sec = (const struct vbs_module_section *)(hdr + 1);
-	for (i = 0; i < n; i++) {
-		int ret = secmon_apply_attrs(sec[i].gpa, sec[i].size,
-					     sec[i].perms);
-		if (ret)
-			return ret;
-	}
-
-	return 0;
-}
-
-static long secmon_dispatch(u32 call_id, const void *arg, u32 arg_size,
-			    u32 *resp_size)
-{
-	*resp_size = 0;
-
-	switch (call_id) {
-	case VBS_CALL_INIT:
-	case VBS_CALL_SHUTDOWN:
-		return 0;
-
-	case VBS_CALL_PROTECT_MEMORY:
-		return secmon_do_protect_memory(arg, arg_size);
-	case VBS_CALL_SEAL_KERNEL:
-		return secmon_do_seal_kernel(arg, arg_size);
-
-	case VBS_CALL_SET_MODULE_PERMS:
-		return secmon_do_set_module_perms(arg, arg_size);
-
-	/*
-	 * Module/kexec validation and key management are acknowledged for
-	 * now (mirroring the previous userspace dispatcher); real signature
-	 * verification runs here in a later stage.
-	 */
-	case VBS_CALL_VALIDATE_MODULE:
-	case VBS_CALL_UNLOAD_MODULE:
-	case VBS_CALL_ADD_KEY:
-	case VBS_CALL_REVOKE_KEY:
-	case VBS_CALL_SEND_CERTS:
-	case VBS_CALL_KEXEC_VALIDATE:
-	case VBS_CALL_KEXEC_INVALIDATE:
-		return 0;
-
-	default:
-		pr_warn_ratelimited("unknown call_id 0x%x\n", call_id);
-		return -ENOSYS;
-	}
-}
-
-/* ── monitor loop ─────────────────────────────────────────────────────── */
-
-static int secmon_monitor_fn(void *unused)
-{
-	long status = 0;
-
-	pr_info("secure monitor started\n");
-
-	for (;;) {
-		struct vbs_kvm_ca *ca;
-		u64 ca_gpa;
-		u32 call_id, arg_size, resp_size = 0;
-
-		/* Park; resume with the next request's calling-area GPA. */
-		ca_gpa = secmon_vtl_return(status);
-		if (!ca_gpa) {
-			status = -EINVAL;
-			continue;
-		}
-
-		ca = memremap(ca_gpa, PAGE_SIZE, MEMREMAP_WB);
-		if (!ca) {
-			pr_err_ratelimited("failed to map calling area 0x%llx\n",
-					   ca_gpa);
-			status = -EFAULT;
-			continue;
-		}
-
-		call_id  = ca->call_id;
-		arg_size = ca->arg_size;
-		if (arg_size > PAGE_SIZE - sizeof(*ca))
-			arg_size = PAGE_SIZE - sizeof(*ca);
-
-		status = secmon_dispatch(call_id, ca->buffer, arg_size,
-					 &resp_size);
-
-		ca->status    = (s32)status;
-		ca->resp_size = resp_size;
-
-		memunmap(ca);
-	}
-
-	return 0;
-}
-
-static int __init secmon_init(void)
-{
-	struct task_struct *t;
-
-	if (!secmon_active)
-		return 0;
-
-	t = kthread_run(secmon_monitor_fn, NULL, "vbs-secmon");
-	if (IS_ERR(t)) {
-		pr_err("failed to start secure monitor: %ld\n", PTR_ERR(t));
-		return PTR_ERR(t);
-	}
-
-	return 0;
-}
-late_initcall(secmon_init);
-- 
2.55.0


  parent reply	other threads:[~2026-08-05 11:04 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-05 11:02 [RFC PATCH v1 00/42] VBS/VSM-on-KVM: VBS integration for KVM VM planes Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 01/42] Fix merge issue - Remove duplicate definition for kvm_arch_has_irq_bypass Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 02/42] Fix compilation Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 03/42] Fix compile error Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 04/42] Fix compile errors Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 05/42] Initial support for VM Planes - Add kernel config for CONFIG_VM_PLANES - Parse vm plane config from initrd for plane configuration - Make hypercalls to allocate memory for the vm planes Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 06/42] Use vcpu count from the plane configuration Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 07/42] skip processing plane configuration for plane 0 - plane 0 is the boot plane Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 08/42] Add plane config param to specify kernel image format Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 09/42] Activate the VM Planes through the Hypervisor - Using KVM as the VMM Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 10/42] allow the command line to be specified for kernels in other planes Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 11/42] Various changes to support VM Planes Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 12/42] Add a Virtualization Based Security (VBS) framework. - Add backends for AMD SEV-SNP, Intel TDX, Arm CCA and KVM Planes. - Support VTL on Hyper-V in addition to Planes on KVM Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 13/42] Add a inter-plane communication mechanism through KVM. - model this to use a single page similar to SEV-SNP Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 14/42] KVM: Add per-plane memory attribute support for cross-plane EPT protection Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 15/42] KVM: x86: Add KVM_HC_VBS_VTL_CALL hypercall for VBS inter-plane calls Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 16/42] vbs: Add HEKI kernel sealing and fix KVM plane memory attribute guards Sriram Nambakam
2026-08-05 11:02 ` [RFC PATCH v1 17/42] vbs: Add module authentication via VBS/HEKI Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 18/42] vbs: Add kexec validation and make module auth non-fatal Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 19/42] Merge branch 'master' into vm-planes Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 20/42] kvm: x86: fix merged plane API/stat build regressions Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 21/42] KVM: x86: exit VM planes and VBS hypercalls to userspace Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 22/42] kexec: block legacy kexec_load when VBS is active Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 23/42] kvm: x86: fix merged plane API/stat build regressions Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 24/42] KVM: planes: expose memory-attribute setting to in-kernel callers Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 25/42] vm_planes: drop unused per-plane vcpu_count Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 26/42] drivers/virt: add VBS secure-plane park loop Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 27/42] KVM: planes: add arch-neutral in-kernel plane switch helper Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 28/42] KVM: x86: add VBS VTL call/return and cross-plane set-mem-attrs hypercalls Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 29/42] init/vm_planes: set up planes from rootfs_initcall and load ELF payloads Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 30/42] security/vbs: run backend probe and HEKI seal at rootfs_initcall Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 31/42] security/vbs: pin the VTL call hypercall to CPU0 Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 32/42] security/vbs: add secure-plane monitor backend Sriram Nambakam
2026-08-05 11:03 ` Sriram Nambakam [this message]
2026-08-05 11:03 ` [RFC PATCH v1 34/42] x86/realmode: skip the sub-1M trampoline for the VBS secure plane Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 35/42] KVM: x86: deny normal-plane access to secure-plane memory Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 36/42] KVM: plane: handle KVM_CHECK_EXTENSION on the plane fd Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 37/42] KVM: selftests: run plane tests with a split IRQ chip Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 38/42] kvm: x86: drop obsolete kvm_cache_regs.h Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 39/42] kvm: arch: finalize plane hooks and kvm_arch_vcpu_create signature Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 40/42] kvm: x86: use kvm_vcpu scheduling-state accessors and struct stat fields Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 41/42] kvm: x86: finalize per-plane APIC state and CPUID placement Sriram Nambakam
2026-08-05 11:03 ` [RFC PATCH v1 42/42] kvm: planes: reconcile core plane state, UAPI and hypercall exit Sriram Nambakam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260805110324.25067-34-snambakam@linux.microsoft.com \
    --to=snambakam@linux.microsoft.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.