mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
Merge branch 'riscv-bpf-prepare-for-upcoming-daily-ci'
Pu Lehui says: ==================== riscv, bpf: Prepare for upcoming daily CI From: Pu Lehui <pulehui@huawei.com> For some time, bpf selftests on riscv64 have suffered from several silent breakages and test failures. These mainly stemmed from changes such as riscv ftrace atomic patching [0], qemu pmu behavior changes, and environment mismatches. While some issues have already been addressed in previous patches [1-3] and some are in progress [4], the remaining ones are handled in this series. To catch regressions promptly and close this long-standing riscv bpf CI gap, the riscv-bpf-daily project [5] is introduced here. With the assistance of LLMs, putting together this automated workflow was fairly straightforward. The pipeline pulls the latest bpf-next branch daily, executes both test_progs and test_verifier, and automatically creates github issues with brief failure descriptions and sends notifications when failures occur. It has been running smoothly for over a week and has already proven its value by catching some real jit bugs. To pave the way for riscv-bpf-daily, this patchset addresses the remaining fixes, test adaptations, and environment dependencies. [0] https://lore.kernel.org/all/20250407180838.42877-5-andybnac@gmail.com/ [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2820d227ad4e [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f2aaa6215910 [3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c7e617552938 [4] https://lore.kernel.org/bpf/20260722140015.1982158-1-varunrmallya@gmail.com [5] https://github.com/pulehui/riscv-bpf-daily v3: - Update comment in vmtest.sh about qemu. v2: https://lore.kernel.org/bpf/20260930064607.1908864-1-pulehui@huaweicloud.com - Change test value in setget_sockopt to avoid quantization error. - Drop path modify in d_path testcase as will mount /dev/shm in rootfs. v1: https://lore.kernel.org/bpf/20260929083924.1851840-1-pulehui@huaweicloud.com ==================== Link: https://patch.msgid.link/20260930083522.1914145-1-pulehui@huaweicloud.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
commit
75f7e0baa0
|
|
@ -913,7 +913,8 @@ int bpf_arch_text_poke(void *ip, enum bpf_text_poke_type old_t,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void store_args(int nr_arg_slots, int args_off, struct rv_jit_context *ctx)
|
||||
static void store_args(int nr_arg_slots, int args_off, int stack_args_off,
|
||||
struct rv_jit_context *ctx)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -921,8 +922,8 @@ static void store_args(int nr_arg_slots, int args_off, struct rv_jit_context *ct
|
|||
if (i < RV_MAX_REG_ARGS) {
|
||||
emit_sd(RV_REG_FP, -args_off, RV_REG_A0 + i, ctx);
|
||||
} else {
|
||||
/* skip slots for T0 and FP of traced function */
|
||||
emit_ld(RV_REG_T1, 16 + (i - RV_MAX_REG_ARGS) * 8, RV_REG_FP, ctx);
|
||||
emit_ld(RV_REG_T1, stack_args_off +
|
||||
(i - RV_MAX_REG_ARGS) * 8, RV_REG_FP, ctx);
|
||||
emit_sd(RV_REG_FP, -args_off, RV_REG_T1, ctx);
|
||||
}
|
||||
args_off -= 8;
|
||||
|
|
@ -1217,7 +1218,12 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
|
|||
func_meta = nr_arg_slots;
|
||||
emit_store_stack_imm64(RV_REG_T1, -func_meta_off, func_meta, ctx);
|
||||
|
||||
store_args(nr_arg_slots, args_off, ctx);
|
||||
/*
|
||||
* A direct struct_ops call has its first stack argument at the incoming
|
||||
* SP, which the trampoline keeps as FP. The fentry path pushes the
|
||||
* parent frame first, so its incoming stack arguments start at FP + 16.
|
||||
*/
|
||||
store_args(nr_arg_slots, args_off, is_struct_ops ? 0 : 16, ctx);
|
||||
|
||||
if (bpf_fsession_cnt(tnodes)) {
|
||||
/* clear all session cookies' value */
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
# riscv64 deny list for BPF CI and local vmtest
|
||||
exceptions # JIT does not support exceptions
|
||||
probe_user # kprobe hit in trap
|
||||
|
|
|
|||
|
|
@ -61,8 +61,8 @@ static const struct sockopt_test sol_tcp_tests[] = {
|
|||
{ .opt = TCP_NOTSENT_LOWAT, .new = 1314, .expected = 1314, },
|
||||
{ .opt = TCP_BPF_SOCK_OPS_CB_FLAGS, .new = BPF_SOCK_OPS_ALL_CB_FLAGS,
|
||||
.expected = BPF_SOCK_OPS_ALL_CB_FLAGS, },
|
||||
{ .opt = TCP_BPF_DELACK_MAX, .new = 30000, .expected = 30000, },
|
||||
{ .opt = TCP_BPF_RTO_MIN, .new = 30000, .expected = 30000, },
|
||||
{ .opt = TCP_BPF_DELACK_MAX, .new = 40000, .expected = 40000, },
|
||||
{ .opt = TCP_BPF_RTO_MIN, .new = 40000, .expected = 40000, },
|
||||
{ .opt = TCP_RTO_MAX_MS, .new = 2000, .expected = 2000, },
|
||||
{ .opt = 0, },
|
||||
};
|
||||
|
|
|
|||
|
|
@ -35,11 +35,11 @@ aarch64)
|
|||
ARCH="arm64"
|
||||
;;
|
||||
riscv64)
|
||||
# required qemu version v7.2.0+
|
||||
# required qemu version v8.2.0+
|
||||
QEMU_BINARY=qemu-system-riscv64
|
||||
QEMU_CONSOLE="ttyS0,115200"
|
||||
HOST_FLAGS=(-M virt -cpu host -enable-kvm -smp 8)
|
||||
CROSS_FLAGS=(-M virt -cpu rv64,sscofpmf=true -smp 8)
|
||||
CROSS_FLAGS=(-M virt -cpu max,sscofpmf=false -smp 8)
|
||||
BZIMAGE="arch/riscv/boot/Image"
|
||||
ARCH="riscv"
|
||||
;;
|
||||
|
|
@ -65,7 +65,7 @@ OUTPUT_DIR="$HOME/.bpf_selftests"
|
|||
KCONFIG_REL_PATHS=("tools/testing/selftests/bpf/config"
|
||||
"tools/testing/selftests/bpf/config.vm"
|
||||
"tools/testing/selftests/bpf/config.${PLATFORM}")
|
||||
INDEX_URL="https://raw.githubusercontent.com/libbpf/ci/master/INDEX"
|
||||
INDEX_URL="https://raw.githubusercontent.com/libbpf/ci/main/INDEX"
|
||||
NUM_COMPILE_JOBS="$(nproc)"
|
||||
LOG_FILE_BASE="$(date +"bpf_selftests.%Y-%m-%d_%H-%M-%S")"
|
||||
LOG_FILE="${LOG_FILE_BASE}.log"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user