Merge tag 'efi-master-05122024' of https://source.denx.de/u-boot/custodians/u-boot-tpm
CI: https://source.denx.de/u-boot/custodians/u-boot-tpm/-/pipelines/23719 Two fixes for the EFI subsystem coming via the TPM tree as agreed by Heinrich The LMB patch fixes a failure in SystemReady testing. Nothing bad happens without the patch in the device operation, but the return values are wrong and SCT tests fail for MemoryAllocationServicesTest category. The second is a shielding the device against mistakes in the definition of struct fields needed by the capsule update mechanism. Instead of crashing, print a humna readable message of what's wrong.
This commit is contained in:
@@ -281,6 +281,10 @@ static efi_status_t efi_gen_capsule_guids(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < update_info.num_images; i++) {
|
for (i = 0; i < update_info.num_images; i++) {
|
||||||
|
if (!fw_array[i].fw_name) {
|
||||||
|
log_err("fw_name is not defined. Not generating capsule GUIDs\n");
|
||||||
|
return EFI_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
gen_v5_guid(&namespace,
|
gen_v5_guid(&namespace,
|
||||||
&fw_array[i].image_type_id,
|
&fw_array[i].image_type_id,
|
||||||
compatible, strlen(compatible),
|
compatible, strlen(compatible),
|
||||||
|
@@ -201,15 +201,6 @@ static long lmb_add_region_flags(struct alist *lmb_rgn_lst, phys_addr_t base,
|
|||||||
phys_addr_t rgnbase = rgn[i].base;
|
phys_addr_t rgnbase = rgn[i].base;
|
||||||
phys_size_t rgnsize = rgn[i].size;
|
phys_size_t rgnsize = rgn[i].size;
|
||||||
phys_size_t rgnflags = rgn[i].flags;
|
phys_size_t rgnflags = rgn[i].flags;
|
||||||
phys_addr_t end = base + size - 1;
|
|
||||||
phys_addr_t rgnend = rgnbase + rgnsize - 1;
|
|
||||||
if (rgnbase <= base && end <= rgnend) {
|
|
||||||
if (flags == rgnflags)
|
|
||||||
/* Already have this region, so we're done */
|
|
||||||
return 0;
|
|
||||||
else
|
|
||||||
return -1; /* regions with new flags */
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = lmb_addrs_adjacent(base, size, rgnbase, rgnsize);
|
ret = lmb_addrs_adjacent(base, size, rgnbase, rgnsize);
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
|
@@ -529,6 +529,26 @@ static int test_alloc_addr(struct unit_test_state *uts, const phys_addr_t ram)
|
|||||||
ret = lmb_add(ram, ram_size);
|
ret = lmb_add(ram, ram_size);
|
||||||
ut_asserteq(ret, 0);
|
ut_asserteq(ret, 0);
|
||||||
|
|
||||||
|
/* Try to allocate a page twice */
|
||||||
|
b = lmb_alloc_addr_flags(alloc_addr_a, 0x1000, LMB_NONE);
|
||||||
|
ut_asserteq(b, alloc_addr_a);
|
||||||
|
b = lmb_alloc_addr_flags(alloc_addr_a, 0x1000, LMB_NOOVERWRITE);
|
||||||
|
ut_asserteq(b, 0);
|
||||||
|
b = lmb_alloc_addr_flags(alloc_addr_a, 0x1000, LMB_NONE);
|
||||||
|
ut_asserteq(b, alloc_addr_a);
|
||||||
|
b = lmb_alloc_addr_flags(alloc_addr_a, 0x2000, LMB_NONE);
|
||||||
|
ut_asserteq(b, alloc_addr_a);
|
||||||
|
ret = lmb_free(alloc_addr_a, 0x2000);
|
||||||
|
ut_asserteq(ret, 0);
|
||||||
|
b = lmb_alloc_addr_flags(alloc_addr_a, 0x1000, LMB_NOOVERWRITE);
|
||||||
|
ut_asserteq(b, alloc_addr_a);
|
||||||
|
b = lmb_alloc_addr_flags(alloc_addr_a, 0x1000, LMB_NONE);
|
||||||
|
ut_asserteq(b, 0);
|
||||||
|
b = lmb_alloc_addr_flags(alloc_addr_a, 0x1000, LMB_NOOVERWRITE);
|
||||||
|
ut_asserteq(b, 0);
|
||||||
|
ret = lmb_free(alloc_addr_a, 0x1000);
|
||||||
|
ut_asserteq(ret, 0);
|
||||||
|
|
||||||
/* reserve 3 blocks */
|
/* reserve 3 blocks */
|
||||||
ret = lmb_reserve(alloc_addr_a, 0x10000);
|
ret = lmb_reserve(alloc_addr_a, 0x10000);
|
||||||
ut_asserteq(ret, 0);
|
ut_asserteq(ret, 0);
|
||||||
@@ -734,7 +754,7 @@ static int lib_test_lmb_flags(struct unit_test_state *uts)
|
|||||||
|
|
||||||
/* reserve again, same flag */
|
/* reserve again, same flag */
|
||||||
ret = lmb_reserve_flags(0x40010000, 0x10000, LMB_NOMAP);
|
ret = lmb_reserve_flags(0x40010000, 0x10000, LMB_NOMAP);
|
||||||
ut_asserteq(ret, 0);
|
ut_asserteq(ret, -1L);
|
||||||
ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 1, 0x40010000, 0x10000,
|
ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 1, 0x40010000, 0x10000,
|
||||||
0, 0, 0, 0);
|
0, 0, 0, 0);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user