• Arjan van de Ven's avatar
    [PATCH] x86_64: Basic reorder infrastructure · 4bdc3b7f
    Arjan van de Ven authored
    This patch puts the infrastructure in place to allow for a reordering of
    functions based inside the vmlinux. The general idea is that it is possible
    to put all "common" functions into the first 2Mb of the code, so that they
    are covered by one TLB entry. This as opposed to the current situation where
    a typical vmlinux covers about 3.5Mb (on x86-64) and thus 2 TLB entries.
    
    This is done by enabling the -ffunction-sections flag in gcc, which puts
    each function in its own ELF section, so that the linker can then order them
    in a way defined by the linker script.
    
    As per previous discussions, Linus said he wanted a "static" list for this,
    eg a list provided by the kernel tarbal, so that most people have the same
    ordering at least. A script is provided to create this list based on
    readprofile(1) output. The included list is provisional, and entirely biased
    on my own testbox and me running a few kernel compiles and some other
    things.
    
    I think that to get to a better list we need to invite people to submit
    their own profiles, and somehow add those all up and base the final list on
    that. I'm willing to do that effort if this is ends up being the prefered
    approach. Such an effort probably needs to be repeated like once a year or
    so to adopt to the changing nature of the kernel.
    
    Made it a CONFIG with default n because it increases link times
    dramatically.
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    4bdc3b7f
Name
Last commit
Last update
..
basic Loading commit data...
genksyms Loading commit data...
kconfig Loading commit data...
ksymoops Loading commit data...
mod Loading commit data...
package Loading commit data...
.gitignore Loading commit data...
Kbuild.include Loading commit data...
Lindent Loading commit data...
Makefile Loading commit data...
Makefile.build Loading commit data...
Makefile.clean Loading commit data...
Makefile.host Loading commit data...
Makefile.lib Loading commit data...
Makefile.modinst Loading commit data...
Makefile.modpost Loading commit data...
bin2c.c Loading commit data...
binoffset.c Loading commit data...
bloat-o-meter Loading commit data...
checkincludes.pl Loading commit data...
checkstack.pl Loading commit data...
checkversion.pl Loading commit data...
conmakehash.c Loading commit data...
extract-ikconfig Loading commit data...
gcc-version.sh Loading commit data...
gen_initramfs_list.sh Loading commit data...
kallsyms.c Loading commit data...
kernel-doc Loading commit data...
makelst Loading commit data...
mkcompile_h Loading commit data...
mkmakefile Loading commit data...
mksysmap Loading commit data...
mkuboot.sh Loading commit data...
mkversion Loading commit data...
namespace.pl Loading commit data...
patch-kernel Loading commit data...
pnmtologo.c Loading commit data...
profile2linkerlist.pl Loading commit data...
setlocalversion Loading commit data...
show_delta Loading commit data...
ver_linux Loading commit data...