mbox series

[v5,0/3] Initial support for Power

Message ID cover.1687283294.git.sanastasio@raptorengineering.com (mailing list archive)
Headers show
Series Initial support for Power | expand

Message

Shawn Anastasio June 20, 2023, 6:12 p.m. UTC
Hello all,

This patch series adds support for building a minimal image
for Power ISA 2.07B+ (POWER8+) systems. In addition to a patch adding
support to the build system and a simple infinite loop at the
entrypoint, patches to add ppc64le support to the CI as well as a
MAINTAINERS update are included.

Since Xen previously had support for a much older version of the ISA in
version 3.2.3, we were able to carry over some headers and support
routines from that version. Unlike that initial port though, this effort
focuses solely on POWER8+ CPUs that are capable of running in Little
Endian mode.

With an appropriate powerpc64le-linux-gnu cross-toolchain, the minimal
image can be built with:

$ make XEN_TARGET_ARCH=ppc64 -C xen build

The resulting binary can then be booted in a standard QEMU/pseries VM:

$ qemu-system-ppc64 -M pseries-5.2 -m 256M -kernel xen/xen \
	-vga none -serial mon:stdio -nographic

Thanks,
Shawn

--
Changes from v5:
  - Rename openpower_defconfig to ppc64_defconfig
  - Clarify Kconfig ISA baseline help strings
  - Add ELF metadata annotations to head.S
  - Add dummy .got/.got.plt sections plus assertions to ld script
  - Change .align to .p2align in config.h/ENTRY()

Changes from v4:
  - Change '$(@D)/$(@F)' to '$@' in ppc/Makefile
  - Add -m64, -mlittle-endian to CFLAGS to allow using ppc{32,64be}
    toolchains
  - Change IBM-specific '$' to '.' in head.S
  - Drop unnecessary ALIGN() in linker script in .bss

Changes from v3:
  - Fix formatting of MAINTAINERS patch

Changes from v2:
  - Add ppc64le cross-build container patch
  - Add ppc64le cross build CI job patch
  - Drop serial output patch (will be in future patch series)
  - Drop setup.c and unneeded headers from minimal build patch
  - Fixed ordering of MAINTAINERS patch + add F: line
  - Fix config/ppc64.mk option names
  - Clarify Kconfig Baseline ISA option help strings

Shawn Anastasio (3):
  xen: Add files needed for minimal ppc64le build
  automation: Add ppc64le cross-build jobs
  maintainers: Add ppc64 maintainer

 MAINTAINERS                          |   4 +
 automation/gitlab-ci/build.yaml      |  60 +++++++++
 config/ppc64.mk                      |   4 +
 xen/Makefile                         |   5 +-
 xen/arch/ppc/Kconfig                 |  42 ++++++
 xen/arch/ppc/Kconfig.debug           |   0
 xen/arch/ppc/Makefile                |  16 +++
 xen/arch/ppc/Rules.mk                |   0
 xen/arch/ppc/arch.mk                 |  12 ++
 xen/arch/ppc/configs/ppc64_defconfig |  13 ++
 xen/arch/ppc/include/asm/config.h    |  63 +++++++++
 xen/arch/ppc/include/asm/page-bits.h |   7 +
 xen/arch/ppc/ppc64/Makefile          |   1 +
 xen/arch/ppc/ppc64/asm-offsets.c     |   0
 xen/arch/ppc/ppc64/head.S            |  30 +++++
 xen/arch/ppc/xen.lds.S               | 188 +++++++++++++++++++++++++++
 16 files changed, 443 insertions(+), 2 deletions(-)
 create mode 100644 config/ppc64.mk
 create mode 100644 xen/arch/ppc/Kconfig
 create mode 100644 xen/arch/ppc/Kconfig.debug
 create mode 100644 xen/arch/ppc/Makefile
 create mode 100644 xen/arch/ppc/Rules.mk
 create mode 100644 xen/arch/ppc/arch.mk
 create mode 100644 xen/arch/ppc/configs/ppc64_defconfig
 create mode 100644 xen/arch/ppc/include/asm/config.h
 create mode 100644 xen/arch/ppc/include/asm/page-bits.h
 create mode 100644 xen/arch/ppc/ppc64/Makefile
 create mode 100644 xen/arch/ppc/ppc64/asm-offsets.c
 create mode 100644 xen/arch/ppc/ppc64/head.S
 create mode 100644 xen/arch/ppc/xen.lds.S

--
2.30.2