[PATCH v4 0/4] Minimal build for RISCV

Connor Davis posted 4 patches 2 years, 10 months ago
Test gitlab-ci passed
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/cover.1621712830.git.connojdavis@gmail.com
There is a newer version of this series
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
[PATCH v4 0/4] Minimal build for RISCV
Posted by Connor Davis 2 years, 10 months ago
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