diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/Kconfig | 6 | ||||
-rw-r--r-- | common/blspec.c | 2 | ||||
-rw-r--r-- | common/boot.c | 4 | ||||
-rw-r--r-- | common/bootargs.c | 6 | ||||
-rw-r--r-- | common/bootchooser.c | 30 | ||||
-rw-r--r-- | common/bootm.c | 25 | ||||
-rw-r--r-- | common/console.c | 4 | ||||
-rw-r--r-- | common/fastboot.c | 11 | ||||
-rw-r--r-- | common/globalvar.c | 9 | ||||
-rw-r--r-- | common/imd-barebox.c | 1 | ||||
-rw-r--r-- | common/imd.c | 3 | ||||
-rw-r--r-- | common/kallsyms.c | 4 | ||||
-rw-r--r-- | common/machine_id.c | 2 | ||||
-rw-r--r-- | common/memsize.c | 2 | ||||
-rw-r--r-- | common/misc.c | 7 | ||||
-rw-r--r-- | common/password.c | 4 | ||||
-rw-r--r-- | common/startup.c | 33 | ||||
-rw-r--r-- | common/state/state.c | 3 | ||||
-rw-r--r-- | common/uimage.c | 21 | ||||
-rw-r--r-- | common/usbgadget.c | 24 | ||||
-rw-r--r-- | common/version.c | 6 |
21 files changed, 122 insertions, 85 deletions
diff --git a/common/Kconfig b/common/Kconfig index 1a5bb53182..9b73aa8454 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -906,6 +906,11 @@ config DEFAULT_ENVIRONMENT_GENERIC_NEW_DFU depends on USB_GADGET_DFU default y +config DEFAULT_ENVIRONMENT_GENERIC_NEW_REBOOT_MODE + bool "Generic reboot-mode handlers in the environment" + depends on DEFAULT_ENVIRONMENT_GENERIC_NEW + depends on REBOOT_MODE + config DEFAULT_ENVIRONMENT_PATH string depends on DEFAULT_ENVIRONMENT @@ -1292,7 +1297,6 @@ config DEBUG_IMX_UART_PORT DEBUG_IMX51_UART || \ DEBUG_IMX53_UART || \ DEBUG_IMX6Q_UART || \ - DEBUG_IMX6SL_UART || \ DEBUG_IMX7D_UART || \ DEBUG_IMX8M_UART || \ DEBUG_VF610_UART diff --git a/common/blspec.c b/common/blspec.c index 9499d32477..a07343f427 100644 --- a/common/blspec.c +++ b/common/blspec.c @@ -766,7 +766,7 @@ int blspec_scan_devices(struct bootentries *bootentries) device_detect(dev); for_each_block_device(bdev) { - struct cdev *cdev = &bdev->cdev; + struct cdev *cdev; list_for_each_entry(cdev, &bdev->dev->cdevs, devices_list) { ret = blspec_scan_cdev(bootentries, cdev); diff --git a/common/boot.c b/common/boot.c index f546fce62c..90d504e3c3 100644 --- a/common/boot.c +++ b/common/boot.c @@ -136,7 +136,7 @@ static int init_boot(void) } late_initcall(init_boot); -BAREBOX_MAGICVAR_NAMED(global_watchdog_timeout, global.boot.watchdog_timeout, +BAREBOX_MAGICVAR(global.boot.watchdog_timeout, "Watchdog enable timeout in seconds before booting"); int boot_entry(struct bootentry *be, int verbose, int dryrun) @@ -361,4 +361,4 @@ void bootsources_list(struct bootentries *bootentries) printf("%-20s %s\n", entry->title, entry->description); } -BAREBOX_MAGICVAR_NAMED(global_boot_default, global.boot.default, "default boot order"); +BAREBOX_MAGICVAR(global.boot.default, "default boot order"); diff --git a/common/bootargs.c b/common/bootargs.c index 97d0e15eaf..fc345560ec 100644 --- a/common/bootargs.c +++ b/common/bootargs.c @@ -84,6 +84,6 @@ int linux_bootargs_overwrite(const char *bootargs) return 0; } -BAREBOX_MAGICVAR_NAMED(global_linux_bootargs_, global.linux.bootargs.*, "Linux bootargs variables"); -BAREBOX_MAGICVAR_NAMED(global_linux_mtdparts_, global.linux.mtdparts.*, "Linux mtdparts variables"); -BAREBOX_MAGICVAR_NAMED(global_linux_blkdevparts_, global.linux.blkdevparts.*, "Linux blkdevparts variables"); +BAREBOX_MAGICVAR(global.linux.bootargs.*, "Linux bootargs variables"); +BAREBOX_MAGICVAR(global.linux.mtdparts.*, "Linux mtdparts variables"); +BAREBOX_MAGICVAR(global.linux.blkdevparts.*, "Linux blkdevparts variables"); diff --git a/common/bootchooser.c b/common/bootchooser.c index c08db03eba..7aa59d8a82 100644 --- a/common/bootchooser.c +++ b/common/bootchooser.c @@ -954,21 +954,15 @@ static int bootchooser_init(void) } device_initcall(bootchooser_init); -BAREBOX_MAGICVAR_NAMED(global_bootchooser_disable_on_zero_attempts, - global.bootchooser.disable_on_zero_attempts, - "bootchooser: Disable target when remaining attempts counter reaches 0"); -BAREBOX_MAGICVAR_NAMED(global_bootchooser_retry, - global.bootchooser.retry, - "bootchooser: Try again when booting a target fails"); -BAREBOX_MAGICVAR_NAMED(global_bootchooser_targets, - global.bootchooser.targets, - "bootchooser: Space separated list of target names"); -BAREBOX_MAGICVAR_NAMED(global_bootchooser_default_attempts, - global.bootchooser.default_attempts, - "bootchooser: Default number of attempts for a target"); -BAREBOX_MAGICVAR_NAMED(global_bootchooser_default_priority, - global.bootchooser.default_priority, - "bootchooser: Default priority for a target"); -BAREBOX_MAGICVAR_NAMED(global_bootchooser_state_prefix, - global.bootchooser.state_prefix, - "bootchooser: state name prefix, empty for nv backend"); +BAREBOX_MAGICVAR(global.bootchooser.disable_on_zero_attempts, + "bootchooser: Disable target when remaining attempts counter reaches 0"); +BAREBOX_MAGICVAR(global.bootchooser.retry, + "bootchooser: Try again when booting a target fails"); +BAREBOX_MAGICVAR(global.bootchooser.targets, + "bootchooser: Space separated list of target names"); +BAREBOX_MAGICVAR(global.bootchooser.default_attempts, + "bootchooser: Default number of attempts for a target"); +BAREBOX_MAGICVAR(global.bootchooser.default_priority, + "bootchooser: Default priority for a target"); +BAREBOX_MAGICVAR(global.bootchooser.state_prefix, + "bootchooser: state name prefix, empty for nv backend"); diff --git a/common/bootm.c b/common/bootm.c index 60b8bf10a8..f70ef10100 100644 --- a/common/bootm.c +++ b/common/bootm.c @@ -648,8 +648,7 @@ int bootm_boot(struct bootm_data *bootm_data) fit = fit_open(data->os_file, data->verbose, data->verify); if (IS_ERR(fit)) { - printf("Loading FIT image %s failed with: %s\n", data->os_file, - strerrorp(fit)); + printf("Loading FIT image %s failed with: %pe\n", data->os_file, fit); ret = PTR_ERR(fit); goto err_out; } @@ -847,14 +846,14 @@ static int bootm_init(void) late_initcall(bootm_init); BAREBOX_MAGICVAR(bootargs, "Linux kernel parameters"); -BAREBOX_MAGICVAR_NAMED(global_bootm_image, global.bootm.image, "bootm default boot image"); -BAREBOX_MAGICVAR_NAMED(global_bootm_image_loadaddr, global.bootm.image.loadaddr, "bootm default boot image loadaddr"); -BAREBOX_MAGICVAR_NAMED(global_bootm_initrd, global.bootm.initrd, "bootm default initrd"); -BAREBOX_MAGICVAR_NAMED(global_bootm_initrd_loadaddr, global.bootm.initrd.loadaddr, "bootm default initrd loadaddr"); -BAREBOX_MAGICVAR_NAMED(global_bootm_oftree, global.bootm.oftree, "bootm default oftree"); -BAREBOX_MAGICVAR_NAMED(global_bootm_tee, global.bootm.tee, "bootm default tee image"); -BAREBOX_MAGICVAR_NAMED(global_bootm_verify, global.bootm.verify, "bootm default verify level"); -BAREBOX_MAGICVAR_NAMED(global_bootm_verbose, global.bootm.verbose, "bootm default verbosity level (0=quiet)"); -BAREBOX_MAGICVAR_NAMED(global_bootm_appendroot, global.bootm.appendroot, "Add root= option to Kernel to mount rootfs from the device the Kernel comes from (default, device can be overridden via global.bootm.root_dev)"); -BAREBOX_MAGICVAR_NAMED(global_bootm_root_dev, global.bootm.root_dev, "bootm default root device (overrides default device in global.bootm.appendroot)"); -BAREBOX_MAGICVAR_NAMED(global_bootm_provide_machine_id, global.bootm.provide_machine_id, "If true, add systemd.machine_id= with value of global.machine_id to Kernel"); +BAREBOX_MAGICVAR(global.bootm.image, "bootm default boot image"); +BAREBOX_MAGICVAR(global.bootm.image.loadaddr, "bootm default boot image loadaddr"); +BAREBOX_MAGICVAR(global.bootm.initrd, "bootm default initrd"); +BAREBOX_MAGICVAR(global.bootm.initrd.loadaddr, "bootm default initrd loadaddr"); +BAREBOX_MAGICVAR(global.bootm.oftree, "bootm default oftree"); +BAREBOX_MAGICVAR(global.bootm.tee, "bootm default tee image"); +BAREBOX_MAGICVAR(global.bootm.verify, "bootm default verify level"); +BAREBOX_MAGICVAR(global.bootm.verbose, "bootm default verbosity level (0=quiet)"); +BAREBOX_MAGICVAR(global.bootm.appendroot, "Add root= option to Kernel to mount rootfs from the device the Kernel comes from (default, device can be overridden via global.bootm.root_dev)"); +BAREBOX_MAGICVAR(global.bootm.root_dev, "bootm default root device (overrides default device in global.bootm.appendroot)"); +BAREBOX_MAGICVAR(global.bootm.provide_machine_id, "If true, add systemd.machine_id= with value of global.machine_id to Kernel"); diff --git a/common/console.c b/common/console.c index 3375ecb7e5..ffb5c0f75f 100644 --- a/common/console.c +++ b/common/console.c @@ -628,8 +628,8 @@ void console_ctrlc_forbid(void) ctrlc_allowed = 0; } -BAREBOX_MAGICVAR_NAMED(global_console_ctrlc_allowed, global.console.ctrlc_allowed, +BAREBOX_MAGICVAR(global.console.ctrlc_allowed, "If true, scripts can be aborted with ctrl-c"); -BAREBOX_MAGICVAR_NAMED(global_linux_bootargs_console, global.linux.bootargs.console, +BAREBOX_MAGICVAR(global.linux.bootargs.console, "console= argument for Linux from the stdout-path property in /chosen node"); diff --git a/common/fastboot.c b/common/fastboot.c index bcfadfad3d..1b6dc28d8e 100644 --- a/common/fastboot.c +++ b/common/fastboot.c @@ -959,12 +959,9 @@ static int fastboot_globalvars_init(void) device_initcall(fastboot_globalvars_init); -BAREBOX_MAGICVAR_NAMED(global_fastboot_max_download_size, - global.fastboot.max_download_size, - "Fastboot maximum download size"); -BAREBOX_MAGICVAR_NAMED(global_fastboot_partitions, - global.fastboot.partitions, +BAREBOX_MAGICVAR(global.fastboot.max_download_size, + "Fastboot maximum download size"); +BAREBOX_MAGICVAR(global.fastboot.partitions, "Partitions exported for update via fastboot"); -BAREBOX_MAGICVAR_NAMED(global_fastboot_bbu, - global.fastboot.bbu, +BAREBOX_MAGICVAR(global.fastboot.bbu, "Export barebox update handlers via fastboot"); diff --git a/common/globalvar.c b/common/globalvar.c index 5bde86aad0..60793d7a30 100644 --- a/common/globalvar.c +++ b/common/globalvar.c @@ -652,11 +652,16 @@ static int globalvar_init(void) globalvar_add_simple("version", UTS_RELEASE); + if (strlen(buildsystem_version_string) > 0) + globalvar_add_simple("buildsystem.version", buildsystem_version_string); + return 0; } pure_initcall(globalvar_init); -BAREBOX_MAGICVAR_NAMED(global_version, global.version, "The barebox version"); +BAREBOX_MAGICVAR(global.version, "The barebox version"); +BAREBOX_MAGICVAR(global.buildsystem.version, + "version of buildsystem barebox was built with"); /** * nvvar_save - save NV variables to persistent environment @@ -668,7 +673,7 @@ int nvvar_save(void) { struct param_d *param; const char *env = default_environment_path_get(); - int ret; + int ret = 0; #define TMPDIR "/.env.tmp" if (!nv_dirty || !env) return 0; diff --git a/common/imd-barebox.c b/common/imd-barebox.c index e5cdfd1aed..06731d0600 100644 --- a/common/imd-barebox.c +++ b/common/imd-barebox.c @@ -23,4 +23,5 @@ __BAREBOX_IMD_SECTION(.barebox_imd_end) = { BAREBOX_IMD_TAG_STRING(imd_build_tag, IMD_TYPE_BUILD, UTS_VERSION, 1); BAREBOX_IMD_TAG_STRING(imd_release_tag, IMD_TYPE_RELEASE, UTS_RELEASE, 1); +BAREBOX_IMD_TAG_STRING(imd_buildsystem_version_tag, IMD_TYPE_BUILDSYSTEM, BUILDSYSTEM_VERSION, 1); BAREBOX_IMD_CRC(imd_crc32, 0x0, 1); diff --git a/common/imd.c b/common/imd.c index 0644e6d3bf..4fd4431aa9 100644 --- a/common/imd.c +++ b/common/imd.c @@ -168,6 +168,9 @@ static struct imd_type_names imd_types[] = { }, { .type = IMD_TYPE_CRC32, .name = "crc32", + }, { + .type = IMD_TYPE_BUILDSYSTEM, + .name = "buildsystem version", }, }; diff --git a/common/kallsyms.c b/common/kallsyms.c index 2c16ab2884..f641903147 100644 --- a/common/kallsyms.c +++ b/common/kallsyms.c @@ -15,8 +15,8 @@ extern const unsigned long kallsyms_markers[] __attribute__((weak)); static inline int is_kernel_text(unsigned long addr) { - if (addr >= (unsigned long)_stext && addr <= (unsigned long)_end) - return 1; + if (addr >= (unsigned long)_stext && addr <= (unsigned long)_end) + return 1; return 0; } diff --git a/common/machine_id.c b/common/machine_id.c index e678bb7fe8..c1309ccafd 100644 --- a/common/machine_id.c +++ b/common/machine_id.c @@ -66,4 +66,4 @@ out: } late_initcall(machine_id_set_bootarg); -BAREBOX_MAGICVAR_NAMED(global_machine_id, global.machine_id, "Persistent device-specific, hexadecimal, 32-character id"); +BAREBOX_MAGICVAR(global.machine_id, "Persistent device-specific, hexadecimal, 32-character id"); diff --git a/common/memsize.c b/common/memsize.c index 915ab87b34..2fd2b71457 100644 --- a/common/memsize.c +++ b/common/memsize.c @@ -58,7 +58,7 @@ long get_ram_size(volatile long *base, long maxsize) *addr = 0; sync (); - if ((val = *addr) != 0) { + if (*addr != 0) { /* Restore the original data before leaving the function. */ sync (); diff --git a/common/misc.c b/common/misc.c index 1c7f937608..323500dfa8 100644 --- a/common/misc.c +++ b/common/misc.c @@ -22,6 +22,7 @@ #include <led.h> #include <of.h> #include <restart.h> +#include <linux/stringify.h> int errno; EXPORT_SYMBOL(errno); @@ -29,7 +30,7 @@ EXPORT_SYMBOL(errno); const char *strerror(int errnum) { - static char errno_string[10]; + static char errno_string[sizeof("error -2147483648")]; #ifdef CONFIG_ERRNO_MESSAGES char *str; @@ -154,7 +155,7 @@ const char *barebox_get_model(void) } EXPORT_SYMBOL(barebox_get_model); -BAREBOX_MAGICVAR_NAMED(global_model, global.model, "Product name of this hardware"); +BAREBOX_MAGICVAR(global.model, "Product name of this hardware"); static char *hostname; @@ -184,7 +185,7 @@ void barebox_set_hostname_no_overwrite(const char *__hostname) } EXPORT_SYMBOL(barebox_set_hostname_no_overwrite); -BAREBOX_MAGICVAR_NAMED(global_hostname, global.hostname, +BAREBOX_MAGICVAR(global.hostname, "shortname of the board. Also used as hostname for DHCP requests"); void __noreturn panic(const char *fmt, ...) diff --git a/common/password.c b/common/password.c index 3c08ab782e..a119717400 100644 --- a/common/password.c +++ b/common/password.c @@ -449,7 +449,7 @@ static int login_global_init(void) } late_initcall(login_global_init); -BAREBOX_MAGICVAR_NAMED(global_login_fail_command, global.login.fail_command, +BAREBOX_MAGICVAR(global.login.fail_command, "command to run when password entry failed"); -BAREBOX_MAGICVAR_NAMED(global_login_timeout, global.login.timeout, +BAREBOX_MAGICVAR(global.login.timeout, "timeout to type the password"); diff --git a/common/startup.c b/common/startup.c index ea7ce6b8da..adc487363f 100644 --- a/common/startup.c +++ b/common/startup.c @@ -38,6 +38,7 @@ #include <linux/stat.h> #include <envfs.h> #include <magicvar.h> +#include <linux/reboot-mode.h> #include <asm/sections.h> #include <uncompress.h> #include <globalvar.h> @@ -310,6 +311,7 @@ static int run_init(void) DIR *dir; struct dirent *d; const char *initdir = "/env/init"; + const char *bmode; bool env_bin_init_exists; enum autoboot_state autoboot; struct stat s; @@ -350,6 +352,20 @@ static int run_init(void) closedir(dir); } + /* source matching script in /env/bmode/ */ + bmode = reboot_mode_get(); + if (bmode) { + char *scr, *path; + + scr = xasprintf("source /env/bmode/%s", bmode); + path = &scr[strlen("source ")]; + if (stat(path, &s) == 0) { + pr_info("Invoking '%s'...\n", path); + run_command(scr); + } + free(scr); + } + autoboot = do_autoboot_countdown(); console_ctrlc_allow(); @@ -436,14 +452,13 @@ void shutdown_barebox(void) pr_debug("exitcall-> %pS\n", *exitcall); (*exitcall)(); } + + console_flush(); } -BAREBOX_MAGICVAR_NAMED(autoboot_state, - global.autoboot, - "Autoboot state. Possible values: countdown (default), abort, menu, boot"); -BAREBOX_MAGICVAR_NAMED(global_autoboot_abort_key, - global.autoboot_abort_key, - "Which key allows to interrupt autoboot. Possible values: any, ctrl-c"); -BAREBOX_MAGICVAR_NAMED(global_autoboot_timeout, - global.autoboot_timeout, - "Timeout before autoboot starts in seconds"); +BAREBOX_MAGICVAR(global.autoboot, + "Autoboot state. Possible values: countdown (default), abort, menu, boot"); +BAREBOX_MAGICVAR(global.autoboot_abort_key, + "Which key allows to interrupt autoboot. Possible values: any, ctrl-c"); +BAREBOX_MAGICVAR(global.autoboot_timeout, + "Timeout before autoboot starts in seconds"); diff --git a/common/state/state.c b/common/state/state.c index d42920985d..9d04eab312 100644 --- a/common/state/state.c +++ b/common/state/state.c @@ -271,9 +271,8 @@ static int state_convert_node_variable(struct state *state, if (conv == STATE_CONVERT_FROM_NODE_CREATE) { sv = vtype->create(state, name, node, vtype); if (IS_ERR(sv)) { + dev_err(&state->dev, "failed to create %s: %pe\n", name, sv); ret = PTR_ERR(sv); - dev_err(&state->dev, "failed to create %s: %s\n", name, - strerror(-ret)); goto out_free; } diff --git a/common/uimage.c b/common/uimage.c index a84b8fddc4..9abfbcf3ba 100644 --- a/common/uimage.c +++ b/common/uimage.c @@ -27,6 +27,7 @@ #include <rtc.h> #include <filetype.h> #include <memory.h> +#include <zero_page.h> static inline int uimage_is_multi_image(struct uimage_handle *handle) { @@ -359,7 +360,10 @@ static int uimage_sdram_flush(void *buf, unsigned int len) } } - memcpy(uimage_buf + uimage_size, buf, len); + if (zero_page_contains((unsigned long)uimage_buf + uimage_size)) + zero_page_memcpy(uimage_buf + uimage_size, buf, len); + else + memcpy(uimage_buf + uimage_size, buf, len); uimage_size += len; @@ -388,7 +392,20 @@ struct resource *file_to_sdram(const char *filename, unsigned long adr) goto out; } - now = read_full(fd, (void *)(res->start + ofs), BUFSIZ); + if (zero_page_contains(res->start + ofs)) { + void *tmp = malloc(BUFSIZ); + if (!tmp) + now = -ENOMEM; + else + now = read_full(fd, tmp, BUFSIZ); + + if (now > 0) + zero_page_memcpy((void *)(res->start + ofs), tmp, now); + free(tmp); + } else { + now = read_full(fd, (void *)(res->start + ofs), BUFSIZ); + } + if (now < 0) { release_sdram_region(res); res = NULL; diff --git a/common/usbgadget.c b/common/usbgadget.c index b4f4ba04ca..fb508db947 100644 --- a/common/usbgadget.c +++ b/common/usbgadget.c @@ -35,8 +35,7 @@ static struct file_list *parse(const char *files) { struct file_list *list = file_list_parse(files); if (IS_ERR(list)) { - pr_err("Parsing file list \"%s\" failed: %s\n", files, - strerrorp(list)); + pr_err("Parsing file list \"%s\" failed: %pe\n", files, list); return NULL; } return list; @@ -101,7 +100,7 @@ int usbgadget_register(bool dfu, const char *dfu_opts, return ret; } -static int usbgadget_autostart(void) +static int usbgadget_autostart_set(struct param_d *param, void *ctx) { bool fastboot_bbu = get_fastboot_bbu(); @@ -110,12 +109,12 @@ static int usbgadget_autostart(void) return usbgadget_register(true, NULL, true, NULL, acm, fastboot_bbu); } -postenvironment_initcall(usbgadget_autostart); static int usbgadget_globalvars_init(void) { if (IS_ENABLED(CONFIG_USB_GADGET_AUTOSTART)) { - globalvar_add_simple_bool("usbgadget.autostart", &autostart); + globalvar_add_bool("usbgadget.autostart", usbgadget_autostart_set, + &autostart, NULL); globalvar_add_simple_bool("usbgadget.acm", &acm); } globalvar_add_simple_string("usbgadget.dfu_function", &dfu_function); @@ -124,12 +123,9 @@ static int usbgadget_globalvars_init(void) } device_initcall(usbgadget_globalvars_init); -BAREBOX_MAGICVAR_NAMED(global_usbgadget_autostart, - global.usbgadget.autostart, - "usbgadget: Automatically start usbgadget on boot"); -BAREBOX_MAGICVAR_NAMED(global_usbgadget_acm, - global.usbgadget.acm, - "usbgadget: Create CDC ACM function"); -BAREBOX_MAGICVAR_NAMED(global_usbgadget_dfu_function, - global.usbgadget.dfu_function, - "usbgadget: Create DFU function"); +BAREBOX_MAGICVAR(global.usbgadget.autostart, + "usbgadget: Automatically start usbgadget on boot"); +BAREBOX_MAGICVAR(global.usbgadget.acm, + "usbgadget: Create CDC ACM function"); +BAREBOX_MAGICVAR(global.usbgadget.dfu_function, + "usbgadget: Create DFU function"); diff --git a/common/version.c b/common/version.c index 8b1fd4dbe7..54cec5335d 100644 --- a/common/version.c +++ b/common/version.c @@ -10,11 +10,17 @@ const char release_string[] = "barebox-" UTS_RELEASE; EXPORT_SYMBOL(release_string); +const char buildsystem_version_string[] = + BUILDSYSTEM_VERSION; +EXPORT_SYMBOL(buildsystem_version_string); + #ifdef CONFIG_BANNER void barebox_banner (void) { printf("\n\n"); pr_info("%s", version_string); + if (strlen(buildsystem_version_string) > 0) + pr_info("Buildsystem version: %s", buildsystem_version_string); printf("\n\n"); pr_info("Board: %s\n", barebox_get_model()); } |