diff options
author | Huang, Xiaolan <xiaolan.huang@intel.com> | 2008-05-15 06:18:41 +0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2008-05-15 20:54:19 +0400 |
commit | 839052d27e8db0c1545256fe5827abcd00fb51c5 (patch) | |
tree | 003839d444943ba8f125846e776b068721da2c8f /arch/ia64/ia32 | |
parent | 3fb2c74ee20b77affd494c6b8ce7928d0ebbb62e (diff) | |
download | linux-839052d27e8db0c1545256fe5827abcd00fb51c5.tar.xz |
[IA64] fix personality(PER_LINUX32) performance issue
The patch aims to fix a performance issue for the syscall
personality(PER_LINUX32).
On IA-64 box, the syscall personality (PER_LINUX32) has poor performance
because it failed to find the Linux/x86 execution domain. Then it tried
to load the kernel module however it failed always and it used the default
execution domain PER_LINUX instead. Requesting kernel modules is very
expensive. It caused the performance issue. (see the function
lookup_exec_domain in kernel/exec_domain.c).
To resolve the issue, execution domain Linux/x86 is always registered in
initialization time for IA-64 architecture.
Signed-off-by: Xiaolan Huang <xiaolan.huang@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/ia32')
-rw-r--r-- | arch/ia64/ia32/ia32_support.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/arch/ia64/ia32/ia32_support.c b/arch/ia64/ia32/ia32_support.c index 896b1ebbfb26..a6965ddafc46 100644 --- a/arch/ia64/ia32/ia32_support.c +++ b/arch/ia64/ia32/ia32_support.c @@ -15,7 +15,6 @@ #include <linux/kernel.h> #include <linux/init.h> #include <linux/mm.h> -#include <linux/personality.h> #include <linux/sched.h> #include <asm/intrinsics.h> @@ -29,7 +28,6 @@ extern int die_if_kernel (char *str, struct pt_regs *regs, long err); -struct exec_domain ia32_exec_domain; struct page *ia32_shared_page[NR_CPUS]; unsigned long *ia32_boot_gdt; unsigned long *cpu_gdt_table[NR_CPUS]; @@ -240,14 +238,6 @@ ia32_cpu_init (void) static int __init ia32_init (void) { - ia32_exec_domain.name = "Linux/x86"; - ia32_exec_domain.handler = NULL; - ia32_exec_domain.pers_low = PER_LINUX32; - ia32_exec_domain.pers_high = PER_LINUX32; - ia32_exec_domain.signal_map = default_exec_domain.signal_map; - ia32_exec_domain.signal_invmap = default_exec_domain.signal_invmap; - register_exec_domain(&ia32_exec_domain); - #if PAGE_SHIFT > IA32_PAGE_SHIFT { extern struct kmem_cache *ia64_partial_page_cachep; |