This patch implements Loongson VirtualiZation (LVZ) extension support
for LoongArch's TCG target. With this patch, it is now possible to start
a nested KVM-accelerated virtual machine on a TCG-emulated virtual machine.
SignKirigami (23):
target/loongarch: select sys state by VM level
target/loongarch: add get_sys() helper
target/loongarch: add LVZ feature switcher
target/loongarch: add LVZ CSR metadata
target/loongarch: add vm level 1 definition
target/loongarch: add definition about guest mmu_idx
target/loongarch: add LVZ guest interrupt state
target/loongarch: add LVZ guest timer
target/loongarch: handle return to guest in ertn
target/loongarch: handle LVZ exception and vm_exit
target/loongarch: add host TLBRet and handle
target/loongarch: add gid management functions
target/loongarch: add LVZ parameters to TLB functions
target/loongarch: add LVZ to TLB functions
target/loongarch: add LVZ to invtlb
target/loongarch: add LVZ to ptw
target/loongarch: add LVZ migration state
target/loongarch: add gcsr instructions and vm level 1 csr management
target/loongarch: add LVZ CSRs
target/loongarch: translate LVZ guest TLB instructions
target/loongarch: translate LVZ guest traps and HVC
target/loongarch: initialize CSR related to LVZ
target/loongarch: exit to vm level 0 for fpd, sxd and asxd of vm level
0
target/loongarch/cpu-csr.h | 38 ++
target/loongarch/cpu-mmu.h | 36 +-
target/loongarch/cpu.c | 87 +++-
target/loongarch/cpu.h | 105 ++++-
target/loongarch/cpu_helper.c | 73 ++--
target/loongarch/csr.c | 102 ++---
target/loongarch/csr.h | 1 +
target/loongarch/disas.c | 15 +
target/loongarch/insns.decode | 14 +
target/loongarch/internals.h | 4 +-
target/loongarch/machine.c | 104 +++++
target/loongarch/tcg/csr_helper.c | 131 ++++--
target/loongarch/tcg/helper.h | 49 ++-
.../tcg/insn_trans/trans_extra.c.inc | 5 +
.../tcg/insn_trans/trans_privileged.c.inc | 290 +++++++++++--
target/loongarch/tcg/op_helper.c | 37 ++
target/loongarch/tcg/tcg_cpu.c | 94 +++--
target/loongarch/tcg/tcg_loongarch.h | 3 +-
target/loongarch/tcg/tlb_helper.c | 395 ++++++++++++------
target/loongarch/tcg/translate.c | 3 +
target/loongarch/translate.h | 1 +
21 files changed, 1245 insertions(+), 342 deletions(-)
--
2.55.0