• Ravi Bangoria's avatar
    bpf ppc64: Add BPF_PROBE_MEM support for JIT · 983bdc02
    Ravi Bangoria authored
    BPF load instruction with BPF_PROBE_MEM mode can cause a fault
    inside kernel. Append exception table for such instructions
    within BPF program.
    
    Unlike other archs which uses extable 'fixup' field to pass dest_reg
    and nip, BPF exception table on PowerPC follows the generic PowerPC
    exception table design, where it populates both fixup and extable
    sections within BPF program. fixup section contains two instructions,
    first instruction clears dest_reg and 2nd jumps to next instruction
    in the BPF code. extable 'insn' field contains relative offset of
    the instruction and 'fixup' field contains relative offset of the
    fixup entry. Example layout of BPF program with extable present:
    
                 +------------------+
                 |                  |
                 |                  |
       0x4020 -->| ld   r27,4(r3)   |
                 |                  |
                 |                  |
       0x40ac -->| lwz  r3,0(r4)    |
                 |                  |
                 |                  |
                 |------------------|
       0x4280 -->| li  r27,0        |  \ fixup entry
                 | b   0x4024       |  /
       0x4288 -->| li  r3,0         |
                 | b   0x40b0       |
                 |------------------|
       0x4290 -->| insn=0xfffffd90  |  \ extable entry
                 | fixup=0xffffffec |  /
       0x4298 -->| insn=0xfffffe14  |
                 | fixup=0xffffffec |
                 +------------------+
    
       (Addresses shown here are chosen random, not real)
    Signed-off-by: default avatarRavi Bangoria <ravi.bangoria@linux.ibm.com>
    Signed-off-by: default avatarHari Bathini <hbathini@linux.ibm.com>
    Reviewed-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211012123056.485795-6-hbathini@linux.ibm.com
    983bdc02
bpf_jit.h 6.14 KB