public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: Arjan van de Ven <arjan@infradead.org>
Cc: Adrian Bunk <bunk@kernel.org>,
	James Bottomley <James.Bottomley@HansenPartnership.com>,
	davem@davemloft.net, linux-scsi@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	"Maciej W. Rozycki" <macro@linux-mips.org>
Subject: Re: [PATCH] kill hotplug init/exit section annotations
Date: Thu, 31 Jan 2008 20:41:13 +0100	[thread overview]
Message-ID: <20080131194113.GA3925@uranus.ravnborg.org> (raw)
In-Reply-To: <20080131104811.4c2d558f@laptopd505.fenrus.org>

On Thu, Jan 31, 2008 at 10:48:11AM -0800, Arjan van de Ven wrote:
> On Thu, 31 Jan 2008 19:34:25 +0100
> Sam Ravnborg <sam@ravnborg.org> wrote:
> 
> > On Thu, Jan 31, 2008 at 09:48:01AM -0800, Arjan van de Ven wrote:
> > > On Thu, 31 Jan 2008 19:14:36 +0200
> > > Adrian Bunk <bunk@kernel.org> wrote:
> > > > > cpuhotplug is required for suspend/resume.
> > > > 
> > > > Not on UP computers.
> > > > 
> > > 
> > > great! someone who still has one of those and uses a kernel without
> > > it. Can you look at your system.map and see how many kilobytes
> > > you've gained? Eg how many kilobytes are in these sections exactly?
> > I have one. A Atmel AT91 board equipped with an 9263.
> > So lets take a look at the defconfig build for the evaluation board.
> > 
> > 
> > o-arm/vmlinux.o:     file format elf32-littlearm
> > 
> >   0 .text         001cdefc  00000000  00000000  00000400  2**10
> >   2 .init.text    000165e8  00000000  00000000  001ce6c0  2**5
> >  26 .init.data    000032ec  00000000  00000000  002578cc  2**2
> > 
> > ---
> > 
> >   4 .devinit.text 00001558  00000000  00000000  001e5270  2**2
> >   9 .exit.text    00000bc8  00000000  00000000  001e8d2c  2**2
> >  10 .cpuinit.text 00000924  00000000  00000000  001e98f4  2**2
> >  11 .meminit.text 000004cc  00000000  00000000  001ea218  2**2
> >  12 .devexit.text 00000160  00000000  00000000  001ea6e4  2**2
> >  38 .cpuinit.data 00000040  00000000  00000000  0025afc0  2**2
> >  39 .meminit.data 0000000c  00000000  00000000  0025b000  2**2
> > 
> > 
> > __devinit alone gives a net win of 5464 bytes.
> > That is only ~3% of total .text size but this is non-swapable
> > memory where everything is worth it.
> 
> now how much of this is lost again because you have to round the stuff to pagesize?

Lets take a look in the ARM vmlinux.lds.S file:
       .text.head : {
                _stext = .;
                _sinittext = .;
                *(.text.head)
        }

        .init : {                       /* Init code and data           */
                        INIT_TEXT
                _einittext = .;
                __proc_info_begin = .;
                        *(.proc.info.init)
                __proc_info_end = .;
                __arch_info_begin = .;
                        *(.arch.info.init)
                __arch_info_end = .;
                __tagtable_begin = .;
                        *(.taglist.init)
                __tagtable_end = .;
                . = ALIGN(16);
                __setup_start = .;
                        *(.init.setup)
                __setup_end = .;
                __early_begin = .;
                        *(.early_param.init)
                __early_end = .;
                __initcall_start = .;
                        INITCALLS
                __initcall_end = .;
                __con_initcall_start = .;
                        *(.con_initcall.init)
                __con_initcall_end = .;
                __security_initcall_start = .;
                        *(.security_initcall.init)
                __security_initcall_end = .;
#ifdef CONFIG_BLK_DEV_INITRD
                . = ALIGN(32);
                __initramfs_start = .;
                        usr/built-in.o(.init.ramfs)
                __initramfs_end = .;
#endif
                . = ALIGN(4096);
                __per_cpu_start = .;
                        *(.data.percpu)
                        *(.data.percpu.shared_aligned)
                __per_cpu_end = .;
#ifndef CONFIG_XIP_KERNEL
                __init_begin = _stext;
                INIT_DATA
                . = ALIGN(4096);
                __init_end = .;

Everything between _stext and __init_end are freed.
And we have two PAGESIZE alignmnets here - one for the percpu stuff
and the other to align the full area that can be freed.
So there is no special alignment for the __devinit stuff.

And there is no percpu data on ARM so that area is empty.
So it is one or two pages extra that are freed up.

	Sam

 

  reply	other threads:[~2008-01-31 19:41 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-30 20:03 [2.6 patch] scsi/qlogicpti.c section fixes Adrian Bunk
2008-01-30 21:00 ` James Bottomley
2008-01-30 21:20   ` Sam Ravnborg
2008-01-30 21:30     ` Adrian Bunk
2008-01-30 21:41     ` James Bottomley
2008-01-30 22:00       ` Sam Ravnborg
2008-01-30 22:32       ` Value of __*{init,exit} anotations? Adrian Bunk
2008-01-30 22:44         ` James Bottomley
2008-01-30 22:50           ` Russell King
2008-01-31  5:42         ` Andi Kleen
2008-01-31  7:44         ` Sam Ravnborg
2008-01-31 15:57           ` [PATCH] kill hotplug init/exit section annotations James Bottomley
2008-01-31 16:11             ` Arjan van de Ven
2008-01-31 16:21               ` Adrian Bunk
2008-01-31 17:07                 ` Arjan van de Ven
2008-01-31 17:14                   ` Adrian Bunk
2008-01-31 17:45                     ` Chris Wedgwood
2008-01-31 17:55                       ` Adrian Bunk
2008-01-31 18:32                         ` Chris Wedgwood
2008-01-31 18:52                           ` Geert Uytterhoeven
2008-01-31 17:48                     ` Arjan van de Ven
2008-01-31 18:34                       ` Sam Ravnborg
2008-01-31 18:48                         ` Arjan van de Ven
2008-01-31 19:41                           ` Sam Ravnborg [this message]
2008-01-30 22:28   ` [2.6 patch] scsi/qlogicpti.c section fixes Adrian Bunk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080131194113.GA3925@uranus.ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=arjan@infradead.org \
    --cc=bunk@kernel.org \
    --cc=davem@davemloft.net \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=macro@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox