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 2 patches are mods to non-RISCV bits that enable building a
config with:
!CONFIG_HAS_NS16550
!CONFIG_HAS_PASSTHROUGH
respectively. The third 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=riscv SUBSYSTEMS=xen -C xen tiny64_defconfig
$ make XEN_TARGET_ARCH=riscv SUBSYSTEMS=xen -C xen TARGET=head.o
[0] https://lore.kernel.org/xen-devel/cover.1579615303.git.bobbyeshleman@gmail.com/
Thanks,
Connor
--
Changes since v3:
- Dropped "xen: Fix build when !CONFIG_GRANT_TABLE" since this was
applied by Jan
- Adjusted Kconfig condition for building NS16550
- Use bool rather than bool_t
- Removed riscv memory map, as this should probably be done later once
the frametable size is figured out
- Consolidated 64-bit #defines in asm-riscv/config.h
- Renamed riscv64_defconfig to tiny64_defconfig, added CONFIG_DEBUG
and CONFIG_DEBUG_INFO
- Fixed logic/alignment/whitespace issues in Kconfig files
- Use upstream archlinux riscv64 cross-compiler packages instead of
custom built toolchain in docker container
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 (4):
xen/char: Default HAS_NS16550 to y only for X86 and ARM
xen/common: Guard iommu symbols with CONFIG_HAS_PASSTHROUGH
xen: Add files needed for minimal riscv build
automation: Add container for riscv64 builds
automation/build/archlinux/riscv64.dockerfile | 19 ++++++++
automation/scripts/containerize | 1 +
config/riscv.mk | 4 ++
xen/Makefile | 8 +++-
xen/arch/riscv/Kconfig | 47 +++++++++++++++++++
xen/arch/riscv/Kconfig.debug | 0
xen/arch/riscv/Makefile | 0
xen/arch/riscv/Rules.mk | 0
xen/arch/riscv/arch.mk | 14 ++++++
xen/arch/riscv/asm-offsets.c | 0
xen/arch/riscv/configs/tiny64_defconfig | 13 +++++
xen/arch/riscv/head.S | 6 +++
xen/common/memory.c | 10 ++++
xen/drivers/char/Kconfig | 1 +
xen/include/asm-riscv/config.h | 47 +++++++++++++++++++
xen/include/xen/iommu.h | 8 +++-
16 files changed, 175 insertions(+), 3 deletions(-)
create mode 100644 automation/build/archlinux/riscv64.dockerfile
create mode 100644 config/riscv.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/tiny64_defconfig
create mode 100644 xen/arch/riscv/head.S
create mode 100644 xen/include/asm-riscv/config.h
base-commit: d4fb5f166c2bfbaf9ba0de69da0d411288f437a9
--
2.31.1