util/amdfwtool: Refactor APOB_NV requirements

amdfwtool currently assumes that we MUST have an apob_nv area if we
have an aopb.  This is not required, so if neither the apob_nv size or
base are specified, just move on.

BUG=b:158363448
TEST=Build an image with no APOB_NV region.  Dump regions to show that
it's not there.

Signed-off-by: Martin Roth <martinroth@chromium.org>
Change-Id: Ibaeacd3dcdfd73f690df61c2a19d39bbb9dcc838
Reviewed-on: https://review.coreboot.org/c/coreboot/+/44045
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Martin Roth 2020-07-29 16:32:25 -06:00 committed by Aaron Durbin
parent dff9994b96
commit 48dd9fe21f
1 changed files with 8 additions and 15 deletions

View File

@ -918,26 +918,19 @@ static void integrate_bios_firmwares(context *ctx,
/* BIOS Directory items may have additional requirements */ /* BIOS Directory items may have additional requirements */
/* APOB_NV must have a size if it has a source */ /* Check APOB_NV requirements */
if (fw_table[i].type == AMD_BIOS_APOB_NV && fw_table[i].src) { if (fw_table[i].type == AMD_BIOS_APOB_NV) {
if (!fw_table[i].size) { if (!fw_table[i].size && !fw_table[i].src)
continue; /* APOB_NV not used */
if (fw_table[i].src && !fw_table[i].size) {
printf("Error: APOB NV address provided, but no size\n"); printf("Error: APOB NV address provided, but no size\n");
free(ctx->rom); free(ctx->rom);
exit(1); exit(1);
} }
} /* If the APOB isn't used, APOB_NV isn't used either */
/* APOB_NV needs a size, else no choice but to skip the item */
if (fw_table[i].type == AMD_BIOS_APOB_NV && !fw_table[i].size) {
/* Attempt to determine whether this is an error */
apob_idx = find_bios_entry(AMD_BIOS_APOB); apob_idx = find_bios_entry(AMD_BIOS_APOB);
if (apob_idx < 0 || !fw_table[apob_idx].dest) { if (apob_idx < 0 || !fw_table[apob_idx].dest)
/* APOV NV not expected to be used */ continue; /* APOV NV not supported */
continue;
} else {
printf("Error: APOB NV must have a size\n");
free(ctx->rom);
exit(1);
}
} }
/* APOB_DATA needs destination */ /* APOB_DATA needs destination */