On Wed, 2014-02-19 at 14:07 +0800, Jiang Liu wrote: > Current Intel DMAR/IOMMU driver assumes that all PCI devices > associated > with DMAR/RMRR/ATSR device scope arrays are created at boot time and > won't change at runtime, so it caches pointers of associated PCI > device > object. That assumption may be wrong now due to: > 1) introduction of PCI host bridge hotplug > 2) PCI device hotplug through sysfs interfaces. ... > This patch introduces a new mechanism to update the DRHD/RMRR/ATSR > device scope caches by hooking PCI bus notification. Hm, this seems overly complex. Can't we just abandon the dmaru->devices[] array completely? In dmar_find_matched_drhd_unit() can't we just compare the path in the scope entries directly to the PCI device we are trying to find a DRHD for? We then cache the result in dev->archdata.iommu for ever (well, until hot-unplug) anyway, so it shouldn't even be any less efficient to do it on demand, right? That's true at least for dmar_find_matched_drhd_unit(). Perhaps we'd need to find a way to cache the result for dmar_find_matched_atsr_unit()? -- dwmw2
Attachment:
smime.p7s
Description: S/MIME cryptographic signature