diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pci.h | 1 | ||||
-rw-r--r-- | lib/sysfs.c | 10 |
2 files changed, 11 insertions, 0 deletions
@@ -194,6 +194,7 @@ char *pci_get_string_property(struct pci_dev *d, u32 prop) PCI_ABI; #define PCI_FILL_NUMA_NODE 0x0800 #define PCI_FILL_IO_FLAGS 0x1000 #define PCI_FILL_DT_NODE 0x2000 /* Device tree node */ +#define PCI_FILL_IOMMU_GROUP 0x4000 #define PCI_FILL_RESCAN 0x00010000 void pci_setup_cache(struct pci_dev *, u8 *cache, int len) PCI_ABI; diff --git a/lib/sysfs.c b/lib/sysfs.c index 42c88c6..538ca60 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -329,6 +329,16 @@ sysfs_fill_info(struct pci_dev *d, int flags) if ((flags & PCI_FILL_NUMA_NODE) && !(d->known_fields & PCI_FILL_NUMA_NODE)) d->numa_node = sysfs_get_value(d, "numa_node", 0); + if ((flags & PCI_FILL_IOMMU_GROUP) && !(d->known_fields & PCI_FILL_IOMMU_GROUP)) + { + char *group_link = sysfs_deref_link(d, "iommu_group"); + if (group_link) + { + pci_set_property(d, PCI_FILL_IOMMU_GROUP, basename(group_link)); + free(group_link); + } + } + if ((flags & PCI_FILL_DT_NODE) && !(d->known_fields & PCI_FILL_DT_NODE)) { char *node = sysfs_deref_link(d, "of_node"); |