[PATCH 2/4] sandbox: capsule: binman: generate some capsules as part of build

Sughosh Ganu sughosh.ganu at linaro.org
Tue Mar 26 21:07:56 CET 2024


Currently, all the capsules for the sandbox platform are generated at
the time of running the capsule tests. To showcase generation of
capsules through binman, generate all signed capsules needed for the
sandbox platform as part of the build. This acts as an illustrative
example for generating capsules as part of a platform's build.

Make corresponding change in the capsule test's configuration to get
these signed capsules from the build directory.

Signed-off-by: Sughosh Ganu <sughosh.ganu at linaro.org>
---
 arch/sandbox/dts/sandbox.dts                  |   4 +
 arch/sandbox/dts/sandbox_capsule.dtsi         | 169 ++++++++++++++++++
 arch/sandbox/dts/test.dts                     |   4 +
 .../test_efi_capsule/capsule_gen_binman.dts   | 167 +----------------
 test/py/tests/test_efi_capsule/conftest.py    |   1 +
 5 files changed, 185 insertions(+), 160 deletions(-)
 create mode 100644 arch/sandbox/dts/sandbox_capsule.dtsi

diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts
index 12d3eff5fa..8392206eea 100644
--- a/arch/sandbox/dts/sandbox.dts
+++ b/arch/sandbox/dts/sandbox.dts
@@ -106,3 +106,7 @@
 #if IS_ENABLED(CONFIG_SUPPORT_VPL)
 #include "sandbox_vpl.dtsi"
 #endif
