All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] x86/earlyprintk: setup earlyprintk as early as possible
@ 2015-05-10 19:13 Alexander Kuleshov
  2015-05-10 19:14 ` [PATCH 1/2 v2] x86/setup: update boot_command_line with builtin_cmdline in separate function Alexander Kuleshov
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Alexander Kuleshov @ 2015-05-10 19:13 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H. Peter Anvin
  Cc: linux-kernel, Greg Kroah-Hartman, Borislav Petkov,
	Andy Shevchenko, Mark Rustad, Yinghai Lu, Alexander Kuleshov

As setup_early_printk passed to the early_param, it will be usable only after
'parse_early_param' function will be called from the 'setup_arch'. So we have
earlyprintk during early boot and decompression. Next point after decompression
of the kernel where we can use early_printk is after call of the
'parse_early_param'.

These patchset provides two patches where:

1. Move handling of the builtin command line to the separate function
from the setup_arch. Now we can call it from the arch/x86/kernel/head{32,64}.c,
and find 'earlyprintk' kernel command line paramter there.

2. Provide setup_serial_console function to setup serial earlyprintk in the
arch/x86/kernel/head{32,64}.c

Alexander Kuleshov (2):
  x86/setup: update boot_command_line with builtin_cmdline in separate
    function
  x86/earlyprintk: setup earlyprintk as early as possible

 arch/x86/include/asm/serial.h  |  2 ++
 arch/x86/include/asm/setup.h   |  3 ++-
 arch/x86/kernel/early_printk.c | 25 +++++++++++++++++++++++++
 arch/x86/kernel/head32.c       |  6 ++++++
 arch/x86/kernel/head64.c       |  7 +++++++
 arch/x86/kernel/setup.c        | 28 +++++++++++++++-------------
 6 files changed, 57 insertions(+), 14 deletions(-)

-- 
2.4.0


^ permalink raw reply	[flat|nested] 7+ messages in thread
* [PATCH 1/2] x86/setup: update boot_command_line with builtin_cmdline in separate function
@ 2015-04-09  8:18 Alexander Kuleshov
  2015-04-09  8:19 ` [PATCH 2/2 v4] x86/earlyprintk: setup earlyprintk as early as possible Alexander Kuleshov
  0 siblings, 1 reply; 7+ messages in thread
From: Alexander Kuleshov @ 2015-04-09  8:18 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, Greg Kroah-Hartman
  Cc: Yinghai Lu, Peter Hurley, linux-kernel, Alexander Kuleshov

This patch introduces setup_cmdline function which appends/overrides
boot_command_linew with builtin_cmdline if CONFIG_CMDLINE_BOOL is set.
Previously this functional was in the setup_arch, but we need to move
it for getting actual command line as early as possible in the
arch/x86/kernel/head{32,64}.c

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
---
 arch/x86/kernel/head32.c |  1 +
 arch/x86/kernel/head64.c |  1 +
 arch/x86/kernel/setup.c  | 31 ++++++++++++++++++-------------
 include/linux/init.h     |  6 +++++-
 4 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c
index 2911ef3..7ad0ad0 100644
--- a/arch/x86/kernel/head32.c
+++ b/arch/x86/kernel/head32.c
@@ -31,6 +31,7 @@ static void __init i386_default_early_setup(void)
 
 asmlinkage __visible void __init i386_start_kernel(void)
 {
+	setup_cmdline();
 	cr4_init_shadow();
 	sanitize_boot_params(&boot_params);
 
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index c4f8d46..6eea2de 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -171,6 +171,7 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
 	load_idt((const struct desc_ptr *)&idt_descr);
 
 	copy_bootdata(__va(real_mode_data));
+	setup_cmdline();
 
 	/*
 	 * Load microcode early on BSP.
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 0a2421c..d578f37 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -841,6 +841,24 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p)
 }
 
 /*
+ * Append/Override boot command line with builtin command line if need
+ */
+void __init setup_cmdline(void) {
+#ifdef CONFIG_CMDLINE_BOOL
+#ifdef CONFIG_CMDLINE_OVERRIDE
+	strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
+#else
+	if (builtin_cmdline[0]) {
+		/* append boot loader cmdline to builtin */
+		strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE);
+		strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE);
+		strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
+	}
+#endif
+#endif
+}
+
+/*
  * Determine if we were loaded by an EFI loader.  If so, then we have also been
  * passed the efi memmap, systab, etc., so we should use these data structures
  * for initialization.  Note, the efi init code path is determined by the
@@ -968,19 +986,6 @@ void __init setup_arch(char **cmdline_p)
 	bss_resource.start = __pa_symbol(__bss_start);
 	bss_resource.end = __pa_symbol(__bss_stop)-1;
 
-#ifdef CONFIG_CMDLINE_BOOL
-#ifdef CONFIG_CMDLINE_OVERRIDE
-	strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
-#else
-	if (builtin_cmdline[0]) {
-		/* append boot loader cmdline to builtin */
-		strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE);
-		strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE);
-		strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
-	}
-#endif
-#endif
-
 	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
 	*cmdline_p = command_line;
 
diff --git a/include/linux/init.h b/include/linux/init.h
index 2df8e8d..af8f2ec 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -152,7 +152,11 @@ void setup_arch(char **);
 void prepare_namespace(void);
 void __init load_default_modules(void);
 int __init init_rootfs(void);
-
+#ifdef CONFIG_CMDLINE_BOOL
+void __init setup_cmdline(void);
+#else
+static void __init setup_cmdline(void) {};
+#endif
 extern void (*late_time_init)(void);
 
 extern bool initcall_debug;
-- 
2.3.3.611.g09038fc.dirty


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-05-11  9:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-10 19:13 [PATCH 0/2] x86/earlyprintk: setup earlyprintk as early as possible Alexander Kuleshov
2015-05-10 19:14 ` [PATCH 1/2 v2] x86/setup: update boot_command_line with builtin_cmdline in separate function Alexander Kuleshov
2015-05-10 19:14 ` [PATCH 2/2 v4] x86/earlyprintk: setup earlyprintk as early as possible Alexander Kuleshov
2015-05-11  7:22   ` Andy Shevchenko
2015-05-11  7:27 ` [PATCH 0/2] " Andy Shevchenko
2015-05-11  9:56   ` Alexander Kuleshov
  -- strict thread matches above, loose matches on Subject: below --
2015-04-09  8:18 [PATCH 1/2] x86/setup: update boot_command_line with builtin_cmdline in separate function Alexander Kuleshov
2015-04-09  8:19 ` [PATCH 2/2 v4] x86/earlyprintk: setup earlyprintk as early as possible Alexander Kuleshov

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.