Module Name:    src
Committed By:   rin
Date:           Mon Jul 10 07:01:48 UTC 2023

Modified Files:
        src/sys/arch/evbarm/fdt: fdt_machdep.c
        src/sys/arch/riscv/riscv: riscv_machdep.c
        src/sys/dev/fdt: fdt_boot.c fdt_boot.h

Log Message:
fdt(4): Factor out bootargs support from evbarm and riscv.


To generate a diff of this commit:
cvs rdiff -u -r1.104 -r1.105 src/sys/arch/evbarm/fdt/fdt_machdep.c
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/riscv/riscv/riscv_machdep.c
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/fdt/fdt_boot.c \
    src/sys/dev/fdt/fdt_boot.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/evbarm/fdt/fdt_machdep.c
diff -u src/sys/arch/evbarm/fdt/fdt_machdep.c:1.104 src/sys/arch/evbarm/fdt/fdt_machdep.c:1.105
--- src/sys/arch/evbarm/fdt/fdt_machdep.c:1.104	Mon Jul 10 07:00:12 2023
+++ src/sys/arch/evbarm/fdt/fdt_machdep.c	Mon Jul 10 07:01:48 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: fdt_machdep.c,v 1.104 2023/07/10 07:00:12 rin Exp $ */
+/* $NetBSD: fdt_machdep.c,v 1.105 2023/07/10 07:01:48 rin Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fdt_machdep.c,v 1.104 2023/07/10 07:00:12 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fdt_machdep.c,v 1.105 2023/07/10 07:01:48 rin Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bootconfig.h"
@@ -110,12 +110,7 @@ __KERNEL_RCSID(0, "$NetBSD: fdt_machdep.
 #include <dev/wscons/wsdisplayvar.h>
 #endif
 
-#ifndef FDT_MAX_BOOT_STRING
-#define FDT_MAX_BOOT_STRING 1024
-#endif
-
 BootConfig bootconfig;
-char bootargs[FDT_MAX_BOOT_STRING] = "";
 char *boot_args = NULL;
 
 /* filled in before cleaning bss. keep in .data */
@@ -282,10 +277,7 @@ initarm(void *arg)
 	/* Early console may be available, announce ourselves. */
 	VPRINTF("FDT<%p>\n", fdt_addr_r);
 
-	const int chosen = OF_finddevice("/chosen");
-	if (chosen >= 0)
-		OF_getprop(chosen, "bootargs", bootargs, sizeof(bootargs));
-	boot_args = bootargs;
+	boot_args = fdt_get_bootargs();
 
 	/* Heads up ... Setup the CPU / MMU / TLB functions. */
 	VPRINTF("cpufunc\n");
@@ -383,7 +375,7 @@ initarm(void *arg)
 	/* Perform PT build and VM init */
 	cpu_kernel_vm_init(memory_start, memory_size);
 
-	VPRINTF("bootargs: %s\n", bootargs);
+	VPRINTF("bootargs: %s\n", boot_args);
 
 	parse_mi_bootargs(boot_args);
 

Index: src/sys/arch/riscv/riscv/riscv_machdep.c
diff -u src/sys/arch/riscv/riscv/riscv_machdep.c:1.29 src/sys/arch/riscv/riscv/riscv_machdep.c:1.30
--- src/sys/arch/riscv/riscv/riscv_machdep.c:1.29	Mon Jun 12 19:04:14 2023
+++ src/sys/arch/riscv/riscv/riscv_machdep.c	Mon Jul 10 07:01:48 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: riscv_machdep.c,v 1.29 2023/06/12 19:04:14 skrll Exp $	*/
+/*	$NetBSD: riscv_machdep.c,v 1.30 2023/07/10 07:01:48 rin Exp $	*/
 
 /*-
  * Copyright (c) 2014, 2019, 2022 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 #include "opt_riscv_debug.h"
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: riscv_machdep.c,v 1.29 2023/06/12 19:04:14 skrll Exp $");
+__RCSID("$NetBSD: riscv_machdep.c,v 1.30 2023/07/10 07:01:48 rin Exp $");
 
 #include <sys/param.h>
 
@@ -81,13 +81,9 @@ char machine_arch[] = MACHINE_ARCH;
 #define	VPRINTF(...)	__nothing
 #endif
 
-#ifndef FDT_MAX_BOOT_STRING
-#define	FDT_MAX_BOOT_STRING 1024
-#endif
 /* 64 should be enough, even for a ZFS UUID */
 #define	MAX_BOOT_DEV_STR	64
 
