#define CONSOLE_ARG "console="
#define CONSOLE_ARG_LEN (sizeof(CONSOLE_ARG) - 1)
-void fixup_silent_linux(void)
+int fixup_silent_linux(void)
{
char *buf;
const char *env_val;
if (!IS_ENABLED(CONFIG_SILENT_CONSOLE) &&
!IS_ENABLED(CONFIG_SILENT_U_BOOT_ONLY))
- return;
+ return 0;
cmdline = env_get("bootargs");
/*
*/
want_silent = env_get_yesno("silent_linux");
if (want_silent == 0)
- return;
+ return 0;
else if (want_silent == -1 && !(gd->flags & GD_FLG_SILENT))
- return;
+ return 0;
debug("before silent fix-up: %s\n", cmdline);
if (cmdline && (cmdline[0] != '\0')) {
buf = malloc(strlen(cmdline) + 1 + CONSOLE_ARG_LEN + 1);
if (!buf) {
debug("%s: out of memory\n", __func__);
- return;
+ return -ENOSPC;
}
if (start) {
env_set("bootargs", env_val);
debug("after silent fix-up: %s\n", env_val);
free(buf);
+
+ return 0;
}
/**
if (!ret && (states & BOOTM_STATE_OS_BD_T))
ret = boot_fn(BOOTM_STATE_OS_BD_T, argc, argv, images);
if (!ret && (states & BOOTM_STATE_OS_PREP)) {
- if (images->os.os == IH_OS_LINUX)
- fixup_silent_linux();
+ if (images->os.os == IH_OS_LINUX) {
+ ret = fixup_silent_linux();
+ if (ret) {
+ printf("Cmdline setup failed (err=%d)\n", ret);
+ ret = CMD_RET_FAILURE;
+ goto err;
+ }
+ }
ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images);
}
*/
void board_preboot_os(void);
-/* Adjust the 'bootargs' to ensure that Linux boots silently, if required */
-void fixup_silent_linux(void);
+/*
+ * fixup_silent_linux() - Process fix-ups for the command line
+ *
+ * Updates the 'bootargs' envvar as required. This handles making Linux boot
+ * silently if requested ('silent_linux' envvar)
+ *
+ * @return 0 if OK, -ENOMEM if out of memory
+ */
+int fixup_silent_linux(void);
#endif
/* 'silent_linux' not set should do nothing */
env_set("silent_linux", NULL);
env_set("bootargs", CONSOLE_STR);
- fixup_silent_linux();
+ ut_assertok(fixup_silent_linux());
ut_asserteq_str(CONSOLE_STR, env_get("bootargs"));
env_set("bootargs", NULL);
- fixup_silent_linux();
+ ut_assertok(fixup_silent_linux());
ut_assertnull(env_get("bootargs"));
ut_assertok(env_set("silent_linux", "no"));
env_set("bootargs", CONSOLE_STR);
- fixup_silent_linux();
+ ut_assertok(fixup_silent_linux());
ut_asserteq_str(CONSOLE_STR, env_get("bootargs"));
ut_assertok(env_set("silent_linux", "yes"));
env_set("bootargs", CONSOLE_STR);
- fixup_silent_linux();
+ ut_assertok(fixup_silent_linux());
ut_asserteq_str("console=", env_get("bootargs"));
/* Empty buffer should still add the string */
env_set("bootargs", NULL);
- fixup_silent_linux();
+ ut_assertok(fixup_silent_linux());
ut_asserteq_str("console=", env_get("bootargs"));
return 0;