On Tue, Jul 2, 2024 at 2:12 PM Eduard Zingerman <eddyz87@xxxxxxxxx> wrote: > > On Mon, 2024-07-01 at 17:42 -0700, Andrii Nakryiko wrote: > > [...] > > > You don't seem to have a case where offset is not a multiple of 8 > > (though it would have to be a sub-register spill which would be > > "rejected" anyway, so not sure if there is anything to add here) > > My bad, will add such a test-case. > > > > > > diff --git a/tools/testing/selftests/bpf/prog_tests/verifier.c b/tools/testing/selftests/bpf/prog_tests/verifier.c > > [...] > > > > +void test_verifier_nocsr(void) > > > +{ > > > +#if defined(__x86_64__) > > > + RUN(verifier_nocsr); > > > +#endif /* __x86_64__ */ > > > > maybe #else <mark-as-skipped> ? > > Right, makes sense. > > [...] > > > > +++ b/tools/testing/selftests/bpf/progs/verifier_nocsr.c > > > @@ -0,0 +1,437 @@ > > > +// SPDX-License-Identifier: GPL-2.0 > > > + > > > +#include <linux/bpf.h> > > > +#include <bpf/bpf_helpers.h> > > > +#include "bpf_misc.h" > > > + > > > +#define __xlated_bpf_get_smp_processor_id \ > > > + __xlated(": w0 = ") \ > > > > how will this work for no_alu32 mode? > > The patch is applied by kernel, and it does not care about alu32 > compiler flags: > > insn_buf[0] = BPF_MOV32_IMM(BPF_REG_0, (u32)(unsigned long)&pcpu_hot.cpu_number); ah, right-right, of course! > insn_buf[1] = BPF_MOV64_PERCPU_REG(BPF_REG_0, BPF_REG_0); > insn_buf[2] = BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_0, 0); > > [...]