+
+#if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)
+#include "sandbox_capsule.dtsi"
+#endif
diff --git a/arch/sandbox/dts/sandbox_capsule.dtsi b/arch/sandbox/dts/sandbox_capsule.dtsi
new file mode 100644
index 0000000000..34d29916b3
--- /dev/null
+++ b/arch/sandbox/dts/sandbox_capsule.dtsi
@@ -0,0 +1,169 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Devicetree file with binman nodes needed for generating EFI
+ * capsules.
+ *
+ */
+
+#include <sandbox_efi_capsule.h>
+
+/ {
+	binman: binman {
+		multiple-images;
+	};
+};
+
+&binman {
+	capsule1 {
+		filename = "Test01";
+		efi-capsule {
+			image-index = <0x1>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule2 {
+		filename = "Test02";
+		efi-capsule {
+			image-index = <0x2>;
+			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
+
+			text {
+				text = "u-boot-env:New";
+			};
+		};
+	};
+
+	capsule3 {
+		filename = "Test03";
+		efi-capsule {
+			image-index = <0x1>;
+			image-guid = SANDBOX_INCORRECT_GUID;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule4 {
+		filename = "Test101";
+		efi-capsule {
+			image-index = <0x1>;
+			fw-version = <0x5>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule5 {
+		filename = "Test102";
+		efi-capsule {
+			image-index = <0x2>;
+			fw-version = <0xa>;
+			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
+
+			text {
+				text = "u-boot-env:New";
+			};
+		};
+	};
+
+	capsule6 {
+		filename = "Test103";
+		efi-capsule {
+			image-index = <0x1>;
+			fw-version = <0x2>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule7 {
+		filename = "Test11";
+		efi-capsule {
+			image-index = <0x1>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+			private-key = CAPSULE_PRIV_KEY;
+			public-key-cert = CAPSULE_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule8 {
+		filename = "Test12";
+		efi-capsule {
+			image-index = <0x1>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+			private-key = CAPSULE_INVAL_KEY;
+			public-key-cert = CAPSULE_INVAL_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule9 {
+		filename = "Test111";
+		efi-capsule {
+			image-index = <0x1>;
+			fw-version = <0x5>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+			private-key = CAPSULE_PRIV_KEY;
+			public-key-cert = CAPSULE_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule10 {
+		filename = "Test112";
+		efi-capsule {
+			image-index = <0x2>;
+			fw-version = <0xa>;
+			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
+			private-key = CAPSULE_PRIV_KEY;
+			public-key-cert = CAPSULE_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot-env:New";
+			};
+		};
+	};
+
+	capsule11 {
+		filename = "Test113";
+		efi-capsule {
+			image-index = <0x1>;
+			fw-version = <0x2>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+			private-key = CAPSULE_PRIV_KEY;
+			public-key-cert = CAPSULE_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+};
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index e264b29554..a012f5c4c9 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -1990,4 +1990,8 @@
 #include "sandbox_vpl.dtsi"
 #endif
 
+#if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)
+#include "sandbox_capsule.dtsi"
+#endif
+
 #include "cedit.dtsi"
diff --git a/test/py/tests/test_efi_capsule/capsule_gen_binman.dts b/test/py/tests/test_efi_capsule/capsule_gen_binman.dts
index e8a1858509..1a62c26047 100644
--- a/test/py/tests/test_efi_capsule/capsule_gen_binman.dts
+++ b/test/py/tests/test_efi_capsule/capsule_gen_binman.dts
@@ -55,42 +55,6 @@
 	};
 
 	capsule1 {
-		filename = "Test01";
-		efi-capsule {
-			image-index = <0x1>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule2 {
-		filename = "Test02";
-		efi-capsule {
-			image-index = <0x2>;
-			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
-
-			text {
-				text = "u-boot-env:New";
-			};
-		};
-	};
-
-	capsule3 {
-		filename = "Test03";
-		efi-capsule {
-			image-index = <0x1>;
-			image-guid = SANDBOX_INCORRECT_GUID;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule4 {
 		filename = "Test04";
 		efi-capsule {
 			image-index = <0x1>;
@@ -102,7 +66,7 @@
 		};
 	};
 
-	capsule5 {
+	capsule2 {
 		filename = "Test05";
 		efi-capsule {
 			image-index = <0x1>;
@@ -114,46 +78,7 @@
 		};
 	};
 
-	capsule6 {
-		filename = "Test101";
-		efi-capsule {
-			image-index = <0x1>;
-			fw-version = <0x5>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule7 {
-		filename = "Test102";
-		efi-capsule {
-			image-index = <0x2>;
-			fw-version = <0xa>;
-			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
-
-			text {
-				text = "u-boot-env:New";
-			};
-		};
-	};
-
-	capsule8 {
-		filename = "Test103";
-		efi-capsule {
-			image-index = <0x1>;
-			fw-version = <0x2>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule9 {
+	capsule3 {
 		filename = "Test104";
 		efi-capsule {
 			image-index = <0x1>;
@@ -166,7 +91,7 @@
 		};
 	};
 
-	capsule10 {
+	capsule4 {
 		filename = "Test105";
 		efi-capsule {
 			image-index = <0x1>;
@@ -179,37 +104,7 @@
 		};
 	};
 
-	capsule11 {
-		filename = "Test11";
-		efi-capsule {
-			image-index = <0x1>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-			private-key = CAPSULE_PRIV_KEY;
-			public-key-cert = CAPSULE_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule12 {
-		filename = "Test12";
-		efi-capsule {
-			image-index = <0x1>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-			private-key = CAPSULE_INVAL_KEY;
-			public-key-cert = CAPSULE_INVAL_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule13 {
+	capsule5 {
 		filename = "Test13";
 		efi-capsule {
 			image-index = <0x1>;
@@ -224,7 +119,7 @@
 		};
 	};
 
-	capsule14 {
+	capsule6 {
 		filename = "Test14";
 		efi-capsule {
 			image-index = <0x1>;
@@ -239,55 +134,7 @@
 		};
 	};
 
-	capsule15 {
-		filename = "Test111";
-		efi-capsule {
-			image-index = <0x1>;
-			fw-version = <0x5>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-			private-key = CAPSULE_PRIV_KEY;
-			public-key-cert = CAPSULE_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule16 {
-		filename = "Test112";
-		efi-capsule {
-			image-index = <0x2>;
-			fw-version = <0xa>;
-			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
-			private-key = CAPSULE_PRIV_KEY;
-			public-key-cert = CAPSULE_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot-env:New";
-			};
-		};
-	};
-
-	capsule17 {
-		filename = "Test113";
-		efi-capsule {
-			image-index = <0x1>;
-			fw-version = <0x2>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-			private-key = CAPSULE_PRIV_KEY;
-			public-key-cert = CAPSULE_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule18 {
+	capsule7 {
 		filename = "Test114";
 		efi-capsule {
 			image-index = <0x1>;
@@ -303,7 +150,7 @@
 		};
 	};
 
-	capsule19 {
+	capsule8 {
 		filename = "Test115";
 		efi-capsule {
 			image-index = <0x1>;
diff --git a/test/py/tests/test_efi_capsule/conftest.py b/test/py/tests/test_efi_capsule/conftest.py
index dd41da9284..80b12977d6 100644
--- a/test/py/tests/test_efi_capsule/conftest.py
+++ b/test/py/tests/test_efi_capsule/conftest.py
@@ -85,6 +85,7 @@ def efi_capsule_data(request, u_boot_config):
         check_call('cd %s; '
                    './tools/binman/binman --toolpath %s/tools build -u -d %s/capsule_binman.dtb -O %s -m --allow-missing -I %s -I ./board/sandbox -I ./arch/sandbox/dts'
                    % (u_boot_config.source_dir, u_boot_config.build_dir, data_dir, data_dir, data_dir), shell=True)
+        check_call('cp %s/Test* %s' % (u_boot_config.build_dir, data_dir), shell=True)
         os.environ['PYTHONPATH'] = pythonpath
 
         # Create a disk image with EFI system partition
-- 
2.34.1



More information about the U-Boot mailing list