bpf: powerpc64: optimize JIT passes for bpf function calls
authorSandipan Das <sandipan@linux.ibm.com>
Mon, 3 Dec 2018 12:21:04 +0000 (17:51 +0530)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 3 Dec 2018 22:47:05 +0000 (23:47 +0100)
commit025dceb0fab31c912c41b8f32577432231d83e6b
tree7dfeb7ee36398be26b8c69c288cbdfa19ad36250
parentdcb40590e69e306030e944a39d0e4bf54247fb68
bpf: powerpc64: optimize JIT passes for bpf function calls

Once the JITed images for each function in a multi-function program
are generated after the first three JIT passes, we only need to fix
the target address for the branch instruction corresponding to each
bpf-to-bpf function call.

This introduces the following optimizations for reducing the work
done by the JIT compiler when handling multi-function programs:

  [1] Instead of doing two extra passes to fix the bpf function calls,
      do just one as that would be sufficient.

  [2] During the extra pass, only overwrite the instruction sequences
      for the bpf-to-bpf function calls as everything else would still
      remain exactly the same. This also reduces the number of writes
      to the JITed image.

  [3] Do not regenerate the prologue and the epilogue during the extra
      pass as that would be redundant.

Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
arch/powerpc/net/bpf_jit_comp64.c