Message ID | 20111215104405.GD21664@redhat.com |
---|---|
State | New |
Headers | show |
On 12/15/2011 04:44 AM, Gleb Natapov wrote: > > Signed-off-by: Gleb Natapov<gleb@redhat.com> This should go in via uq/master. Regards, Anthony Liguori > diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c > index 0b3af90..91a104b 100644 > --- a/target-i386/cpuid.c > +++ b/target-i386/cpuid.c > @@ -1180,10 +1180,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, > break; > case 0xA: > /* Architectural Performance Monitoring Leaf */ > - *eax = 0; > - *ebx = 0; > - *ecx = 0; > - *edx = 0; > + if (kvm_enabled()) { > + KVMState *s = env->kvm_state; > + > + *eax = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EAX); > + *ebx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EBX); > + *ecx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_ECX); > + *edx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EDX); > + } else { > + *eax = 0; > + *ebx = 0; > + *ecx = 0; > + *edx = 0; > + } > break; > case 0xD: > /* Processor Extended State */ > -- > Gleb. > >
On Thu, Dec 15, 2011 at 09:09:32AM -0600, Anthony Liguori wrote: > On 12/15/2011 04:44 AM, Gleb Natapov wrote: > > > >Signed-off-by: Gleb Natapov<gleb@redhat.com> > > This should go in via uq/master. uq/master maintainers can you take it? > > Regards, > > Anthony Liguori > > >diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c > >index 0b3af90..91a104b 100644 > >--- a/target-i386/cpuid.c > >+++ b/target-i386/cpuid.c > >@@ -1180,10 +1180,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, > > break; > > case 0xA: > > /* Architectural Performance Monitoring Leaf */ > >- *eax = 0; > >- *ebx = 0; > >- *ecx = 0; > >- *edx = 0; > >+ if (kvm_enabled()) { > >+ KVMState *s = env->kvm_state; > >+ > >+ *eax = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EAX); > >+ *ebx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EBX); > >+ *ecx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_ECX); > >+ *edx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EDX); > >+ } else { > >+ *eax = 0; > >+ *ebx = 0; > >+ *ecx = 0; > >+ *edx = 0; > >+ } > > break; > > case 0xD: > > /* Processor Extended State */ > >-- > > Gleb. > > > > -- Gleb.
diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c index 0b3af90..91a104b 100644 --- a/target-i386/cpuid.c +++ b/target-i386/cpuid.c @@ -1180,10 +1180,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, break; case 0xA: /* Architectural Performance Monitoring Leaf */ - *eax = 0; - *ebx = 0; - *ecx = 0; - *edx = 0; + if (kvm_enabled()) { + KVMState *s = env->kvm_state; + + *eax = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EAX); + *ebx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EBX); + *ecx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_ECX); + *edx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EDX); + } else { + *eax = 0; + *ebx = 0; + *ecx = 0; + *edx = 0; + } break; case 0xD: /* Processor Extended State */
Signed-off-by: Gleb Natapov <gleb@redhat.com> -- Gleb.