Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/stand/efiboot Add support for "bootargs" environment var...



details:   https://anonhg.NetBSD.org/src/rev/7c56683cbf38
branches:  trunk
changeset: 447609:7c56683cbf38
user:      skrll <skrll%NetBSD.org@localhost>
date:      Fri Jan 18 19:41:03 2019 +0000

description:
Add support for "bootargs" environment variable from jmcneill@

Doesn't work with some (all?) u-boots.

diffstat:

 sys/stand/efiboot/boot.c  |  24 ++++++++++++++++++++++--
 sys/stand/efiboot/version |   3 ++-
 2 files changed, 24 insertions(+), 3 deletions(-)

diffs (78 lines):

diff -r fa345b8eeebe -r 7c56683cbf38 sys/stand/efiboot/boot.c
--- a/sys/stand/efiboot/boot.c  Fri Jan 18 19:16:50 2019 +0000
+++ b/sys/stand/efiboot/boot.c  Fri Jan 18 19:41:03 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: boot.c,v 1.14 2018/11/15 23:52:33 jmcneill Exp $       */
+/*     $NetBSD: boot.c,v 1.15 2019/01/18 19:41:03 skrll Exp $  */
 
 /*-
  * Copyright (c) 2016 Kimihiro Nonaka <nonaka%netbsd.org@localhost>
@@ -73,11 +73,13 @@
 static char initrd_path[255];
 static char dtb_path[255];
 static char netbsd_path[255];
+static char netbsd_args[255];
 
 #define        DEFTIMEOUT      5
 #define DEFFILENAME    names[0]
 
 int    set_bootfile(const char *);
+int    set_bootargs(const char *);
 
 void   command_boot(char *);
 void   command_dev(char *);
@@ -328,6 +330,15 @@
        return 0;
 }
 
+int
+set_bootargs(const char *arg)
+{
+       if (strlen(arg) + 1 > sizeof(netbsd_args))
+               return ERANGE;
+       strcpy(netbsd_args, arg);
+       return 0;
+}
+
 void
 print_banner(void)
 {
@@ -376,6 +387,15 @@
                set_default_device(s);
                FreePool(s);
        }
+
+       s = efi_env_get("bootargs");
+       if (s) {
+#ifdef EFIBOOT_DEBUG
+               printf(">> Setting default boot args to '%s' from environment\n", s);
+#endif
+               set_bootargs(s);
+               FreePool(s);
+       }
 }
 
 void
@@ -401,7 +421,7 @@
                if (c != '\r' && c != '\n' && c != '\0')
                        bootprompt(); /* does not return */
 
-               exec_netbsd(netbsd_path, "");
+               exec_netbsd(netbsd_path, netbsd_args);
        }
 
        bootprompt();   /* does not return */
diff -r fa345b8eeebe -r 7c56683cbf38 sys/stand/efiboot/version
--- a/sys/stand/efiboot/version Fri Jan 18 19:16:50 2019 +0000
+++ b/sys/stand/efiboot/version Fri Jan 18 19:41:03 2019 +0000
@@ -1,4 +1,4 @@
-$NetBSD: version,v 1.8 2018/11/15 23:52:33 jmcneill Exp $
+$NetBSD: version,v 1.9 2019/01/18 19:41:03 skrll Exp $
 
 NOTE ANY CHANGES YOU MAKE TO THE EFI BOOTLOADER HERE.  The format of this
 file is important - make sure the entries are appended on end, last item
@@ -12,3 +12,4 @@
 1.5:   EFI runtime support.
 1.6:   Add GPT support.
 1.7:   Add NFS support.
+1.8:   Add support for "bootargs" environment variable.



Home | Main Index | Thread Index | Old Index