From 0c6e0914e0c84944c0d294e28d705743ba01efe3 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Wed, 15 Jun 2016 20:35:16 +0200 Subject: [PATCH 04/13] ppc: Provide function to get CPU class of the host CPU RH-Author: Thomas Huth Message-id: <1466022918-18958-4-git-send-email-thuth@redhat.com> Patchwork-id: 70627 O-Subject: [RHEL-7.3 qemu-kvm-rhev PATCH 3/5] ppc: Provide function to get CPU class of the host CPU Bugzilla: 1341492 RH-Acked-by: Laszlo Ersek RH-Acked-by: Laurent Vivier RH-Acked-by: David Gibson 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 Reviewed-by: Michael Roth Signed-off-by: David Gibson (cherry picked from commit 52b2519c4ea9a6aa4df7abfe35fd1755c5c8546c) Signed-off-by: Miroslav Rezanina --- 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 c4c8146..e684918 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 fc79312..513fd92 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