meta-intel/recipes-bsp/systemd-boot/systemd-boot/0004-sd-boot-Support-global-kernel-command-line-fragment.patch
California Sullivan f2502f90ab systemd-boot/rmc-boot.inc: update to work with v237 and meson
Patch changes:
* 0001-sd-boot-Link-RMC-library-into-bootloader-and-stub.patch removed
because make is no longer used.
* 0001-sd-boot-stub-check-LoadOptions-contains-data.patch removed because
it was accepted upstream.
* 0001-partially-revert-sd-boot-stub-Obtain-PE-section-offs.patch added to
support RMC functionality. Upstream removed a snippet that found the
root directory because they didn't need it anymore, but RMC does.
* 0002-sd-boot-fix-RMC-compatibility-with-systemd-boot-and-.patch added
to support building with meson instead of make.
* Others refreshed

inc file changes:
* Don't commit pin, we can maintain these patches OK for now
* EXTRA_OEMAKE -> EXTRA_OEMESON, and removed some superfluous options

Signed-off-by: California Sullivan <california.l.sullivan@intel.com>
2018-03-22 08:29:39 -07:00

68 lines
2.5 KiB
Diff

From 159c8c54f92fb44d8abd2919fa83ad1cb640fac3 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 4/5] 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>
Signed-off-by: California Sullivan <california.l.sullivan@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 93cfaf193..2f400db3c 100644
--- a/src/boot/efi/boot.c
+++ b/src/boot/efi/boot.c
@@ -851,6 +851,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.14.3