Dynamic kernel command-line
Subsystems (14)
cover Dynamic kernel command-line
Hello,
This is take 3 of submission, I submit this patch once in a few monthes to collect some more signatures :) Until now, I got three:
- avr32
- sh
- sh64
I know this is not one of major priorities, but it should be simple enough to be reviewed and included.
I will also be happy to get a REJECT response, so I stop trying to get it included. Any suggestions of how to push this farward will also be appreciated.
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.19 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.
---
PATCH 1/26 Dynamic kernel command-line - common
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.
---
include/linux/init.h +3 -2
@@ -67,7 +67,8 @@ extern initcall_t __con_initcall_start[]extern initcall_t __security_initcall_start[], __security_initcall_end[];/* Defined in init/main.c */ -extern char saved_command_line[]; +extern char __initdata boot_command_line[]; +extern char *saved_command_line;extern unsigned int reset_devices;/* used by init/main.c */
@@ -163,7 +164,7 @@ struct obs_kernel_param {#define early_param (str, fn) \ __setup_param(str, fn, fn, 1) -/* Relies on saved_command_line being set */ +/* Relies on boot_command_line being set */ void __init parse_early_param (void );#endif /* __ASSEMBLY__ */
init/main.c +24 -5
@@ -116,8 +116,12 @@ extern void time_init(void);void (*late_time_init)(void );extern void softirq_init (void ); -/* Untouched command line (eg. for /proc) saved by arch-specific code. */ -char saved_command_line[COMMAND_LINE_SIZE ]; +/* Untouched command line saved by arch-specific code. */ +char __initdata boot_command_line[COMMAND_LINE_SIZE ]; +/* Untouched saved command line (eg. for /proc) */ +char *saved_command_line; +/* Command line for parameter parsing */ +static char *static_command_line;static char *execute_command;static char *ramdisk_execute_command;
@@ -400,6 +404,20 @@ static void __init smp_init(void)#endif /* +* We need to store the untouched command line for future reference. +* We also need to store the touched command line since the parameter +* parsing is performed in place, and we should allow a component to +* store reference of name/value for future reference. +*/ +static void __init setup_command_line (char *command_line) +{ + saved_command_line =alloc_bootmem (strlen (boot_command_line)+1 ); + static_command_line =alloc_bootmem (strlen (command_line)+1 ); +strcpy (saved_command_line, boot_command_line); +strcpy (static_command_line, command_line); +} + +/* * We need to finalize in a non-__init function or else race conditions * between the root thread and the init thread may cause start_kernel to * be reaped by free_initmem before the root thread has proceeded to
@@ -453,7 +471,7 @@ void __init parse_early_param(void)return ;/* All fall through to do_early_param. */ -strlcpy (tmp_cmdline, saved_command_line,COMMAND_LINE_SIZE ); +strlcpy (tmp_cmdline, boot_command_line,COMMAND_LINE_SIZE );parse_args ("early options" , tmp_cmdline,NULL ,0 , do_early_param); done =1 ; }
@@ -503,6 +521,7 @@ asmlinkage void __init start_kernel(voidprintk (KERN_NOTICE );printk (linux_banner);setup_arch (&command_line); +setup_command_line (command_line);unwind_setup ();setup_per_cpu_areas ();smp_prepare_boot_cpu ();/* arch-specific boot-cpu hooks */
@@ -520,9 +539,9 @@ asmlinkage void __init start_kernel(voidpreempt_disable ();build_all_zonelists ();page_alloc_init (); -printk (KERN_NOTICE "Kernel command line: %s\n" , saved_command_line); +printk (KERN_NOTICE "Kernel command line: %s\n" , boot_command_line);parse_early_param (); -parse_args ("Booting kernel" , command_line, __start___param, +parse_args ("Booting kernel" , static_command_line, __start___param, __stop___param - __start___param, &unknown_bootoption);sort_main_extable ();
PATCH 2/26 Dynamic kernel command-line - alpha
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/alpha/kernel/setup.c +3 -3
@@ -122,7 +122,7 @@ static void get_sysnames(unsigned long, char **, char **);static void determine_cpu_caches (unsigned int ); -static char command_line[COMMAND_LINE_SIZE ]; +static char __initdata command_line[COMMAND_LINE_SIZE ];/* * The format of "screen_info" is strange, and due to early
@@ -547,7 +547,7 @@ setup_arch(char **cmdline_p) }else {strlcpy (command_line,COMMAND_LINE ,sizeof command_line); } -strcpy (saved_command_line, command_line); +strcpy (boot_command_line, command_line); *cmdline_p = command_line;/*
@@ -589,7 +589,7 @@ setup_arch(char **cmdline_p) }/* Replace the command line, now that we've killed it with strsep. */ -strcpy (command_line, saved_command_line); +strcpy (command_line, boot_command_line);/* If we want SRM console printk echoing early, do it now. */ if (alpha_using_srm && srmcons_output) {
PATCH 3/26 Dynamic kernel command-line - arm
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/arm/kernel/setup.c +3 -3
@@ -106,7 +106,7 @@ unsigned long phys_initrd_size __initdatstatic struct meminfo meminfo__initdata = {0 , };static const char *cpu_name;static const char *machine_name; -static char command_line[COMMAND_LINE_SIZE ]; +static char __initdata command_line[COMMAND_LINE_SIZE ];static char default_command_line[COMMAND_LINE_SIZE ]__initdata =CONFIG_CMDLINE ;static union {char c[4 ];unsigned long l; } endian_test__initdata = { {'l' ,'?' ,'?' ,'b' } };
@@ -806,8 +806,8 @@ void __init setup_arch(char **cmdline_p) init_mm.end_data = (unsigned long ) &_edata; init_mm.brk = (unsigned long ) &_end; -memcpy (saved_command_line, from,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; +memcpy (boot_command_line, from,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ;parse_cmdline (cmdline_p, from);paging_init (&meminfo, mdesc);request_standard_resources (&meminfo, mdesc);
PATCH 4/26 Dynamic kernel command-line - arm26
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/arm26/kernel/setup.c +3 -3
@@ -80,7 +80,7 @@ unsigned long phys_initrd_size __initdatstatic struct meminfo meminfo__initdata = {0 , };static struct proc_info_item proc_info;static const char *machine_name; -static char command_line[COMMAND_LINE_SIZE ]; +static char __initdata command_line[COMMAND_LINE_SIZE ];static char default_command_line[COMMAND_LINE_SIZE ]__initdata =CONFIG_CMDLINE ;
@@ -492,8 +492,8 @@ void __init setup_arch(char **cmdline_p) init_mm.end_data = (unsigned long ) &_edata; init_mm.brk = (unsigned long ) &_end; -memcpy (saved_command_line, from,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; +memcpy (boot_command_line, from,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ;parse_cmdline (&meminfo, cmdline_p, from);bootmem_init (&meminfo);paging_init (&meminfo);
PATCH 5/26 Dynamic kernel command-line - avr32
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/avr32/kernel/setup.c +3 -3
@@ -44,7 +44,7 @@ struct avr32_cpuinfo boot_cpu_data = { };EXPORT_SYMBOL (boot_cpu_data); -static char command_line[COMMAND_LINE_SIZE ]; +static char __initdata command_line[COMMAND_LINE_SIZE ];/* * Should be more than enough, but if you have a _really_ complex
@@ -202,7 +202,7 @@ __tagtable(ATAG_MEM, parse_tag_mem);static int __init parse_tag_cmdline (struct tag *tag) { -strlcpy (saved_command_line, tag->u.cmdline.cmdline,COMMAND_LINE_SIZE ); +strlcpy (boot_command_line, tag->u.cmdline.cmdline,COMMAND_LINE_SIZE );return 0 ; }__tagtable (ATAG_CMDLINE , parse_tag_cmdline);
@@ -318,7 +318,7 @@ void __init setup_arch (char **cmdline_p init_mm.end_data = (unsigned long ) &_edata; init_mm.brk = (unsigned long ) &_end; -strlcpy (command_line, saved_command_line,COMMAND_LINE_SIZE ); +strlcpy (command_line, boot_command_line,COMMAND_LINE_SIZE ); *cmdline_p = command_line;parse_early_param ();
PATCH 6/26 Dynamic kernel command-line - cris
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set cris_command_line as __initdata.
---
arch/cris/kernel/setup.c +3 -3
@@ -29,7 +29,7 @@ struct screen_info screen_info;extern int root_mountflags;extern char _etext, _edata, _end; -char cris_command_line[COMMAND_LINE_SIZE ] = {0 , }; +char __initdata cris_command_line[COMMAND_LINE_SIZE ] = {0 , };extern const unsigned long text_start, edata;/* set by the linker script */ extern unsigned long dram_start, dram_end;
@@ -153,8 +153,8 @@ setup_arch(char **cmdline_p)#endif /* Save command line for future references. */ -memcpy (saved_command_line, cris_command_line,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; +memcpy (boot_command_line, cris_command_line,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ;/* give credit for the CRIS port */ show_etrax_copyright ();
PATCH 7/26 Dynamic kernel command-line - frv
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/frv/kernel/setup.c +3 -3
@@ -110,7 +110,7 @@ unsigned long __initdata num_mappedpages struct cpuinfo_frv __nongprelbss boot_cpu_data; -char command_line[COMMAND_LINE_SIZE ]; +char __initdata command_line[COMMAND_LINE_SIZE ];char __initdata redboot_command_line[COMMAND_LINE_SIZE ];#ifdef CONFIG_PM
@@ -762,7 +762,7 @@ void __init setup_arch(char **cmdline_p)printk ("uClinux FR-V port done by Red Hat Inc <[email protected]>\n" );#endif -memcpy (saved_command_line, redboot_command_line,COMMAND_LINE_SIZE ); +memcpy (boot_command_line, redboot_command_line,COMMAND_LINE_SIZE );determine_cpu ();determine_clocks (1 );
@@ -803,7 +803,7 @@ void __init setup_arch(char **cmdline_p)#endif /* deal with the command line - RedBoot may have passed one to the kernel */ -memcpy (command_line, saved_command_line,sizeof (command_line)); +memcpy (command_line, boot_command_line,sizeof (command_line)); *cmdline_p = &command_line[0 ];parse_cmdline_early (command_line);
PATCH 8/26 Dynamic kernel command-line - h8300
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/h8300/kernel/setup.c +3 -3
@@ -54,7 +54,7 @@ unsigned long rom_length;unsigned long memory_start;unsigned long memory_end; -char command_line[COMMAND_LINE_SIZE ]; +char __initdata command_line[COMMAND_LINE_SIZE ];extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;extern int _ramstart, _ramend;
@@ -154,8 +154,8 @@ void __init setup_arch(char **cmdline_p)#endif /* Keep a copy of command line */ *cmdline_p = &command_line[0 ]; -memcpy (saved_command_line, command_line,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] =0 ; +memcpy (boot_command_line, command_line,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] =0 ;#ifdef DEBUG if (strlen (*cmdline_p))
PATCH 9/26 Dynamic kernel command-line - i386
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/i386/kernel/head.S +1 -1
@@ -97,7 +97,7 @@ ENTRY(startup_32) movzwl OLD_CL_OFFSET,%esi addl $(OLD_CL_BASE_ADDR),%esi 2: - movl $(saved_command_line - __PAGE_OFFSET),%edi + movl $(boot_command_line - __PAGE_OFFSET),%edi movl $(COMMAND_LINE_SIZE/4),%ecx rep movsl
arch/i386/kernel/setup.c +2 -2
@@ -145,7 +145,7 @@ unsigned long saved_videomode;#define RAMDISK_PROMPT_FLAG 0x8000#define RAMDISK_LOAD_FLAG 0x4000 -static char command_line[COMMAND_LINE_SIZE ]; +static char __initdata command_line[COMMAND_LINE_SIZE ];unsigned char __initdata boot_params[PARAM_SIZE ];
@@ -1405,7 +1405,7 @@ void __init setup_arch(char **cmdline_p)print_memory_map ("user" ); } -strlcpy (command_line, saved_command_line,COMMAND_LINE_SIZE ); +strlcpy (command_line, boot_command_line,COMMAND_LINE_SIZE ); *cmdline_p = command_line; max_low_pfn =setup_memory ();
PATCH 10/26 Dynamic kernel command-line - ia64
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/ia64/kernel/efi.c +2 -2
@@ -412,11 +412,11 @@ efi_init (void)efi_char16_t *c16;u64 efi_desc_size;char *cp, vendor[100 ] ="unknown" ; -extern char saved_command_line[]; +extern char __initdata boot_command_line[];int i;/* it's too early to be able to use the standard kernel command line support... */ -for (cp = saved_command_line; *cp; ) { +for (cp = boot_command_line; *cp; ) {if (memcmp (cp,"mem=" ,4 ) ==0 ) { mem_limit =memparse (cp +4 , &cp); }else if (memcmp (cp,"max_addr=" ,9 ) ==0 ) {
arch/ia64/kernel/sal.c +2 -2
@@ -194,9 +194,9 @@ static void __initchk_nointroute_opt (void) {char *cp; -extern char saved_command_line[]; +extern char __initdata boot_command_line[]; -for (cp = saved_command_line; *cp; ) { +for (cp = boot_command_line; *cp; ) {if (memcmp (cp,"nointroute" ,10 ) ==0 ) { no_int_routing =1 ;printk ("no_int_routing on\n" );
arch/ia64/kernel/setup.c +1 -1
@@ -404,7 +404,7 @@ setup_arch (char **cmdline_p)ia64_patch_vtop ((u64 ) __start___vtop_patchlist, (u64 ) __end___vtop_patchlist); *cmdline_p =__va (ia64_boot_param->command_line); -strlcpy (saved_command_line, *cmdline_p,COMMAND_LINE_SIZE ); +strlcpy (boot_command_line, *cmdline_p,COMMAND_LINE_SIZE );efi_init ();io_port_init ();
PATCH 11/26 Dynamic kernel command-line - m32r
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/m32r/kernel/setup.c +3 -3
@@ -64,7 +64,7 @@ struct screen_info screen_info = {extern int root_mountflags; -static char command_line[COMMAND_LINE_SIZE ]; +static char __initdata command_line[COMMAND_LINE_SIZE ];static struct resource data_resource = { .name ="Kernel data" ,
@@ -95,8 +95,8 @@ static __inline__ void parse_mem_cmdlineint usermem =0 ;/* Save unparsed command line copy for /proc/cmdline */ -memcpy (saved_command_line,COMMAND_LINE ,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; +memcpy (boot_command_line,COMMAND_LINE ,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; memory_start = (unsigned long )CONFIG_MEMORY_START +PAGE_OFFSET ; memory_end = memory_start+(unsigned long )CONFIG_MEMORY_SIZE ;
PATCH 12/26 Dynamic kernel command-line - m68k
In reply to Alon Bar-LevRename saved_command_line into boot_command_line.
---
arch/m68k/kernel/setup.c +1 -1
@@ -256,7 +256,7 @@ void __init setup_arch(char **cmdline_p) init_mm.brk = (unsigned long ) &_end; *cmdline_p = m68k_command_line; -memcpy (saved_command_line, *cmdline_p,CL_SIZE ); +memcpy (boot_command_line, *cmdline_p,CL_SIZE );/* Parse the command line for arch-specific options. * For the m68k, this is currently only "debug=xxx" to enable printing
PATCH 13/26 Dynamic kernel command-line - m68knommu
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/m68knommu/kernel/setup.c +3 -3
@@ -47,7 +47,7 @@ unsigned long memory_end;EXPORT_SYMBOL (memory_start);EXPORT_SYMBOL (memory_end); -char command_line[COMMAND_LINE_SIZE ]; +char __initdata command_line[COMMAND_LINE_SIZE ];/* setup some dummy routines */ static void dummy_waitbut (void )
@@ -234,8 +234,8 @@ void setup_arch(char **cmdline_p)/* Keep a copy of command line */ *cmdline_p = &command_line[0 ]; -memcpy (saved_command_line, command_line,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] =0 ; +memcpy (boot_command_line, command_line,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] =0 ;#ifdef DEBUG if (strlen (*cmdline_p))
PATCH 14/26 Dynamic kernel command-line - mips
In reply to Alon Bar-LevRename saved_command_line into boot_command_line.
---
arch/mips/kernel/setup.c +1 -1
@@ -409,7 +409,7 @@ static void __init arch_mem_init(char **print_memory_map ();strlcpy (command_line, arcs_cmdline,sizeof (command_line)); -strlcpy (saved_command_line, command_line,COMMAND_LINE_SIZE ); +strlcpy (boot_command_line, command_line,COMMAND_LINE_SIZE ); *cmdline_p = command_line;
PATCH 15/26 Dynamic kernel command-line - parisc
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/parisc/kernel/setup.c +4 -4
@@ -45,7 +45,7 @@#include <asm/io.h> #include <asm/setup.h> -char command_line[COMMAND_LINE_SIZE ]__read_mostly ; +char __initdata command_line[COMMAND_LINE_SIZE ]__read_mostly ;/* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */ struct proc_dir_entry * proc_runway_root__read_mostly =NULL ;
@@ -71,9 +71,9 @@ void __init setup_cmdline(char **cmdline/* boot_args[0] is free-mem start, boot_args[1] is ptr to command line */ if (boot_args[0 ] <64 ) {/* called from hpux boot loader */ - saved_command_line[0 ] ='\0' ; + boot_command_line[0 ] ='\0' ; }else { -strcpy (saved_command_line, (char *)__va (boot_args[1 ])); +strcpy (boot_command_line, (char *)__va (boot_args[1 ]));#ifdef CONFIG_BLK_DEV_INITRD if (boot_args[2 ] !=0 )/* did palo pass us a ramdisk? */
@@ -84,7 +84,7 @@ void __init setup_cmdline(char **cmdline#endif } -strcpy (command_line, saved_command_line); +strcpy (command_line, boot_command_line); *cmdline_p = command_line; }
arch/parisc/mm/init.c +2 -2
@@ -77,12 +77,12 @@ static void __init mem_limit_func(void) {char *cp, *end;unsigned long limit; -extern char saved_command_line[]; +extern char __initdata boot_command_line[];/* We need this before __setup() functions are called */ limit =MAX_MEM ; -for (cp = saved_command_line; *cp; ) { +for (cp = boot_command_line; *cp; ) {if (memcmp (cp,"mem=" ,4 ) ==0 ) { cp +=4 ; limit =memparse (cp, &end);
PATCH 16/26 Dynamic kernel command-line - powerpc
In reply to Alon Bar-LevRename saved_command_line into boot_command_line.
---
arch/powerpc/kernel/legacy_serial.c +1 -1
@@ -498,7 +498,7 @@ static int __init check_legacy_serial_coDBG (" -> check_legacy_serial_console()\n" );/* The user has requested a console so this is already set up. */ -if (strstr (saved_command_line,"console=" )) { +if (strstr (boot_command_line,"console=" )) {DBG (" console was specified !\n" );return -EBUSY ; }
arch/powerpc/kernel/prom.c +1 -1
@@ -894,7 +894,7 @@ void __init early_init_devtree(void *parof_scan_flat_dt (early_init_dt_scan_memory,NULL );/* Save command line for /proc/cmdline and then parse parameters */ -strlcpy (saved_command_line, cmd_line,COMMAND_LINE_SIZE ); +strlcpy (boot_command_line, cmd_line,COMMAND_LINE_SIZE );parse_early_param ();/* Reserve LMB regions used by kernel, initrd, dt, etc... */
arch/powerpc/kernel/udbg.c +1 -1
@@ -146,7 +146,7 @@ void __init disable_early_printk(void) {if (!early_console_initialized)return ; -if (strstr (saved_command_line,"udbg-immortal" )) { +if (strstr (boot_command_line,"udbg-immortal" )) {printk (KERN_INFO "early console immortal !\n" );return ; }
arch/powerpc/platforms/powermac/setup.c +2 -2
@@ -505,8 +505,8 @@ void note_bootable_part(dev_t dev, int pif ((goodness <= current_root_goodness) &&ROOT_DEV !=DEFAULT_ROOT_DEVICE )return ; - p =strstr (saved_command_line,"root=" ); -if (p !=NULL && (p == saved_command_line || p[-1 ] ==' ' )) + p =strstr (boot_command_line,"root=" ); +if (p !=NULL && (p == boot_command_line || p[-1 ] ==' ' ))return ;if (!found_boot) {
PATCH 17/26 Dynamic kernel command-line - ppc
In reply to Alon Bar-LevRename saved_command_line into boot_command_line.
---
arch/ppc/kernel/setup.c +1 -1
@@ -543,7 +543,7 @@ void __init setup_arch(char **cmdline_p) init_mm.brk = (unsigned long ) klimit;/* Save unparsed command line copy for /proc/cmdline */ -strlcpy (saved_command_line, cmd_line,COMMAND_LINE_SIZE ); +strlcpy (boot_command_line, cmd_line,COMMAND_LINE_SIZE ); *cmdline_p = cmd_line;parse_early_param ();
arch/ppc/platforms/lopec.c +1 -1
@@ -344,7 +344,7 @@ lopec_setup_arch(void)if (bootargs !=NULL ) {strcpy (cmd_line, bootargs);/* again.. */ -strcpy (saved_command_line, cmd_line); +strcpy (boot_command_line, cmd_line); } }#endif
arch/ppc/platforms/pplus.c +1 -1
@@ -592,7 +592,7 @@ static void __init pplus_setup_arch(voidif (bootargs !=NULL ) {strcpy (cmd_line, bootargs);/* again.. */ -strcpy (saved_command_line, cmd_line); +strcpy (boot_command_line, cmd_line); } }#endif
arch/ppc/platforms/prep_setup.c +2 -2
@@ -634,7 +634,7 @@ static void __init prep_init_sound(void)/* * Find a way to push these informations to the cs4232 driver * Give it out with printk, when not in cmd_line? -* Append it to cmd_line and saved_command_line? +* Append it to cmd_line and boot_command_line? * Format is cs4232=io,irq,dma,dma2 */ }
@@ -897,7 +897,7 @@ prep_setup_arch(void)if (bootargs !=NULL ) {strcpy (cmd_line, bootargs);/* again.. */ -strcpy (saved_command_line, cmd_line); +strcpy (boot_command_line, cmd_line); } }
PATCH 18/26 Dynamic kernel command-line - s390
In reply to Alon Bar-LevRename saved_command_line into boot_command_line.
---
arch/s390/kernel/setup.c +1 -1
@@ -633,7 +633,7 @@ setup_arch(char **cmdline_p)#endif /* CONFIG_64BIT */ /* Save unparsed command line copy for /proc/cmdline */ -strlcpy (saved_command_line,COMMAND_LINE ,COMMAND_LINE_SIZE ); +strlcpy (boot_command_line,COMMAND_LINE ,COMMAND_LINE_SIZE ); *cmdline_p =COMMAND_LINE ; *(*cmdline_p +COMMAND_LINE_SIZE -1 ) ='\0' ;
PATCH 19/26 Dynamic kernel command-line - sh
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/sh/kernel/setup.c +3 -3
@@ -75,7 +75,7 @@ static struct sh_machine_vector* __init#define RAMDISK_PROMPT_FLAG 0x8000#define RAMDISK_LOAD_FLAG 0x4000 -static char command_line[COMMAND_LINE_SIZE ] = {0 , }; +static char __initdata command_line[COMMAND_LINE_SIZE ] = {0 , };static struct resource code_resource = { .name ="Kernel code" , };static struct resource data_resource = { .name ="Kernel data" , };
@@ -91,8 +91,8 @@ static inline void parse_cmdline (char *int len =0 ;/* Save unparsed command line copy for /proc/cmdline */ -memcpy (saved_command_line,COMMAND_LINE ,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; +memcpy (boot_command_line,COMMAND_LINE ,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; memory_start = (unsigned long )PAGE_OFFSET +__MEMORY_START; memory_end = memory_start + __MEMORY_SIZE;
PATCH 20/26 Dynamic kernel command-line - sh64
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/sh64/kernel/setup.c +3 -3
@@ -83,7 +83,7 @@ extern int sh64_tlb_init(void);#define RAMDISK_PROMPT_FLAG 0x8000#define RAMDISK_LOAD_FLAG 0x4000 -static char command_line[COMMAND_LINE_SIZE ] = {0 , }; +static char __initdata command_line[COMMAND_LINE_SIZE ] = {0 , };unsigned long long memory_start =CONFIG_MEMORY_START ;unsigned long long memory_end =CONFIG_MEMORY_START + (CONFIG_MEMORY_SIZE_IN_MB *1024 *1024 );
@@ -95,8 +95,8 @@ static inline void parse_mem_cmdline (chint len =0 ;/* Save unparsed command line copy for /proc/cmdline */ -memcpy (saved_command_line,COMMAND_LINE ,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; +memcpy (boot_command_line,COMMAND_LINE ,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ;for (;;) {/*
PATCH 21/26 Dynamic kernel command-line - sparc
In reply to Alon Bar-LevRename saved_command_line into boot_command_line.
---
arch/sparc/kernel/setup.c +1 -1
@@ -246,7 +246,7 @@ void __init setup_arch(char **cmdline_p)/* Initialize PROM console and command line. */ *cmdline_p =prom_getbootargs (); -strcpy (saved_command_line, *cmdline_p); +strcpy (boot_command_line, *cmdline_p);/* Set sparc_cpu_model */ sparc_cpu_model = sun_unknown;
arch/sparc/kernel/sparc_ksyms.c +1 -1
@@ -237,7 +237,7 @@ EXPORT_SYMBOL(prom_getproplen);EXPORT_SYMBOL (prom_getproperty);EXPORT_SYMBOL (prom_node_has_property);EXPORT_SYMBOL (prom_setprop); -EXPORT_SYMBOL (saved_command_line); +EXPORT_SYMBOL (boot_command_line);EXPORT_SYMBOL (prom_apply_obio_ranges);EXPORT_SYMBOL (prom_feval);EXPORT_SYMBOL (prom_getbool);
PATCH 22/26 Dynamic kernel command-line - sparc64
In reply to Alon Bar-LevRename saved_command_line into boot_command_line.
---
arch/sparc64/kernel/setup.c +1 -1
@@ -315,7 +315,7 @@ void __init setup_arch(char **cmdline_p) {/* Initialize PROM console and command line. */ *cmdline_p =prom_getbootargs (); -strcpy (saved_command_line, *cmdline_p); +strcpy (boot_command_line, *cmdline_p);if (tlb_type == hypervisor)printk ("ARCH: SUN4V\n" );
arch/sparc64/kernel/sparc64_ksyms.c +1 -1
@@ -253,7 +253,7 @@ EXPORT_SYMBOL(prom_getproplen);EXPORT_SYMBOL (prom_getproperty);EXPORT_SYMBOL (prom_node_has_property);EXPORT_SYMBOL (prom_setprop); -EXPORT_SYMBOL (saved_command_line); +EXPORT_SYMBOL (boot_command_line);EXPORT_SYMBOL (prom_finddevice);EXPORT_SYMBOL (prom_feval);EXPORT_SYMBOL (prom_getbool);
PATCH 23/26 Dynamic kernel command-line - um
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/um/include/user_util.h +1 -1
@@ -38,7 +38,7 @@ extern unsigned long long highmem;extern char host_info[]; -extern char saved_command_line[]; +extern char __initdata boot_command_line[];extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end;extern unsigned long _unprotected_end;
arch/um/kernel/um_arch.c +1 -1
@@ -482,7 +482,7 @@ void __init setup_arch(char **cmdline_p)atomic_notifier_chain_register (&panic_notifier_list, &panic_exit_notifier);paging_init (); -strlcpy (saved_command_line, command_line,COMMAND_LINE_SIZE ); +strlcpy (boot_command_line, command_line,COMMAND_LINE_SIZE ); *cmdline_p = command_line;setup_hostinfo (); }
PATCH 24/26 Dynamic kernel command-line - v850
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/v850/kernel/setup.c +3 -3
@@ -42,7 +42,7 @@ extern char _root_fs_image_start __attri extern char _root_fs_image_end __attribute__ ((__weak__)); -char command_line[COMMAND_LINE_SIZE ]; +char __initdata command_line[COMMAND_LINE_SIZE ];/* Memory not used by the kernel. */ static unsigned long total_ram_pages;
@@ -64,8 +64,8 @@ void __init setup_arch (char **cmdline) {/* Keep a copy of command line */ *cmdline = command_line; -memcpy (saved_command_line, command_line,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; +memcpy (boot_command_line, command_line,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ;console_verbose ();
PATCH 25/26 Dynamic kernel command-line - x86_64
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
include/asm-x86_64/bootsetup.h +1 -1
@@ -31,7 +31,7 @@ extern char x86_boot_params[BOOT_PARAM_S#define EDD_MBR_SIG_NR (*(unsigned char *) (PARAM+EDD_MBR_SIG_NR_BUF))#define EDD_MBR_SIGNATURE ((unsigned int *) (PARAM+EDD_MBR_SIG_BUF))#define EDD_BUF ((struct edd_info *) (PARAM+EDDBUF)) -#define COMMAND_LINE saved_command_line +#define COMMAND_LINE boot_command_line#define RAMDISK_IMAGE_START_MASK 0x07FF#define RAMDISK_PROMPT_FLAG 0x8000
arch/x86_64/kernel/head64.c +2 -2
@@ -34,7 +34,7 @@ static void __init clear_bss(void)#define OLD_CL_BASE_ADDR 0x90000#define OLD_CL_OFFSET 0x90022 -extern char saved_command_line[]; +extern char __initdata boot_command_line[];static void __init copy_bootdata (char *real_mode_data) {
@@ -50,7 +50,7 @@ static void __init copy_bootdata(char *r new_data =OLD_CL_BASE_ADDR + * (u16 *)OLD_CL_OFFSET ; } command_line = (char *) ((u64)(new_data)); -memcpy (saved_command_line, command_line,COMMAND_LINE_SIZE ); +memcpy (boot_command_line, command_line,COMMAND_LINE_SIZE ); }void __init x86_64_start_kernel (char * real_mode_data)
arch/x86_64/kernel/setup.c +3 -3
@@ -100,7 +100,7 @@ EXPORT_SYMBOL_GPL(edid_info);extern int root_mountflags; -char command_line[COMMAND_LINE_SIZE ]; +char __initdata command_line[COMMAND_LINE_SIZE ];struct resource standard_io_resources[] = { { .name ="dma1" , .start =0x00 , .end =0x1f ,
@@ -343,7 +343,7 @@ static void discover_ebda(void)void __init setup_arch (char **cmdline_p) { -printk (KERN_INFO "Command line: %s\n" , saved_command_line); +printk (KERN_INFO "Command line: %s\n" , boot_command_line);ROOT_DEV =old_decode_dev (ORIG_ROOT_DEV ); screen_info =SCREEN_INFO ;
@@ -373,7 +373,7 @@ void __init setup_arch(char **cmdline_p)early_identify_cpu (&boot_cpu_data); -strlcpy (command_line, saved_command_line,COMMAND_LINE_SIZE ); +strlcpy (command_line, boot_command_line,COMMAND_LINE_SIZE ); *cmdline_p = command_line;parse_early_param ();
PATCH 26/26 Dynamic kernel command-line - xtensa
In reply to Alon Bar-Lev1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
---
arch/xtensa/kernel/setup.c +3 -3
@@ -80,7 +80,7 @@ extern unsigned long loops_per_jiffy;/* Command line specified as configuration option. */ -static char command_line[COMMAND_LINE_SIZE ]; +static char __initdata command_line[COMMAND_LINE_SIZE ];#ifdef CONFIG_CMDLINE_BOOL static char default_command_line[COMMAND_LINE_SIZE ]__initdata =CONFIG_CMDLINE ;
@@ -255,8 +255,8 @@ void __init setup_arch(char **cmdline_p)extern int mem_reserve (unsigned long ,unsigned long ,int );extern void bootmem_init (void ); -memcpy (saved_command_line, command_line,COMMAND_LINE_SIZE ); - saved_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; +memcpy (boot_command_line, command_line,COMMAND_LINE_SIZE ); + boot_command_line[COMMAND_LINE_SIZE -1 ] ='\0' ; *cmdline_p = command_line;/* Reserve some memory regions */