summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pci.h1
-rw-r--r--lib/sysfs.c10
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/pci.h b/lib/pci.h
index 5a1dac5..00767eb 100644
--- a/lib/pci.h
+++ b/lib/pci.h
@@ -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");