ppc: Provide function to get CPU class of the host CPU
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> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
8cd2ce7aaa
commit
52b2519c4e
|
@ -2329,6 +2329,19 @@ static PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc)
|
||||||
return POWERPC_CPU_CLASS(oc);
|
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)
|
static int kvm_ppc_register_host_cpu_type(void)
|
||||||
{
|
{
|
||||||
TypeInfo type_info = {
|
TypeInfo type_info = {
|
||||||
|
@ -2336,14 +2349,10 @@ static int kvm_ppc_register_host_cpu_type(void)
|
||||||
.instance_init = kvmppc_host_cpu_initfn,
|
.instance_init = kvmppc_host_cpu_initfn,
|
||||||
.class_init = kvmppc_host_cpu_class_init,
|
.class_init = kvmppc_host_cpu_class_init,
|
||||||
};
|
};
|
||||||
uint32_t host_pvr = mfpvr();
|
|
||||||
PowerPCCPUClass *pvr_pcc;
|
PowerPCCPUClass *pvr_pcc;
|
||||||
DeviceClass *dc;
|
DeviceClass *dc;
|
||||||
|
|
||||||
pvr_pcc = ppc_cpu_class_by_pvr(host_pvr);
|
pvr_pcc = kvm_ppc_get_host_cpu_class();
|
||||||
if (pvr_pcc == NULL) {
|
|
||||||
pvr_pcc = ppc_cpu_class_by_pvr_mask(host_pvr);
|
|
||||||
}
|
|
||||||
if (pvr_pcc == NULL) {
|
if (pvr_pcc == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,6 +56,7 @@ void kvmppc_hash64_write_pte(CPUPPCState *env, target_ulong pte_index,
|
||||||
bool kvmppc_has_cap_fixup_hcalls(void);
|
bool kvmppc_has_cap_fixup_hcalls(void);
|
||||||
int kvmppc_enable_hwrng(void);
|
int kvmppc_enable_hwrng(void);
|
||||||
int kvmppc_put_books_sregs(PowerPCCPU *cpu);
|
int kvmppc_put_books_sregs(PowerPCCPU *cpu);
|
||||||
|
PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -252,6 +253,12 @@ static inline int kvmppc_put_books_sregs(PowerPCCPU *cpu)
|
||||||
{
|
{
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_KVM
|
#ifndef CONFIG_KVM
|
||||||
|
|
Loading…
Reference in a new issue