@@ -2339,6 +2339,8 @@ enum {
# define kvm_memslots_for_spte_role(kvm, role) __kvm_memslots(kvm, 0)
#endif
+#define KVM_MAX_VCPU_PLANES 16
+
int kvm_cpu_has_injectable_intr(struct kvm_vcpu *v);
int kvm_cpu_has_interrupt(struct kvm_vcpu *vcpu);
int kvm_cpu_has_extint(struct kvm_vcpu *v);
@@ -2455,6 +2457,7 @@ int memslot_rmap_alloc(struct kvm_memory_slot *slot, unsigned long npages);
*/
#define KVM_EXIT_HYPERCALL_MBZ GENMASK_ULL(31, 1)
+int kvm_arch_nr_vcpu_planes(struct kvm *kvm);
bool kvm_arch_planes_share_fpu(struct kvm *kvm);
#endif /* _ASM_X86_KVM_HOST_H */
@@ -13989,6 +13989,12 @@ int kvm_handle_invpcid(struct kvm_vcpu *vcpu, unsigned long type, gva_t gva)
}
EXPORT_SYMBOL_GPL(kvm_handle_invpcid);
+int kvm_arch_nr_vcpu_planes(struct kvm *kvm)
+{
+ /* TODO: use kvm_x86_ops so that SNP can use planes for VTPLs. */
+ return kvm->arch.has_protected_state ? 1 : KVM_MAX_VCPU_PLANES;
+}
+
bool kvm_arch_planes_share_fpu(struct kvm *kvm)
{
return !kvm || kvm->arch.planes_share_fpu;
Allow up to 16 VM planes, it's a nice round number. FIXME: online_vcpus is used by x86 code that deals with TSC synchronization. Maybe kvmclock should be moved to planex. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- arch/x86/include/asm/kvm_host.h | 3 +++ arch/x86/kvm/x86.c | 6 ++++++ 2 files changed, 9 insertions(+)