• Borislav Petkov's avatar
    x86/boot/64: Optimize fixmap page fixup · 6248f456
    Borislav Petkov authored
    Single-stepping through head_64.S made me look at the fixmap page PTEs
    fixup loop:
    
    So we're going through the whole level2_fixmap_pgt 4K page, looking at
    whether PAGE_PRESENT is set in those PTEs and add the delta between
    where we're compiled to run and where we actually end up running.
    
    However, if that delta is 0 (most cases) we go through all those 512
    PTEs for no reason at all. Oh well, we add 0 but that's no reason to me.
    
    Skipping that useless fixup gives us a boot speedup of 0.004 seconds in
    my guest. Not a lot but considering how cheap it is, I'll take it. Here
    is the printk time difference:
    
    before:
      ...
      [    0.000000] tsc: Marking TSC unstable due to TSCs unsynchronized
      [    0.013590] Calibrating delay loop (skipped), value calculated using timer frequency..
    		8027.17 BogoMIPS (lpj=16054348)
      [    0.017094] pid_max: default: 32768 minimum: 301
      ...
    
    after:
      ...
      [    0.000000] tsc: Marking TSC unstable due to TSCs unsynchronized
      [    0.009587] Calibrating delay loop (skipped), value calculated using timer frequency..
    		8026.86 BogoMIPS (lpj=16053724)
      [    0.013090] pid_max: default: 32768 minimum: 301
      ...
    
    For the other two changes converting naked numbers to defines:
    
      # arch/x86/kernel/head_64.o:
    
       text    data     bss     dec     hex filename
       1124  290864    4096  296084   48494 head_64.o.before
       1124  290864    4096  296084   48494 head_64.o.after
    
    md5:
       87086e202588939296f66e892414ffe2  head_64.o.before.asm
       87086e202588939296f66e892414ffe2  head_64.o.after.asm
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20161125111448.23623-1-bp@alien8.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    6248f456
head_64.S 12.9 KB