* add new code section for kernel code
@ 2006-04-06 12:45 saeed bishara
2006-04-06 13:10 ` Paolo Ornati
0 siblings, 1 reply; 13+ messages in thread
From: saeed bishara @ 2006-04-06 12:45 UTC (permalink / raw)
To: linux-kernel
Hi,
I'm developing linux kernel for ARM cpu with direct-mapped
instruction cache, sometimes I notice that the pefromance of the
kernel (for some test) is highly dependent on the code layout, in
order to fix that I added new code section, and for each kernel
function that highly invokerd I added compiler attribute so it will
allocated in that section (exactly as the __init section). but it
bothers me that I need to change the kernel source code, so is there
any way to do that externally (without touching C code)?
saeed
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: add new code section for kernel code
2006-04-06 12:45 add new code section for kernel code saeed bishara
@ 2006-04-06 13:10 ` Paolo Ornati
2006-04-06 15:27 ` saeed bishara
2006-04-06 16:47 ` saeed bishara
0 siblings, 2 replies; 13+ messages in thread
From: Paolo Ornati @ 2006-04-06 13:10 UTC (permalink / raw)
To: saeed bishara; +Cc: linux-kernel
On Thu, 6 Apr 2006 15:45:47 +0300
"saeed bishara" <saeed.bishara@gmail.com> wrote:
> I'm developing linux kernel for ARM cpu with direct-mapped
> instruction cache, sometimes I notice that the pefromance of the
> kernel (for some test) is highly dependent on the code layout, in
> order to fix that I added new code section, and for each kernel
> function that highly invokerd I added compiler attribute so it will
> allocated in that section (exactly as the __init section)
It's already done in 2.6.17-rc1 for x86_64:
Processor type and feature --> Function reordering
arch/x86_64/Kconfig:
config REORDER
bool "Function reordering"
default n
help
This option enables the toolchain to reorder functions for a more
optimal TLB usage. If you have pretty much any version of binutils,
this can increase your kernel build time by roughly one minute.
http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4bdc3b7f1b730c07f5a6ccca77ee68e044036ffc
--
Paolo Ornati
Linux 2.6.16.1 on x86_64
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: add new code section for kernel code
2006-04-06 13:10 ` Paolo Ornati
@ 2006-04-06 15:27 ` saeed bishara
2006-04-06 16:47 ` saeed bishara
1 sibling, 0 replies; 13+ messages in thread
From: saeed bishara @ 2006-04-06 15:27 UTC (permalink / raw)
To: Paolo Ornati; +Cc: linux-kernel
very cooooooooool!!
regarding the readprofile, I think it's recommended to mention that
functions called within spinlocks won't show up.
On 4/6/06, Paolo Ornati <ornati@fastwebnet.it> wrote:
> On Thu, 6 Apr 2006 15:45:47 +0300
> "saeed bishara" <saeed.bishara@gmail.com> wrote:
>
> > I'm developing linux kernel for ARM cpu with direct-mapped
> > instruction cache, sometimes I notice that the pefromance of the
> > kernel (for some test) is highly dependent on the code layout, in
> > order to fix that I added new code section, and for each kernel
> > function that highly invokerd I added compiler attribute so it will
> > allocated in that section (exactly as the __init section)
>
> It's already done in 2.6.17-rc1 for x86_64:
>
> Processor type and feature --> Function reordering
>
> arch/x86_64/Kconfig:
>
> config REORDER
> bool "Function reordering"
> default n
> help
> This option enables the toolchain to reorder functions for a more
> optimal TLB usage. If you have pretty much any version of binutils,
> this can increase your kernel build time by roughly one minute.
>
> http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4bdc3b7f1b730c07f5a6ccca77ee68e044036ffc
>
> --
> Paolo Ornati
> Linux 2.6.16.1 on x86_64
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: add new code section for kernel code
2006-04-06 13:10 ` Paolo Ornati
2006-04-06 15:27 ` saeed bishara
@ 2006-04-06 16:47 ` saeed bishara
2006-04-07 11:02 ` saeed bishara
1 sibling, 1 reply; 13+ messages in thread
From: saeed bishara @ 2006-04-06 16:47 UTC (permalink / raw)
To: Paolo Ornati; +Cc: linux-kernel, linux-arm-kernel, Linux-arm-toolchain
Hi,
I've tried to port this to my kernel (2.6.12.6), but the kenel
fails to boot; it stops after Starting kernel ....
I tried to add only the CFLAGS += -ffunction-sections to the
arch/arm/Makefile, and it still fails. my tool chains is "gcc version
3.4.4 (release) (CodeSourcery ARM 2005q3-2)"
any ideas?
saeed
On 4/6/06, Paolo Ornati <ornati@fastwebnet.it> wrote:
> On Thu, 6 Apr 2006 15:45:47 +0300
> "saeed bishara" <saeed.bishara@gmail.com> wrote:
>
> > I'm developing linux kernel for ARM cpu with direct-mapped
> > instruction cache, sometimes I notice that the pefromance of the
> > kernel (for some test) is highly dependent on the code layout, in
> > order to fix that I added new code section, and for each kernel
> > function that highly invokerd I added compiler attribute so it will
> > allocated in that section (exactly as the __init section)
>
> It's already done in 2.6.17-rc1 for x86_64:
>
> Processor type and feature --> Function reordering
>
> arch/x86_64/Kconfig:
>
> config REORDER
> bool "Function reordering"
> default n
> help
> This option enables the toolchain to reorder functions for a more
> optimal TLB usage. If you have pretty much any version of binutils,
> this can increase your kernel build time by roughly one minute.
>
> http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4bdc3b7f1b730c07f5a6ccca77ee68e044036ffc
>
> --
> Paolo Ornati
> Linux 2.6.16.1 on x86_64
>
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: add new code section for kernel code
2006-04-06 16:47 ` saeed bishara
@ 2006-04-07 11:02 ` saeed bishara
2006-04-07 15:14 ` Arjan van de Ven
0 siblings, 1 reply; 13+ messages in thread
From: saeed bishara @ 2006-04-07 11:02 UTC (permalink / raw)
To: Paolo Ornati; +Cc: linux-kernel, linux-arm-kernel, Linux-arm-toolchain
I noticed the arch/arm/boot/compressed/ files compiled with
ffunction-sections switch, so I added the -fno-function-sections to
the EXTRA_CFLAGS of the compressed/Makefile. And this solved the
problem.
On 4/6/06, saeed bishara <saeed.bishara@gmail.com> wrote:
> Hi,
> I've tried to port this to my kernel (2.6.12.6), but the kenel
> fails to boot; it stops after Starting kernel ....
> I tried to add only the CFLAGS += -ffunction-sections to the
> arch/arm/Makefile, and it still fails. my tool chains is "gcc version
> 3.4.4 (release) (CodeSourcery ARM 2005q3-2)"
> any ideas?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: add new code section for kernel code
2006-04-07 11:02 ` saeed bishara
@ 2006-04-07 15:14 ` Arjan van de Ven
2006-04-07 15:43 ` Russell King
0 siblings, 1 reply; 13+ messages in thread
From: Arjan van de Ven @ 2006-04-07 15:14 UTC (permalink / raw)
To: saeed bishara
Cc: Paolo Ornati, linux-kernel, linux-arm-kernel, Linux-arm-toolchain
On Fri, 2006-04-07 at 14:02 +0300, saeed bishara wrote:
> I noticed the arch/arm/boot/compressed/ files compiled with
> ffunction-sections switch, so I added the -fno-function-sections to
> the EXTRA_CFLAGS of the compressed/Makefile. And this solved the
> problem.
can you send a patch for this to Russell ?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: add new code section for kernel code
2006-04-07 15:14 ` Arjan van de Ven
@ 2006-04-07 15:43 ` Russell King
2006-04-09 9:53 ` saeed bishara
0 siblings, 1 reply; 13+ messages in thread
From: Russell King @ 2006-04-07 15:43 UTC (permalink / raw)
To: Arjan van de Ven
Cc: saeed bishara, Paolo Ornati, linux-kernel, linux-arm-kernel,
Linux-arm-toolchain
On Fri, Apr 07, 2006 at 05:14:24PM +0200, Arjan van de Ven wrote:
> On Fri, 2006-04-07 at 14:02 +0300, saeed bishara wrote:
> > I noticed the arch/arm/boot/compressed/ files compiled with
> > ffunction-sections switch, so I added the -fno-function-sections to
> > the EXTRA_CFLAGS of the compressed/Makefile. And this solved the
> > problem.
>
> can you send a patch for this to Russell ?
I'd prefer not to paper over such bugs. Maybe the following patch will
fix the decompressor for saeed?
diff --git a/arch/arm/boot/compressed/vmlinux.lds.in b/arch/arm/boot/compressed/vmlinux.lds.in
--- a/arch/arm/boot/compressed/vmlinux.lds.in
+++ b/arch/arm/boot/compressed/vmlinux.lds.in
@@ -18,6 +18,7 @@ SECTIONS
_start = .;
*(.start)
*(.text)
+ *(.text.*)
*(.fixup)
*(.gnu.warning)
*(.rodata)
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: add new code section for kernel code
2006-04-07 15:43 ` Russell King
@ 2006-04-09 9:53 ` saeed bishara
2006-04-09 20:30 ` Russell King
0 siblings, 1 reply; 13+ messages in thread
From: saeed bishara @ 2006-04-09 9:53 UTC (permalink / raw)
To: Arjan van de Ven, saeed bishara, Paolo Ornati, linux-kernel,
linux-arm-kernel, Linux-arm-toolchain
> I'd prefer not to paper over such bugs. Maybe the following patch will
> fix the decompressor for saeed?
yes, this patch fixed the problem.
>
> diff --git a/arch/arm/boot/compressed/vmlinux.lds.in b/arch/arm/boot/compressed/vmlinux.lds.in
> --- a/arch/arm/boot/compressed/vmlinux.lds.in
> +++ b/arch/arm/boot/compressed/vmlinux.lds.in
> @@ -18,6 +18,7 @@ SECTIONS
> _start = .;
> *(.start)
> *(.text)
> + *(.text.*)
> *(.fixup)
> *(.gnu.warning)
> *(.rodata)
>
>
> --
> Russell King
> Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
> maintainer of: 2.6 Serial core
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: add new code section for kernel code
2006-04-09 9:53 ` saeed bishara
@ 2006-04-09 20:30 ` Russell King
2006-04-10 7:11 ` saeed bishara
2006-04-10 9:12 ` Dimitry Andric
0 siblings, 2 replies; 13+ messages in thread
From: Russell King @ 2006-04-09 20:30 UTC (permalink / raw)
To: saeed bishara
Cc: Arjan van de Ven, Paolo Ornati, linux-kernel, linux-arm-kernel,
Linux-arm-toolchain
On Sun, Apr 09, 2006 at 12:53:56PM +0300, saeed bishara wrote:
> > I'd prefer not to paper over such bugs. Maybe the following patch will
> > fix the decompressor for saeed?
>
> yes, this patch fixed the problem.
Thanks for testing; I've applied this patch so 2.6.17-rc2 onwards will
have this fixed.
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: add new code section for kernel code
2006-04-09 20:30 ` Russell King
@ 2006-04-10 7:11 ` saeed bishara
2006-04-10 9:12 ` Dimitry Andric
1 sibling, 0 replies; 13+ messages in thread
From: saeed bishara @ 2006-04-10 7:11 UTC (permalink / raw)
To: saeed bishara, Arjan van de Ven, Paolo Ornati, linux-kernel,
linux-arm-kernel, Linux-arm-toolchain
I just want to say that this code reordering reduced the I cache
misses of my system that includes direct mapped caches, and the
perforamance of a the optimezed tests increased up to 10% and in some
case it improved by 20%.
saeed
> Thanks for testing; I've applied this patch so 2.6.17-rc2 onwards will
> have this fixed.
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: add new code section for kernel code
2006-04-09 20:30 ` Russell King
2006-04-10 7:11 ` saeed bishara
@ 2006-04-10 9:12 ` Dimitry Andric
2006-04-11 14:49 ` saeed bishara
1 sibling, 1 reply; 13+ messages in thread
From: Dimitry Andric @ 2006-04-10 9:12 UTC (permalink / raw)
To: saeed bishara, Arjan van de Ven, Paolo Ornati, linux-kernel,
linux-arm-kernel, Linux-arm-toolchain
Russell King wrote:
> Thanks for testing; I've applied this patch so 2.6.17-rc2 onwards will
> have this fixed.
Maybe this can also be applied to the data sections, for people who
compile with -fdata-sections? As in the following patch (note that the
.rodata sections are already wildcarded):
diff -urNd a/arch/arm/boot/compressed/vmlinux.lds.in
b/arch/arm/boot/compressed/vmlinux.lds.in
--- a/arch/arm/boot/compressed/vmlinux.lds.in 2006-03-20
06:53:29.000000000 +0100
+++ b/arch/arm/boot/compressed/vmlinux.lds.in 2006-04-10
11:06:03.000000000 +0200
@@ -34,7 +35,7 @@
.got : { *(.got) }
_got_end = .;
.got.plt : { *(.got.plt) }
- .data : { *(.data) }
+ .data : { *(.data) *(.data.*) }
_edata = .;
. = BSS_START;
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: add new code section for kernel code
2006-04-10 9:12 ` Dimitry Andric
@ 2006-04-11 14:49 ` saeed bishara
2006-04-12 5:34 ` Arjan van de Ven
0 siblings, 1 reply; 13+ messages in thread
From: saeed bishara @ 2006-04-11 14:49 UTC (permalink / raw)
To: Dimitry Andric
Cc: Arjan van de Ven, Paolo Ornati, linux-kernel, linux-arm-kernel,
Linux-arm-toolchain
inorder to reduce image size of the kenrel I added the --gc-secions
flag to the LDFALGS_vmlinux, the image size reduced by 120KB (out of
1.8M), but the kernel failed to boot ( after the uncompression stage).
any idea?
I see that the fvr arch aleady using those flags.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: add new code section for kernel code
2006-04-11 14:49 ` saeed bishara
@ 2006-04-12 5:34 ` Arjan van de Ven
0 siblings, 0 replies; 13+ messages in thread
From: Arjan van de Ven @ 2006-04-12 5:34 UTC (permalink / raw)
To: saeed bishara
Cc: Dimitry Andric, Paolo Ornati, linux-kernel, linux-arm-kernel,
Linux-arm-toolchain
On Tue, 2006-04-11 at 17:49 +0300, saeed bishara wrote:
> inorder to reduce image size of the kenrel I added the --gc-secions
> flag to the LDFALGS_vmlinux, the image size reduced by 120KB (out of
> 1.8M), but the kernel failed to boot ( after the uncompression stage).
> any idea?
> I see that the fvr arch aleady using those flags.
there are some known binutils "issues" (or better "interactions") that
make this not yet practical.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2006-04-12 5:35 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-06 12:45 add new code section for kernel code saeed bishara
2006-04-06 13:10 ` Paolo Ornati
2006-04-06 15:27 ` saeed bishara
2006-04-06 16:47 ` saeed bishara
2006-04-07 11:02 ` saeed bishara
2006-04-07 15:14 ` Arjan van de Ven
2006-04-07 15:43 ` Russell King
2006-04-09 9:53 ` saeed bishara
2006-04-09 20:30 ` Russell King
2006-04-10 7:11 ` saeed bishara
2006-04-10 9:12 ` Dimitry Andric
2006-04-11 14:49 ` saeed bishara
2006-04-12 5:34 ` Arjan van de Ven
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.