coreboot/default: add --nuke flag to ifdtool

e.g.

./ifdtool --nuke me coreboot.rom

this will be used by rom release build scripts, to scrub
stuff like intel me from the rom
This commit is contained in:
Leah Rowe
2022-12-04 23:44:46 +00:00
parent a5e4416a14
commit 7679c8e0f0
17 changed files with 216 additions and 33 deletions
@@ -1,7 +1,7 @@
From 087327fa0513b27be0487a4dd8fbf4c3c783cf12 Mon Sep 17 00:00:00 2001 From 852c6bfbd599460983ad864db019d1b60be35296 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@retroboot.org> From: Leah Rowe <leah@retroboot.org>
Date: Fri, 19 Mar 2021 05:54:58 +0000 Date: Fri, 19 Mar 2021 05:54:58 +0000
Subject: [PATCH 01/14] apple/macbook21: Set default VRAM to 64MiB instead of Subject: [PATCH 01/17] apple/macbook21: Set default VRAM to 64MiB instead of
8MiB 8MiB
--- ---
@@ -1,7 +1,7 @@
From 7f5cdb1b4677cacc396ac62dd4f62b600d1a324a Mon Sep 17 00:00:00 2001 From 82418ef368b7876fb1199b5e77139e2cef411250 Mon Sep 17 00:00:00 2001
From: Vitali64 <5405891-vitali64yt@users.noreply.gitlab.com> From: Vitali64 <5405891-vitali64yt@users.noreply.gitlab.com>
Date: Wed, 27 Oct 2021 13:36:01 +0200 Date: Wed, 27 Oct 2021 13:36:01 +0200
Subject: [PATCH 02/14] add c3 and clockgen to apple/macbook21 Subject: [PATCH 02/17] add c3 and clockgen to apple/macbook21
--- ---
src/mainboard/apple/macbook21/Kconfig | 1 + src/mainboard/apple/macbook21/Kconfig | 1 +
@@ -1,7 +1,7 @@
From 1582b3d799e43dc44f92d4e043ac2f86cfd1bd86 Mon Sep 17 00:00:00 2001 From 54e80b550f86cd08136242f0519053d63a1e4bfd Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@osboot.org> From: Leah Rowe <leah@osboot.org>
Date: Sun, 3 Jan 2021 03:34:01 +0000 Date: Sun, 3 Jan 2021 03:34:01 +0000
Subject: [PATCH 03/14] lenovo/x60: 64MiB Video RAM changed to default Subject: [PATCH 03/17] lenovo/x60: 64MiB Video RAM changed to default
(previously it was 8MiB) (previously it was 8MiB)
--- ---
@@ -1,7 +1,7 @@
From 0fb538599c46a4e7f950c57b67b2d8c0d92200f4 Mon Sep 17 00:00:00 2001 From 48c0fbea2d0f4be7860205dad5db07f00b1b0a78 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@osboot.org> From: Leah Rowe <leah@osboot.org>
Date: Mon, 22 Feb 2021 22:16:59 +0000 Date: Mon, 22 Feb 2021 22:16:59 +0000
Subject: [PATCH 04/14] lenovo/t60: make 64MiB VRAM the default in cmos.default Subject: [PATCH 04/17] lenovo/t60: make 64MiB VRAM the default in cmos.default
--- ---
src/mainboard/lenovo/t60/cmos.default | 2 +- src/mainboard/lenovo/t60/cmos.default | 2 +-
@@ -1,7 +1,7 @@
From 702e80f25436126f0b157dff95a90fdbe318c2c5 Mon Sep 17 00:00:00 2001 From 21b3f3773dcb50cef81690d6648e804814e573a4 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org> From: Leah Rowe <leah@libreboot.org>
Date: Fri, 14 May 2021 13:10:33 +0100 Date: Fri, 14 May 2021 13:10:33 +0100
Subject: [PATCH 05/14] lenovo/t400: set VRAM to 352MiB VRAM by default Subject: [PATCH 05/17] lenovo/t400: set VRAM to 352MiB VRAM by default
In the past, this caused stability issues so we set it to 256MiB. Nowadays, In the past, this caused stability issues so we set it to 256MiB. Nowadays,
coreboot has fixed the issue preventing this. See: coreboot has fixed the issue preventing this. See:
@@ -1,7 +1,7 @@
From d9d2e1fceb4abf99e140662a25059c6e913556de Mon Sep 17 00:00:00 2001 From f1d4dab6fc8e86c59ae1b65c51d812d4605972cf Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org> From: Leah Rowe <leah@libreboot.org>
Date: Fri, 14 May 2021 13:11:59 +0100 Date: Fri, 14 May 2021 13:11:59 +0100
Subject: [PATCH 06/14] lenovo/x200: set VRAM to 352MiB by default Subject: [PATCH 06/17] lenovo/x200: set VRAM to 352MiB by default
This fix makes it possible: This fix makes it possible:
https://review.coreboot.org/c/coreboot/+/16831 https://review.coreboot.org/c/coreboot/+/16831
@@ -1,7 +1,7 @@
From b69a04a9ec173a431507e35e70f150fbd864fde3 Mon Sep 17 00:00:00 2001 From 7e51411400fd71ebaf2b90c22a778227c275bb22 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org> From: Leah Rowe <leah@libreboot.org>
Date: Fri, 14 May 2021 13:18:26 +0100 Date: Fri, 14 May 2021 13:18:26 +0100
Subject: [PATCH 07/14] gigabyte/ga-g41m-es2l: set VRAM to 352MiB by default Subject: [PATCH 07/17] gigabyte/ga-g41m-es2l: set VRAM to 352MiB by default
--- ---
src/mainboard/gigabyte/ga-g41m-es2l/cmos.default | 2 +- src/mainboard/gigabyte/ga-g41m-es2l/cmos.default | 2 +-
@@ -1,7 +1,7 @@
From 5409b84b222f4f04238dcafb7411986692909098 Mon Sep 17 00:00:00 2001 From add3b218110aa54a8aa89a0ea7c20ab58d5c7a47 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org> From: Leah Rowe <leah@libreboot.org>
Date: Fri, 14 May 2021 13:21:39 +0100 Date: Fri, 14 May 2021 13:21:39 +0100
Subject: [PATCH 08/14] acer/g43t-am3: set VRAM to 352MiB by default Subject: [PATCH 08/17] acer/g43t-am3: set VRAM to 352MiB by default
--- ---
src/mainboard/acer/g43t-am3/cmos.default | 2 +- src/mainboard/acer/g43t-am3/cmos.default | 2 +-
@@ -1,7 +1,7 @@
From 1c3812ccecef2b22379e4999666de95cd7f38acf Mon Sep 17 00:00:00 2001 From 967ef36a3f3cf5efaf92235905ab4a6b5a878d01 Mon Sep 17 00:00:00 2001
From: persmule <persmule@gmail.com> From: persmule <persmule@gmail.com>
Date: Sun, 31 Oct 2021 23:33:26 +0000 Date: Sun, 31 Oct 2021 23:33:26 +0000
Subject: [PATCH 09/14] lenovo/t400: Enable all SATA ports Subject: [PATCH 09/17] lenovo/t400: Enable all SATA ports
There are 2 SATA ports on the chassis of t400(s), but at least one dock for There are 2 SATA ports on the chassis of t400(s), but at least one dock for
t400 contains a port for (P/S)ATA device, and t400s has a eSATA port on its t400 contains a port for (P/S)ATA device, and t400s has a eSATA port on its
@@ -1,7 +1,7 @@
From d35656413f27f37b0d7680f6ed0a2b1aac31b982 Mon Sep 17 00:00:00 2001 From 990717f4bed5ff0bcf89e7f583251c76f6cf5559 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org> From: Leah Rowe <leah@libreboot.org>
Date: Mon, 20 Dec 2021 01:29:31 +0000 Date: Mon, 20 Dec 2021 01:29:31 +0000
Subject: [PATCH 10/14] coreboot: Add Lenovo X230 patch: gfx_uma_size 224M by Subject: [PATCH 10/17] coreboot: Add Lenovo X230 patch: gfx_uma_size 224M by
default default
--- ---
@@ -1,7 +1,7 @@
From 0f2cd8edad3326a8c9f3b785efbda395d1c8cde9 Mon Sep 17 00:00:00 2001 From a069b42f28f22e6377d0ddcc5984cd191ab196f0 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org> From: Leah Rowe <leah@libreboot.org>
Date: Mon, 3 Jan 2022 19:06:22 +0000 Date: Mon, 3 Jan 2022 19:06:22 +0000
Subject: [PATCH 11/14] lenovo/x230: set me_state=Disabled in cmos.default Subject: [PATCH 11/17] lenovo/x230: set me_state=Disabled in cmos.default
I only recently found out about this. It's possible to use me_cleaner to I only recently found out about this. It's possible to use me_cleaner to
do the same thing, but some people might just flash coreboot and not do do the same thing, but some people might just flash coreboot and not do
@@ -1,7 +1,7 @@
From 694fac8e25949c20de421ee1b199a16b94c202e5 Mon Sep 17 00:00:00 2001 From 3be4cad0bd43fe33cd62f22ed7b89433232d4ed7 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org> From: Leah Rowe <leah@libreboot.org>
Date: Wed, 2 Mar 2022 21:50:01 +0000 Date: Wed, 2 Mar 2022 21:50:01 +0000
Subject: [PATCH 12/14] set me_state=Disabled on all cmos.default files! Subject: [PATCH 12/17] set me_state=Disabled on all cmos.default files!
yeah. why the hell isn't this the default yeah. why the hell isn't this the default
--- ---
@@ -1,7 +1,7 @@
From 4106d0163987ae926a7f4261dec06e3e8bf85ff0 Mon Sep 17 00:00:00 2001 From 45c2ae2e2885aedd8a75de077bf4cbbcf5b87a87 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org> From: Leah Rowe <leah@libreboot.org>
Date: Sun, 13 Mar 2022 18:04:55 +0000 Date: Sun, 13 Mar 2022 18:04:55 +0000
Subject: [PATCH 13/14] specifically use python3, in scripts Subject: [PATCH 13/17] specifically use python3, in scripts
--- ---
src/drivers/intel/fsp2_0/Makefile.inc | 2 +- src/drivers/intel/fsp2_0/Makefile.inc | 2 +-
@@ -1,7 +1,7 @@
From 9837b542ee2ff56032950b211e60e1e180343f44 Mon Sep 17 00:00:00 2001 From d89a5c66a0150bb6a2e82c685915b2c8a44cb9ed Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org> From: Leah Rowe <leah@libreboot.org>
Date: Sat, 19 Nov 2022 03:30:34 +0000 Date: Sat, 19 Nov 2022 03:30:34 +0000
Subject: [PATCH 14/14] coreboot/default: fix crossgcc build Subject: [PATCH 14/17] coreboot/default: fix crossgcc build
patch copied from patch copied from
coreboot f9b5665d280faa35c6b41fe0c48a9e9e1afd634b coreboot f9b5665d280faa35c6b41fe0c48a9e9e1afd634b
@@ -1,7 +1,7 @@
From 06fe32bb5f65c784e7819b875c505fcceab11b99 Mon Sep 17 00:00:00 2001 From 495555d383345124d7b45b8e2c8feb38153b9f7e Mon Sep 17 00:00:00 2001
From: Alexander Couzens <lynxis@fe80.eu> From: Alexander Couzens <lynxis@fe80.eu>
Date: Sat, 19 Mar 2022 13:42:33 +0000 Date: Sat, 19 Mar 2022 13:42:33 +0000
Subject: [PATCH] lenovo/x230: introduce FHD variant Subject: [PATCH 15/17] lenovo/x230: introduce FHD variant
There is a modification for the x230 which uses the 2nd DP from the dock There is a modification for the x230 which uses the 2nd DP from the dock
as the integrated panel's connection, which allows using a custom eDP as the integrated panel's connection, which allows using a custom eDP
@@ -44,7 +44,7 @@ Signed-off-by: Felix Singer <felixsinger@posteo.net>
create mode 100644 src/mainboard/lenovo/x230/variants/x230_edp/gma-mainboard.ads create mode 100644 src/mainboard/lenovo/x230/variants/x230_edp/gma-mainboard.ads
diff --git a/src/mainboard/lenovo/x230/Kconfig b/src/mainboard/lenovo/x230/Kconfig diff --git a/src/mainboard/lenovo/x230/Kconfig b/src/mainboard/lenovo/x230/Kconfig
index a6fd796206..7aa5af6d85 100644 index cafdead858..b8cae24199 100644
--- a/src/mainboard/lenovo/x230/Kconfig --- a/src/mainboard/lenovo/x230/Kconfig
+++ b/src/mainboard/lenovo/x230/Kconfig +++ b/src/mainboard/lenovo/x230/Kconfig
@@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
@@ -1,7 +1,7 @@
From 62cd7b24205122d366526aea1e3ad0c15ec8210f Mon Sep 17 00:00:00 2001 From 27f963913d9afc6da15043c6e8b224c9b1a727ac Mon Sep 17 00:00:00 2001
From: Alexei Sorokin <sor.alexei@meowr.ru> From: Alexei Sorokin <sor.alexei@meowr.ru>
Date: Sun, 27 Nov 2022 18:36:26 +0300 Date: Sun, 27 Nov 2022 18:36:26 +0300
Subject: [PATCH] lenovo/x230: fix the data.vbt path for the EDP variant Subject: [PATCH 16/17] lenovo/x230: fix the data.vbt path for the EDP variant
--- ---
src/mainboard/lenovo/x230/Kconfig | 3 --- src/mainboard/lenovo/x230/Kconfig | 3 ---
@@ -0,0 +1,183 @@
From 0cf2eee19eef5270410d054cf8e26a8be99245a8 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 4 Dec 2022 22:35:01 +0000
Subject: [PATCH 17/17] util/ifdtool: add --nuke flag (all 0xFF on region)
When this option is used, the region's contents are overwritten
with all ones (0xFF).
Example:
./ifdtool --nuke gbe coreboot.rom
./ifdtool --nuke bios coreboot.com
./ifdtool --nuke me coreboot.com
---
util/ifdtool/ifdtool.c | 98 ++++++++++++++++++++++++++++++++----------
1 file changed, 76 insertions(+), 22 deletions(-)
diff --git a/util/ifdtool/ifdtool.c b/util/ifdtool/ifdtool.c
index ca5d3b8d21..8ba1335772 100644
--- a/util/ifdtool/ifdtool.c
+++ b/util/ifdtool/ifdtool.c
@@ -1640,19 +1640,68 @@ static void print_usage(const char *name)
" tgl - Tiger Lake\n"
" -S | --setpchstrap Write a PCH strap\n"
" -V | --newvalue The new value to write into PCH strap specified by -S\n"
+ " -N | --nuke <region> Overwrite the specified region with 0xFF (all ones)\n"
" -v | --version: print the version\n"
" -h | --help: print this help\n\n"
"<region> is one of Descriptor, BIOS, ME, GbE, Platform, res1, res2, res3\n"
"\n");
}
+static int
+get_region_type_string(const char *region_type_string)
+{
+ if (region_type_string == NULL)
+ return -1;
+ else if (!strcasecmp("Descriptor", region_type_string))
+ return 0;
+ else if (!strcasecmp("BIOS", region_type_string))
+ return 1;
+ else if (!strcasecmp("ME", region_type_string))
+ return 2;
+ else if (!strcasecmp("GbE", region_type_string))
+ return 3;
+ else if (!strcasecmp("Platform", region_type_string))
+ return 4;
+ else if (!strcasecmp("res1", region_type_string))
+ return 5;
+ else if (!strcasecmp("res2", region_type_string))
+ return 6;
+ else if (!strcasecmp("res3", region_type_string))
+ return 7;
+ else if (!strcasecmp("EC", region_type_string))
+ return 8;
+ else
+ return -1;
+}
+
+
+static void
+nuke(const char *filename, char *image, int size, int region_type)
+{
+ int i;
+ region_t region;
+ const frba_t *frba = find_frba(image, size);
+ if (!frba)
+ exit(EXIT_FAILURE);
+
+ region = get_region(frba, region_type);
+ if (region.size > 0) {
+ for (i = region.base; i <= region.limit; i++) {
+ if ((i + 1) > (size))
+ break;
+ image[i] = 0xFF;
+ }
+ write_image(filename, image, size);
+ }
+}
+
int main(int argc, char *argv[])
{
int opt, option_index = 0;
int mode_dump = 0, mode_extract = 0, mode_inject = 0, mode_spifreq = 0;
int mode_em100 = 0, mode_locked = 0, mode_unlocked = 0, mode_validate = 0;
int mode_layout = 0, mode_newlayout = 0, mode_density = 0, mode_setstrap = 0;
- int mode_read = 0, mode_altmedisable = 0, altmedisable = 0;
+ int mode_read = 0, mode_altmedisable = 0, altmedisable = 0, mode_nuke = 0;
char *region_type_string = NULL, *region_fname = NULL;
const char *layout_fname = NULL;
char *new_filename = NULL;
@@ -1683,6 +1732,7 @@ int main(int argc, char *argv[])
{"validate", 0, NULL, 't'},
{"setpchstrap", 1, NULL, 'S'},
{"newvalue", 1, NULL, 'V'},
+ {"nuke", 1, NULL, 'N'},
{0, 0, 0, 0}
};
@@ -1723,25 +1773,8 @@ int main(int argc, char *argv[])
region_fname++;
// Descriptor, BIOS, ME, GbE, Platform
// valid type?
- if (!strcasecmp("Descriptor", region_type_string))
- region_type = 0;
- else if (!strcasecmp("BIOS", region_type_string))
- region_type = 1;
- else if (!strcasecmp("ME", region_type_string))
- region_type = 2;
- else if (!strcasecmp("GbE", region_type_string))
- region_type = 3;
- else if (!strcasecmp("Platform", region_type_string))
- region_type = 4;
- else if (!strcasecmp("res1", region_type_string))
- region_type = 5;
- else if (!strcasecmp("res2", region_type_string))
- region_type = 6;
- else if (!strcasecmp("res3", region_type_string))
- region_type = 7;
- else if (!strcasecmp("EC", region_type_string))
- region_type = 8;
- if (region_type == -1) {
+ if ((region_type =
+ get_region_type_string(region_type_string)) == -1) {
fprintf(stderr, "No such region type: '%s'\n\n",
region_type_string);
print_usage(argv[0]);
@@ -1900,6 +1933,22 @@ int main(int argc, char *argv[])
case 't':
mode_validate = 1;
break;
+ case 'N':
+ region_type_string = strdup(optarg);
+ if (!region_type_string) {
+ fprintf(stderr, "No region specified\n");
+ print_usage(argv[0]);
+ exit(EXIT_FAILURE);
+ }
+ if ((region_type =
+ get_region_type_string(region_type_string)) == -1) {
+ fprintf(stderr, "No such region type: '%s'\n\n",
+ region_type_string);
+ print_usage(argv[0]);
+ exit(EXIT_FAILURE);
+ }
+ mode_nuke = 1;
+ break;
case 'v':
print_version();
exit(EXIT_SUCCESS);
@@ -1915,7 +1964,7 @@ int main(int argc, char *argv[])
if ((mode_dump + mode_layout + mode_extract + mode_inject + mode_setstrap +
mode_newlayout + (mode_spifreq | mode_em100 | mode_unlocked |
- mode_locked) + mode_altmedisable + mode_validate) > 1) {
+ mode_locked) + mode_altmedisable + mode_validate + mode_nuke) > 1) {
fprintf(stderr, "You may not specify more than one mode.\n\n");
print_usage(argv[0]);
exit(EXIT_FAILURE);
@@ -1923,7 +1972,8 @@ int main(int argc, char *argv[])
if ((mode_dump + mode_layout + mode_extract + mode_inject + mode_setstrap +
mode_newlayout + mode_spifreq + mode_em100 + mode_locked +
- mode_unlocked + mode_density + mode_altmedisable + mode_validate) == 0) {
+ mode_unlocked + mode_density + mode_altmedisable + mode_validate +
+ mode_nuke) == 0) {
fprintf(stderr, "You need to specify a mode.\n\n");
print_usage(argv[0]);
exit(EXIT_FAILURE);
@@ -2021,6 +2071,10 @@ int main(int argc, char *argv[])
write_image(new_filename, image, size);
}
+ if (mode_nuke) {
+ nuke(new_filename, image, size, region_type);
+ }
+
if (mode_altmedisable) {
fpsba_t *fpsba = find_fpsba(image, size);
fmsba_t *fmsba = find_fmsba(image, size);
--
2.25.1