Messages in this thread Patch in this message | | | Date | Tue, 20 Oct 2009 00:34:09 -0400 (EDT) | From | "Ryan C. Gordon" <> | Subject | Re: [PATCH] binfmt_elf: Reorder objects in Makefile to favor platform default. |
| |
> Perhaps this should be configurable. For a 64-bit arch with mostly > 32-bit userspace the compat format should probably be tried first.
How about this, then?
From 22b6f98fb51bf68df09b7feb4ee8fbce6e02d01c Mon Sep 17 00:00:00 2001 From: Ryan C. Gordon <icculus@icculus.org> Date: Tue, 20 Oct 2009 00:32:04 -0400 Subject: [PATCH] binfmt_elf: Reordered object list so compat_binfmt_elf optionally comes first.
This will make it call register_binfmt() first, inserting it at the end of the list.
Now the kernel will try the compatibility formats as a backup if the actual system format rejects the binary. As almost all binaries loaded won't be compatibility formats, this saves a few cycles for each process.
For scenarios where favoring compatibility binaries makes sense, this can be chosen via the configuration.
Signed-off-by: Ryan C. Gordon <icculus@icculus.org> --- fs/Kconfig.binfmt | 14 ++++++++++++++ fs/Makefile | 7 +++++++ 2 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt index bb4cc5b..b296ab6 100644 --- a/fs/Kconfig.binfmt +++ b/fs/Kconfig.binfmt @@ -27,6 +27,20 @@ config COMPAT_BINFMT_ELF bool depends on COMPAT && BINFMT_ELF +config FAVOR_COMPAT_BINFMT_ELF + bool "Favor compatibility ELF binaries" + depends on COMPAT_BINFMT_ELF + default n + ---help--- + Favor "compatibility" ELF binaries. The system will work either way, + but you can save a few cycles per process by choosing the type of + binary you expect to be loading most of the time. This scenario + makes sense if you have a 64-bit kernel to manage 4+ gigabytes of + physical RAM but want to run mostly 32-bit processes to conserve + that RAM. + + If unsure, say N. + config BINFMT_ELF_FDPIC bool "Kernel support for FDPIC ELF binaries" default y diff --git a/fs/Makefile b/fs/Makefile index af6d047..36ad1c7 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -40,8 +40,15 @@ obj-$(CONFIG_BINFMT_MISC) += binfmt_misc.o # binfmt_script is always there obj-y += binfmt_script.o +# binfmts are registered in order listed here. First registered, last tried! +ifeq ($(CONFIG_FAVOR_COMPAT_BINFMT_ELF),y) obj-$(CONFIG_BINFMT_ELF) += binfmt_elf.o obj-$(CONFIG_COMPAT_BINFMT_ELF) += compat_binfmt_elf.o +else +obj-$(CONFIG_COMPAT_BINFMT_ELF) += compat_binfmt_elf.o +obj-$(CONFIG_BINFMT_ELF) += binfmt_elf.o +endif + obj-$(CONFIG_BINFMT_ELF_FDPIC) += binfmt_elf_fdpic.o obj-$(CONFIG_BINFMT_SOM) += binfmt_som.o obj-$(CONFIG_BINFMT_FLAT) += binfmt_flat.o -- 1.6.0.4
| |