Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751787AbbEJTOV (ORCPT ); Sun, 10 May 2015 15:14:21 -0400 Received: from mail-la0-f49.google.com ([209.85.215.49]:34525 "EHLO mail-la0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751691AbbEJTOR (ORCPT ); Sun, 10 May 2015 15:14:17 -0400 From: Alexander Kuleshov To: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" Cc: linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Borislav Petkov , Andy Shevchenko , Mark Rustad , Yinghai Lu , Alexander Kuleshov Subject: [PATCH 1/2 v2] x86/setup: update boot_command_line with builtin_cmdline in separate function Date: Mon, 11 May 2015 01:14:10 +0600 Message-Id: <1431285250-6406-1-git-send-email-kuleshovmail@gmail.com> X-Mailer: git-send-email 2.4.0 In-Reply-To: <1431285225-5666-1-git-send-email-kuleshovmail@gmail.com> References: <1431285225-5666-1-git-send-email-kuleshovmail@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4155 Lines: 119 This patch introduces setup_builtin_cmdline function which appends/overrides boot_command_line with the 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 for the earlyprintk. Changes: v1->v2: function renamed from setup_cmdline to setup_builtin_cmdline to avoid conflict with the setup_cmdline from the arch/x86/kernel/kexec-bzimage64.c Signed-off-by: Alexander Kuleshov --- arch/x86/include/asm/setup.h | 3 ++- arch/x86/kernel/head32.c | 1 + arch/x86/kernel/head64.c | 1 + arch/x86/kernel/setup.c | 28 +++++++++++++++------------- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h index f69e06b..dde474a 100644 --- a/arch/x86/include/asm/setup.h +++ b/arch/x86/include/asm/setup.h @@ -24,6 +24,7 @@ #define OLD_CL_ADDRESS 0x020 /* Relative to real mode data */ #define NEW_CL_POINTER 0x228 /* Relative to real mode data */ + #ifndef __ASSEMBLY__ #include #include @@ -117,8 +118,8 @@ asmlinkage void __init i386_start_kernel(void); #else asmlinkage void __init x86_64_start_kernel(char *real_mode); asmlinkage void __init x86_64_start_reservations(char *real_mode_data); - #endif /* __i386__ */ +void __init setup_builtin_cmdline(void); #endif /* _SETUP */ #else #define RESERVE_BRK(name,sz) \ diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c index 2911ef3..95eed21 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_builtin_cmdline(); cr4_init_shadow(); sanitize_boot_params(&boot_params); diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index 2b55ee6..df290d1 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_builtin_cmdline(); /* * Load microcode early on BSP. diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index d74ac33..c9d1896 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -845,6 +845,21 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) return 0; } +void __init setup_builtin_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 @@ -973,19 +988,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; -- 2.4.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/