summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/Kconfig6
-rw-r--r--common/blspec.c2
-rw-r--r--common/boot.c4
-rw-r--r--common/bootargs.c6
-rw-r--r--common/bootchooser.c30
-rw-r--r--common/bootm.c25
-rw-r--r--common/console.c4
-rw-r--r--common/fastboot.c11
-rw-r--r--common/globalvar.c9
-rw-r--r--common/imd-barebox.c1
-rw-r--r--common/imd.c3
-rw-r--r--common/kallsyms.c4
-rw-r--r--common/machine_id.c2
-rw-r--r--common/memsize.c2
-rw-r--r--common/misc.c7
-rw-r--r--common/password.c4
-rw-r--r--common/startup.c33
-rw-r--r--common/state/state.c3
-rw-r--r--common/uimage.c21
-rw-r--r--common/usbgadget.c24
-rw-r--r--common/version.c6
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());
}