On 6/30/2026 9:06 PM, Sean Christopherson wrote:
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.

I agree with the above after seeing the later patches. But just to the state where this patch applies on top, the #ifdef is not necessary.

Maybe add some log to explain it will be helpful.

Reply via email to