
-----Original Message----- From: Simon Glass sjg@chromium.org Sent: Tuesday, July 25, 2023 10:36 PM To: U-Boot Mailing List u-boot@lists.denx.de Cc: Ilias Apalodimas ilias.apalodimas@linaro.org; Tom Rini trini@konsulko.com; Julius Werner jwerner@chromium.org; Dan Handley Dan.Handley@arm.com; Jose Marinho Jose.Marinho@arm.com; Simon Glass sjg@chromium.org; Bin Meng bmeng.cn@gmail.com; Nikhil M Jain <n- jain1@ti.com> Subject: [PATCH 12/14] bloblist: Reduce bloblist header size
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@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;
};
Being (overly) cautious, does it make sense for this struct to be __packed?
/** 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