* [PATCH] [MIPS] Fix and enhance built-in kernel command line
@ 2009-11-21 20:34 Dmitri Vorobiev
2009-12-02 17:08 ` Ralf Baechle
0 siblings, 1 reply; 3+ messages in thread
From: Dmitri Vorobiev @ 2009-11-21 20:34 UTC (permalink / raw)
To: linux-mips, ralf; +Cc: Dmitri Vorobiev
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.
Signed-off-by: Dmitri Vorobiev <dmitri.vorobiev@movial.com>
---
arch/mips/Kconfig.debug | 45 +++++++++++++++++++++++++++++++++++++++++----
arch/mips/kernel/setup.c | 24 ++++++++++++++++++++----
2 files changed, 61 insertions(+), 8 deletions(-)
diff --git a/arch/mips/Kconfig.debug b/arch/mips/Kconfig.debug
index 364ca89..9835030 100644
--- a/arch/mips/Kconfig.debug
+++ b/arch/mips/Kconfig.debug
@@ -6,15 +6,52 @@ config TRACE_IRQFLAGS_SUPPORT
source "lib/Kconfig.debug"
+config CMDLINE_BOOL
+ bool "Built-in kernel command line"
+ default n
+ help
+ For most systems, it is firmware or second stage bootloader that
+ by default specifies the kernel command line options. However,
+ it might be necessary or advantageous to either override the
+ default kernel command line or add a few extra options to it.
+ For such cases, this option allows you to hardcode your own
+ command line options directly into the kernel. For that, you
+ should choose 'Y' here, and fill in the extra boot arguments
+ in CONFIG_CMDLINE.
+
+ The built-in options will be concatenated to the default command
+ line if CMDLINE_OVERRIDE is set to 'N'. Otherwise, the default
+ command line will be ignored and replaced by the built-in string.
+
+ Most MIPS systems will normally expect 'N' here and rely upon
+ the command line from the firmware or the second-stage bootloader.
+
+config CMDLINE_OVERRIDE
+ bool "Built-in command line overrides firware arguments"
+ default n
+ depends on CMDLINE_BOOL
+ help
+ By setting this option to 'Y' you will have your kernel ignore
+ command line arguments from firmware or second stage bootloader.
+ Instead, the built-in command line will be used exclusively.
+
+ Normally, you will choose 'N' here.
+
config CMDLINE
string "Default kernel command string"
+ depends on CMDLINE_BOOL
default ""
help
On some platforms, there is currently no way for the boot loader to
- pass arguments to the kernel. For these platforms, you can supply
- some command-line options at build time by entering them here. In
- other cases you can specify kernel args so that you don't have
- to set them up in board prom initialization routines.
+ pass arguments to the kernel. For these platforms, and for the cases
+ when you want to add some extra options to the command line or ignore
+ the default command line, you can supply some command-line options at
+ build time by entering them here. In other cases you can specify
+ kernel args so that you don't have to set them up in board prom
+ initialization routines.
+
+ For more information, see the CMDLINE_BOOL and CMDLINE_OVERRIDE
+ options.
config DEBUG_STACK_USAGE
bool "Enable stack utilization instrumentation"
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
index bd55f71..f9513f9 100644
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -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;
--
1.6.3.3
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] [MIPS] Fix and enhance built-in kernel command line
2009-11-21 20:34 [PATCH] [MIPS] Fix and enhance built-in kernel command line Dmitri Vorobiev
@ 2009-12-02 17:08 ` Ralf Baechle
2009-12-02 17:40 ` Dmitri Vorobiev
0 siblings, 1 reply; 3+ messages in thread
From: Ralf Baechle @ 2009-12-02 17:08 UTC (permalink / raw)
To: Dmitri Vorobiev; +Cc: linux-mips
On Sat, Nov 21, 2009 at 10:34:41PM +0200, Dmitri Vorobiev wrote:
> 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.
Queued for 2.6.33. I also patched up the defconfig files to use the
right settings for CONFIG_CMDLINE_BOOL and CONFIG_CMDLINE_OVERRIDE.
Thanks,
Ralf
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] [MIPS] Fix and enhance built-in kernel command line
2009-12-02 17:08 ` Ralf Baechle
@ 2009-12-02 17:40 ` Dmitri Vorobiev
0 siblings, 0 replies; 3+ messages in thread
From: Dmitri Vorobiev @ 2009-12-02 17:40 UTC (permalink / raw)
To: Ralf Baechle; +Cc: Dmitri Vorobiev, linux-mips
On Wed, Dec 2, 2009 at 7:08 PM, Ralf Baechle <ralf@linux-mips.org> wrote:
> I also patched up the defconfig files to use the
> right settings for CONFIG_CMDLINE_BOOL and CONFIG_CMDLINE_OVERRIDE.
>
Thanks, Ralf!
Dmitri
> Thanks,
>
> Ralf
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-12-02 17:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-21 20:34 [PATCH] [MIPS] Fix and enhance built-in kernel command line Dmitri Vorobiev
2009-12-02 17:08 ` Ralf Baechle
2009-12-02 17:40 ` Dmitri Vorobiev
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.