lkml.org 
[lkml]   [2012]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/5] x86/jump-label: Do not bother updating nops if they are correct
    On Fri, 27 Jan 2012 15:14:44 -0500
    Steven Rostedt <rostedt@goodmis.org> wrote:

    > --- a/arch/x86/kernel/jump_label.c
    > +++ b/arch/x86/kernel/jump_label.c
    > @@ -53,7 +53,25 @@ void arch_jump_label_transform(struct jump_entry *entry,
    > void arch_jump_label_transform_static(struct jump_entry *entry,
    > enum jump_label_type type)
    > {
    > - __jump_label_transform(entry, type, text_poke_early);
    > + static int once;
    > + static int update;
    > +
    > + /*
    > + * This function is called at boot up and when modules are
    > + * first loaded. Check if the default nop, the one that is
    > + * inserted at compile time, is the ideal nop. If it is, then
    > + * we do not need to update the nop, and we can leave it as is.
    > + * If it is not, then we need to update the nop to the ideal nop.
    > + */
    > + if (!once) {
    > + unsigned char default_nop[] = { JUMP_LABEL_INIT_NOP };

    const. It generates less code. With my compiler version, at least.
    That was a bit dumb of it, given that memcmp() is declared to take
    const args.

    > + const unsigned char *ideal_nop = ideal_nops[NOP_ATOMIC5];
    > + once++;
    > + if (memcmp(ideal_nop, default_nop, 5) != 0)
    > + update = 1;
    > + }
    > + if (update)
    > + __jump_label_transform(entry, type, text_poke_early);
    > }


    \
     
     \ /
      Last update: 2012-01-27 21:37    [W:0.019 / U:91.820 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site