svn commit: r363345 - head/sys/riscv/riscv
Mitchell Horne
mhorne at FreeBSD.org
Sun Jul 19 23:34:53 UTC 2020
Author: mhorne
Date: Sun Jul 19 23:34:52 2020
New Revision: 363345
URL: https://svnweb.freebsd.org/changeset/base/363345
Log:
riscv: look for bootargs in FDT
The FDT may contain a short /chosen/bootargs string which we should pass
to boot_parse_cmdline. Notably, this allows the use of qemu's -append
option to pass things like -s to boot to single user mode.
Submitted by: Nathaniel Filardo <nwf20 at cl.cam.ac.uk>
Reviewed by: mhorne
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D25544
Modified:
head/sys/riscv/riscv/machdep.c
Modified: head/sys/riscv/riscv/machdep.c
==============================================================================
--- head/sys/riscv/riscv/machdep.c Sun Jul 19 23:34:01 2020 (r363344)
+++ head/sys/riscv/riscv/machdep.c Sun Jul 19 23:34:52 2020 (r363345)
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/boot.h>
#include <sys/buf.h>
#include <sys/bus.h>
#include <sys/cons.h>
@@ -800,6 +801,19 @@ fake_preload_metadata(struct riscv_bootparams *rvbp)
rvbp->kern_phys, rvbp->kern_phys + (lastaddr - KERNBASE));
}
+#ifdef FDT
+static void
+parse_fdt_bootargs(void)
+{
+ char bootargs[512];
+
+ bootargs[sizeof(bootargs) - 1] = '\0';
+ if (fdt_get_chosen_bootargs(bootargs, sizeof(bootargs) - 1) == 0) {
+ boothowto |= boot_parse_cmdline(bootargs);
+ }
+}
+#endif
+
static vm_offset_t
parse_metadata(void)
{
@@ -829,6 +843,8 @@ parse_metadata(void)
#endif
#ifdef FDT
try_load_dtb(kmdp);
+ if (kern_envp == NULL)
+ parse_fdt_bootargs();
#endif
return (lastaddr);
}
More information about the svn-src-all
mailing list