From nobody Tue Sep 9 23:04:38 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5FE13C00528 for ; Sat, 5 Aug 2023 18:45:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230206AbjHESpQ (ORCPT ); Sat, 5 Aug 2023 14:45:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229441AbjHESpO (ORCPT ); Sat, 5 Aug 2023 14:45:14 -0400 Received: from smtpbgbr1.qq.com (smtpbgbr1.qq.com [54.207.19.206]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E9331BE4; Sat, 5 Aug 2023 11:45:10 -0700 (PDT) X-QQ-mid: bizesmtp78t1691261100tidbvvh9 Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 06 Aug 2023 02:44:59 +0800 (CST) X-QQ-SSF: 00200000000000E0X000B00A0000000 X-QQ-FEAT: UJd4nZbM1CcH9VmzxClkr0cKwdDukNdu9aGDvRmht/UB70m5zE7F3giKejMEj JUN8J66vLKn6mlGW3Jza2xaIB5Dh3+tIqiX8BmRKEZdO/aVqXvaCjk2QGC5PbLe/PwxVoE7 QOQ5UaPdMgrfUR3NQ2dtJ6cJitapMwzZBd8444fG/y8C2dhF0xfwSxhLCfEj899ySPFTRHB Dtr8zZkNc+NXt1h7Vg90U1eMsyaBJmTTZA50nbUho6y7PR4SnOOalGqPj+mpW3rScYtcU8I ZxneTrjfDCaKRQJp8QYbBK+3fpxIOP96gwZ3tzMQZukeyd/fOivAc8c1OXlTuVsOHzJQ3uC vHgSVGmha1k+9tLwiVb48pIVmrmEa21PY5X4tAiBEfD84E+uo3V2luZqBBIeVDErI59BfyS ESGfsOOjJQM= X-QQ-GoodBg: 0 X-BIZMAIL-ID: 3337033072005867611 From: Zhangjin Wu To: w@1wt.eu Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, tanyuan@tinylab.org, thomas@t-8ch.de, =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Subject: [PATCH v6 6/8] selftests/nolibc: add test support for ppc64 Date: Sun, 6 Aug 2023 02:44:58 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Kernel uses ARCH=3Dpowerpc for both 32-bit and 64-bit PowerPC, here adds a ppc64 variant for big endian 64-bit PowerPC, users can pass XARCH=3Dppc64 to test it. The powernv machine of qemu-system-ppc64 is used with powernv_be_defconfig. As the document [1] shows: PowerNV (as Non-Virtualized) is the =E2=80=9Cbare metal=E2=80=9D platform= using the OPAL firmware. It runs Linux on IBM and OpenPOWER systems and it can be used as an hypervisor OS, running KVM guests, or simply as a host OS. Notes, - differs from little endian 64-bit PowerPC, vmlinux is used instead of zImage, because big endian zImage [2] only boot on qemu with x-vof=3Don (added from qemu v7.0) and a fixup patch [3] for qemu v7.0.51: - since the VSX support may be disabled in kernel side, to avoid "illegal instruction" errors due to missing VSX kernel support, let's simply let compiler not generate vector/scalar (VSX) instructions via the '-mno-vsx' option. - as 'man gcc' shows, '-mmultiple' is used to generate code that uses the load multiple word instructions and the store multiple word instructions. Those instructions do not work when the processor is in little-endian mode (except PPC740/PPC750), so, we only enable it for big endian powerpc. - for big endian ppc64, as the help message from arch/powerpc/Kconfig shows, the V2 ABI is standard for 64-bit little-endian, but for big-endian it is less well tested by kernel and toolchain, so, use elfv1 as-is, no need to explicitly ask toolchain to use elfv2 here. [1]: https://qemu.readthedocs.io/en/latest/system/ppc/powernv.html [2]: https://github.com/linuxppc/issues/issues/402 [3]: https://lore.kernel.org/qemu-devel/20220504065536.3534488-1-aik@ozlabs= .ru/ Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/20230722121019.GD17311@1wt.eu/ Link: https://lore.kernel.org/lkml/20230719043353.GC5331@1wt.eu/ Reviewed-by: Thomas Wei=C3=9Fschuh Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selfte= sts/nolibc/Makefile index 586f278ddd66..452d8e424d28 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -35,6 +35,7 @@ XARCH =3D $(or $(XARCH_$(ARCH)),$(ARCH)) =20 # map from user input variants to their kernel supported architectures ARCH_ppc =3D powerpc +ARCH_ppc64 =3D powerpc ARCH_ppc64le =3D powerpc ARCH :=3D $(or $(ARCH_$(XARCH)),$(XARCH)) =20 @@ -46,6 +47,7 @@ IMAGE_arm64 =3D arch/arm64/boot/Image IMAGE_arm =3D arch/arm/boot/zImage IMAGE_mips =3D vmlinuz IMAGE_ppc =3D vmlinux +IMAGE_ppc64 =3D vmlinux IMAGE_ppc64le =3D arch/powerpc/boot/zImage IMAGE_riscv =3D arch/riscv/boot/Image IMAGE_s390 =3D arch/s390/boot/bzImage @@ -61,6 +63,7 @@ DEFCONFIG_arm64 =3D defconfig DEFCONFIG_arm =3D multi_v7_defconfig DEFCONFIG_mips =3D malta_defconfig DEFCONFIG_ppc =3D pmac32_defconfig +DEFCONFIG_ppc64 =3D powernv_be_defconfig DEFCONFIG_ppc64le =3D powernv_defconfig DEFCONFIG_riscv =3D defconfig DEFCONFIG_s390 =3D defconfig @@ -78,6 +81,7 @@ QEMU_ARCH_arm64 =3D aarch64 QEMU_ARCH_arm =3D arm QEMU_ARCH_mips =3D mipsel # works with malta_defconfig QEMU_ARCH_ppc =3D ppc +QEMU_ARCH_ppc64 =3D ppc64 QEMU_ARCH_ppc64le =3D ppc64le QEMU_ARCH_riscv =3D riscv64 QEMU_ARCH_s390 =3D s390x @@ -92,6 +96,7 @@ QEMU_ARGS_arm64 =3D -M virt -cpu cortex-a53 -append = "panic=3D-1 $(TEST:%=3DNOLIBC QEMU_ARGS_arm =3D -M virt -append "panic=3D-1 $(TEST:%=3DNOLIBC_TES= T=3D%)" QEMU_ARGS_mips =3D -M malta -append "panic=3D-1 $(TEST:%=3DNOLIBC_TE= ST=3D%)" QEMU_ARGS_ppc =3D -M g3beige -append "console=3DttyS0 panic=3D-1 $(= TEST:%=3DNOLIBC_TEST=3D%)" +QEMU_ARGS_ppc64 =3D -M powernv -append "console=3Dhvc0 panic=3D-1 $(T= EST:%=3DNOLIBC_TEST=3D%)" QEMU_ARGS_ppc64le =3D -M powernv -append "console=3Dhvc0 panic=3D-1 $(T= EST:%=3DNOLIBC_TEST=3D%)" QEMU_ARGS_riscv =3D -M virt -append "console=3DttyS0 panic=3D-1 $(TES= T:%=3DNOLIBC_TEST=3D%)" QEMU_ARGS_s390 =3D -M s390-ccw-virtio -m 1G -append "console=3DttyS0= panic=3D-1 $(TEST:%=3DNOLIBC_TEST=3D%)" @@ -109,6 +114,7 @@ Q=3D@ endif =20 CFLAGS_ppc =3D -m32 -mbig-endian -mno-vsx $(call cc-option,-mmultiple) +CFLAGS_ppc64 =3D -m64 -mbig-endian -mno-vsx $(call cc-option,-mmultiple) CFLAGS_ppc64le =3D -m64 -mlittle-endian -mno-vsx $(call cc-option,-mabi=3D= elfv2) CFLAGS_s390 =3D -m64 CFLAGS_mips =3D -EL --=20 2.25.1