Martin L Roth has submitted this change. ( https://review.coreboot.org/c/coreboot/+/69044 )
Change subject: amdfwtool: Add definition of instance for PSP entry ......................................................................
amdfwtool: Add definition of instance for PSP entry
Change-Id: I9f6250fd0e26cfae2cc2128ca9413a5621d2df0c Signed-off-by: Zheng Bao fishbaozi@gmail.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/69044 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Martin L Roth gaumless@gmail.com --- M util/amdfwtool/amdfwtool.h M util/amdfwtool/data_parse.c 2 files changed, 27 insertions(+), 2 deletions(-)
Approvals: build bot (Jenkins): Verified Martin L Roth: Looks good to me, approved
diff --git a/util/amdfwtool/amdfwtool.h b/util/amdfwtool/amdfwtool.h index 3afa80e..a4ebbcd 100644 --- a/util/amdfwtool/amdfwtool.h +++ b/util/amdfwtool/amdfwtool.h @@ -166,7 +166,16 @@ typedef struct _psp_directory_entry { uint8_t type; uint8_t subprog; - uint16_t rsvd; + union { + uint16_t rsvd; + struct { + uint8_t rom_id:2; + uint8_t writable:1; + uint8_t inst:4; + uint8_t rsvd_1:1; + uint8_t rsvd_2:8; + } __attribute__((packed)); + }; uint32_t size; uint64_t addr:62; /* or a value in some cases */ uint64_t address_mode:2; @@ -300,6 +309,7 @@ uint16_t fw_id; char *filename; uint8_t subprog; + uint8_t inst; uint64_t dest; size_t size; int level; diff --git a/util/amdfwtool/data_parse.c b/util/amdfwtool/data_parse.c index 17284c3..a28a7eb 100644 --- a/util/amdfwtool/data_parse.c +++ b/util/amdfwtool/data_parse.c @@ -106,6 +106,7 @@ amd_fw_type fw_type = AMD_FW_INVALID; amd_fw_entry *psp_tableptr; uint8_t subprog; + uint8_t instance = 0;
if (strcmp(fw_name, "PSPBTLDR_WL_FILE") == 0) { if (cb_config->have_whitelist) { @@ -380,7 +381,8 @@ if (fw_type != AMD_FW_SKIP && fw_type != AMD_FW_INVALID) { while (psp_tableptr->type != AMD_FW_INVALID) { /* instance are not used in PSP table */ - if (psp_tableptr->type == fw_type && psp_tableptr->subprog == subprog) { + if (psp_tableptr->type == fw_type && psp_tableptr->subprog == subprog + && psp_tableptr->inst == instance) { psp_tableptr->filename = filename; SET_LEVEL(psp_tableptr, level_to_set, PSP, cb_config->recovery_ab);