The only user of this is Live patching.
If unsure, say Y.
+
+config CMDLINE
+ string "Built-in hypervisor command string" if EXPERT = "y"
+ default ""
+ ---help---
+ Enter arguments here that should be compiled into the hypervisor
+ image and used at boot time. When the system boots, this string
+ will be parsed prior to the bootloader command line. So if a
+ non-cumulative option is set both in this string and in the
+ bootloader command line, only the latter one will take effect.
+
+config CMDLINE_OVERRIDE
+ bool "Built-in command line overrides bootloader arguments"
+ default n
+ depends on CMDLINE != ""
+ ---help---
+ Set this option to 'Y' to have the hypervisor ignore the bootloader
+ command line, and use ONLY the built-in command line.
+
+ This is used to work around broken bootloaders. This should
+ be set to 'N' under normal conditions.
endmenu
enum system_state system_state = SYS_STATE_early_boot;
xen_commandline_t saved_cmdline;
+static const char __initconst opt_builtin_cmdline[] = CONFIG_CMDLINE;
static void __init assign_integer_param(
const struct kernel_param *param, uint64_t val)
}
}
-void __init cmdline_parse(const char *cmdline)
+static void __init _cmdline_parse(const char *cmdline)
{
char opt[100], *optval, *optkey, *q;
const char *p = cmdline;
const struct kernel_param *param;
int bool_assert;
- if ( cmdline == NULL )
- return;
-
- safe_strcpy(saved_cmdline, cmdline);
-
for ( ; ; )
{
/* Skip whitespace. */
}
}
+/**
+ * cmdline_parse -- parses the xen command line.
+ * If CONFIG_CMDLINE is set, it would be parsed prior to @cmdline.
+ * But if CONFIG_CMDLINE_OVERRIDE is set to y, @cmdline will be ignored.
+ */
+void __init cmdline_parse(const char *cmdline)
+{
+ if ( opt_builtin_cmdline[0] )
+ {
+ printk("Built-in command line: %s\n", opt_builtin_cmdline);
+ _cmdline_parse(opt_builtin_cmdline);
+ }
+
+#ifndef CONFIG_CMDLINE_OVERRIDE
+ if ( cmdline == NULL )
+ return;
+
+ safe_strcpy(saved_cmdline, cmdline);
+ _cmdline_parse(cmdline);
+#endif
+}
+
int __init parse_bool(const char *s)
{
if ( !strcmp("no", s) ||