FWIW: for project EVE, the timing on this is perfect -- I've just
started a complete RISC-V port:
https://github.com/lf-edge/eve/pull/2083
Targeting KVM for now, but would be awesome to see at least some
rudimentary RISC-V support land in Xen.
Connor, I'll be merging your changes into my patchset on EVE side ASAP
-- just to start playing with it.
Thanks,
Roman.
On Fri, May 14, 2021 at 11:54 AM Connor Davis <connojdavis@gmail.com> wrote:
>
> Hi all,
>
> This series introduces a minimal build for RISCV. It is based on Bobby's
> previous work from last year[0] rebased onto current Xen.
>
> This series provides the patches necessary to get a minimal build
> working. The build is "minimal" in the sense that it only supports
> building TARGET=head.o. The arch/riscv/head.S is just a simple while(1).
>
> The first 3 patches are mods to non-RISCV bits that enable building a
> config with:
>
> !CONFIG_HAS_NS16550
> !CONFIG_HAS_PASSTHROUGH
> !CONFIG_GRANT_TABLE
>
> respectively. The fourth patch adds the make/Kconfig boilerplate
> alongside head.S and asm-riscv/config.h (head.S references ENTRY
> that is defined in asm-riscv/config.h).
>
> The last adds a docker container for doing the build. To build from the
> docker container (after creating it locally), you can run the following:
>
> $ make XEN_TARGET_ARCH=riscv64 SUBSYSTEMS=xen -C xen TARGET=head.o
>
> --
> Changes since v2:
> - Reduced number of riscv files added to ease review
>
> Changes since v1:
> - Dropped "xen/sched: Fix build when NR_CPUS == 1" since this was
> fixed for 4.15
> - Moved #ifdef-ary around iommu_enabled to iommu.h
> - Moved struct grant_table declaration above ifdef CONFIG_GRANT_TABLE
> instead of defining an empty struct when !CONFIG_GRANT_TABLE
>
> Connor Davis (5):
> xen/char: Default HAS_NS16550 to y only for X86 and ARM
> xen/common: Guard iommu symbols with CONFIG_HAS_PASSTHROUGH
> xen: Fix build when !CONFIG_GRANT_TABLE
> xen: Add files needed for minimal riscv build
> automation: Add container for riscv64 builds
>
> automation/build/archlinux/riscv64.dockerfile | 33 ++++++
> automation/scripts/containerize | 1 +
> config/riscv64.mk | 5 +
> xen/Makefile | 8 +-
> xen/arch/riscv/Kconfig | 52 +++++++++
> xen/arch/riscv/Kconfig.debug | 0
> xen/arch/riscv/Makefile | 0
> xen/arch/riscv/Rules.mk | 0
> xen/arch/riscv/arch.mk | 16 +++
> xen/arch/riscv/asm-offsets.c | 0
> xen/arch/riscv/configs/riscv64_defconfig | 12 ++
> xen/arch/riscv/head.S | 6 +
> xen/common/memory.c | 10 ++
> xen/drivers/char/Kconfig | 2 +-
> xen/include/asm-riscv/config.h | 110 ++++++++++++++++++
> xen/include/xen/grant_table.h | 3 +-
> xen/include/xen/iommu.h | 8 +-
> 17 files changed, 261 insertions(+), 5 deletions(-)
> create mode 100644 automation/build/archlinux/riscv64.dockerfile
> create mode 100644 config/riscv64.mk
> create mode 100644 xen/arch/riscv/Kconfig
> create mode 100644 xen/arch/riscv/Kconfig.debug
> create mode 100644 xen/arch/riscv/Makefile
> create mode 100644 xen/arch/riscv/Rules.mk
> create mode 100644 xen/arch/riscv/arch.mk
> create mode 100644 xen/arch/riscv/asm-offsets.c
> create mode 100644 xen/arch/riscv/configs/riscv64_defconfig
> create mode 100644 xen/arch/riscv/head.S
> create mode 100644 xen/include/asm-riscv/config.h
>
> --
> 2.31.1
>
>