]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'optimize-bpf_tail_call'
authorAlexei Starovoitov <ast@kernel.org>
Sat, 23 Nov 2019 02:02:44 +0000 (18:02 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 25 Nov 2019 01:04:12 +0000 (17:04 -0800)
commit071cab22a53b54f630c0f2a34aec7b15fd49a56e
tree690f7ab7802bc6fc215043adfe112fa867fb4e1f
parent952501bbe621ebaceeafc1a4d122637597ea5990
parentee327711a173911e00552f8cc3c5248453db853a
Merge branch 'optimize-bpf_tail_call'

Daniel Borkmann says:

====================
This gets rid of indirect jumps for BPF tail calls whenever possible.
The series adds emission for *direct* jumps for tail call maps in order
to avoid the retpoline overhead from 187178554d82 ("bpf, x64: implement
retpoline for tail call") for situations that allow for it, meaning,
for known constant keys at verification time which are used as index
into the tail call map. See patch 7/8 for more general details.

Thanks!

v1  -> v2:
  - added more test cases
  - u8 ip_stable -> bool (Andrii)
  - removed bpf_map_poke_{un,}lock and simplified the code (Andrii)
  - added break into prog_array_map_poke_untrack since there's just
    one prog (Andrii)
  - fixed typo: for for in commit msg (Andrii)
  - reworked __bpf_arch_text_poke (Andrii)
  - added subtests, and comment on tests themselves, NULL-NULL
    transistion (Andrii)
  - in constant map key tracking I've moved the map_poke_track callback
    to once we've finished creating the poke tab as otherwise concurrent
    access from tail call map would blow up (since we realloc the table)
rfc -> v1:
  - Applied Alexei's and Andrii's feeback from
    https://lore.kernel.org/bpf/cover.1573779287.git.daniel@iogearbox.net/T/#t
====================

Signed-off-by: Alexei Starovoitov <ast@kernel.org>