[PATCH v4 08/12] selftests/nolibc: add test support for ppc

From: Zhangjin Wu
Date: Wed Aug 02 2023 - 01:22:17 EST


Hi, Willy, Thomas

Yuan is helping me to test this series and the tinyconfig series with
the latest compilers.

His first test found this ppc support failed with stackprotector when
using a newer compiler (I used an older compiler without stackprotector
for ppc), I'm debugging it, so, please ignore this revision too, of
course, if time allows, welcome to take a look at the other patches.

His other tests are trying to find out the exact poweroff support
options for every architecture one by one, let's fill this gap ...

Thanks,
Zhangjin

> Kernel uses ARCH=powerpc for both 32-bit and 64-bit PowerPC, here adds a
> ppc variant for 32-bit PowerPC and uses it as the default variant of
> powerpc architecture.
>
> Users can pass ARCH=powerpc or XARCH=ppc to test 32-bit PowerPC.
>
> The default qemu-system-ppc g3beige machine [1] is used to run 32-bit
> powerpc kernel.
>
> The pmac32_defconfig is used with extra PMACZILOG console options to
> enable normal print.
>
> Note, zImage doesn't boot due to "qemu-system-ppc: Some ROM regions are
> overlapping" error, so, vmlinux is used instead.
>
> [1]: https://qemu.readthedocs.io/en/latest/system/ppc/powermac.html
>
> Suggested-by: Willy Tarreau <w@xxxxxx>
> Link: https://lore.kernel.org/lkml/ZL9leVOI25S2+0+g@xxxxxx/
> Reviewed-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
> Signed-off-by: Zhangjin Wu <falcon@xxxxxxxxxxx>
> ---
> tools/testing/selftests/nolibc/Makefile | 6 ++++++
> .../testing/selftests/nolibc/configs/nolibc-test-ppc.config | 3 +++
> 2 files changed, 9 insertions(+)
> create mode 100644 tools/testing/selftests/nolibc/configs/nolibc-test-ppc.config
>
> diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
> index 3c9e3963fbad..29e02b49903a 100644
> --- a/tools/testing/selftests/nolibc/Makefile
> +++ b/tools/testing/selftests/nolibc/Makefile
> @@ -33,9 +33,11 @@ endif
> # architectures where both are equal.
>
> # configure default variants for target kernel supported architectures
> +XARCH_powerpc = ppc
> XARCH = $(or $(XARCH_$(ARCH)),$(ARCH))
>
> # map from user input variants to their kernel supported architectures
> +ARCH_ppc = powerpc
> ARCH := $(or $(ARCH_$(XARCH)),$(XARCH))
>
> # kernel image names by architecture
> @@ -45,6 +47,7 @@ IMAGE_x86 = arch/x86/boot/bzImage
> IMAGE_arm64 = arch/arm64/boot/Image
> IMAGE_arm = arch/arm/boot/zImage
> IMAGE_mips = vmlinuz
> +IMAGE_ppc = vmlinux
> IMAGE_riscv = arch/riscv/boot/Image
> IMAGE_s390 = arch/s390/boot/bzImage
> IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi
> @@ -58,6 +61,7 @@ DEFCONFIG_x86 = defconfig
> DEFCONFIG_arm64 = defconfig
> DEFCONFIG_arm = multi_v7_defconfig
> DEFCONFIG_mips = malta_defconfig
> +DEFCONFIG_ppc = pmac32_defconfig
> DEFCONFIG_riscv = defconfig
> DEFCONFIG_s390 = defconfig
> DEFCONFIG_loongarch = defconfig
> @@ -77,6 +81,7 @@ QEMU_ARCH_x86 = x86_64
> QEMU_ARCH_arm64 = aarch64
> QEMU_ARCH_arm = arm
> QEMU_ARCH_mips = mipsel # works with malta_defconfig
> +QEMU_ARCH_ppc = ppc
> QEMU_ARCH_riscv = riscv64
> QEMU_ARCH_s390 = s390x
> QEMU_ARCH_loongarch = loongarch64
> @@ -89,6 +94,7 @@ QEMU_ARGS_x86 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(
> QEMU_ARGS_arm64 = -M virt -cpu cortex-a53 -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> QEMU_ARGS_arm = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> QEMU_ARGS_mips = -M malta -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> +QEMU_ARGS_ppc = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> QEMU_ARGS_riscv = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> QEMU_ARGS_s390 = -M s390-ccw-virtio -m 1G -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> QEMU_ARGS_loongarch = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> diff --git a/tools/testing/selftests/nolibc/configs/nolibc-test-ppc.config b/tools/testing/selftests/nolibc/configs/nolibc-test-ppc.config
> new file mode 100644
> index 000000000000..b1975f8253f7
> --- /dev/null
> +++ b/tools/testing/selftests/nolibc/configs/nolibc-test-ppc.config
> @@ -0,0 +1,3 @@
> +CONFIG_SERIAL_PMACZILOG=y
> +CONFIG_SERIAL_PMACZILOG_TTYS=y
> +CONFIG_SERIAL_PMACZILOG_CONSOLE=y
> --
> 2.25.1