[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v3 0/3] Early serial on Power
Hello all, This series adds support for early serial printing on Power, as well as a simple CI smoke test modeled after the riscv one. The first patch is responsible for setting up a basic C environment with an initial stack while the second sets up an Open Firmware serial console and primitive early_printk infrastructure. This will currently only run on QEMU pseries VMs, since the firmware interface on bare metal differs significantly. Support for bare metal will be added in a future series. Thanks, Shawn -- Changes in v3: - Set up r2 TOC pointer in start - Change indirect call to start_xen to a direct one - Use 32-bit constant loads for stack pointer, etc. in start - Our load address is < 4GB so this works fine - In a future series we'll get -fPIC working and change all of these immediate address loads to TOC-relative ones. - Move .bss initialization to patch 2 - Move cpu0_boot_stack declaration to setup.c - Bump stack size down to one page (64k), previous was way overkill. - Remove unnecessary STACK_FRAME_OVERHEAD component from of-call.S stack frame size calculation - Add assertion that `struct cpu_user_regs` is stack-aligned - Move magic `or 31,31,31` to appropriately-named macro - Fix formatting of loop in setup.c - Add newline in arch/ppc/Makefile to preserve alphabetical ordering per group - Rebase on staging, including the final version of 'xen/types: Rework stdint vs __{u,s}$N types' Changes in v2: - Split main patch into two - one for basic C environment setup and one for serial - Mark OpenFirmware functions and early_printk functions as __init and change boot-of.o to boot-of.init.o in Makefile - Change <xen/lib.h> include to <xen/stdarg.h> and drop skeleton headers that are no longer necessary for build as a result - Add loop to clear .bss before jumping to C environment that was accidentally excluded from the first series - Move common asm macros from processor.h to asm-defns.h - Change note in head.S about preserved registers to a multi-line comment so it's more noticeable - Drop reg-defs.h and use '%'-prefixed register names in assembly - This is necessary since -mregnames, which allows standard non-prefixed register names without manual macro definitions, is not supported by LLVM's assembler. - Drop inline asm swab routines in favor of __builtin_bswap family - Fix up types.h in accordance with (as of now, unmerged) 'xen/types: Rework stdint vs __{u,s}$N types' - Remove unnecessary braces for single-line statements - Remove unnecessary license text when SPDX header is present - Fix alphabetical ordering of object declarations in Makefile - Drop 'extern' from enter_of prototype, ensure prototypes have argument names Shawn Anastasio (3): xen/ppc: Set up a basic C environment xen/ppc: Implement early serial printk on pseries automation: Add smoke test for ppc64le automation/gitlab-ci/test.yaml | 20 ++++ automation/scripts/qemu-smoke-ppc64le.sh | 27 +++++ xen/arch/ppc/Kconfig.debug | 5 + xen/arch/ppc/Makefile | 4 + xen/arch/ppc/boot-of.c | 100 ++++++++++++++++ xen/arch/ppc/configs/ppc64_defconfig | 1 + xen/arch/ppc/early_printk.c | 28 +++++ xen/arch/ppc/include/asm/asm-defns.h | 57 ++++++++++ xen/arch/ppc/include/asm/boot.h | 23 ++++ xen/arch/ppc/include/asm/byteorder.h | 12 ++ xen/arch/ppc/include/asm/config.h | 5 +- xen/arch/ppc/include/asm/early_printk.h | 15 +++ xen/arch/ppc/include/asm/msr.h | 51 +++++++++ xen/arch/ppc/include/asm/processor.h | 139 +++++++++++++++++++++++ xen/arch/ppc/include/asm/types.h | 21 ++++ xen/arch/ppc/ppc64/Makefile | 1 + xen/arch/ppc/ppc64/asm-offsets.c | 59 ++++++++++ xen/arch/ppc/ppc64/head.S | 49 ++++---- xen/arch/ppc/ppc64/of-call.S | 83 ++++++++++++++ xen/arch/ppc/setup.c | 32 ++++++ 20 files changed, 711 insertions(+), 21 deletions(-) create mode 100755 automation/scripts/qemu-smoke-ppc64le.sh create mode 100644 xen/arch/ppc/boot-of.c create mode 100644 xen/arch/ppc/early_printk.c create mode 100644 xen/arch/ppc/include/asm/asm-defns.h create mode 100644 xen/arch/ppc/include/asm/boot.h create mode 100644 xen/arch/ppc/include/asm/byteorder.h create mode 100644 xen/arch/ppc/include/asm/early_printk.h create mode 100644 xen/arch/ppc/include/asm/msr.h create mode 100644 xen/arch/ppc/include/asm/processor.h create mode 100644 xen/arch/ppc/include/asm/types.h create mode 100644 xen/arch/ppc/ppc64/of-call.S create mode 100644 xen/arch/ppc/setup.c -- 2.30.2
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |