Skip to content

Commit 00f9feb

Browse files
committed
chore: update patch series
Update the patch series from which the CI builds the secret hiding test kernel. Mainly, replace the v4 [1] of the mmap-support series with the v12 [2]. Then rebase it on top of 6.16-rc3 to pick per-module exports that were merged for 6.16. Update the direct map removal patches to what I locally have written for the upcoming v5, folding in the hotfix. Add a new patch that makes kvm-clock work with direct-map removed guest_memfd. UFFD patches are just rebases, particularly KVM Userfault is still the v2. [1]: https://lore.kernel.org/kvm/[email protected]/ [2]: https://lore.kernel.org/kvm/[email protected]/ Signed-off-by: Patrick Roy <[email protected]>
1 parent 0f6b759 commit 00f9feb

File tree

55 files changed

+3727
-1498
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+3727
-1498
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4701f33a10702d5fc577c32434eb62adde0a1ae1
1+
86731a2a651e58953fc949573895f2fa6d456841

resources/hiding_ci/linux_patches/05-mmap-support/0001-mm-Consolidate-freeing-of-typed-folios-on-final-foli.patch

Lines changed: 0 additions & 109 deletions
This file was deleted.
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
From ba45bc1cd4624badfab75d73286d753403b3cfb5 Mon Sep 17 00:00:00 2001
2+
From: Fuad Tabba <[email protected]>
3+
Date: Wed, 11 Jun 2025 14:33:13 +0100
4+
Subject: [PATCH 02/42] KVM: Rename CONFIG_KVM_PRIVATE_MEM to CONFIG_KVM_GMEM
5+
6+
The option KVM_PRIVATE_MEM enables guest_memfd in general. Subsequent
7+
patches add shared memory support to guest_memfd. Therefore, rename it
8+
to KVM_GMEM to make its purpose clearer.
9+
10+
Reviewed-by: Ira Weiny <[email protected]>
11+
Reviewed-by: Gavin Shan <[email protected]>
12+
Reviewed-by: Shivank Garg <[email protected]>
13+
Reviewed-by: Vlastimil Babka <[email protected]>
14+
Co-developed-by: David Hildenbrand <[email protected]>
15+
Signed-off-by: David Hildenbrand <[email protected]>
16+
Signed-off-by: Fuad Tabba <[email protected]>
17+
---
18+
arch/x86/include/asm/kvm_host.h | 2 +-
19+
include/linux/kvm_host.h | 10 +++++-----
20+
virt/kvm/Kconfig | 8 ++++----
21+
virt/kvm/Makefile.kvm | 2 +-
22+
virt/kvm/kvm_main.c | 4 ++--
23+
virt/kvm/kvm_mm.h | 4 ++--
24+
6 files changed, 15 insertions(+), 15 deletions(-)
25+
26+
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
27+
index b4a391929cdb..6e0bbf4c2202 100644
28+
--- a/arch/x86/include/asm/kvm_host.h
29+
+++ b/arch/x86/include/asm/kvm_host.h
30+
@@ -2269,7 +2269,7 @@ void kvm_configure_mmu(bool enable_tdp, int tdp_forced_root_level,
31+
int tdp_max_root_level, int tdp_huge_page_level);
32+
33+
34+
-#ifdef CONFIG_KVM_PRIVATE_MEM
35+
+#ifdef CONFIG_KVM_GMEM
36+
#define kvm_arch_has_private_mem(kvm) ((kvm)->arch.has_private_mem)
37+
#else
38+
#define kvm_arch_has_private_mem(kvm) false
39+
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
40+
index 3bde4fb5c6aa..b2c415e81e2e 100644
41+
--- a/include/linux/kvm_host.h
42+
+++ b/include/linux/kvm_host.h
43+
@@ -601,7 +601,7 @@ struct kvm_memory_slot {
44+
short id;
45+
u16 as_id;
46+
47+
-#ifdef CONFIG_KVM_PRIVATE_MEM
48+
+#ifdef CONFIG_KVM_GMEM
49+
struct {
50+
/*
51+
* Writes protected by kvm->slots_lock. Acquiring a
52+
@@ -722,7 +722,7 @@ static inline int kvm_arch_vcpu_memslots_id(struct kvm_vcpu *vcpu)
53+
* Arch code must define kvm_arch_has_private_mem if support for private memory
54+
* is enabled.
55+
*/
56+
-#if !defined(kvm_arch_has_private_mem) && !IS_ENABLED(CONFIG_KVM_PRIVATE_MEM)
57+
+#if !defined(kvm_arch_has_private_mem) && !IS_ENABLED(CONFIG_KVM_GMEM)
58+
static inline bool kvm_arch_has_private_mem(struct kvm *kvm)
59+
{
60+
return false;
61+
@@ -2527,7 +2527,7 @@ bool kvm_arch_post_set_memory_attributes(struct kvm *kvm,
62+
63+
static inline bool kvm_mem_is_private(struct kvm *kvm, gfn_t gfn)
64+
{
65+
- return IS_ENABLED(CONFIG_KVM_PRIVATE_MEM) &&
66+
+ return IS_ENABLED(CONFIG_KVM_GMEM) &&
67+
kvm_get_memory_attributes(kvm, gfn) & KVM_MEMORY_ATTRIBUTE_PRIVATE;
68+
}
69+
#else
70+
@@ -2537,7 +2537,7 @@ static inline bool kvm_mem_is_private(struct kvm *kvm, gfn_t gfn)
71+
}
72+
#endif /* CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES */
73+
74+
-#ifdef CONFIG_KVM_PRIVATE_MEM
75+
+#ifdef CONFIG_KVM_GMEM
76+
int kvm_gmem_get_pfn(struct kvm *kvm, struct kvm_memory_slot *slot,
77+
gfn_t gfn, kvm_pfn_t *pfn, struct page **page,
78+
int *max_order);
79+
@@ -2550,7 +2550,7 @@ static inline int kvm_gmem_get_pfn(struct kvm *kvm,
80+
KVM_BUG_ON(1, kvm);
81+
return -EIO;
82+
}
83+
-#endif /* CONFIG_KVM_PRIVATE_MEM */
84+
+#endif /* CONFIG_KVM_GMEM */
85+
86+
#ifdef CONFIG_HAVE_KVM_ARCH_GMEM_PREPARE
87+
int kvm_arch_gmem_prepare(struct kvm *kvm, gfn_t gfn, kvm_pfn_t pfn, int max_order);
88+
diff --git a/virt/kvm/Kconfig b/virt/kvm/Kconfig
89+
index 727b542074e7..49df4e32bff7 100644
90+
--- a/virt/kvm/Kconfig
91+
+++ b/virt/kvm/Kconfig
92+
@@ -112,19 +112,19 @@ config KVM_GENERIC_MEMORY_ATTRIBUTES
93+
depends on KVM_GENERIC_MMU_NOTIFIER
94+
bool
95+
96+
-config KVM_PRIVATE_MEM
97+
+config KVM_GMEM
98+
select XARRAY_MULTI
99+
bool
100+
101+
config KVM_GENERIC_PRIVATE_MEM
102+
select KVM_GENERIC_MEMORY_ATTRIBUTES
103+
- select KVM_PRIVATE_MEM
104+
+ select KVM_GMEM
105+
bool
106+
107+
config HAVE_KVM_ARCH_GMEM_PREPARE
108+
bool
109+
- depends on KVM_PRIVATE_MEM
110+
+ depends on KVM_GMEM
111+
112+
config HAVE_KVM_ARCH_GMEM_INVALIDATE
113+
bool
114+
- depends on KVM_PRIVATE_MEM
115+
+ depends on KVM_GMEM
116+
diff --git a/virt/kvm/Makefile.kvm b/virt/kvm/Makefile.kvm
117+
index 724c89af78af..8d00918d4c8b 100644
118+
--- a/virt/kvm/Makefile.kvm
119+
+++ b/virt/kvm/Makefile.kvm
120+
@@ -12,4 +12,4 @@ kvm-$(CONFIG_KVM_ASYNC_PF) += $(KVM)/async_pf.o
121+
kvm-$(CONFIG_HAVE_KVM_IRQ_ROUTING) += $(KVM)/irqchip.o
122+
kvm-$(CONFIG_HAVE_KVM_DIRTY_RING) += $(KVM)/dirty_ring.o
123+
kvm-$(CONFIG_HAVE_KVM_PFNCACHE) += $(KVM)/pfncache.o
124+
-kvm-$(CONFIG_KVM_PRIVATE_MEM) += $(KVM)/guest_memfd.o
125+
+kvm-$(CONFIG_KVM_GMEM) += $(KVM)/guest_memfd.o
126+
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
127+
index eec82775c5bf..898c3d5a7ba8 100644
128+
--- a/virt/kvm/kvm_main.c
129+
+++ b/virt/kvm/kvm_main.c
130+
@@ -4910,7 +4910,7 @@ static int kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg)
131+
case KVM_CAP_MEMORY_ATTRIBUTES:
132+
return kvm_supported_mem_attributes(kvm);
133+
#endif
134+
-#ifdef CONFIG_KVM_PRIVATE_MEM
135+
+#ifdef CONFIG_KVM_GMEM
136+
case KVM_CAP_GUEST_MEMFD:
137+
return !kvm || kvm_arch_has_private_mem(kvm);
138+
#endif
139+
@@ -5344,7 +5344,7 @@ static long kvm_vm_ioctl(struct file *filp,
140+
case KVM_GET_STATS_FD:
141+
r = kvm_vm_ioctl_get_stats_fd(kvm);
142+
break;
143+
-#ifdef CONFIG_KVM_PRIVATE_MEM
144+
+#ifdef CONFIG_KVM_GMEM
145+
case KVM_CREATE_GUEST_MEMFD: {
146+
struct kvm_create_guest_memfd guest_memfd;
147+
148+
diff --git a/virt/kvm/kvm_mm.h b/virt/kvm/kvm_mm.h
149+
index acef3f5c582a..ec311c0d6718 100644
150+
--- a/virt/kvm/kvm_mm.h
151+
+++ b/virt/kvm/kvm_mm.h
152+
@@ -67,7 +67,7 @@ static inline void gfn_to_pfn_cache_invalidate_start(struct kvm *kvm,
153+
}
154+
#endif /* HAVE_KVM_PFNCACHE */
155+
156+
-#ifdef CONFIG_KVM_PRIVATE_MEM
157+
+#ifdef CONFIG_KVM_GMEM
158+
void kvm_gmem_init(struct module *module);
159+
int kvm_gmem_create(struct kvm *kvm, struct kvm_create_guest_memfd *args);
160+
int kvm_gmem_bind(struct kvm *kvm, struct kvm_memory_slot *slot,
161+
@@ -91,6 +91,6 @@ static inline void kvm_gmem_unbind(struct kvm_memory_slot *slot)
162+
{
163+
WARN_ON_ONCE(1);
164+
}
165+
-#endif /* CONFIG_KVM_PRIVATE_MEM */
166+
+#endif /* CONFIG_KVM_GMEM */
167+
168+
#endif /* __KVM_MM_H__ */
169+
--
170+
2.49.0
171+

0 commit comments

Comments
 (0)