iommu/vt-d: Store bus information in RMRR PCI device path
authorJoerg Roedel <jroedel@suse.de>
Thu, 2 Oct 2014 09:50:25 +0000 (11:50 +0200)
committerJoerg Roedel <jroedel@suse.de>
Thu, 2 Oct 2014 10:12:25 +0000 (12:12 +0200)
This will be used later to match broken RMRR entries.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/dmar.c
include/linux/dmar.h

index 8ed55b0a1ce41234622777b578c31e19897e2eea..68da1ab0f2cd0613974479a94b0145d1fcc2d391 100644 (file)
@@ -155,6 +155,7 @@ dmar_alloc_pci_notify_info(struct pci_dev *dev, unsigned long event)
        if (event == BUS_NOTIFY_ADD_DEVICE) {
                for (tmp = dev; tmp; tmp = tmp->bus->self) {
                        level--;
+                       info->path[level].bus = tmp->bus->number;
                        info->path[level].device = PCI_SLOT(tmp->devfn);
                        info->path[level].function = PCI_FUNC(tmp->devfn);
                        if (pci_is_root_bus(tmp->bus))
index 1deece46a0caa408357ffd66196423b18f2a274e..593fff99e6bf51cdc73424f57bb34921a8634376 100644 (file)
@@ -56,13 +56,19 @@ struct dmar_drhd_unit {
        struct intel_iommu *iommu;
 };
 
+struct dmar_pci_path {
+       u8 bus;
+       u8 device;
+       u8 function;
+};
+
 struct dmar_pci_notify_info {
        struct pci_dev                  *dev;
        unsigned long                   event;
        int                             bus;
        u16                             seg;
        u16                             level;
-       struct acpi_dmar_pci_path       path[];
+       struct dmar_pci_path            path[];
 }  __attribute__((packed));
 
 extern struct rw_semaphore dmar_global_lock;