On Tue, Jun 30, 2026, Xiaoyao Li wrote:
> On 6/19/2026 8:31 AM, Ackerley Tng via B4 Relay wrote:
> > arch/x86/include/asm/kvm_host.h | 4 +++-
> > include/linux/kvm_host.h | 2 +-
> > 2 files changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/x86/include/asm/kvm_host.h
> > b/arch/x86/include/asm/kvm_host.h
> > index 8e8eb8a5e8a6b..1bde67cf6eb0e 100644
> > --- a/arch/x86/include/asm/kvm_host.h
> > +++ b/arch/x86/include/asm/kvm_host.h
> > @@ -2394,7 +2394,9 @@ void kvm_configure_mmu(bool enable_tdp, int
> > tdp_forced_root_level,
> > int tdp_max_root_level, int tdp_huge_page_level);
> > -#ifdef CONFIG_KVM_VM_MEMORY_ATTRIBUTES
> > +#if defined(CONFIG_KVM_SW_PROTECTED_VM) || \
> > + defined(CONFIG_KVM_INTEL_TDX) || \
> > + defined(CONFIG_KVM_AMD_SEV)
>
> Maybe we can just remove the #ifdef and make it always avaiable?
No, because common KVM keys off the macro to determine whether or not PRIVATE is
a supported attribute:
#ifdef kvm_arch_has_private_mem
static u64 kvm_supports_private_mem(struct kvm *kvm)
{
return !kvm || kvm_arch_has_private_mem(kvm);
}
#else
#define kvm_supports_private_mem(kvm) false
#endif
And also whether or not to provide the in-place conversion param (without
PRIVATE,
conversions aren't supported in general):
#ifdef kvm_arch_has_private_mem
bool __ro_after_init gmem_in_place_conversion =
!IS_ENABLED(CONFIG_KVM_VM_MEMORY_ATTRIBUTES);
module_param(gmem_in_place_conversion, bool, 0444);
EXPORT_SYMBOL_FOR_KVM_INTERNAL(gmem_in_place_conversion);
#endif
I agree the #ifdeffery is ugly, but kvm_supports_private_mem() in particular
needs to evaluate to false if PRIVATE memory isn't supported.