+ if (defined($filter) && ref($filter) eq 'CODE' && !$filter->($res)) {
+ return;
+ }
+
+ if ($verbose) {
+ $res->{iommugroup} = -1;
+ if (-e "$devdir/iommu_group") {
+ my ($iommugroup) = (readlink("$devdir/iommu_group") =~ m/\/(\d+)$/);
+ $res->{iommugroup} = int($iommugroup);
+ }
+
+ if (-d "$devdir/mdev_supported_types") {
+ $res->{mdev} = 1;
+ }
+
+ my $device_hash = $ids->{$vendor}->{devices}->{$device} // {};
+
+ my $sub_vendor = file_read_firstline("$devdir/subsystem_vendor");
+ my $sub_device = file_read_firstline("$devdir/subsystem_device");
+
+ my $vendor_name = $ids->{$vendor}->{name};
+ my $device_name = $device_hash->{name};
+ my $sub_vendor_name = $ids->{$sub_vendor}->{name};
+ my $sub_device_name = $device_hash->{subs}->{$sub_vendor}->{$sub_device};
+
+ $res->{vendor_name} = $vendor_name if defined($vendor_name);
+ $res->{device_name} = $device_name if defined($device_name);
+ $res->{subsystem_vendor} = $sub_vendor if defined($sub_vendor);
+ $res->{subsystem_device} = $sub_device if defined($sub_device);
+ $res->{subsystem_vendor_name} = $sub_vendor_name if defined($sub_vendor_name);
+ $res->{subsystem_device_name} = $sub_device_name if defined($sub_device_name);
+ }
+
+ push @$devices, $res;