This adds the KVM_CAP_HAS_SMALLER_MAXPHYADDR capability and a helper function to check for this capability. This will allow QEMU to decide to what to do if the host CPU can't handle GUEST_MAXPHYADDR < HOST_MAXPHYADDR properly. Signed-off-by: Mohammed Gamal <mgamal@xxxxxxxxxx> --- linux-headers/linux/kvm.h | 1 + target/i386/kvm.c | 5 +++++ target/i386/kvm_i386.h | 1 + 3 files changed, 7 insertions(+) diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index 9804495a46..9eb61a303f 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -1017,6 +1017,7 @@ struct kvm_ppc_resize_hpt { #define KVM_CAP_S390_VCPU_RESETS 179 #define KVM_CAP_S390_PROTECTED 180 #define KVM_CAP_PPC_SECURE_GUEST 181 +#define KVM_CAP_SMALLER_MAXPHYADDR 184 #ifdef KVM_CAP_IRQ_ROUTING diff --git a/target/i386/kvm.c b/target/i386/kvm.c index b3c13cb898..01100dbf20 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -136,6 +136,11 @@ bool kvm_has_smm(void) return kvm_check_extension(kvm_state, KVM_CAP_X86_SMM); } +bool kvm_has_smaller_maxphyaddr(void) +{ + return kvm_check_extension(kvm_state, KVM_CAP_SMALLER_MAXPHYADDR); +} + bool kvm_has_adjust_clock_stable(void) { int ret = kvm_check_extension(kvm_state, KVM_CAP_ADJUST_CLOCK); diff --git a/target/i386/kvm_i386.h b/target/i386/kvm_i386.h index 00bde7acaf..513f8eebbb 100644 --- a/target/i386/kvm_i386.h +++ b/target/i386/kvm_i386.h @@ -34,6 +34,7 @@ bool kvm_allows_irq0_override(void); bool kvm_has_smm(void); +bool kvm_has_smaller_maxphyaddr(void); bool kvm_has_adjust_clock_stable(void); bool kvm_has_exception_payload(void); void kvm_synchronize_all_tsc(void); -- 2.26.2