From: Pu Lehui <pulehui@huaweicloud.com> To: bpf@vger.kernel.org, linux-riscv@lists.infradead.org, netdev@vger.kernel.org Cc: "Björn Töpel" <bjorn@kernel.org>, "Alexei Starovoitov" <ast@kernel.org>, "Daniel Borkmann" <daniel@iogearbox.net>, "Andrii Nakryiko" <andrii@kernel.org>, "Martin KaFai Lau" <martin.lau@linux.dev>, "Eduard Zingerman" <eddyz87@gmail.com>, "Song Liu" <song@kernel.org>, "Yonghong Song" <yhs@fb.com>, "John Fastabend" <john.fastabend@gmail.com>, "KP Singh" <kpsingh@kernel.org>, "Stanislav Fomichev" <sdf@google.com>, "Hao Luo" <haoluo@google.com>, "Jiri Olsa" <jolsa@kernel.org>, "Mykola Lysenko" <mykolal@fb.com>, "Manu Bretelle" <chantr4@gmail.com>, "Pu Lehui" <pulehui@huawei.com>, "Pu Lehui" <pulehui@huaweicloud.com> Subject: [PATCH bpf-next 1/5] selftests/bpf: Enable cross platform testing for local vmtest Date: Thu, 28 Mar 2024 12:49:12 +0000 [thread overview] Message-ID: <20240328124916.293173-2-pulehui@huaweicloud.com> (raw) In-Reply-To: <20240328124916.293173-1-pulehui@huaweicloud.com> From: Pu Lehui <pulehui@huawei.com> The variable $ARCH in the current script is platform semantics, not kernel semantics. Rename it to $PLATFORM so that we can easily use $ARCH in cross-compilation. For now, Using PLATFORM= and CROSS_COMPILE= options will enable cross platform testing: PLATFORM=<platform> CROSS_COMPILE=<toolchain> vmtest.sh -- ./test_progs Meanwhile, some descriptions have been corrected. Signed-off-by: Pu Lehui <pulehui@huawei.com> --- tools/testing/selftests/bpf/vmtest.sh | 40 +++++++++++++++++++-------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/bpf/vmtest.sh b/tools/testing/selftests/bpf/vmtest.sh index 65d14f3bbe30..825149a905e5 100755 --- a/tools/testing/selftests/bpf/vmtest.sh +++ b/tools/testing/selftests/bpf/vmtest.sh @@ -4,28 +4,34 @@ set -u set -e -# This script currently only works for x86_64 and s390x, as -# it is based on the VM image used by the BPF CI, which is +# This script currently only works for the following platforms, +# as it is based on the VM image used by the BPF CI, which is # available only for these architectures. -ARCH="$(uname -m)" -case "${ARCH}" in +PLATFORM="${PLATFORM:-$(uname -m)}" +case "${PLATFORM}" in s390x) QEMU_BINARY=qemu-system-s390x QEMU_CONSOLE="ttyS1" - QEMU_FLAGS=(-smp 2) + HOST_FLAGS=(-smp 2 -enable-kvm) + CROSS_FLAGS=(-smp 2) BZIMAGE="arch/s390/boot/vmlinux" + ARCH="s390" ;; x86_64) QEMU_BINARY=qemu-system-x86_64 QEMU_CONSOLE="ttyS0,115200" - QEMU_FLAGS=(-cpu host -smp 8) + HOST_FLAGS=(-cpu host -enable-kvm -smp 8) + CROSS_FLAGS=(-smp 8) BZIMAGE="arch/x86/boot/bzImage" + ARCH="x86" ;; aarch64) QEMU_BINARY=qemu-system-aarch64 QEMU_CONSOLE="ttyAMA0,115200" - QEMU_FLAGS=(-M virt,gic-version=3 -cpu host -smp 8) + HOST_FLAGS=(-M virt,gic-version=3 -cpu host -enable-kvm -smp 8) + CROSS_FLAGS=(-M virt,gic-version=3 -cpu cortex-a76 -smp 8) BZIMAGE="arch/arm64/boot/Image" + ARCH="arm64" ;; *) echo "Unsupported architecture" @@ -38,7 +44,7 @@ ROOTFS_IMAGE="root.img" OUTPUT_DIR="$HOME/.bpf_selftests" KCONFIG_REL_PATHS=("tools/testing/selftests/bpf/config" "tools/testing/selftests/bpf/config.vm" - "tools/testing/selftests/bpf/config.${ARCH}") + "tools/testing/selftests/bpf/config.${PLATFORM}") INDEX_URL="https://raw.githubusercontent.com/libbpf/ci/master/INDEX" NUM_COMPILE_JOBS="$(nproc)" LOG_FILE_BASE="$(date +"bpf_selftests.%Y-%m-%d_%H-%M-%S")" @@ -58,6 +64,10 @@ tools/testing/selftests/bpf. e.g: If no command is specified and a debug shell (-s) is not requested, "${DEFAULT_COMMAND}" will be run by default. +Using PLATFORM= and CROSS_COMPILE= options will enable cross platform testing: + + PLATFORM=<platform> CROSS_COMPILE=<toolchain> $0 -- ./test_progs -t test_lsm + If you build your kernel using KBUILD_OUTPUT= or O= options, these can be passed as environment variables to the script: @@ -109,7 +119,7 @@ newest_rootfs_version() { { for file in "${!URLS[@]}"; do - if [[ $file =~ ^"${ARCH}"/libbpf-vmtest-rootfs-(.*)\.tar\.zst$ ]]; then + if [[ $file =~ ^"${PLATFORM}"/libbpf-vmtest-rootfs-(.*)\.tar\.zst$ ]]; then echo "${BASH_REMATCH[1]}" fi done @@ -126,7 +136,7 @@ download_rootfs() exit 1 fi - download "${ARCH}/libbpf-vmtest-rootfs-$rootfsversion.tar.zst" | + download "${PLATFORM}/libbpf-vmtest-rootfs-$rootfsversion.tar.zst" | zstd -d | sudo tar -C "$dir" -x } @@ -244,12 +254,17 @@ EOF exit 1 fi + if [[ "${CROSS_COMPILE}" != "" ]]; then + QEMU_FLAGS=("${CROSS_FLAGS[@]}") + else + QEMU_FLAGS=("${HOST_FLAGS[@]}") + fi + ${QEMU_BINARY} \ -nodefaults \ -display none \ -serial mon:stdio \ "${QEMU_FLAGS[@]}" \ - -enable-kvm \ -m 4G \ -drive file="${rootfs_img}",format=raw,index=1,media=disk,if=virtio,cache=none \ -kernel "${kernel_bzimage}" \ @@ -384,7 +399,8 @@ main() fi local kconfig_file="${OUTPUT_DIR}/latest.config" - local make_command="make -j ${NUM_COMPILE_JOBS} KCONFIG_CONFIG=${kconfig_file}" + local make_command="make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} \ + -j ${NUM_COMPILE_JOBS} KCONFIG_CONFIG=${kconfig_file}" # Figure out where the kernel is being built. # O takes precedence over KBUILD_OUTPUT. -- 2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: Pu Lehui <pulehui@huaweicloud.com> To: bpf@vger.kernel.org, linux-riscv@lists.infradead.org, netdev@vger.kernel.org Cc: "Björn Töpel" <bjorn@kernel.org>, "Alexei Starovoitov" <ast@kernel.org>, "Daniel Borkmann" <daniel@iogearbox.net>, "Andrii Nakryiko" <andrii@kernel.org>, "Martin KaFai Lau" <martin.lau@linux.dev>, "Eduard Zingerman" <eddyz87@gmail.com>, "Song Liu" <song@kernel.org>, "Yonghong Song" <yhs@fb.com>, "John Fastabend" <john.fastabend@gmail.com>, "KP Singh" <kpsingh@kernel.org>, "Stanislav Fomichev" <sdf@google.com>, "Hao Luo" <haoluo@google.com>, "Jiri Olsa" <jolsa@kernel.org>, "Mykola Lysenko" <mykolal@fb.com>, "Manu Bretelle" <chantr4@gmail.com>, "Pu Lehui" <pulehui@huawei.com>, "Pu Lehui" <pulehui@huaweicloud.com> Subject: [PATCH bpf-next 1/5] selftests/bpf: Enable cross platform testing for local vmtest Date: Thu, 28 Mar 2024 12:49:12 +0000 [thread overview] Message-ID: <20240328124916.293173-2-pulehui@huaweicloud.com> (raw) In-Reply-To: <20240328124916.293173-1-pulehui@huaweicloud.com> From: Pu Lehui <pulehui@huawei.com> The variable $ARCH in the current script is platform semantics, not kernel semantics. Rename it to $PLATFORM so that we can easily use $ARCH in cross-compilation. For now, Using PLATFORM= and CROSS_COMPILE= options will enable cross platform testing: PLATFORM=<platform> CROSS_COMPILE=<toolchain> vmtest.sh -- ./test_progs Meanwhile, some descriptions have been corrected. Signed-off-by: Pu Lehui <pulehui@huawei.com> --- tools/testing/selftests/bpf/vmtest.sh | 40 +++++++++++++++++++-------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/bpf/vmtest.sh b/tools/testing/selftests/bpf/vmtest.sh index 65d14f3bbe30..825149a905e5 100755 --- a/tools/testing/selftests/bpf/vmtest.sh +++ b/tools/testing/selftests/bpf/vmtest.sh @@ -4,28 +4,34 @@ set -u set -e -# This script currently only works for x86_64 and s390x, as -# it is based on the VM image used by the BPF CI, which is +# This script currently only works for the following platforms, +# as it is based on the VM image used by the BPF CI, which is # available only for these architectures. -ARCH="$(uname -m)" -case "${ARCH}" in +PLATFORM="${PLATFORM:-$(uname -m)}" +case "${PLATFORM}" in s390x) QEMU_BINARY=qemu-system-s390x QEMU_CONSOLE="ttyS1" - QEMU_FLAGS=(-smp 2) + HOST_FLAGS=(-smp 2 -enable-kvm) + CROSS_FLAGS=(-smp 2) BZIMAGE="arch/s390/boot/vmlinux" + ARCH="s390" ;; x86_64) QEMU_BINARY=qemu-system-x86_64 QEMU_CONSOLE="ttyS0,115200" - QEMU_FLAGS=(-cpu host -smp 8) + HOST_FLAGS=(-cpu host -enable-kvm -smp 8) + CROSS_FLAGS=(-smp 8) BZIMAGE="arch/x86/boot/bzImage" + ARCH="x86" ;; aarch64) QEMU_BINARY=qemu-system-aarch64 QEMU_CONSOLE="ttyAMA0,115200" - QEMU_FLAGS=(-M virt,gic-version=3 -cpu host -smp 8) + HOST_FLAGS=(-M virt,gic-version=3 -cpu host -enable-kvm -smp 8) + CROSS_FLAGS=(-M virt,gic-version=3 -cpu cortex-a76 -smp 8) BZIMAGE="arch/arm64/boot/Image" + ARCH="arm64" ;; *) echo "Unsupported architecture" @@ -38,7 +44,7 @@ ROOTFS_IMAGE="root.img" OUTPUT_DIR="$HOME/.bpf_selftests" KCONFIG_REL_PATHS=("tools/testing/selftests/bpf/config" "tools/testing/selftests/bpf/config.vm" - "tools/testing/selftests/bpf/config.${ARCH}") + "tools/testing/selftests/bpf/config.${PLATFORM}") INDEX_URL="https://raw.githubusercontent.com/libbpf/ci/master/INDEX" NUM_COMPILE_JOBS="$(nproc)" LOG_FILE_BASE="$(date +"bpf_selftests.%Y-%m-%d_%H-%M-%S")" @@ -58,6 +64,10 @@ tools/testing/selftests/bpf. e.g: If no command is specified and a debug shell (-s) is not requested, "${DEFAULT_COMMAND}" will be run by default. +Using PLATFORM= and CROSS_COMPILE= options will enable cross platform testing: + + PLATFORM=<platform> CROSS_COMPILE=<toolchain> $0 -- ./test_progs -t test_lsm + If you build your kernel using KBUILD_OUTPUT= or O= options, these can be passed as environment variables to the script: @@ -109,7 +119,7 @@ newest_rootfs_version() { { for file in "${!URLS[@]}"; do - if [[ $file =~ ^"${ARCH}"/libbpf-vmtest-rootfs-(.*)\.tar\.zst$ ]]; then + if [[ $file =~ ^"${PLATFORM}"/libbpf-vmtest-rootfs-(.*)\.tar\.zst$ ]]; then echo "${BASH_REMATCH[1]}" fi done @@ -126,7 +136,7 @@ download_rootfs() exit 1 fi - download "${ARCH}/libbpf-vmtest-rootfs-$rootfsversion.tar.zst" | + download "${PLATFORM}/libbpf-vmtest-rootfs-$rootfsversion.tar.zst" | zstd -d | sudo tar -C "$dir" -x } @@ -244,12 +254,17 @@ EOF exit 1 fi + if [[ "${CROSS_COMPILE}" != "" ]]; then + QEMU_FLAGS=("${CROSS_FLAGS[@]}") + else + QEMU_FLAGS=("${HOST_FLAGS[@]}") + fi + ${QEMU_BINARY} \ -nodefaults \ -display none \ -serial mon:stdio \ "${QEMU_FLAGS[@]}" \ - -enable-kvm \ -m 4G \ -drive file="${rootfs_img}",format=raw,index=1,media=disk,if=virtio,cache=none \ -kernel "${kernel_bzimage}" \ @@ -384,7 +399,8 @@ main() fi local kconfig_file="${OUTPUT_DIR}/latest.config" - local make_command="make -j ${NUM_COMPILE_JOBS} KCONFIG_CONFIG=${kconfig_file}" + local make_command="make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} \ + -j ${NUM_COMPILE_JOBS} KCONFIG_CONFIG=${kconfig_file}" # Figure out where the kernel is being built. # O takes precedence over KBUILD_OUTPUT. -- 2.34.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2024-03-28 12:48 UTC|newest] Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-28 12:49 [PATCH bpf-next 0/5] Support local vmtest for riscv64 Pu Lehui 2024-03-28 12:49 ` Pu Lehui 2024-03-28 12:49 ` Pu Lehui [this message] 2024-03-28 12:49 ` [PATCH bpf-next 1/5] selftests/bpf: Enable cross platform testing for local vmtest Pu Lehui 2024-03-28 12:49 ` [PATCH bpf-next 2/5] riscv, bpf: Relax restrictions on Zbb instructions Pu Lehui 2024-03-28 12:49 ` Pu Lehui 2024-03-28 19:34 ` Stefan O'Rear 2024-03-28 19:34 ` Stefan O'Rear 2024-03-28 22:07 ` Conor Dooley 2024-03-28 22:07 ` Conor Dooley 2024-03-29 10:05 ` Pu Lehui 2024-03-29 10:05 ` Pu Lehui 2024-04-02 14:25 ` Björn Töpel 2024-04-02 14:25 ` Björn Töpel 2024-04-02 17:38 ` Conor Dooley 2024-04-02 17:38 ` Conor Dooley 2024-04-02 19:00 ` Björn Töpel 2024-04-02 19:00 ` Björn Töpel 2024-04-03 1:20 ` Conor Dooley 2024-04-03 1:20 ` Conor Dooley 2024-04-03 10:05 ` Pu Lehui 2024-04-03 10:05 ` Pu Lehui 2024-04-03 12:29 ` Conor Dooley 2024-04-03 12:29 ` Conor Dooley 2024-03-29 11:23 ` Conor Dooley 2024-03-29 11:23 ` Conor Dooley 2024-03-30 10:19 ` Pu Lehui 2024-03-30 10:19 ` Pu Lehui 2024-03-30 10:19 ` Pu Lehui 2024-03-30 10:19 ` Pu Lehui 2024-03-31 17:49 ` Samuel Holland 2024-03-31 17:49 ` Samuel Holland 2024-04-02 14:18 ` Björn Töpel 2024-04-02 14:18 ` Björn Töpel 2024-04-02 14:27 ` Björn Töpel 2024-04-02 14:27 ` Björn Töpel 2024-04-02 16:03 ` Daniel Borkmann 2024-04-02 16:03 ` Daniel Borkmann 2024-04-03 10:19 ` Pu Lehui 2024-04-03 10:19 ` Pu Lehui 2024-03-28 12:49 ` [PATCH bpf-next 3/5] selftests/bpf: Add config.riscv64 Pu Lehui 2024-03-28 12:49 ` Pu Lehui 2024-03-28 12:49 ` [PATCH bpf-next 4/5] selftests/bpf: Add DENYLIST.riscv64 Pu Lehui 2024-03-28 12:49 ` Pu Lehui 2024-03-28 12:49 ` [PATCH bpf-next 5/5] selftests/bpf: Add riscv64 configurations to local vmtest Pu Lehui 2024-03-28 12:49 ` Pu Lehui 2024-03-29 9:08 ` [PATCH bpf-next 0/5] Support local vmtest for riscv64 Eduard Zingerman 2024-03-29 9:08 ` Eduard Zingerman 2024-03-29 10:10 ` Pu Lehui 2024-03-29 10:10 ` Pu Lehui 2024-03-29 19:46 ` Eduard Zingerman 2024-03-29 19:46 ` Eduard Zingerman 2024-03-30 10:12 ` Pu Lehui 2024-03-30 10:12 ` Pu Lehui 2024-03-30 10:12 ` Pu Lehui 2024-03-30 10:12 ` Pu Lehui 2024-04-02 23:40 ` Eduard Zingerman 2024-04-02 23:40 ` Eduard Zingerman 2024-04-03 10:31 ` Pu Lehui 2024-04-03 10:31 ` Pu Lehui
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20240328124916.293173-2-pulehui@huaweicloud.com \ --to=pulehui@huaweicloud.com \ --cc=andrii@kernel.org \ --cc=ast@kernel.org \ --cc=bjorn@kernel.org \ --cc=bpf@vger.kernel.org \ --cc=chantr4@gmail.com \ --cc=daniel@iogearbox.net \ --cc=eddyz87@gmail.com \ --cc=haoluo@google.com \ --cc=john.fastabend@gmail.com \ --cc=jolsa@kernel.org \ --cc=kpsingh@kernel.org \ --cc=linux-riscv@lists.infradead.org \ --cc=martin.lau@linux.dev \ --cc=mykolal@fb.com \ --cc=netdev@vger.kernel.org \ --cc=pulehui@huawei.com \ --cc=sdf@google.com \ --cc=song@kernel.org \ --cc=yhs@fb.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.