qemu-patch-raspberry4/target/ppc
David Gibson 682c1dfb86 target/ppc: Correct handling of real mode accesses with vhyp on hash MMU
On ppc we have the concept of virtual hypervisor ("vhyp") mode, where we
only model the non-hypervisor-privileged parts of the cpu.  Essentially we
model the hypervisor's behaviour from the point of view of a guest OS, but
we don't model the hypervisor's execution.

In particular, in this mode, qemu's notion of target physical address is
a guest physical address from the vcpu's point of view.  So accesses in
guest real mode don't require translation.  If we were modelling the
hypervisor mode, we'd need to translate the guest physical address into
a host physical address.

Currently, we handle this sloppily: we rely on setting up the virtual LPCR
and RMOR registers so that GPAs are simply HPAs plus an offset, which we
set to zero.  This is already conceptually dubious, since the LPCR and RMOR
registers don't exist in the non-hypervisor portion of the CPU.  It gets
worse with POWER9, where RMOR and LPCR[VPM0] no longer exist at all.

Clean this up by explicitly handling the vhyp case.  While we're there,
remove some unnecessary nesting of if statements that made the logic to
select the correct real mode behaviour a bit less clear than it could be.

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>
2020-03-17 09:41:15 +11:00
..
translate target/ppc: Fix typo in comments 2020-02-21 09:15:04 +11:00
arch_dump.c target/ppc: Add helper_mfvscr 2019-02-18 11:00:44 +11:00
compat.c target/ppc: Add POWER10 DD1.0 model information 2019-12-17 10:39:48 +11:00
cpu-models.c target/ppc: Add POWER10 DD1.0 model information 2019-12-17 10:39:48 +11:00
cpu-models.h target/ppc: Add POWER10 DD1.0 model information 2019-12-17 10:39:48 +11:00
cpu-param.h tcg: Split out target/arch/cpu-param.h 2019-06-10 07:03:34 -07:00
cpu-qom.h powerpc/spapr: Add host threads parameter to ibm,get_system_parameter 2019-08-29 09:46:07 +10:00
cpu.c target/ppc: support for 32-bit carry and overflow 2017-03-01 11:23:39 +11:00
cpu.h ppc: Remove stub support for 32-bit hypervisor mode 2020-03-17 09:41:14 +11:00
dfp_helper.c target/ppc: remove unnecessary if() around calls to set_dfp{64,128}() in DFP macros 2019-10-04 19:08:21 +10:00
excp_helper.c target/ppc: add support for Hypervisor Facility Unavailable Exception 2020-02-02 14:07:57 +11:00
fpu_helper.c target/ppc: Fix typo in comments 2020-02-21 09:15:04 +11:00
gdbstub.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
helper.h target/ppc: Add privileged message send facilities 2020-02-02 14:07:57 +11:00
helper_regs.h ppc: Ignore the CPU_INTERRUPT_EXITTB interrupt with KVM 2019-12-17 10:39:48 +11:00
int_helper.c target/ppc: use Vsr macros in BCD helpers 2019-10-04 19:08:21 +10:00
internal.h ppc: Add support for 'mffscrn','mffscrni' instructions 2019-10-04 10:25:23 +10:00
kvm-stub.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
kvm.c target/ppc: Build rtas error log upon an MCE 2020-02-03 11:33:10 +11:00
kvm_ppc.h target/ppc: Handle NMI guest exit 2020-02-03 11:33:10 +11:00
machine.c Include hw/boards.h a bit less 2019-08-16 13:31:53 +02:00
Makefile.objs build: remove CONFIG_LIBDECNUMBER 2017-10-16 18:03:52 +02:00
mem_helper.c target/ppc: Use probe_write for DCBZ 2020-02-03 11:33:11 +11:00
mfrom_table.inc.c target/ppc: Style fixes for mfrom_table.inc.c & mfrom_table_gen.c 2019-04-26 10:42:38 +10:00
mfrom_table_gen.c target/ppc: Style fixes for mfrom_table.inc.c & mfrom_table_gen.c 2019-04-26 10:42:38 +10:00
misc_helper.c target/ppc: add support for Hypervisor Facility Unavailable Exception 2020-02-02 14:07:57 +11:00
mmu-book3s-v3.c target/ppc: Support for POWER9 native hash 2019-02-26 09:21:25 +11:00
mmu-book3s-v3.h Clean up header guards that don't match their file name 2019-05-13 08:58:55 +02:00
mmu-hash32.c ppc/hash32: Rework R and C bit updates 2019-04-26 11:37:57 +10:00
mmu-hash32.h target/ppc: Manage external HPT via virtual hypervisor 2017-03-01 11:23:39 +11:00
mmu-hash64.c target/ppc: Correct handling of real mode accesses with vhyp on hash MMU 2020-03-17 09:41:15 +11:00
mmu-hash64.h ppc/hash64: Rework R and C bit updates 2019-04-26 11:37:57 +10:00
mmu-radix64.c ppc/pnv: Add support for HRMOR on Radix host 2020-02-02 14:07:57 +11:00
mmu-radix64.h target/ppc: Rename PATB/PATBE -> PATE 2019-02-26 09:21:25 +11:00
mmu_helper.c target/ppc: Rewrite a fall through comment 2019-08-21 10:57:28 +02:00
monitor.c hmp: Move hmp.h to include/monitor/ 2019-07-02 07:19:45 +02:00
timebase_helper.c target/ppc: Add SPR TBU40 2019-12-17 10:39:48 +11:00
trace-events target/ppc: Handle NMI guest exit 2020-02-03 11:33:10 +11:00
translate.c target/ppc: Add privileged message send facilities 2020-02-02 14:07:57 +11:00
translate_init.inc.c ppc: Remove stub of PPC970 HID4 implementation 2020-03-17 09:41:14 +11:00
user_only_helper.c target/ppc: Convert to CPUClass::tlb_fill 2019-05-10 11:12:50 -07:00