• Alon Bar-Lev's avatar
    [PATCH] Dynamic kernel command-line: common · 30d7e0d4
    Alon Bar-Lev authored
    Current implementation stores a static command-line buffer allocated to
    COMMAND_LINE_SIZE size.  Most architectures stores two copies of this buffer,
    one for future reference and one for parameter parsing.
    
    Current kernel command-line size for most architecture is much too small for
    module parameters, video settings, initramfs paramters and much more.  The
    problem is that setting COMMAND_LINE_SIZE to a grater value, allocates static
    buffers.
    
    In order to allow a greater command-line size, these buffers should be
    dynamically allocated or marked as init disposable buffers, so unused memory
    can be released.
    
    This patch renames the static saved_command_line variable into
    boot_command_line adding __initdata attribute, so that it can be disposed
    after initialization.  This rename is required so applications that use
    saved_command_line will not be affected by this change.
    
    It reintroduces saved_command_line as dynamically allocated buffer to match
    the data in boot_command_line.
    
    It also mark secondary command-line buffer as __initdata, and copies it to
    dynamically allocated static_command_line buffer components may hold reference
    to it after initialization.
    
    This patch is for linux-2.6.20-rc4-mm1 and is divided to target each
    architecture.  I could not check this in any architecture so please forgive me
    if I got it wrong.
    
    The per-architecture modification is very simple, use boot_command_line in
    place of saved_command_line.  The common code is the change into dynamic
    command-line.
    
    This patch:
    
    1. Rename saved_command_line into boot_command_line, mark as init
       disposable.
    
    2. Add dynamic allocated saved_command_line.
    
    3. Add dynamic allocated static_command_line.
    
    4. During startup copy: boot_command_line into saved_command_line.  arch
       command_line into static_command_line.
    
    5. Parse static_command_line and not arch command_line, so arch
       command_line may be freed.
    Signed-off-by: default avatarAlon Bar-Lev <alon.barlev@gmail.com>
    Cc: Andi Kleen <ak@muc.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Russell King <rmk@arm.linux.org.uk>
    Cc: Ian Molton <spyro@f2s.com>
    Cc: Mikael Starvik <starvik@axis.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Kyle McMartin <kyle@mcmartin.ca>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Hirokazu Takata <takata@linux-m32r.org>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
    Cc: Richard Curnow <rc@rc0.org.uk>
    Cc: William Lee Irwin III <wli@holomorphy.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jeff Dike <jdike@addtoit.com>
    Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
    Cc: Miles Bader <uclinux-v850@lsi.nec.co.jp>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: "Luck, Tony" <tony.luck@intel.com>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Roman Zippel <zippel@linux-m68k.org>
    Cc: Greg Ungerer <gerg@uclinux.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    30d7e0d4
main.c 19.3 KB