From patchwork Fri Apr 6 11:11:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: yuan linyu X-Patchwork-Id: 896904 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=163.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="ISvef8tX"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=163.com header.i=@163.com header.b="jOfKt2zh"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40LGpt39kbz9s0v for ; Wed, 11 Apr 2018 05:05:58 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=3zT1MLZkqTy/9Hz5w6Qxo+6svle1vaxKCY6+CHiq/oY=; b=ISvef8tXp8Zmo3 hMXVDjPkH+ZWPLYBHUjr6nFbmtD9dnl7OJn1uMJ1Vyrn2C7+7szeoeRweYkVozjBxpDYPKz5pX6ds k0B2LLWS9qgrU03cUF0ONx0HtphRVNBUCLexOduOfA0yNr3wnupeV5cJOXOCEndzLNCDGZDtvQR0f n2DLuY0MD8MsJlyuAdxmUL+wvsPvaWKZDIdD7OUJbFULw8h1kvrtGd/xA9P2RAZ3K1UM0je8fTeWx u8q1cWqxizQ/4dTaaKDiD8iEXBbbFZpifrp7Xh4yvLG1H7NRlJtMLr6+kFLXg1mJ7gesu+A3cEidp rzCmnomonXcRcmQ/wkPg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1f5yaa-0006Nd-Ek; Tue, 10 Apr 2018 19:05:56 +0000 Received: from m50-135.163.com ([123.125.50.135]) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1f4PIx-0001ov-R9; Fri, 06 Apr 2018 11:13:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=aGj/u hspmOg2sq3Tv8TMFDGlD5HLk5yyhR25/Lr4k1s=; b=jOfKt2zh2WVTIPjLL7Szk rLIAFvqZAxMcc8UIOAzwKKHofSKn3/sJRQtsa+ZdUk8/gUUWK6Pb6iE6ygJez4EL eW01z9QoerWqmaWbqV50j+Ek1eTpMSw/Z5J5A6vi8Go1tzhnIocToc7bEBimoGGx ePgaDvRNBC4sZQXqGNDBJ4= Received: from localhost.localdomain (unknown [180.157.30.106]) by smtp5 (Coremail) with SMTP id D9GowAB3nBkbVsdaVm9DCw--.6381S2; Fri, 06 Apr 2018 19:12:29 +0800 (CST) From: yuan linyu To: linux-kernel@vger.kernel.org Subject: [RFC linux] init: make all setup_arch() output string to boot_command_line[] Date: Fri, 6 Apr 2018 19:11:59 +0800 Message-Id: <20180406111159.5385-1-cugyly@163.com> X-Mailer: git-send-email 2.14.1 MIME-Version: 1.0 X-CM-TRANSID: D9GowAB3nBkbVsdaVm9DCw--.6381S2 X-Coremail-Antispam: 1Uf129KBjvAXoWftF4kJFW5Xr1kWw4kuw4xXrb_yoW5GryxWo Z8GF1jkr4rWrnayrn8CF1YgFWrXrZIkws0vaykJFWFgr17AF1UAr40gay7uFy5t34rKF9r u3Zrua9rC34kJan5n29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxU-VbyDUUUU X-Originating-IP: [180.157.30.106] X-CM-SenderInfo: pfxj5zr16rljoofrz/1tbiRR0g41l9jhviOAAAsw X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180406_041316_532536_C269AFCA X-CRM114-Status: GOOD ( 14.78 ) X-Spam-Score: 6.2 (++++++) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (6.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 2.7 RCVD_IN_PSBL RBL: Received via a relay in PSBL [123.125.50.135 listed in psbl.surriel.com] 3.6 RCVD_IN_MSPIKE_L3 RBL: Low reputation (-3) [123.125.50.135 listed in bl.mailspike.net] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (cugyly[at]163.com) -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid 0.0 RCVD_IN_MSPIKE_BL Mailspike blacklisted X-Spam-Flag: YES X-Mailman-Approved-At: Tue, 10 Apr 2018 12:05:55 -0700 X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-mips@linux-mips.org, linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-c6x-dev@linux-c6x.org, linux-hexagon@vger.kernel.org, linux-snps-arc@lists.infradead.org, uclinux-h8-devel@lists.sourceforge.jp, linux-xtensa@linux-xtensa.org, user-mode-linux-devel@lists.sourceforge.net, linux-m68k@lists.linux-m68k.org, openrisc@lists.librecores.org, Greentime Hu , user-mode-linux-user@lists.sourceforge.net, Guan Xuetao , linux-arm-kernel@lists.infradead.org, Michal Simek , linux-parisc@vger.kernel.org, yuan linyu , linux-alpha@vger.kernel.org, nios2-dev@lists.rocketboards.org, linuxppc-dev@lists.ozlabs.org Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: yuan linyu then all arch boot parameter handled in the same way in start_kernel() Signed-off-by: yuan linyu --- arch/alpha/kernel/setup.c | 4 +--- arch/arc/kernel/setup.c | 5 +---- arch/arm/kernel/setup.c | 7 +------ arch/arm64/kernel/setup.c | 4 +--- arch/c6x/kernel/setup.c | 5 +---- arch/h8300/kernel/setup.c | 3 +-- arch/hexagon/kernel/setup.c | 16 +--------------- arch/ia64/kernel/setup.c | 15 ++++++++------- arch/m68k/kernel/setup_mm.c | 5 ++--- arch/m68k/kernel/setup_no.c | 3 +-- arch/microblaze/kernel/setup.c | 4 +--- arch/mips/kernel/setup.c | 11 +++-------- arch/nds32/kernel/setup.c | 3 +-- arch/nios2/kernel/setup.c | 5 +---- arch/openrisc/kernel/setup.c | 4 +--- arch/parisc/kernel/setup.c | 9 ++------- arch/powerpc/kernel/setup-common.c | 4 +--- arch/riscv/kernel/setup.c | 4 +--- arch/s390/kernel/setup.c | 6 +----- arch/sh/kernel/setup.c | 7 ++++--- arch/sparc/kernel/setup_32.c | 9 +++++---- arch/sparc/kernel/setup_64.c | 8 ++++---- arch/um/kernel/um_arch.c | 3 +-- arch/unicore32/kernel/setup.c | 8 +------- arch/x86/kernel/setup.c | 6 +----- arch/xtensa/kernel/setup.c | 9 +++++---- include/linux/init.h | 2 +- init/main.c | 14 +++++++------- 28 files changed, 59 insertions(+), 124 deletions(-) diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c index 5576f7646fb6..c74675cf7129 100644 --- a/arch/alpha/kernel/setup.c +++ b/arch/alpha/kernel/setup.c @@ -505,8 +505,7 @@ register_cpus(void) arch_initcall(register_cpus); -void __init -setup_arch(char **cmdline_p) +void __init setup_arch(void) { extern char _end[]; @@ -566,7 +565,6 @@ setup_arch(char **cmdline_p) strlcpy(command_line, COMMAND_LINE, sizeof command_line); } strcpy(boot_command_line, command_line); - *cmdline_p = command_line; /* * Process command-line arguments. diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c index b2cae79a25d7..9cfdcf42bf28 100644 --- a/arch/arc/kernel/setup.c +++ b/arch/arc/kernel/setup.c @@ -456,7 +456,7 @@ static inline int is_kernel(unsigned long addr) return 0; } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { #ifdef CONFIG_ARC_UBOOT_SUPPORT /* make sure that uboot passed pointer to cmdline/dtb is valid */ @@ -487,9 +487,6 @@ void __init setup_arch(char **cmdline_p) } } - /* Save unparsed command line copy for /proc/cmdline */ - *cmdline_p = boot_command_line; - /* To force early parsing of things like mem=xxx */ parse_early_param(); diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index fc40a2b40595..1025e3a37689 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -153,7 +153,6 @@ EXPORT_SYMBOL(elf_platform); static const char *cpu_name; static const char *machine_name; -static char __initdata cmd_line[COMMAND_LINE_SIZE]; const struct machine_desc *machine_desc __initdata; static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } }; @@ -1061,7 +1060,7 @@ void __init hyp_mode_check(void) #endif } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { const struct machine_desc *mdesc; @@ -1091,10 +1090,6 @@ void __init setup_arch(char **cmdline_p) init_mm.end_data = (unsigned long) _edata; init_mm.brk = (unsigned long) _end; - /* populate cmd_line too for later use, preserving boot_command_line */ - strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); - *cmdline_p = cmd_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 30ad2f085d1f..c7ba4d32e7f7 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -243,15 +243,13 @@ static void __init request_standard_resources(void) u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID }; -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { init_mm.start_code = (unsigned long) _text; init_mm.end_code = (unsigned long) _etext; init_mm.end_data = (unsigned long) _edata; init_mm.brk = (unsigned long) _end; - *cmdline_p = boot_command_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/c6x/kernel/setup.c b/arch/c6x/kernel/setup.c index 786e36e2f61d..012c8e746889 100644 --- a/arch/c6x/kernel/setup.c +++ b/arch/c6x/kernel/setup.c @@ -294,16 +294,13 @@ notrace void __init machine_init(unsigned long dt_ptr) parse_early_param(); } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { int bootmap_size; struct memblock_region *reg; printk(KERN_INFO "Initializing kernel\n"); - /* Initialize command line */ - *cmdline_p = boot_command_line; - memory_end = ram_end; memory_end &= ~(PAGE_SIZE - 1); diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c index a4d0470c10a9..bb54c2087f13 100644 --- a/arch/h8300/kernel/setup.c +++ b/arch/h8300/kernel/setup.c @@ -117,7 +117,7 @@ static void __init bootmem_init(void) } } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { unflatten_and_copy_device_tree(); @@ -131,7 +131,6 @@ void __init setup_arch(char **cmdline_p) if (*command_line) strcpy(boot_command_line, command_line); - *cmdline_p = boot_command_line; parse_early_param(); diff --git a/arch/hexagon/kernel/setup.c b/arch/hexagon/kernel/setup.c index 6981949f5df3..a0348dfad265 100644 --- a/arch/hexagon/kernel/setup.c +++ b/arch/hexagon/kernel/setup.c @@ -34,7 +34,6 @@ #include #include -char cmd_line[COMMAND_LINE_SIZE]; static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; int on_simulator; @@ -44,12 +43,7 @@ void calibrate_delay(void) loops_per_jiffy = thread_freq_mhz * 1000000 / HZ; } -/* - * setup_arch - high level architectural setup routine - * @cmdline_p: pointer to pointer to command-line arguments - */ - -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { char *p = &external_cmdline_buffer; @@ -84,14 +78,6 @@ void __init setup_arch(char **cmdline_p) strlcpy(boot_command_line, default_command_line, COMMAND_LINE_SIZE); - /* - * boot_command_line and the value set up by setup_arch - * are both picked up by the init code. If no reason to - * make them different, pass the same pointer back. - */ - strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); - *cmdline_p = cmd_line; - parse_early_param(); setup_arch_memory(); diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index dee56bcb993d..75196264dd4e 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c @@ -527,15 +527,16 @@ int __init reserve_elfcorehdr(u64 *start, u64 *end) #endif /* CONFIG_PROC_VMCORE */ -void __init -setup_arch (char **cmdline_p) +void __init setup_arch (void) { + char *cmdline_p; + unw_init(); ia64_patch_vtop((u64) __start___vtop_patchlist, (u64) __end___vtop_patchlist); - *cmdline_p = __va(ia64_boot_param->command_line); - strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE); + cmdline_p = __va(ia64_boot_param->command_line); + strlcpy(boot_command_line, cmdline_p, COMMAND_LINE_SIZE); efi_init(); io_port_init(); @@ -546,12 +547,12 @@ setup_arch (char **cmdline_p) * that ia64_mv is initialised before any command line * settings may cause console setup to occur */ - machvec_init_from_cmdline(*cmdline_p); + machvec_init_from_cmdline(cmdline_p); #endif parse_early_param(); - if (early_console_setup(*cmdline_p) == 0) + if (early_console_setup(cmdline_p) == 0) mark_bsp_online(); #ifdef CONFIG_ACPI @@ -618,7 +619,7 @@ setup_arch (char **cmdline_p) if (!nomca) ia64_mca_init(); - platform_setup(cmdline_p); + platform_setup(&cmdline_p); #ifndef CONFIG_IA64_HP_SIM check_sal_cache_flush(); #endif diff --git a/arch/m68k/kernel/setup_mm.c b/arch/m68k/kernel/setup_mm.c index dd25bfc22fb4..38ccaf3e0274 100644 --- a/arch/m68k/kernel/setup_mm.c +++ b/arch/m68k/kernel/setup_mm.c @@ -222,7 +222,7 @@ static void __init m68k_parse_bootinfo(const struct bi_record *record) #endif } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { #ifndef CONFIG_SUN3 int i; @@ -272,8 +272,7 @@ void __init setup_arch(char **cmdline_p) m68k_command_line[CL_SIZE - 1] = 0; #endif /* CONFIG_BOOTPARAM */ process_uboot_commandline(&m68k_command_line[0], CL_SIZE); - *cmdline_p = m68k_command_line; - memcpy(boot_command_line, *cmdline_p, CL_SIZE); + memcpy(boot_command_line, m68k_command_line, CL_SIZE); parse_early_param(); diff --git a/arch/m68k/kernel/setup_no.c b/arch/m68k/kernel/setup_no.c index a98af1018201..8b244d4ea603 100644 --- a/arch/m68k/kernel/setup_no.c +++ b/arch/m68k/kernel/setup_no.c @@ -84,7 +84,7 @@ void (*mach_power_off)(void); #define CPU_INSTR_PER_JIFFY 16 #endif -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { int bootmap_size; @@ -143,7 +143,6 @@ void __init setup_arch(char **cmdline_p) __bss_stop, memory_start, memory_start, memory_end); /* Keep a copy of command line */ - *cmdline_p = &command_line[0]; memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); boot_command_line[COMMAND_LINE_SIZE-1] = 0; diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c index be98ffe28ca8..632b7546effc 100644 --- a/arch/microblaze/kernel/setup.c +++ b/arch/microblaze/kernel/setup.c @@ -50,10 +50,8 @@ unsigned int boot_cpuid; */ char cmd_line[COMMAND_LINE_SIZE] __attribute__ ((section(".data"))); -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { - *cmdline_p = boot_command_line; - console_verbose(); unflatten_device_tree(); diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index 5f8b0a9e30b3..2bff67be95d6 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c @@ -64,7 +64,6 @@ EXPORT_SYMBOL(mips_machtype); struct boot_mem_map boot_mem_map; -static char __initdata command_line[COMMAND_LINE_SIZE]; char __initdata arcs_cmdline[COMMAND_LINE_SIZE]; #ifdef CONFIG_CMDLINE_BOOL @@ -829,7 +828,7 @@ static void __init request_crashkernel(struct resource *res) #define BUILTIN_EXTEND_WITH_PROM \ IS_ENABLED(CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND) -static void __init arch_mem_init(char **cmdline_p) +static void __init arch_mem_init(void) { struct memblock_region *reg; extern void plat_mem_setup(void); @@ -881,10 +880,6 @@ static void __init arch_mem_init(char **cmdline_p) pr_info("Determined physical RAM map:\n"); print_memory_map(); - strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); - - *cmdline_p = command_line; - parse_early_param(); if (usermem) { @@ -1002,7 +997,7 @@ static void __init prefill_possible_map(void) static inline void prefill_possible_map(void) {} #endif -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { cpu_probe(); mips_cm_probe(); @@ -1023,7 +1018,7 @@ void __init setup_arch(char **cmdline_p) #endif #endif - arch_mem_init(cmdline_p); + arch_mem_init(); resource_init(); plat_smp_setup(); diff --git a/arch/nds32/kernel/setup.c b/arch/nds32/kernel/setup.c index ba910e9e4ecb..7df72753dd9a 100644 --- a/arch/nds32/kernel/setup.c +++ b/arch/nds32/kernel/setup.c @@ -276,7 +276,7 @@ static void __init setup_memory(void) memblock_dump_all(); } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { early_init_devtree( __dtb_start); @@ -303,7 +303,6 @@ void __init setup_arch(char **cmdline_p) conswitchp = &dummy_con; } - *cmdline_p = boot_command_line; early_trap_init(); } diff --git a/arch/nios2/kernel/setup.c b/arch/nios2/kernel/setup.c index 926a02b17b31..e8d140f1d40c 100644 --- a/arch/nios2/kernel/setup.c +++ b/arch/nios2/kernel/setup.c @@ -141,7 +141,7 @@ asmlinkage void __init nios2_boot_init(unsigned r4, unsigned r5, unsigned r6, parse_early_param(); } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { int bootmap_size; @@ -156,9 +156,6 @@ void __init setup_arch(char **cmdline_p) init_mm.brk = (unsigned long) _end; init_task.thread.kregs = &fake_regs; - /* Keep a copy of command line */ - *cmdline_p = boot_command_line; - min_low_pfn = PFN_UP(memory_start); max_low_pfn = PFN_DOWN(memory_end); max_mapnr = max_low_pfn; diff --git a/arch/openrisc/kernel/setup.c b/arch/openrisc/kernel/setup.c index 9d28ab14d139..d73e1faa88d1 100644 --- a/arch/openrisc/kernel/setup.c +++ b/arch/openrisc/kernel/setup.c @@ -283,7 +283,7 @@ void calibrate_delay(void) (loops_per_jiffy / (5000 / HZ)) % 100, loops_per_jiffy); } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { unflatten_and_copy_device_tree(); @@ -320,8 +320,6 @@ void __init setup_arch(char **cmdline_p) conswitchp = &dummy_con; #endif - *cmdline_p = boot_command_line; - printk(KERN_INFO "OpenRISC Linux -- http://openrisc.io\n"); } diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c index 0e9675f857a5..7756a6110b83 100644 --- a/arch/parisc/kernel/setup.c +++ b/arch/parisc/kernel/setup.c @@ -51,8 +51,6 @@ #include #include -static char __initdata command_line[COMMAND_LINE_SIZE]; - /* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */ struct proc_dir_entry * proc_runway_root __read_mostly = NULL; struct proc_dir_entry * proc_gsc_root __read_mostly = NULL; @@ -63,7 +61,7 @@ int parisc_bus_is_phys __read_mostly = 1; /* Assume no IOMMU is present */ EXPORT_SYMBOL(parisc_bus_is_phys); #endif -void __init setup_cmdline(char **cmdline_p) +void __init setup_cmdline(void) { extern unsigned int boot_args[]; @@ -85,9 +83,6 @@ void __init setup_cmdline(char **cmdline_p) } #endif } - - strcpy(command_line, boot_command_line); - *cmdline_p = command_line; } #ifdef CONFIG_PA11 @@ -119,7 +114,7 @@ void __init dma_ops_init(void) extern void collect_boot_cpu_data(void); -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { #ifdef CONFIG_64BIT extern int parisc_narrow_firmware; diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index d73ec518ef80..b88ce4afaafd 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c @@ -839,10 +839,8 @@ static __init void print_system_info(void) * Called into from start_kernel this initializes memblock, which is used * to manage page allocation until mem_init is called. */ -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { - *cmdline_p = boot_command_line; - /* Set a half-reasonable default so udelay does something sensible */ loops_per_jiffy = 500000000 / HZ; diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c index c11f40c1b2a8..dee21fd2f5c2 100644 --- a/arch/riscv/kernel/setup.c +++ b/arch/riscv/kernel/setup.c @@ -192,10 +192,8 @@ static void __init setup_bootmem(void) } } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { - *cmdline_p = boot_command_line; - parse_early_param(); init_mm.start_code = (unsigned long) _stext; diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index a6a91f01a17a..6addb5afc59e 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c @@ -867,7 +867,7 @@ static void __init setup_task_size(void) * was printed. */ -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { /* * print what head.S has found out about the machine @@ -880,10 +880,6 @@ void __init setup_arch(char **cmdline_p) else if (MACHINE_IS_LPAR) pr_info("Linux is running natively in 64-bit mode\n"); - /* Have one command line that is parsed and saved in /proc/cmdline */ - /* boot_command_line has been already set up in early.c */ - *cmdline_p = boot_command_line; - ROOT_DEV = Root_RAM0; /* Is init_mm really needed? */ diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index b95c411d0333..c46646f0c3c5 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c @@ -270,8 +270,10 @@ void __ref sh_fdt_init(phys_addr_t dt_phys) } #endif -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { + char *cmdline_p = command_line; + enable_mmu(); ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); @@ -319,7 +321,6 @@ void __init setup_arch(char **cmdline_p) /* Save unparsed command line copy for /proc/cmdline */ memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); - *cmdline_p = command_line; parse_early_param(); @@ -338,7 +339,7 @@ void __init setup_arch(char **cmdline_p) /* Perform the machine specific initialisation */ if (likely(sh_mv.mv_setup)) - sh_mv.mv_setup(cmdline_p); + sh_mv.mv_setup(&cmdline_p); plat_smp_setup(); } diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c index 13664c377196..5bced97cc5f8 100644 --- a/arch/sparc/kernel/setup_32.c +++ b/arch/sparc/kernel/setup_32.c @@ -294,19 +294,20 @@ void __init sparc32_start_kernel(struct linux_romvec *rp) start_kernel(); } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { int i; + char *cmdline_p; unsigned long highest_paddr; sparc_ttable = &trapbase; /* Initialize PROM console and command line. */ - *cmdline_p = prom_getbootargs(); - strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE); + cmdline_p = prom_getbootargs(); + strlcpy(boot_command_line, cmdline_p, COMMAND_LINE_SIZE); parse_early_param(); - boot_flags_init(*cmdline_p); + boot_flags_init(cmdline_p); register_console(&prom_early_console); diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c index 7944b3ca216a..9f6edffa6a4b 100644 --- a/arch/sparc/kernel/setup_64.c +++ b/arch/sparc/kernel/setup_64.c @@ -630,14 +630,14 @@ void __init alloc_irqstack_bootmem(void) } } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { /* Initialize PROM console and command line. */ - *cmdline_p = prom_getbootargs(); - strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE); + char *cmdline_p = prom_getbootargs(); + strlcpy(boot_command_line, cmdline_p, COMMAND_LINE_SIZE); parse_early_param(); - boot_flags_init(*cmdline_p); + boot_flags_init(cmdline_p); #ifdef CONFIG_EARLYFB if (btext_find_display()) #endif diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c index a818ccef30ca..73d62cf96149 100644 --- a/arch/um/kernel/um_arch.c +++ b/arch/um/kernel/um_arch.c @@ -339,7 +339,7 @@ int __init __weak read_initrd(void) return 0; } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { stack_protections((unsigned long) &init_thread_info); setup_physmem(uml_physmem, uml_reserved, physmem_size, highmem); @@ -348,7 +348,6 @@ void __init setup_arch(char **cmdline_p) paging_init(); strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); - *cmdline_p = command_line; setup_hostinfo(host_info, sizeof host_info); } diff --git a/arch/unicore32/kernel/setup.c b/arch/unicore32/kernel/setup.c index c2bffa5614a4..c13a07eeed0b 100644 --- a/arch/unicore32/kernel/setup.c +++ b/arch/unicore32/kernel/setup.c @@ -60,8 +60,6 @@ struct screen_info screen_info; char elf_platform[ELF_PLATFORM_SIZE]; EXPORT_SYMBOL(elf_platform); -static char __initdata cmd_line[COMMAND_LINE_SIZE]; - static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; /* @@ -235,7 +233,7 @@ static int __init customize_machine(void) } arch_initcall(customize_machine); -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { char *from = default_command_line; @@ -249,10 +247,6 @@ void __init setup_arch(char **cmdline_p) /* parse_early_param needs a boot_command_line */ strlcpy(boot_command_line, from, COMMAND_LINE_SIZE); - /* populate cmd_line too for later use, preserving boot_command_line */ - strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); - *cmdline_p = cmd_line; - parse_early_param(); uc32_memblock_init(&meminfo); diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 6285697b6e56..6e3347dde550 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -219,7 +219,6 @@ unsigned long saved_video_mode; #define RAMDISK_PROMPT_FLAG 0x8000 #define RAMDISK_LOAD_FLAG 0x4000 -static char __initdata command_line[COMMAND_LINE_SIZE]; #ifdef CONFIG_CMDLINE_BOOL static char __initdata builtin_cmdline[COMMAND_LINE_SIZE] = CONFIG_CMDLINE; #endif @@ -812,7 +811,7 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) * Note: On x86_64, fixmaps are ready for use even before this is called. */ -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { memblock_reserve(__pa_symbol(_text), (unsigned long)__bss_stop - (unsigned long)_text); @@ -933,9 +932,6 @@ void __init setup_arch(char **cmdline_p) #endif #endif - strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); - *cmdline_p = command_line; - /* * x86_configure_nx() is called before parse_early_param() to detect * whether hardware doesn't support NX (so that the early EHCI debug diff --git a/arch/xtensa/kernel/setup.c b/arch/xtensa/kernel/setup.c index 686a27444bba..0409fa85bfdd 100644 --- a/arch/xtensa/kernel/setup.c +++ b/arch/xtensa/kernel/setup.c @@ -309,8 +309,10 @@ static inline int mem_reserve(unsigned long start, unsigned long end) return memblock_reserve(start, end - start); } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { + char *cmdline_p = command_line; + pr_info("config ID: %08x:%08x\n", get_sr(SREG_EPC), get_sr(SREG_EXCSAVE)); if (get_sr(SREG_EPC) != XCHAL_HW_CONFIGID0 || @@ -318,9 +320,8 @@ void __init setup_arch(char **cmdline_p) pr_info("built for config ID: %08x:%08x\n", XCHAL_HW_CONFIGID0, XCHAL_HW_CONFIGID1); - *cmdline_p = command_line; - platform_setup(cmdline_p); - strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE); + platform_setup(&cmdline_p); + strlcpy(boot_command_line, cmdline_p, COMMAND_LINE_SIZE); /* Reserve some memory regions */ diff --git a/include/linux/init.h b/include/linux/init.h index bc27cf03c41e..206b98d77cb4 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -129,7 +129,7 @@ extern char *saved_command_line; extern unsigned int reset_devices; /* used by init/main.c */ -void setup_arch(char **); +void setup_arch(void); void prepare_namespace(void); void __init load_default_modules(void); int __init init_rootfs(void); diff --git a/init/main.c b/init/main.c index e4a3160991ea..8df5917867b1 100644 --- a/init/main.c +++ b/init/main.c @@ -367,15 +367,16 @@ static inline void smp_prepare_cpus(unsigned int maxcpus) { } * parsing is performed in place, and we should allow a component to * store reference of name/value for future reference. */ -static void __init setup_command_line(char *command_line) +static void __init setup_command_line(void) { saved_command_line = memblock_virt_alloc(strlen(boot_command_line) + 1, 0); initcall_command_line = memblock_virt_alloc(strlen(boot_command_line) + 1, 0); - static_command_line = memblock_virt_alloc(strlen(command_line) + 1, 0); + static_command_line = + memblock_virt_alloc(strlen(boot_command_line) + 1, 0); strcpy(saved_command_line, boot_command_line); - strcpy(static_command_line, command_line); + strcpy(static_command_line, boot_command_line); } /* @@ -514,7 +515,6 @@ static void __init mm_init(void) asmlinkage __visible void __init start_kernel(void) { - char *command_line; char *after_dashes; set_task_stack_end_magic(&init_task); @@ -533,16 +533,16 @@ asmlinkage __visible void __init start_kernel(void) boot_cpu_init(); page_address_init(); pr_notice("%s", linux_banner); - setup_arch(&command_line); + setup_arch(); /* * Set up the the initial canary and entropy after arch * and after adding latent and command line entropy. */ add_latent_entropy(); - add_device_randomness(command_line, strlen(command_line)); + add_device_randomness(boot_command_line, strlen(boot_command_line)); boot_init_stack_canary(); mm_init_cpumask(&init_mm); - setup_command_line(command_line); + setup_command_line(); setup_nr_cpu_ids(); setup_per_cpu_areas(); boot_cpu_state_init();