summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/cmd_pxe.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c
index 9c43e63da8..eb5f9c38f3 100644
--- a/common/cmd_pxe.c
+++ b/common/cmd_pxe.c
@@ -606,6 +606,7 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
char initrd_str[22];
char mac_str[29] = "";
char ip_str[68] = "";
+ char console[30] = "";
char *bootargs;
int bootm_argc = 3;
int len = 0;
@@ -665,8 +666,21 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
}
#endif
- if (label->append)
+ if (label->append) {
len += strlen(label->append);
+ /* check for a console line in the boot args passed in from the
+ * config file. If there is no console line and the enviornment
+ * has a console variable add it to the bootargs
+ */
+ if ( !strstr(label->append, "console=") ) {
+ printf("no console= \n");
+ if (getenv("console")) {
+ sprintf(console, " console=%s",
+ getenv("console"));
+ len += strlen(console);
+ }
+ }
+ }
if (len) {
bootargs = malloc(len + 1);
@@ -675,6 +689,8 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
bootargs[0] = '\0';
if (label->append)
strcpy(bootargs, label->append);
+ if (strlen(console) > 0)
+ strcat(bootargs, console);
strcat(bootargs, ip_str);
strcat(bootargs, mac_str);