spapr, ppc: Remove VPM0/RMLS hacks for POWER9
commite8b1144e73544ea6e42f8948d61f6c23312a78c5
authorDavid Gibson <david@gibson.dropbear.id.au>
Mon, 6 Jan 2020 02:12:34 +0000 (6 13:12 +1100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Mon, 16 Mar 2020 22:41:15 +0000 (17 09:41 +1100)
tree0559452b650d9f0611924910655262bcbc7bba86
parent1b99e029c5e7bc99d45a9a9b74f2d4d4a3d5befb
spapr, ppc: Remove VPM0/RMLS hacks for POWER9

For the "pseries" machine, we use "virtual hypervisor" mode where we
only model the CPU in non-hypervisor privileged mode.  This means that
we need guest physical addresses within the modelled cpu to be treated
as absolute physical addresses.

We used to do that by clearing LPCR[VPM0] and setting LPCR[RMLS] to a high
limit so that the old offset based translation for guest mode applied,
which does what we need.  However, POWER9 has removed support for that
translation mode, which meant we had some ugly hacks to keep it working.

We now explicitly handle this sort of translation for virtual hypervisor
mode, so the hacks aren't necessary.  We don't need to set VPM0 and RMLS
from the machine type code - they're now ignored in vhyp mode.  On the cpu
side we don't need to allow LPCR[RMLS] to be set on POWER9 in vhyp mode -
that was only there to allow the hack on the machine side.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
hw/ppc/spapr_cpu_core.c
target/ppc/mmu-hash64.c