@@ -112,6 +112,9 @@ def exec_command(self, cmd):
112112
113113 def get_lspci_data (self ):
114114 return self .exec_command (['lspci' , '-nnmm' ])
115+
116+ def get_lspci_vv_data (self ):
117+ return self .exec_command (['lspci' , '-vv' ])
115118
116119 def get_dmidecode_data (self ):
117120 return self .exec_command (['dmidecode' ])
@@ -134,6 +137,16 @@ def get_pci_devices(self):
134137 data = self .get_lspci_data ()
135138 parser = LspciNNMMParser (data )
136139 devices = parser .parse_items ()
140+ # Parse also lspci -vv for driver information
141+ data = self .get_lspci_vv_data ()
142+ parser = LspciVVParser (data )
143+ devices_vv = parser .parse_items ()
144+ driver_info = {d ['pci_device_bus_id' ]: d .get ('pci_device_driver' ) for d in devices_vv if 'pci_device_bus_id' in d }
145+ # Add driver information to devices
146+ for device in devices :
147+ bus_id = device .get ('pci_device_bus_id' )
148+ if bus_id and bus_id in driver_info :
149+ device ['pci_device_driver' ] = driver_info [bus_id ]
137150 return [PCIDevice (device ) for device in devices ]
138151
139152 def get_info (self ):
@@ -206,6 +219,9 @@ def _load_from_file(self, filename):
206219
207220 def get_lspci_data (self ):
208221 return self ._load_from_file ('lspci-nnm.out' )
222+
223+ def get_lspci_vv_data (self ):
224+ return self ._load_from_file ('lspci-vv.out' )
209225
210226 def get_dmidecode_data (self ):
211227 return self ._load_from_file ('dmidecode.out' )
@@ -360,7 +376,7 @@ def system_info(host, options):
360376
361377 return "" .join (info ).strip ()
362378
363- def export_system_info (host , options ):
379+ def system_info_as_dict (host , options ):
364380 rec = {}
365381
366382 if 'bios' in options :
@@ -381,6 +397,11 @@ def export_system_info(host, options):
381397 devices = pci_filter_for_gpu (host .get_pci_devices ())
382398 rec ["gpus" ] = [dev .get_rec () for dev in devices ]
383399
400+ return rec
401+
402+ def export_system_info (host , options ):
403+ rec = system_info_as_dict (host , options )
404+
384405 return json .dumps (rec , indent = 4 , separators = (',' , ': ' ))
385406
386407def main ():
0 commit comments