QEMU/KVM: report paravirt features on cpuid
And the corresponding QEMU support to report parafeatures on cpuid.
Signed-off-by Marcelo Tosatti <[email protected]>
libkvm/libkvm.c +13 -0
@@ -210,6 +210,19 @@ int kvm_dirty_pages_log_reset(kvm_contexreturn kvm_dirty_pages_log_change_all (kvm,0 ); } +__u32 kvm_get_para_features (kvm_context_t kvm) +{ +int r; +__u32 para_features; +#ifdef KVM_CAP_PARA_FEATURES + r =ioctl (kvm->fd,KVM_CHECK_EXTENSION ,KVM_CAP_PARA_FEATURES ); +if (r >0 ) + r =ioctl (kvm->fd,KVM_GET_PARA_FEATURES , ¶_features); +if (r ==0 ) +return para_features; +#endif +return 0 ; +}kvm_context_t kvm_init (struct kvm_callbacks *callbacks,void *opaque)
libkvm/libkvm.h +2 -0
@@ -359,6 +359,8 @@ void kvm_set_cr8(kvm_context_t kvm, int__u64 kvm_get_cr8 (kvm_context_t kvm,int vcpu);#endif +__u32 kvm_get_para_features (kvm_context_t kvm); +/*! * \brief Set a vcpu's signal mask for guest mode *
qemu/qemu-kvm-x86.c +2 -1
@@ -14,6 +14,7 @@ extern int kvm_irqchip;#include <libkvm.h> #include <pthread.h> #include <sys/utsname.h> +#include <linux/kvm_para.h> #define MSR_IA32_TSC 0x10
@@ -533,7 +534,7 @@ int kvm_arch_qemu_init_env(CPUState *cen pv_ent = &cpuid_ent[cpuid_nent++];memset (pv_ent,0 ,sizeof (*pv_ent)); pv_ent->function =KVM_CPUID_FEATURES ; - pv_ent->eax =0 ; + pv_ent->eax =kvm_get_para_features (kvm_context);#endif copy.regs[R_EAX ] =0 ;
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/