On Fri, Jan 21, 2022 at 5:30 PM Song Liu <songliubraving@xxxxxx> wrote: > > > > > On Jan 21, 2022, at 5:12 PM, Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > > > On Fri, Jan 21, 2022 at 5:01 PM Song Liu <songliubraving@xxxxxx> wrote: > >> > >> In this way, we need to allocate rw_image here, and free it in > >> bpf_jit_comp.c. This feels a little weird to me, but I guess that > >> is still the cleanest solution for now. > > > > You mean inside bpf_jit_binary_alloc? > > That won't be arch independent. > > It needs to be split into generic piece that stays in core.c > > and callbacks like bpf_jit_fill_hole_t > > or into multiple helpers with prep in-between. > > Don't worry if all archs need to be touched. > > How about we introduce callback bpf_jit_set_header_size_t? Then we > can split x86's jit_fill_hole() into two functions, one to fill the > hole, the other to set size. The rest of the logic gonna stay the same. > > Archs that do not use bpf_prog_pack won't need bpf_jit_set_header_size_t. That's not any better. Currently the choice of bpf_jit_binary_alloc_pack vs bpf_jit_binary_alloc leaks into arch bits and bpf_prog_pack_max_size() doesn't really make it generic. Ideally all archs continue to use bpf_jit_binary_alloc() and magic happens in a generic code. If not then please remove bpf_prog_pack_max_size(), since it doesn't provide much value and pick bpf_jit_binary_alloc_pack() signature to fit x86 jit better. It wouldn't need bpf_jit_fill_hole_t callback at all. Please think it through so we don't need to redesign it when another arch will decide to use huge pages for bpf progs. cc-ing Ilya for ideas on how that would fit s390.