Martin L Roth has submitted this change. ( https://review.coreboot.org/c/coreboot/+/74735 )
Change subject: util/ifdtool/ifdtool.c: Fix default FMAP generation ......................................................................
util/ifdtool/ifdtool.c: Fix default FMAP generation
According to SPI programming guide, a region limit of 0 as well as region base of 7FFFh indicates an unused/reserved region.
Signed-off-by: Maximilian Brune maximilian.brune@9elements.com Change-Id: I790d7f5631ecef3043b2c17c41430dc4fd854f72 Reviewed-on: https://review.coreboot.org/c/coreboot/+/74735 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Matt DeVillier matt.devillier@gmail.com --- M util/ifdtool/ifdtool.c 1 file changed, 26 insertions(+), 4 deletions(-)
Approvals: build bot (Jenkins): Verified Matt DeVillier: Looks good to me, approved
diff --git a/util/ifdtool/ifdtool.c b/util/ifdtool/ifdtool.c index 625b4cf..ada120b 100644 --- a/util/ifdtool/ifdtool.c +++ b/util/ifdtool/ifdtool.c @@ -457,8 +457,11 @@
for (unsigned int i = 0; i < max_regions; i++) { struct region region = get_region(frba, i); - /* is region invalid? */ - if (region.size < 1) + + /* A region limit of 0 is an indicator of an unused region + * A region base of 7FFFh is an indicator of a reserved region + */ + if (region.limit == 0 || region.base == 0x07FFF000) continue;
char buf[LAYOUT_LINELEN]; @@ -1027,8 +1030,11 @@ struct region sorted_regions[MAX_REGIONS] = { 0 }; for (unsigned int i = 0; i < max_regions; i++) { struct region region = get_region(frba, i); - /* is region invalid? */ - if (region.size < 1) + + /* A region limit of 0 is an indicator of an unused region + * A region base of 7FFFh is an indicator of a reserved region + */ + if (region.limit == 0 || region.base == 0x07FFF000) continue;
/* Here we decide to use the coreboot generated FMAP BIOS region, instead of