svn commit: r265069 - in stable/10/sys/boot: fdt uboot/common uboot/lib
Ian Lepore
ian at FreeBSD.org
Tue Apr 29 00:36:53 UTC 2014
Author: ian
Date: Tue Apr 29 00:36:51 2014
New Revision: 265069
URL: http://svnweb.freebsd.org/changeset/base/265069
Log:
MFC r262664, r262694:
Prevent fdt data loaded from a file from overwriting the kernel environment,
by having uboot_autoload() do the fdt setup (which may load a file) rather
than waiting until we're actually in the process of launching the kernel.
As part of making this happen...
- Define LOADER_FDT_SUPPORT on the uboot/lib compile command line when
MK_FDT is set.
- Make fdt_setup_fdtb() public.
- Declare public fdt_whatever() functions in a header instead of using
scattered extern decls in .c files.
Modified:
stable/10/sys/boot/fdt/fdt_loader_cmd.c
stable/10/sys/boot/uboot/common/metadata.c
stable/10/sys/boot/uboot/lib/Makefile
stable/10/sys/boot/uboot/lib/libuboot.h
stable/10/sys/boot/uboot/lib/module.c
Modified: stable/10/sys/boot/fdt/fdt_loader_cmd.c
==============================================================================
--- stable/10/sys/boot/fdt/fdt_loader_cmd.c Tue Apr 29 00:31:32 2014 (r265068)
+++ stable/10/sys/boot/fdt/fdt_loader_cmd.c Tue Apr 29 00:36:51 2014 (r265069)
@@ -279,7 +279,7 @@ fdt_load_dtb_file(const char * filename)
return (0);
}
-static int
+int
fdt_setup_fdtp()
{
struct preloaded_file *bfp;
Modified: stable/10/sys/boot/uboot/common/metadata.c
==============================================================================
--- stable/10/sys/boot/uboot/common/metadata.c Tue Apr 29 00:31:32 2014 (r265068)
+++ stable/10/sys/boot/uboot/common/metadata.c Tue Apr 29 00:36:51 2014 (r265069)
@@ -42,7 +42,7 @@ __FBSDID("$FreeBSD$");
#include "glue.h"
#if defined(LOADER_FDT_SUPPORT)
-extern int fdt_copy(vm_offset_t);
+#include "libuboot.h"
#endif
/*
Modified: stable/10/sys/boot/uboot/lib/Makefile
==============================================================================
--- stable/10/sys/boot/uboot/lib/Makefile Tue Apr 29 00:31:32 2014 (r265068)
+++ stable/10/sys/boot/uboot/lib/Makefile Tue Apr 29 00:36:51 2014 (r265069)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
.PATH: ${.CURDIR}/../../common
LIB= uboot
@@ -18,6 +20,16 @@ SRCS+= disk.c
CFLAGS+= -DLOADER_DISK_SUPPORT
.endif
+.if ${MK_FDT} != "no"
+LOADER_FDT_SUPPORT= yes
+.else
+LOADER_FDT_SUPPORT= no
+.endif
+
+.if ${LOADER_FDT_SUPPORT} == "yes"
+CFLAGS+= -DLOADER_FDT_SUPPORT
+.endif
+
# Pick up FDT includes
CFLAGS+= -I${.CURDIR}/../../../../sys/contrib/libfdt/
Modified: stable/10/sys/boot/uboot/lib/libuboot.h
==============================================================================
--- stable/10/sys/boot/uboot/lib/libuboot.h Tue Apr 29 00:31:32 2014 (r265068)
+++ stable/10/sys/boot/uboot/lib/libuboot.h Tue Apr 29 00:36:51 2014 (r265069)
@@ -69,3 +69,9 @@ struct file_format;
extern struct file_format uboot_elf;
void reboot(void);
+
+#if defined(LOADER_FDT_SUPPORT)
+extern int fdt_setup_fdtp();
+extern int fdt_copy(vm_offset_t);
+#endif
+
Modified: stable/10/sys/boot/uboot/lib/module.c
==============================================================================
--- stable/10/sys/boot/uboot/lib/module.c Tue Apr 29 00:31:32 2014 (r265068)
+++ stable/10/sys/boot/uboot/lib/module.c Tue Apr 29 00:36:51 2014 (r265069)
@@ -29,19 +29,23 @@ __FBSDID("$FreeBSD$");
/*
* U-Boot-specific module functionality.
- *
- * XXX not much for now...
- *
*/
#include <stand.h>
#include <string.h>
#include "bootstrap.h"
+#include "libuboot.h"
int
uboot_autoload(void)
{
+#if defined(LOADER_FDT_SUPPORT)
+ int err;
+
+ if ((err = fdt_setup_fdtp()) != 0)
+ return (err);
+#endif
return(0);
}
More information about the svn-src-all
mailing list