From ae365617b4663de79c0ee208fa20ebe5c6cf9dca Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Thu, 5 Oct 2023 16:29:07 -0400 Subject: [PATCH] jjb: lttng-modules: Add riscv64 to crossbuilds Change-Id: I979165f270138f0daae63589a84b784bfa8b71fb Signed-off-by: Michael Jeanson --- jobs/lttng-modules.yaml | 2 +- scripts/lttng-modules/param-build.sh | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/jobs/lttng-modules.yaml b/jobs/lttng-modules.yaml index e2cde13..c8ee498 100644 --- a/jobs/lttng-modules.yaml +++ b/jobs/lttng-modules.yaml @@ -869,7 +869,7 @@ platforms: !!python/tuple [deb12-amd64] - 'lttng-modules_PARAM_crossbuild': platforms: !!python/tuple [deb12-amd64] - cross_arch: !!python/tuple [armhf, arm64, powerpc, ppc64el] + cross_arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, riscv64] # Misc jobs - 'lttng-modules_ALL_trigger-vanilla' diff --git a/scripts/lttng-modules/param-build.sh b/scripts/lttng-modules/param-build.sh index 67ed460..1535b3e 100644 --- a/scripts/lttng-modules/param-build.sh +++ b/scripts/lttng-modules/param-build.sh @@ -143,7 +143,13 @@ select_compiler() { # Enter linux source dir cd "$LINUX_SRCOBJ_DIR" - kversion=$(make -s kernelversion) + # Get the kernel version using the host toolchain, some cross-compiled arch may be broken + kversion=$(unset ARCH; unset CROSS_COMPILE; make -s kernelversion) + + if [ "${cross_arch}" = "riscv64" ] && verlt "${kversion}" "5.12"; then + echo "RISC-V support was upstreamed in kernel v4.19 but kprobes support was only added in v5.12. Don't try to build it." + exit 0 + fi if { verlt "$kversion" "4.4"; }; then # Force gcc-4.8 for kernels before 4.4 @@ -773,6 +779,12 @@ extract_distro_headers() { fi fi + # On riscv with 5.14 the vsdo objects are required + if [ "${karch}" = "riscv" ] && \ + ( { vergte "${kversion}" "5.14"; } && { verlt "${kversion}" "5.15"; } ); then + cp -a --parents arch/riscv/kernel/vdso/*.o "${LINUX_HDROBJ_DIR}/" + fi + # Newer kernels need objtool to build modules when CONFIG_STACK_VALIDATION=y if [ -f tools/objtool/objtool ]; then cp -a --parents tools/objtool/objtool "${LINUX_HDROBJ_DIR}/" @@ -962,6 +974,13 @@ if [ "x${cross_arch}" != "x" ]; then ubuntu_config="ppc64el-config.flavour.generic" ;; + "riscv64") + karch="riscv" + cross_compile="riscv64-linux-gnu-" + vanilla_config="defconfig" + ubuntu_config="riscv64-config.flavour.generic" + ;; + *) echo "Unsupported cross arch $cross_arch" exit 1 @@ -1012,6 +1031,12 @@ elif [ "x${arch}" != "x" ]; then ubuntu_config="ppc64el-config.flavour.generic" ;; + "riscv64") + karch="riscv" + vanilla_config="allmodconfig" + ubuntu_config="riscv64-config.flavour.generic" + ;; + *) echo "Unsupported arch $arch" exit 1 -- 2.34.1