Index: head/stand/efi/loader/autoload.c =================================================================== --- head/stand/efi/loader/autoload.c +++ head/stand/efi/loader/autoload.c @@ -50,7 +50,8 @@ * imply that we're on a platform where FDT is a requirement. If we * fix this, then the error handling here should be fixed accordingly. */ - fdt_setup_fdtp(); + if (fdt_is_setup() == 0) + fdt_setup_fdtp(); #endif return (0); } Index: head/stand/fdt/fdt_loader_cmd.c =================================================================== --- head/stand/fdt/fdt_loader_cmd.c +++ head/stand/fdt/fdt_loader_cmd.c @@ -510,6 +510,16 @@ } int +fdt_is_setup(void) +{ + + if (fdtp != NULL) + return (1); + + return (0); +} + +int fdt_setup_fdtp() { struct preloaded_file *bfp; Index: head/stand/fdt/fdt_platform.h =================================================================== --- head/stand/fdt/fdt_platform.h +++ head/stand/fdt/fdt_platform.h @@ -48,6 +48,7 @@ int fdt_load_dtb_file(const char *); void fdt_load_dtb_overlays(const char *); int fdt_setup_fdtp(void); +int fdt_is_setup(void); /* The platform library needs to implement these functions */ int fdt_platform_load_dtb(void);