• Sandipan Das's avatar
    bpf: powerpc64: add JIT support for multi-function programs · 8484ce83
    Sandipan Das authored
    This adds support for bpf-to-bpf function calls in the powerpc64
    JIT compiler. The JIT compiler converts the bpf call instructions
    to native branch instructions. After a round of the usual passes,
    the start addresses of the JITed images for the callee functions
    are known. Finally, to fixup the branch target addresses, we need
    to perform an extra pass.
    
    Because of the address range in which JITed images are allocated
    on powerpc64, the offsets of the start addresses of these images
    from __bpf_call_base are as large as 64 bits. So, for a function
    call, we cannot use the imm field of the instruction to determine
    the callee's address. Instead, we use the alternative method of
    getting it from the list of function addresses in the auxiliary
    data of the caller by using the off field as an index.
    Signed-off-by: default avatarSandipan Das <sandipan@linux.vnet.ibm.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    8484ce83
bpf_jit_comp64.c 29.3 KB