forked from brl/citadel
67 lines
2.4 KiB
Diff
67 lines
2.4 KiB
Diff
From 1e33f99e13a70c19c1f63f6ef1c5522a09adece6 Mon Sep 17 00:00:00 2001
|
|
From: Jianxun Zhang <jianxun.zhang@linux.intel.com>
|
|
Date: Mon, 20 Jun 2016 13:08:20 -0700
|
|
Subject: [PATCH 3/3] sd-boot: Support global kernel command line fragment
|
|
|
|
Query file blob KBOOTPARAM from RMC. If it exists, we append
|
|
it to the new linux boot entry's cmdline. A boot entry could
|
|
be read from a .conf file on ESP, RMC database, or embedded
|
|
linux image. content in KBOOTPARAM is effective in all of
|
|
these cases.
|
|
|
|
Upstream-Status: Pending
|
|
|
|
Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com>
|
|
---
|
|
src/boot/efi/boot.c | 34 ++++++++++++++++++++++++++++++++++
|
|
1 file changed, 34 insertions(+)
|
|
|
|
diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c
|
|
index d1b029b..8dffc48 100644
|
|
--- a/src/boot/efi/boot.c
|
|
+++ b/src/boot/efi/boot.c
|
|
@@ -846,6 +846,40 @@ static VOID config_add_entry(Config *config, ConfigEntry *entry) {
|
|
config->entries = ReallocatePool(config->entries,
|
|
sizeof(VOID *) * config->entry_count, sizeof(VOID *) * i);
|
|
}
|
|
+
|
|
+ /* rmc: a linux entry could be added from .conf file or an embedded linux image
|
|
+ * we put appending global command line here to cover both of two cases.
|
|
+ */
|
|
+ if (entry->type == LOADER_LINUX && rmc_db && rmc_fp) {
|
|
+ rmc_file_t rmc_kp;
|
|
+
|
|
+ if (!rmc_query_file_by_fp(rmc_fp, rmc_db, "KBOOTPARAM", &rmc_kp)) {
|
|
+ CHAR8 *cmdline;
|
|
+ CHAR16 *s;
|
|
+ CHAR16 *t;
|
|
+ CHAR16 *p;
|
|
+
|
|
+ cmdline = AllocatePool(rmc_kp.blob_len * sizeof(CHAR8) + 1);
|
|
+ CopyMem(cmdline, rmc_kp.blob, rmc_kp.blob_len);
|
|
+ cmdline[rmc_kp.blob_len] = '\0';
|
|
+ p = stra_to_str(cmdline);
|
|
+ t = p;
|
|
+
|
|
+ while (*t) {
|
|
+ if (*t == '\n')
|
|
+ *t = '\0';
|
|
+ t++;
|
|
+ }
|
|
+
|
|
+ s = PoolPrint(L"%s %s", entry->options, p);
|
|
+ FreePool(entry->options);
|
|
+ FreePool(p);
|
|
+ FreePool(cmdline);
|
|
+
|
|
+ entry->options = s;
|
|
+ }
|
|
+ }
|
|
+
|
|
config->entries[config->entry_count++] = entry;
|
|
}
|
|
|
|
--
|
|
2.7.4
|
|
|