-char bootargs[FDT_MAX_BOOT_STRING] = "";
 char bootdevstr[MAX_BOOT_DEV_STR] = "";
 char *boot_args = NULL;
 
@@ -716,10 +712,7 @@ init_riscv(register_t hartid, paddr_t dt
 	/* Early console may be available, announce ourselves. */
 	VPRINTF("FDT<%p>\n", fdt_data);
 
-	const int chosen = OF_finddevice("/chosen");
-	if (chosen >= 0)
-		OF_getprop(chosen, "bootargs", bootargs, sizeof(bootargs));
-	boot_args = bootargs;
+	boot_args = fdt_get_bootargs();
 
 	VPRINTF("devmap %p\n", plat->fp_devmap());
 	pmap_devmap_bootstrap(0, plat->fp_devmap());
@@ -783,7 +776,7 @@ init_riscv(register_t hartid, paddr_t dt
 	/* Perform PT build and VM init */
 	cpu_kernel_vm_init(memory_start, memory_end);
 
-	VPRINTF("bootargs: %s\n", bootargs);
+	VPRINTF("bootargs: %s\n", boot_args);
 
 	parse_mi_bootargs(boot_args);
 

Index: src/sys/dev/fdt/fdt_boot.c
diff -u src/sys/dev/fdt/fdt_boot.c:1.2 src/sys/dev/fdt/fdt_boot.c:1.3
--- src/sys/dev/fdt/fdt_boot.c:1.2	Mon Jul 10 07:00:12 2023
+++ src/sys/dev/fdt/fdt_boot.c	Mon Jul 10 07:01:48 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: fdt_boot.c,v 1.2 2023/07/10 07:00:12 rin Exp $	*/
+/*	$NetBSD: fdt_boot.c,v 1.3 2023/07/10 07:01:48 rin Exp $	*/
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill <jmcne...@invisible.ca>
@@ -56,7 +56,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fdt_boot.c,v 1.2 2023/07/10 07:00:12 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fdt_boot.c,v 1.3 2023/07/10 07:01:48 rin Exp $");
 
 #include "opt_efi.h"
 #include "opt_md.h"
@@ -87,6 +87,11 @@ __KERNEL_RCSID(0, "$NetBSD: fdt_boot.c,v
 #endif
 #include <dev/fdt/fdt_memory.h>
 
+#ifndef FDT_MAX_BOOT_STRING
+#define	FDT_MAX_BOOT_STRING	1024
+#endif
+static char bootargs[FDT_MAX_BOOT_STRING] = "";
+
 #ifdef EFI_RUNTIME
 #include <machine/efirt.h>
 
@@ -186,6 +191,16 @@ fdt_unmap_range(void *ptr, uint64_t size
 	uvm_km_free(kernel_map, startva, sz, UVM_KMF_VAONLY);
 }
 
+char *
+fdt_get_bootargs(void)
+{
+	const int chosen = OF_finddevice("/chosen");
+
+	if (chosen >= 0)
+		OF_getprop(chosen, "bootargs", bootargs, sizeof(bootargs));
+	return bootargs;
+}
+
 void
 fdt_probe_initrd(void)
 {
Index: src/sys/dev/fdt/fdt_boot.h
diff -u src/sys/dev/fdt/fdt_boot.h:1.2 src/sys/dev/fdt/fdt_boot.h:1.3
--- src/sys/dev/fdt/fdt_boot.h:1.2	Mon Jul 10 07:00:12 2023
+++ src/sys/dev/fdt/fdt_boot.h	Mon Jul 10 07:01:48 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: fdt_boot.h,v 1.2 2023/07/10 07:00:12 rin Exp $ */
+/* $NetBSD: fdt_boot.h,v 1.3 2023/07/10 07:01:48 rin Exp $ */
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -38,6 +38,8 @@
 void fdt_map_efi_runtime(const char *prop, enum cpu_efirt_mem_type type);
 #endif
 
+char *fdt_get_bootargs(void);
+
 void fdt_probe_initrd(void);
 void fdt_setup_initrd(void);
 void fdt_reserve_initrd(void);

Reply via email to