Message ID | 20240712120247.477133-13-npiggin@gmail.com |
---|---|
State | New |
Headers | show |
Series | ppc/pnv: Better big-core model, lpar-per-core, PC unit | expand |
On 7/12/24 14:02, Nicholas Piggin wrote: > Power9/10 CPUs have PVR[51] set in small-core mode and clear in big-core > mode. This is used by skiboot firmware. > > PVR is not hypervisor-privileged but it is not so important that spapr > to implement this because it's generally masked out of PVR matching code > in kernels, and only used by firmware. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Thanks, C. > --- > hw/ppc/pnv_core.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c > index 16d40392db..a96ec4e2b9 100644 > --- a/hw/ppc/pnv_core.c > +++ b/hw/ppc/pnv_core.c > @@ -58,6 +58,10 @@ static void pnv_core_cpu_reset(PnvCore *pc, PowerPCCPU *cpu) > env->nip = 0x10; > env->msr |= MSR_HVB; /* Hypervisor mode */ > env->spr[SPR_HRMOR] = pc->hrmor; > + if (pc->big_core) { > + /* Clear "small core" bit on Power9/10 (this is set in default PVR) */ > + env->spr[SPR_PVR] &= ~PPC_BIT(51); > + } > hreg_compute_hflags(env); > ppc_maybe_interrupt(env); >
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c index 16d40392db..a96ec4e2b9 100644 --- a/hw/ppc/pnv_core.c +++ b/hw/ppc/pnv_core.c @@ -58,6 +58,10 @@ static void pnv_core_cpu_reset(PnvCore *pc, PowerPCCPU *cpu) env->nip = 0x10; env->msr |= MSR_HVB; /* Hypervisor mode */ env->spr[SPR_HRMOR] = pc->hrmor; + if (pc->big_core) { + /* Clear "small core" bit on Power9/10 (this is set in default PVR) */ + env->spr[SPR_PVR] &= ~PPC_BIT(51); + } hreg_compute_hflags(env); ppc_maybe_interrupt(env);
Power9/10 CPUs have PVR[51] set in small-core mode and clear in big-core mode. This is used by skiboot firmware. PVR is not hypervisor-privileged but it is not so important that spapr to implement this because it's generally masked out of PVR matching code in kernels, and only used by firmware. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- hw/ppc/pnv_core.c | 4 ++++ 1 file changed, 4 insertions(+)