Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp170281rdb; Tue, 5 Dec 2023 01:55:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IGPc+DantnaJ5al7O2yW/Z65RNFB2YgPhsm6J1+U7kqP61ab/EdQyDfsc4bfzmmxGAGxRH7 X-Received: by 2002:a05:6a20:9718:b0:18c:a983:a5f2 with SMTP id hr24-20020a056a20971800b0018ca983a5f2mr961869pzc.29.1701770155634; Tue, 05 Dec 2023 01:55:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701770155; cv=none; d=google.com; s=arc-20160816; b=HYLCas8Ni8L30y3DnmVYuCdAKIOGW8g4AmBSL+FGZ0i7yUrj75JBh10yCVBoYpBiMS fHbjDrQ734berqatglU51F63UqnWDzteO5ZO3pQuz+J2HGZ24eo4qnKO1Iq/GEn+rG/3 EM1B358ftZyfuWnSqQ5Sdx+yPzmzLvXmgZltes+oK0Xda6qb4t4nyTe4zSTZQEtIysdu B6CdU4ktlC1ijNxOqFG5GZeMtwoCvuMncCZKo23EXj9oiXXg2bPsIjjSGs4M4u3nfG+9 PjZLluYJmE/6lIni5lX2XFlr61nvP70mGw2eBhLgYq/1KjvnkzyrNijPMQCmR+Mpo8cS yHIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=FqhgWr5p7gaLU+qYVjGcpIZCae3Y4w85VtCt/a9uJtY=; fh=S4scCjmGHuTpFNsRpx5F7zvdPnZW78Fse4yFoJp+Y6U=; b=nXXMMLn2NyJ2Oz/wu7a0da26Z7YBZKIVQtMhecr2gqXZ9Qeid6QHNAQqcmf6T5pxSw Y/z7fQ2vk4oe6Y/22fUrEmy0mvlPY9mOPi3qaN5KqqI06yM/WpbwC1UDWTLkeiRq40Z9 85xR4P4od/quwrtdCmgLP2FW6kZreJL6Ds4j3qOwiNiXawEgZjUsMVYmpPwwV7gPBGPf GM/QVuIKW8pEQE8UK4aU7CXt5ox5LFqNgpfiEfxUk5psXlwxphChc9EcE79YUq16oodM MNWpNdcu/ccgqHh7Ymg8/CVPlo4K0vZBFpYVBNGHSpzv9cchMcO34kGn4+TZK3tBlxOq SJAg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id q3-20020a631f43000000b005b18ac47c1csi5569657pgm.310.2023.12.05.01.55.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 01:55:55 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 8A9B88043EE7; Tue, 5 Dec 2023 01:55:52 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344952AbjLEJza (ORCPT + 99 others); Tue, 5 Dec 2023 04:55:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57884 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229643AbjLEJz0 (ORCPT ); Tue, 5 Dec 2023 04:55:26 -0500 Received: from sakura.ysato.name (ik1-413-38519.vs.sakura.ne.jp [153.127.30.23]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 502A1AA; Tue, 5 Dec 2023 01:55:32 -0800 (PST) Received: from SIOS1075.ysato.name (ZM005235.ppp.dion.ne.jp [222.8.5.235]) by sakura.ysato.name (Postfix) with ESMTPSA id 164F21C04FD; Tue, 5 Dec 2023 18:46:13 +0900 (JST) From: Yoshinori Sato To: linux-sh@vger.kernel.org Cc: Yoshinori Sato , Damien Le Moal , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Michael Turquette , Stephen Boyd , David Airlie , Daniel Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Thomas Gleixner , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Bjorn Helgaas , Greg Kroah-Hartman , Jiri Slaby , Magnus Damm , Daniel Lezcano , Rich Felker , John Paul Adrian Glaubitz , Lee Jones , Helge Deller , Heiko Stuebner , Jernej Skrabec , Chris Morgan , Linus Walleij , Randy Dunlap , Arnd Bergmann , Hyeonggon Yoo <42.hyeyoo@gmail.com>, David Rientjes , Vlastimil Babka , Baoquan He , Andrew Morton , Guenter Roeck , Stephen Rothwell , Guo Ren , Javier Martinez Canillas , Azeem Shaikh , Palmer Dabbelt , Bin Meng , Max Filippov , Tom Rix , Herve Codina , Jacky Huang , Lukas Bulwahn , Jonathan Corbet , Biju Das , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Sam Ravnborg , Michael Karcher , Sergey Shtylyov , Laurent Pinchart , linux-ide@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-clk@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-pci@vger.kernel.org, linux-serial@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [DO NOT MERGE v5 06/37] sh: kernel/setup Update DT support. Date: Tue, 5 Dec 2023 18:45:25 +0900 Message-Id: <76bbd45b22ef6cc1fa69369aff908c9c4e366860.1701768028.git.ysato@users.sourceforge.jp> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 05 Dec 2023 01:55:52 -0800 (PST) Fix extrnal fdt initialize and bootargs. Signed-off-by: Yoshinori Sato --- arch/sh/kernel/setup.c | 51 ++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 3d80515298d2..b299abff68e0 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -74,7 +75,13 @@ extern int root_mountflags; #define RAMDISK_PROMPT_FLAG 0x8000 #define RAMDISK_LOAD_FLAG 0x4000 +#if defined(CONFIG_OF) && !defined(CONFIG_USE_BUILTIN_DTB) +#define CHOSEN_BOOTARGS +#endif + +#ifndef CHOSEN_BOOTARGS static char __initdata command_line[COMMAND_LINE_SIZE] = { 0, }; +#endif static struct resource code_resource = { .name = "Kernel code", @@ -244,18 +251,18 @@ void __init __weak plat_early_device_setup(void) void __ref sh_fdt_init(phys_addr_t dt_phys) { static int done = 0; - void *dt_virt; + void *fdt; /* Avoid calling an __init function on secondary cpus. */ if (done) return; #ifdef CONFIG_USE_BUILTIN_DTB - dt_virt = __dtb_start; + fdt = __dtb_start; #else - dt_virt = phys_to_virt(dt_phys); + fdt = phys_to_virt(dt_phys); #endif - if (!dt_virt || !early_init_dt_scan(dt_virt)) { + if (!fdt || !early_init_dt_scan(fdt)) { pr_crit("Error: invalid device tree blob" " at physical address %p\n", (void *)dt_phys); @@ -269,8 +276,20 @@ void __ref sh_fdt_init(phys_addr_t dt_phys) void __init setup_arch(char **cmdline_p) { +#ifdef CONFIG_OF_EARLY_FLATTREE + if (IS_ENABLED(CONFIG_USE_BUILTIN_DTB)) { + /* Relocate Embedded DTB */ + unflatten_and_copy_device_tree(); + } else if (initial_boot_params) { + /* Reserve external DTB area */ + memblock_reserve(__pa(initial_boot_params), + fdt_totalsize(initial_boot_params)); + unflatten_device_tree(); + } +#endif enable_mmu(); +#ifndef CONFIG_OF ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); printk(KERN_NOTICE "Boot params:\n" @@ -299,19 +318,25 @@ void __init setup_arch(char **cmdline_p) bss_resource.start = virt_to_phys(__bss_start); bss_resource.end = virt_to_phys(__bss_stop)-1; -#ifdef CONFIG_CMDLINE_OVERWRITE - strscpy(command_line, CONFIG_CMDLINE, sizeof(command_line)); -#else +#endif + +#ifndef CHOSEN_BOOTARGS +#ifndef CONFIG_CMDLINE_OVERWRITE strscpy(command_line, COMMAND_LINE, sizeof(command_line)); #ifdef CONFIG_CMDLINE_EXTEND strlcat(command_line, " ", sizeof(command_line)); strlcat(command_line, CONFIG_CMDLINE, sizeof(command_line)); #endif -#endif - +#else /* !CONFIG_CMDLINE_OVERWRITE*/ + strscpy(command_line, CONFIG_CMDLINE, sizeof(command_line)); +#endif /* CONFIG_CMDLINE_OVERWRITE */ /* Save unparsed command line copy for /proc/cmdline */ memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); *cmdline_p = command_line; +#else /* CHOSEN_BOOTARGS */ + /* Use "/chosen/bootargs" specified in devicetree. */ + *cmdline_p = boot_command_line; +#endif parse_early_param(); @@ -322,14 +347,6 @@ void __init setup_arch(char **cmdline_p) /* Let earlyprintk output early console messages */ sh_early_platform_driver_probe("earlyprintk", 1, 1); -#ifdef CONFIG_OF_EARLY_FLATTREE -#ifdef CONFIG_USE_BUILTIN_DTB - unflatten_and_copy_device_tree(); -#else - unflatten_device_tree(); -#endif -#endif - paging_init(); /* Perform the machine specific initialisation */ -- 2.39.2