diff --git a/misc/config_tools/board_inspector/acpiparser/aml/interpreter.py b/misc/config_tools/board_inspector/acpiparser/aml/interpreter.py index d1106c626..a3f901ec9 100644 --- a/misc/config_tools/board_inspector/acpiparser/aml/interpreter.py +++ b/misc/config_tools/board_inspector/acpiparser/aml/interpreter.py @@ -329,7 +329,11 @@ class ConcreteInterpreter(Interpreter): self.context.change_scope(tree.scope) device_path = self.context.parent(sym.name) bus_id = self.interpret_method_call(f"_BBN").get() - device_id = self.interpret_method_call(f"{device_path}._ADR").get() + if self.context.has_symbol(f"{device_path}._ADR"): + device_id = self.interpret_method_call(f"{device_path}._ADR").get() + elif self.context.has_symbol(f"{device_path}._BBN"): + # Device objects representing PCI host bridges may not have an _ADR object + device_id = 0 self.context.pop_scope() op_region = OperationRegion.open_pci_configuration_space(bus_id, device_id, offset, length) pass diff --git a/misc/config_tools/board_inspector/extractors/50-acpi.py b/misc/config_tools/board_inspector/extractors/50-acpi.py index df7869239..5c970483c 100644 --- a/misc/config_tools/board_inspector/extractors/50-acpi.py +++ b/misc/config_tools/board_inspector/extractors/50-acpi.py @@ -474,7 +474,9 @@ def fetch_device_info(devices_node, interpreter, namepath, args): bus_number = result.get() if isinstance(bus_number, int): bus_number = hex(bus_number) - element.set("address", bus_number) + # To avoid confusion to the later extractors, do not recognize _BBN for non-present host bridges. + if sta == None or (sta & 0x1) != 0: + element.set("address", bus_number) add_object_to_device(interpreter, namepath, "_BBN", result) # Status