mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
MIPS: Fix and enhance built-in kernel command line
Currently, MIPS kernels silently overwrite kernel command-line parameters hardcoded in CONFIG_CMDLINE by the ones received from firmware. Therefore, using firmware remains the only reliable method to transfer the command-line parameters, which is not always desirable or convenient, and the CONFIG_CMDLINE option is thereby effectively rendered useless. This patch fixes the problem described above and introduces a more flexible scheme of handling the kernel command line, in a manner identical to what is currently used for x86. The default behavior, i.e. when CONFIG_CMDLINE_BOOL is not defined, retains the existing semantics, and firmware command-line arguments override the hardcoded ones. [Ralf: I fixed up all the defconfig files so the stay unaffected by this change.] Signed-off-by: Dmitri Vorobiev <dmitri.vorobiev@movial.com> Cc: linux-mips@linux-mips.org Patchwork: http://patchwork.linux-mips.org/patch/689/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
de4148f3ef
commit
6acc7d485c
48 changed files with 123 additions and 38 deletions
|
@ -58,8 +58,12 @@ EXPORT_SYMBOL(mips_machtype);
|
|||
|
||||
struct boot_mem_map boot_mem_map;
|
||||
|
||||
static char command_line[COMMAND_LINE_SIZE];
|
||||
char arcs_cmdline[COMMAND_LINE_SIZE] = CONFIG_CMDLINE;
|
||||
static char __initdata command_line[COMMAND_LINE_SIZE];
|
||||
char __initdata arcs_cmdline[COMMAND_LINE_SIZE];
|
||||
|
||||
#ifdef CONFIG_CMDLINE_BOOL
|
||||
static char __initdata builtin_cmdline[COMMAND_LINE_SIZE] = CONFIG_CMDLINE;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* mips_io_port_base is the begin of the address space to which x86 style
|
||||
|
@ -458,8 +462,20 @@ static void __init arch_mem_init(char **cmdline_p)
|
|||
pr_info("Determined physical RAM map:\n");
|
||||
print_memory_map();
|
||||
|
||||
strlcpy(command_line, arcs_cmdline, sizeof(command_line));
|
||||
strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
|
||||
#ifdef CONFIG_CMDLINE_BOOL
|
||||
#ifdef CONFIG_CMDLINE_OVERRIDE
|
||||
strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
|
||||
#else
|
||||
if (builtin_cmdline[0]) {
|
||||
strlcat(arcs_cmdline, " ", COMMAND_LINE_SIZE);
|
||||
strlcat(arcs_cmdline, builtin_cmdline, COMMAND_LINE_SIZE);
|
||||
}
|
||||
strlcpy(boot_command_line, arcs_cmdline, COMMAND_LINE_SIZE);
|
||||
#endif
|
||||
#else
|
||||
strlcpy(boot_command_line, arcs_cmdline, COMMAND_LINE_SIZE);
|
||||
#endif
|
||||
strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
|
||||
|
||||
*cmdline_p = command_line;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue