On Fri, Nov 22, 2019 at 12:08 PM Daniel Borkmann <daniel@xxxxxxxxxxxxx> wrote: > > 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 a493a87f38cf ("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@xxxxxxxxxxxxx/T/#t Applied. Thanks!