Skip to contentSkip to conversation

QEMU/KVM: report paravirt features on cpuid

PATCH Marcelo Tosatti 1 participant 1 message Jan 30, 2008 KVM

lore
Share & tools
lore
#0 lore raw

And the corresponding QEMU support to report parafeatures on cpuid.

libkvm/libkvm.c +13 -0
Index: kvm-userspace/libkvm/libkvm.c
===================================================================
@@ -210,6 +210,19 @@ int kvm_dirty_pages_log_reset(kvm_contex
 	return 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, &para_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
Index: kvm-userspace/libkvm/libkvm.h
===================================================================
@@ -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
Index: kvm-userspace/qemu/qemu-kvm-x86.c
===================================================================
@@ -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/