On 4/15/19 12:55 PM, Peter Zijlstra wrote: > On Mon, Apr 01, 2019 at 10:58:16AM +0200, Daniel Bristot de Oliveira wrote: >> In the batching mode, entries with the same key should also be sorted by the >> code, enabling a bsearch() of a code/addr when updating a key. > > Might be good to explain *why*. > > We can see what the code does, explaining why we do things is what we > have Changelogs for.
Ack! I will explain why, >> Signed-off-by: Daniel Bristot de Oliveira <[email protected]> >> Cc: Thomas Gleixner <[email protected]> >> Cc: Ingo Molnar <[email protected]> >> Cc: Borislav Petkov <[email protected]> >> Cc: "H. Peter Anvin" <[email protected]> >> Cc: Greg Kroah-Hartman <[email protected]> >> Cc: Masami Hiramatsu <[email protected]> >> Cc: "Steven Rostedt (VMware)" <[email protected]> >> Cc: Jiri Kosina <[email protected]> >> Cc: Josh Poimboeuf <[email protected]> >> Cc: "Peter Zijlstra (Intel)" <[email protected]> >> Cc: Chris von Recklinghausen <[email protected]> >> Cc: Jason Baron <[email protected]> >> Cc: Scott Wood <[email protected]> >> Cc: Marcelo Tosatti <[email protected]> >> Cc: Clark Williams <[email protected]> >> Cc: [email protected] >> Cc: [email protected] >> --- >> kernel/jump_label.c | 16 ++++++++++++++++ >> 1 file changed, 16 insertions(+) >> >> diff --git a/kernel/jump_label.c b/kernel/jump_label.c >> index e666a4d6642a..8b7bfbba4cef 100644 >> --- a/kernel/jump_label.c >> +++ b/kernel/jump_label.c >> @@ -36,12 +36,28 @@ static int jump_label_cmp(const void *a, const void *b) >> const struct jump_entry *jea = a; >> const struct jump_entry *jeb = b; >> >> + /* >> + * Entrires are sorted by key. >> + */ and this the typo above (just noticed), >> if (jump_entry_key(jea) < jump_entry_key(jeb)) >> return -1; >> >> if (jump_entry_key(jea) > jump_entry_key(jeb)) >> return 1; >> >> +#ifdef HAVE_JUMP_LABEL_BATCH >> + /* >> + * In the batching mode, entries should also be sorted by the code >> + * inside the already sorted list of entries, enabling a bsearch in >> + * the vector. >> + */ >> + if (jump_entry_code(jea) < jump_entry_code(jeb)) >> + return -1; >> + >> + if (jump_entry_code(jea) > jump_entry_code(jeb)) >> + return 1; >> +#endif >> + >> return 0; >> } > > The secondary sort order doesn't hurt, so we could leave the #ifdef out, > not sure. and remove the #ifdef, unless someone else things we need to keep it. -- Daniel

