• 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
    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
    This patch:
    1. Rename saved_command_line into boot_command_line, mark as init
    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>
Last commit
Last update
Documentation Loading commit data...
arch Loading commit data...
block Loading commit data...
crypto Loading commit data...
drivers Loading commit data...
fs Loading commit data...
include Loading commit data...
init Loading commit data...
ipc Loading commit data...
kernel Loading commit data...
lib Loading commit data...
mm Loading commit data...
net Loading commit data...
scripts Loading commit data...
security Loading commit data...
sound Loading commit data...
usr Loading commit data...
.gitignore Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
Kbuild Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README Loading commit data...
REPORTING-BUGS Loading commit data...