diff --git a/misc/config_tools/board_inspector/pcieparser/__init__.py b/misc/config_tools/board_inspector/pcieparser/__init__.py index 1e4c30c3b..11377cfed 100644 --- a/misc/config_tools/board_inspector/pcieparser/__init__.py +++ b/misc/config_tools/board_inspector/pcieparser/__init__.py @@ -36,7 +36,10 @@ def parse_config_space(path): hdr = header(data) caps = capabilities(data, hdr.capability_pointer) config_space = PCIConfigSpace(hdr, caps, []) - if config_space.has_cap("PCI Express"): + # While PCI Express specification requires that a PCIe endpoint must have an extended capability header at offset + # 100h of its configuration space, we do see real PCIe endpoints not meeting this requirement occasionally. Thus, + # check the length of the configuration space as well before trying to parse its extended capability list. + if config_space.has_cap("PCI Express") and len(data) >= 260: extcaps = extended_capabilities(data) config_space = PCIConfigSpace(hdr, caps, extcaps) return config_space