On Tue, Jun 07, 2016 at 05:39:39PM +0200, Thomas Huth wrote: > When using an olderr PowerISA level, all the upper compatibility > bits have to be enabled, too. For example when we want to run > something in PowerISA 2.05 compatibility mode on POWER8, the bit > for 2.06 has to be set beside the bit for 2.05. > Additionally, to make sure that we do not set bits that are not > supported by the host, we apply a mask with the known-to-be-good > bits here, too. > > Signed-off-by: Thomas Huth <th...@redhat.com>
This one confused me a bit until I realised that, roughly speaking, bits in the PCR turn features off, rather than turning features on. Does that sound correct? > --- > target-ppc/translate_init.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c > index fa09183..ee2bc14 100644 > --- a/target-ppc/translate_init.c > +++ b/target-ppc/translate_init.c > @@ -9519,24 +9519,29 @@ void ppc_set_compat(PowerPCCPU *cpu, uint32_t > cpu_version, Error **errp) > { > int ret = 0; > CPUPPCState *env = &cpu->env; > + PowerPCCPUClass *host_pcc; > > cpu->cpu_version = cpu_version; > > switch (cpu_version) { > case CPU_POWERPC_LOGICAL_2_05: > - env->spr[SPR_PCR] = PCR_COMPAT_2_05; > + env->spr[SPR_PCR] = PCR_TM_DIS | PCR_VSX_DIS | PCR_COMPAT_2_07 | > + PCR_COMPAT_2_06 | PCR_COMPAT_2_05; > break; > case CPU_POWERPC_LOGICAL_2_06: > - env->spr[SPR_PCR] = PCR_COMPAT_2_06; > - break; > case CPU_POWERPC_LOGICAL_2_06_PLUS: > - env->spr[SPR_PCR] = PCR_COMPAT_2_06; > + env->spr[SPR_PCR] = PCR_TM_DIS | PCR_COMPAT_2_07 | PCR_COMPAT_2_06; > break; > default: > env->spr[SPR_PCR] = 0; > break; > } > > + host_pcc = kvm_ppc_get_host_cpu_class(); > + if (host_pcc) { > + env->spr[SPR_PCR] &= host_pcc->pcr_mask; > + } > + > if (kvm_enabled()) { > ret = kvmppc_set_compat(cpu, cpu->cpu_version); > if (ret < 0) { -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature