Messages in this thread | | | Date | Tue, 25 Jan 2022 17:34:37 -0800 | Subject | Re: [PATCH v6 bpf-next 6/7] bpf: introduce bpf_prog_pack allocator | From | Alexei Starovoitov <> |
| |
On 1/25/22 5:31 PM, Song Liu wrote: > On Tue, Jan 25, 2022 at 5:28 PM Song Liu <song@kernel.org> wrote: >> >> On Tue, Jan 25, 2022 at 5:20 PM Alexei Starovoitov >> <alexei.starovoitov@gmail.com> wrote: >>> >>> On Tue, Jan 25, 2022 at 4:50 PM Song Liu <song@kernel.org> wrote: >>>> >>>> On Tue, Jan 25, 2022 at 4:38 PM Alexei Starovoitov >>>> <alexei.starovoitov@gmail.com> wrote: >>>>> >> [...] >>>>>> >>>>>> In bpf_jit_binary_hdr(), we calculate header as image & PAGE_MASK. >>>>>> If we want s/PAGE_MASK/63 for x86_64, we will have different versions >>>>>> of bpf_jit_binary_hdr(). It is not on any hot path, so we can use __weak for >>>>>> it. Other than this, I think the solution works fine. >>>>> >>>>> I think it can stay generic. >>>>> >>>>> The existing bpf_jit_binary_hdr() will do & PAGE_MASK >>>>> while bpf_jit_binary_hdr_pack() will do & 63. >>>> >>>> The problem with this approach is that we need bpf_prog_ksym_set_addr >>>> to be smart to pick bpf_jit_binary_hdr() or bpf_jit_binary_hdr_pack(). >>> >>> We can probably add a true JIT image size to bpf_prog_aux. >>> bpf_prog_ksym_set_addr() is approximating the end: >>> prog->aux->ksym.end = addr + hdr->pages * PAGE_SIZE >>> which doesn't have to include all the 'int 3' padding after the end. > > Actually, we can use prog->jited_len in bpf_prog_ksym_set_addr(), right?
Lol. Yeah. We should. Looks like somebody remembers their own code in perf_event_bpf_emit_ksymbols() ;)
| |