• Hari Bathini's avatar
    powerpc/bpf: enable kfunc call · 61688a82
    Hari Bathini authored
    Currently, bpf jit code on powerpc assumes all the bpf functions and
    helpers to be part of core kernel text. This is false for kfunc case,
    as function addresses may not be part of core kernel text area. So,
    add support for addresses that are not within core kernel text area
    too, to enable kfunc support. Emit instructions based on whether the
    function address is within core kernel text address or not, to retain
    optimized instruction sequence where possible.
    
    In case of PCREL, as a bpf function that is not within core kernel
    text area is likely to go out of range with relative addressing on
    kernel base, use PC relative addressing. If that goes out of range,
    load the full address with PPC_LI64().
    
    With addresses that are not within core kernel text area supported,
    override bpf_jit_supports_kfunc_call() to enable kfunc support. Also,
    override bpf_jit_supports_far_kfunc_call() to enable 64-bit pointers,
    as an address offset can be more than 32-bit long on PPC64.
    Signed-off-by: default avatarHari Bathini <hbathini@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240502173205.142794-2-hbathini@linux.ibm.com
    61688a82
bpf_jit_comp.c 9.26 KB