[PATCH 12/14] bloblist: Reduce bloblist header size
Simon Glass
sjg at chromium.org
Tue Jul 25 23:36:24 CEST 2023
The v0.9 spec provides for a 16-byte header with fewer fields. Update
the implementation to match this.
This also adds an alignment field.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
include/bloblist.h | 26 +++++++++++++-------------
test/bloblist.c | 6 +++---
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/include/bloblist.h b/include/bloblist.h
index d1e52cf888f..13b619cd019 100644
--- a/include/bloblist.h
+++ b/include/bloblist.h
@@ -150,30 +150,30 @@ enum bloblist_tag_t {
* from the last.
*
* @magic: BLOBLIST_MAGIC
+ * @chksum: checksum for the entire bloblist allocated area. Since any of the
+ * blobs can be altered after being created, this checksum is only valid
+ * when the bloblist is finalised before jumping to the next stage of boot.
+ * This is the value needed to make all chechksummed bytes sum to 0
* @version: BLOBLIST_VERSION
* @hdr_size: Size of this header, normally sizeof(struct bloblist_hdr). The
* first bloblist_rec starts at this offset from the start of the header
- * @size: Total size of the bloblist (non-zero if valid) including this header.
- * The bloblist extends for this many bytes from the start of this header.
- * When adding new records, the bloblist can grow up to this size.
+ * @align_log2: Power of two of the maximum alignment required by this list
* @alloced: Total size allocated so far for this bloblist. This starts out as
* sizeof(bloblist_hdr) since we need at least that much space to store a
* valid bloblist
- * @chksum: checksum for the entire bloblist allocated area. Since any of the
- * blobs can be altered after being created, this checksum is only valid
- * when the bloblist is finalised before jumping to the next stage of boot.
- * This is the value needed to make all checksummed bytes sum to 0
+ * @size: Total size of the bloblist (non-zero if valid) including this header.
+ * The bloblist extends for this many bytes from the start of this header.
+ * When adding new records, the bloblist can grow up to this size.
*/
struct bloblist_hdr {
u32 magic;
- u32 version;
- u32 hdr_size;
- u32 _flags;
+ u8 chksum;
+ u8 version;
+ u8 hdr_size;
+ u8 align_log2;
- u32 size;
u32 alloced;
- u32 _spare;
- u32 chksum;
+ u32 size;
};
/**
diff --git a/test/bloblist.c b/test/bloblist.c
index c1719c2e384..5801160621a 100644
--- a/test/bloblist.c
+++ b/test/bloblist.c
@@ -78,7 +78,7 @@ static int bloblist_test_init(struct unit_test_state *uts)
ut_asserteq(-EPROTONOSUPPORT, bloblist_check(TEST_ADDR,
TEST_BLOBLIST_SIZE));
- ut_asserteq(-ENOSPC, bloblist_new(TEST_ADDR, 0x10));
+ ut_asserteq(-ENOSPC, bloblist_new(TEST_ADDR, 0xc));
ut_asserteq(-EFAULT, bloblist_new(1, TEST_BLOBLIST_SIZE));
ut_assertok(bloblist_new(TEST_ADDR, TEST_BLOBLIST_SIZE));
@@ -261,8 +261,8 @@ static int bloblist_test_cmd_info(struct unit_test_state *uts)
run_command("bloblist info", 0);
ut_assert_nextline("base: %lx", (ulong)map_to_sysmem(hdr));
ut_assert_nextline("size: 400 1 KiB");
- ut_assert_nextline("alloced: 58 88 Bytes");
- ut_assert_nextline("free: 3a8 936 Bytes");
+ ut_assert_nextline("alloced: 48 72 Bytes");
+ ut_assert_nextline("free: 3b8 952 Bytes");
ut_assert_console_end();
ut_unsilence_console(uts);
--
2.41.0.487.g6d72f3e995-goog
More information about the U-Boot
mailing list