qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 6/9] qemu-kvm: Use upstream kvm_arch_get_supported_c


From: Jan Kiszka
Subject: [Qemu-devel] [PATCH 6/9] qemu-kvm: Use upstream kvm_arch_get_supported_cpuid
Date: Fri, 19 Feb 2010 19:22:24 +0100

It is idential to our version now, so drop the copy.

Signed-off-by: Jan Kiszka <address@hidden>
---
 kvm.h             |    3 -
 qemu-kvm-x86.c    |  106 -----------------------------------------------------
 qemu-kvm.h        |    5 --
 target-i386/kvm.c |    4 +-
 4 files changed, 2 insertions(+), 116 deletions(-)

diff --git a/kvm.h b/kvm.h
index b78e469..7f32f95 100644
--- a/kvm.h
+++ b/kvm.h
@@ -130,11 +130,8 @@ void kvm_arch_update_guest_debug(CPUState *env, struct 
kvm_guest_debug *dbg);
 
 int kvm_check_extension(KVMState *s, unsigned int extension);
 
-#ifdef KVM_UPSTREAM
 uint32_t kvm_arch_get_supported_cpuid(CPUState *env, uint32_t function,
                                       int reg);
-#endif
-
 void kvm_cpu_synchronize_state(CPUState *env);
 
 /* generic hooks - to be moved/refactored once there are more users */
diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
index 4cb1cb3..a7bf446 100644
--- a/qemu-kvm-x86.c
+++ b/qemu-kvm-x86.c
@@ -627,106 +627,6 @@ int kvm_disable_tpr_access_reporting(CPUState *env)
 
 #endif
 
-#ifdef KVM_CAP_EXT_CPUID
-
-static struct kvm_cpuid2 *try_get_cpuid(kvm_context_t kvm, int max)
-{
-       struct kvm_cpuid2 *cpuid;
-       int r, size;
-
-       size = sizeof(*cpuid) + max * sizeof(*cpuid->entries);
-       cpuid = qemu_malloc(size);
-       cpuid->nent = max;
-       r = kvm_ioctl(kvm_state, KVM_GET_SUPPORTED_CPUID, cpuid);
-       if (r == 0 && cpuid->nent >= max)
-               r = -E2BIG;
-       if (r < 0) {
-               if (r == -E2BIG) {
-                       free(cpuid);
-                       return NULL;
-               } else {
-                       fprintf(stderr, "KVM_GET_SUPPORTED_CPUID failed: %s\n",
-                               strerror(-r));
-                       exit(1);
-               }
-       }
-       return cpuid;
-}
-
-#define R_EAX 0
-#define R_ECX 1
-#define R_EDX 2
-#define R_EBX 3
-#define R_ESP 4
-#define R_EBP 5
-#define R_ESI 6
-#define R_EDI 7
-
-uint32_t kvm_get_supported_cpuid(kvm_context_t kvm, uint32_t function, int reg)
-{
-       struct kvm_cpuid2 *cpuid;
-       int i, max;
-       uint32_t ret = 0;
-       uint32_t cpuid_1_edx;
-
-       if (!kvm_check_extension(kvm_state, KVM_CAP_EXT_CPUID)) {
-               return -1U;
-       }
-
-       max = 1;
-       while ((cpuid = try_get_cpuid(kvm, max)) == NULL) {
-               max *= 2;
-       }
-
-       for (i = 0; i < cpuid->nent; ++i) {
-               if (cpuid->entries[i].function == function) {
-                       switch (reg) {
-                       case R_EAX:
-                               ret = cpuid->entries[i].eax;
-                               break;
-                       case R_EBX:
-                               ret = cpuid->entries[i].ebx;
-                               break;
-                       case R_ECX:
-                               ret = cpuid->entries[i].ecx;
-                               break;
-                       case R_EDX:
-                               ret = cpuid->entries[i].edx;
-                                if (function == 1) {
-                                    /* kvm misreports the following features
-                                     */
-                                    ret |= 1 << 12; /* MTRR */
-                                    ret |= 1 << 16; /* PAT */
-                                    ret |= 1 << 7;  /* MCE */
-                                    ret |= 1 << 14; /* MCA */
-                                }
-
-                               /* On Intel, kvm returns cpuid according to
-                                * the Intel spec, so add missing bits
-                                * according to the AMD spec:
-                                */
-                               if (function == 0x80000001) {
-                                       cpuid_1_edx = 
kvm_get_supported_cpuid(kvm, 1, R_EDX);
-                                       ret |= cpuid_1_edx & 0xdfeff7ff;
-                               }
-                               break;
-                       }
-               }
-       }
-
-       free(cpuid);
-
-       return ret;
-}
-
-#else
-
-uint32_t kvm_get_supported_cpuid(kvm_context_t kvm, uint32_t function, int reg)
-{
-       return -1U;
-}
-
-#endif
 int kvm_qemu_create_memory_alias(uint64_t phys_start,
                                  uint64_t len,
                                  uint64_t target_phys)
@@ -1690,12 +1590,6 @@ int kvm_arch_init_irq_routing(void)
     return 0;
 }
 
-uint32_t kvm_arch_get_supported_cpuid(CPUState *env, uint32_t function,
-                                      int reg)
-{
-    return kvm_get_supported_cpuid(kvm_context, function, reg);
-}
-
 void kvm_arch_process_irqchip_events(CPUState *env)
 {
     if (env->interrupt_request & CPU_INTERRUPT_INIT) {
diff --git a/qemu-kvm.h b/qemu-kvm.h
index 1266a3f..967162c 100644
--- a/qemu-kvm.h
+++ b/qemu-kvm.h
@@ -859,8 +859,6 @@ int kvm_assign_set_msix_entry(kvm_context_t kvm,
                               struct kvm_assigned_msix_entry *entry);
 #endif
 
-uint32_t kvm_get_supported_cpuid(kvm_context_t kvm, uint32_t function, int 
reg);
-
 #else                           /* !CONFIG_KVM */
 
 typedef struct kvm_context *kvm_context_t;
@@ -1048,9 +1046,6 @@ static inline int kvm_sync_vcpus(void)
     return 0;
 }
 
-uint32_t kvm_arch_get_supported_cpuid(CPUState *env, uint32_t function,
-                                      int reg);
-
 static inline int kvm_set_migration_log(int enable)
 {
     return kvm_physical_memory_set_dirty_tracking(enable);
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 9fb96b5..8743f32 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -25,8 +25,6 @@
 #include "gdbstub.h"
 #include "host-utils.h"
 
-#ifdef KVM_UPSTREAM
-
 #ifdef CONFIG_KVM_PARA
 #include <linux/kvm_para.h>
 #endif
@@ -133,6 +131,8 @@ uint32_t kvm_arch_get_supported_cpuid(CPUState *env, 
uint32_t function, int reg)
 
 #endif
 
+#ifdef KVM_UPSTREAM
+
 static void kvm_trim_features(uint32_t *features, uint32_t supported)
 {
     int i;
-- 
1.6.0.2





reply via email to

[Prev in Thread] Current Thread [Next in Thread]