Commit 57384592 authored by Joerg Roedel's avatar Joerg Roedel

iommu/vt-d: Store bus information in RMRR PCI device path

This will be used later to match broken RMRR entries.
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 1196c2fb
...@@ -155,6 +155,7 @@ dmar_alloc_pci_notify_info(struct pci_dev *dev, unsigned long event) ...@@ -155,6 +155,7 @@ dmar_alloc_pci_notify_info(struct pci_dev *dev, unsigned long event)
if (event == BUS_NOTIFY_ADD_DEVICE) { if (event == BUS_NOTIFY_ADD_DEVICE) {
for (tmp = dev; tmp; tmp = tmp->bus->self) { for (tmp = dev; tmp; tmp = tmp->bus->self) {
level--; level--;
info->path[level].bus = tmp->bus->number;
info->path[level].device = PCI_SLOT(tmp->devfn); info->path[level].device = PCI_SLOT(tmp->devfn);
info->path[level].function = PCI_FUNC(tmp->devfn); info->path[level].function = PCI_FUNC(tmp->devfn);
if (pci_is_root_bus(tmp->bus)) if (pci_is_root_bus(tmp->bus))
......
...@@ -56,13 +56,19 @@ struct dmar_drhd_unit { ...@@ -56,13 +56,19 @@ struct dmar_drhd_unit {
struct intel_iommu *iommu; struct intel_iommu *iommu;
}; };
struct dmar_pci_path {
u8 bus;
u8 device;
u8 function;
};
struct dmar_pci_notify_info { struct dmar_pci_notify_info {
struct pci_dev *dev; struct pci_dev *dev;
unsigned long event; unsigned long event;
int bus; int bus;
u16 seg; u16 seg;
u16 level; u16 level;
struct acpi_dmar_pci_path path[]; struct dmar_pci_path path[];
} __attribute__((packed)); } __attribute__((packed));
extern struct rw_semaphore dmar_global_lock; extern struct rw_semaphore dmar_global_lock;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment