Message ID | 1465313980-31281-4-git-send-email-thuth@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Quoting Thomas Huth (2016-06-07 10:39:38) > When running with KVM, we might be interested in some details > of the host CPU class, too, so provide a function to get the > corresponding CPU class. > > Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com> > --- > target-ppc/kvm.c | 19 ++++++++++++++----- > target-ppc/kvm_ppc.h | 7 +++++++ > 2 files changed, 21 insertions(+), 5 deletions(-) > > diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c > index 24d6032..6c15361 100644 > --- a/target-ppc/kvm.c > +++ b/target-ppc/kvm.c > @@ -2329,6 +2329,19 @@ static PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc) > return POWERPC_CPU_CLASS(oc); > } > > +PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void) > +{ > + uint32_t host_pvr = mfpvr(); > + PowerPCCPUClass *pvr_pcc; > + > + pvr_pcc = ppc_cpu_class_by_pvr(host_pvr); > + if (pvr_pcc == NULL) { > + pvr_pcc = ppc_cpu_class_by_pvr_mask(host_pvr); > + } > + > + return pvr_pcc; > +} > + > static int kvm_ppc_register_host_cpu_type(void) > { > TypeInfo type_info = { > @@ -2336,14 +2349,10 @@ static int kvm_ppc_register_host_cpu_type(void) > .instance_init = kvmppc_host_cpu_initfn, > .class_init = kvmppc_host_cpu_class_init, > }; > - uint32_t host_pvr = mfpvr(); > PowerPCCPUClass *pvr_pcc; > DeviceClass *dc; > > - pvr_pcc = ppc_cpu_class_by_pvr(host_pvr); > - if (pvr_pcc == NULL) { > - pvr_pcc = ppc_cpu_class_by_pvr_mask(host_pvr); > - } > + pvr_pcc = kvm_ppc_get_host_cpu_class(); > if (pvr_pcc == NULL) { > return -1; > } > diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h > index 3b2090e..20bfb59 100644 > --- a/target-ppc/kvm_ppc.h > +++ b/target-ppc/kvm_ppc.h > @@ -56,6 +56,7 @@ void kvmppc_hash64_write_pte(CPUPPCState *env, target_ulong pte_index, > bool kvmppc_has_cap_fixup_hcalls(void); > int kvmppc_enable_hwrng(void); > int kvmppc_put_books_sregs(PowerPCCPU *cpu); > +PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void); > > #else > > @@ -252,6 +253,12 @@ static inline int kvmppc_put_books_sregs(PowerPCCPU *cpu) > { > abort(); > } > + > +static inline PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void) > +{ > + return NULL; > +} > + > #endif > > #ifndef CONFIG_KVM > -- > 1.8.3.1 > >
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index 24d6032..6c15361 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -2329,6 +2329,19 @@ static PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc) return POWERPC_CPU_CLASS(oc); } +PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void) +{ + uint32_t host_pvr = mfpvr(); + PowerPCCPUClass *pvr_pcc; + + pvr_pcc = ppc_cpu_class_by_pvr(host_pvr); + if (pvr_pcc == NULL) { + pvr_pcc = ppc_cpu_class_by_pvr_mask(host_pvr); + } + + return pvr_pcc; +} + static int kvm_ppc_register_host_cpu_type(void) { TypeInfo type_info = { @@ -2336,14 +2349,10 @@ static int kvm_ppc_register_host_cpu_type(void) .instance_init = kvmppc_host_cpu_initfn, .class_init = kvmppc_host_cpu_class_init, }; - uint32_t host_pvr = mfpvr(); PowerPCCPUClass *pvr_pcc; DeviceClass *dc; - pvr_pcc = ppc_cpu_class_by_pvr(host_pvr); - if (pvr_pcc == NULL) { - pvr_pcc = ppc_cpu_class_by_pvr_mask(host_pvr); - } + pvr_pcc = kvm_ppc_get_host_cpu_class(); if (pvr_pcc == NULL) { return -1; } diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h index 3b2090e..20bfb59 100644 --- a/target-ppc/kvm_ppc.h +++ b/target-ppc/kvm_ppc.h @@ -56,6 +56,7 @@ void kvmppc_hash64_write_pte(CPUPPCState *env, target_ulong pte_index, bool kvmppc_has_cap_fixup_hcalls(void); int kvmppc_enable_hwrng(void); int kvmppc_put_books_sregs(PowerPCCPU *cpu); +PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void); #else @@ -252,6 +253,12 @@ static inline int kvmppc_put_books_sregs(PowerPCCPU *cpu) { abort(); } + +static inline PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void) +{ + return NULL; +} + #endif #ifndef CONFIG_KVM
When running with KVM, we might be interested in some details of the host CPU class, too, so provide a function to get the corresponding CPU class. Signed-off-by: Thomas Huth <thuth@redhat.com> --- target-ppc/kvm.c | 19 ++++++++++++++----- target-ppc/kvm_ppc.h | 7 +++++++ 2 files changed, 21 insertions(+), 5 deletions(-)