From b70073d456bd0384fc647da38d4fbdae76842415 Mon Sep 17 00:00:00 2001 From: Maurice Ma Date: Fri, 4 Oct 2019 20:13:04 -0700 Subject: [PATCH] Filter out unused region in SPI descriptor for IfwiUtility.py This patch removes unused regions in SPI descriptor so that the IFWI layout can be printed correctly even when some region is disbled. Signed-off-by: Maurice Ma --- BootloaderCorePkg/Tools/IfwiUtility.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/BootloaderCorePkg/Tools/IfwiUtility.py b/BootloaderCorePkg/Tools/IfwiUtility.py index f698d87a..0b85e2b3 100644 --- a/BootloaderCorePkg/Tools/IfwiUtility.py +++ b/BootloaderCorePkg/Tools/IfwiUtility.py @@ -348,11 +348,12 @@ class IFWI_PARSER: @staticmethod def find_ifwi_region (spi_descriptor, rgn_name): frba = ((spi_descriptor.fl_map0 >> 16) & 0xFF) << 4 - fl_reg = spi_descriptor.FLASH_REGIONS[rgn_name] + frba + reg_off = spi_descriptor.FLASH_REGIONS[rgn_name] + fl_reg = reg_off + frba rgn_off = c_uint32.from_buffer(spi_descriptor, fl_reg) rgn_base = (rgn_off.value & 0x7FFF) << 12 rgn_limit = ((rgn_off.value & 0x7FFF0000) >> 4) | 0xFFF - if rgn_limit <= rgn_base: + if (reg_off > 0 and rgn_off.value == 0) or (rgn_off.value == 0xFFFFFFFF) or (rgn_limit <= rgn_base): return None, None else: return (rgn_base, rgn_limit)