• Daniel Bristot de Oliveira's avatar
    x86/jump_label: Batch jump label updates · ba54f0c3
    Daniel Bristot de Oliveira authored
    Currently, the jump label of a static key is transformed via the arch
    specific function:
    
        void arch_jump_label_transform(struct jump_entry *entry,
                                       enum jump_label_type type)
    
    The new approach (batch mode) uses two arch functions, the first has the
    same arguments of the arch_jump_label_transform(), and is the function:
    
        bool arch_jump_label_transform_queue(struct jump_entry *entry,
                                             enum jump_label_type type)
    
    Rather than transforming the code, it adds the jump_entry in a queue of
    entries to be updated. This functions returns true in the case of a
    successful enqueue of an entry. If it returns false, the caller must to
    apply the queue and then try to queue again, for instance, because the
    queue is full.
    
    This function expects the caller to sort the entries by the address before
    enqueueuing then. This is already done by the arch independent code, though.
    
    After queuing all jump_entries, the function:
    
        void arch_jump_label_transform_apply(void)
    
    Applies the changes in the queue.
    Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@redhat.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Chris von Recklinghausen <crecklin@redhat.com>
    Cc: Clark Williams <williams@redhat.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jason Baron <jbaron@akamai.com>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Marcelo Tosatti <mtosatti@redhat.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Scott Wood <swood@redhat.com>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/57b4caa654bad7e3b066301c9a9ae233dea065b5.1560325897.git.bristot@redhat.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    ba54f0c3
jump_label.c 5.31 KB