Skip to content

Commit ecf4e5f

Browse files
committed
Add functionality to filter devices by enabled status
Signed-off-by: Nathaniel Mitchell <nathaniel.p.mitchell@intel.com>
1 parent 44370ad commit ecf4e5f

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

chipsec/cfg/parsers/ip/pci_device.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,10 @@ def find_instance_by_bdf(self, bus: Union[int, str],
294294
return inst
295295
return None
296296

297+
def is_enabled(self) -> bool:
298+
"""Check if any PCI instance is enabled."""
299+
return bool(self.get_enabled_instances())
300+
297301
def validate_pci_config(self) -> bool:
298302
"""
299303
Validate PCI-specific configuration.

chipsec/library/device.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
from typing import Any, List, Optional, Tuple
2929
from chipsec.cfg.parsers.ip.pci_device import PCIConfig
30+
from chipsec.library.register import ObjList
3031

3132

3233
class Device:
@@ -66,18 +67,31 @@ def get_instance_by_name(self, device_name: str,
6667

6768
def get_list_by_name(self, device_name: str) -> List[Any]:
6869
"""
69-
Get list of device objects by name.
70+
Get list of enabled device objects by name.
71+
72+
Args:
73+
device_name: Name of the device to retrieve objects for
74+
75+
Returns:
76+
List of enabled device objects matching the name
77+
"""
78+
objList = self._get_defined_list(device_name)
79+
return objList.filter_enabled()
80+
81+
def _get_defined_list(self, device_name: str) -> List[Any]:
82+
"""
83+
Get list of all defined device objects by name.
7084
7185
Args:
7286
device_name: Name of the device to retrieve objects for
7387
7488
Returns:
75-
List of device objects matching the name
89+
List of all defined device objects matching the name
7690
"""
7791
devices = self.cs.Cfg.get_objlist(device_name)
78-
objlist = []
92+
objlist = ObjList()
7993
[objlist.extend(ip.obj) for ip in devices]
80-
return objlist
94+
return objlist
8195

8296
def is_defined(self, device_name: str) -> bool:
8397
"""
@@ -89,7 +103,7 @@ def is_defined(self, device_name: str) -> bool:
89103
Returns:
90104
True if device is defined, False otherwise
91105
"""
92-
return len(self.get_list_by_name(device_name)) > 0
106+
return len(self._get_defined_list(device_name)) > 0
93107

94108
def get_bus(self, device_name: str) -> List[int]:
95109
"""

0 commit comments

Comments
 (0)