This patch series reprensent a bunch of patches necessary to enable common part of Dom0less. The stuff necessary to start/launch domains will be introduced separately.
This patch series is based on [1], but a lot of patch could go even without it. [1] https://lore.kernel.org/xen-devel/[email protected]/ Oleksii Kurochko (27): xen/riscv: Implement ARCH_PAGING_MEMPOOL xen/riscv: Implement construct_domain() xen/riscv: implement prerequisites for domain_create() xen/riscv: rework G-stage mode handling xen/riscv: introduce guest riscv,isa string xen/riscv: implement make_cpus_node() xen/riscv: implement make_timer_node() xen/riscv: implement make_arch_nodes() xen/riscv: implement make_intc_domU_node() xen/riscv: generate IMSIC DT node for guest domains xen/riscv: create APLIC DT node for guest domains xen/riscv: introduce aia_init() and aia_available() xen/riscv: add basic VGEIN management for AIA guests xen/riscv: introduce per-vCPU IMSIC state xen/riscv: add very early virtual APLIC (vAPLIC) initialization support xen/riscv: implement IRQ mapping for device passthrough xen/riscv: add missing APLIC register offsets, masks to asm/aplic.h. xen/riscv: add vaplic access check xen/riscv: emulate guest writes to virtual APLIC MMIO xen/riscv: emulate guest reads from virtual APLIC MMIO xen/riscv: introduce (de)initialization helpers for vINTC xen/riscv: implement init_intc_phandle() xen/riscv: call do_initcalls() in start_xen() xen/riscv: init rcu xen/riscv: setup system domains xen/riscv: provide init_vuart() xen/riscv: add initial dom0less infrastructure support xen/arch/riscv/Kconfig | 2 + xen/arch/riscv/Makefile | 6 +- xen/arch/riscv/aia.c | 135 +++++++ xen/arch/riscv/aplic.c | 83 +++++ xen/arch/riscv/cpufeature.c | 33 ++ xen/arch/riscv/dom0less-build.c | 63 ++++ xen/arch/riscv/domain-build.c | 175 +++++++++ xen/arch/riscv/domain.c | 41 ++- xen/arch/riscv/imsic.c | 155 ++++++++ xen/arch/riscv/include/asm/aia.h | 28 ++ xen/arch/riscv/include/asm/aplic.h | 37 ++ xen/arch/riscv/include/asm/cpufeature.h | 2 + xen/arch/riscv/include/asm/domain.h | 17 + xen/arch/riscv/include/asm/imsic.h | 24 ++ xen/arch/riscv/include/asm/intc.h | 51 ++- xen/arch/riscv/include/asm/p2m.h | 9 +- xen/arch/riscv/include/asm/setup.h | 21 +- xen/arch/riscv/include/asm/vaplic.h | 36 ++ xen/arch/riscv/intc.c | 60 ++++ xen/arch/riscv/p2m.c | 91 +++-- xen/arch/riscv/setup.c | 14 + xen/arch/riscv/stubs.c | 9 +- xen/arch/riscv/vaplic.c | 449 ++++++++++++++++++++++++ xen/arch/riscv/vmid.c | 2 +- xen/include/public/arch-riscv.h | 3 + xen/include/public/device_tree_defs.h | 1 + 26 files changed, 1488 insertions(+), 59 deletions(-) create mode 100644 xen/arch/riscv/aia.c create mode 100644 xen/arch/riscv/dom0less-build.c create mode 100644 xen/arch/riscv/domain-build.c create mode 100644 xen/arch/riscv/include/asm/aia.h create mode 100644 xen/arch/riscv/include/asm/vaplic.h create mode 100644 xen/arch/riscv/vaplic.c -- 2.53.0
