xemu/target
Nicholas Piggin 7cebc5db2e target/ppc: Introduce a vhyp framework for nested HV support
Introduce virtual hypervisor methods that can support a "Nested KVM HV"
implementation using the bare metal 2-level radix MMU, and using HV
exceptions to return from H_ENTER_NESTED (rather than cause interrupts).

HV exceptions can now be raised in the TCG spapr machine when running a
nested KVM HV guest. The main ones are the lev==1 syscall, the hdecr,
hdsi and hisi, hv fu, and hv emu, and h_virt external interrupts.

HV exceptions are intercepted in the exception handler code and instead
of causing interrupts in the guest and switching the machine to HV mode,
they go to the vhyp where it may exit the H_ENTER_NESTED hcall with the
interrupt vector numer as return value as required by the hcall API.

Address translation is provided by the 2-level page table walker that is
implemented for the bare metal radix MMU. The partition scope page table
is pointed to the L1's partition scope by the get_pate vhc method.

Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20220216102545.1808018-9-npiggin@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
2022-02-18 08:34:14 +01:00
..
alpha exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
arm arm: force flag recalculation when messing with DAIF 2022-02-08 10:56:28 +00:00
avr target/avr: Drop checks for singlestep_enabled 2021-10-15 16:39:14 -07:00
cris exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
hexagon target/hexagon/cpu.h: don't include qemu-common.h 2021-12-15 10:35:26 +00:00
hppa hppa: Add support for an emulated TOC/NMI button. 2022-02-02 18:46:42 +01:00
i386 target/i386: use CPU_LOG_INT for IRQ servicing 2022-02-09 12:08:42 +00:00
m68k target/m68k: don't word align SP in stack frame if M68K_FEATURE_UNALIGNED_DATA feature enabled 2022-01-09 12:05:02 +01:00
microblaze target/microblaze: Do not set MO_ALIGN for user-only 2021-11-02 07:00:52 -04:00
mips target/mips: Extract trap code into env->error_code 2022-01-11 18:40:44 +01:00
nios2 linux-user/nios2: Map a real kuser page 2022-01-06 11:40:52 +01:00
openrisc Remove unnecessary minimum_version_id_old fields 2022-01-28 15:38:23 +01:00
ppc target/ppc: Introduce a vhyp framework for nested HV support 2022-02-18 08:34:14 +01:00
riscv target/riscv: add support for svpbmt extension 2022-02-16 12:25:52 +10:00
rx target/rx/cpu.h: Don't include qemu-common.h 2021-12-15 10:35:26 +00:00
s390x s390x: sigp: Reorder the SIGP STOP code 2022-01-18 15:00:57 +01:00
sh4 exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
sparc Remove unnecessary minimum_version_id_old fields 2022-01-28 15:38:23 +01:00
tricore exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
xtensa exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
meson.build Drop the deprecated unicore32 target 2021-05-12 18:20:52 +02:00