]> git.baikalelectronics.ru Git - kernel.git/commit
iommu/vt-d: Cure VF irqdomain hickup
authorThomas Gleixner <tglx@linutronix.de>
Thu, 12 Nov 2020 19:14:16 +0000 (20:14 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 13 Nov 2020 11:00:40 +0000 (12:00 +0100)
commit08aa86b70e979f05db299d87adb656f2c1d63da5
tree21185c1564a734ce2d63e8628604b6ccce6f3b2f
parente385a5a0e0439065114bdd0ed3775f093fe4ea9d
iommu/vt-d: Cure VF irqdomain hickup

The recent changes to store the MSI irqdomain pointer in struct device
missed that Intel DMAR does not register virtual function devices.  Due to
that a VF device gets the plain PCI-MSI domain assigned and then issues
compat MSI messages which get caught by the interrupt remapping unit.

Cure that by inheriting the irq domain from the physical function
device.

Ideally the irqdomain would be associated to the bus, but DMAR can have
multiple units and therefore irqdomains on a single bus. The VF 'bus' could
of course inherit the domain from the PF, but that'd be yet another x86
oddity.

Fixes: 809cfcd2c92e ("iommm/vt-d: Store irq domain in struct device")
Reported-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Marc Zyngier <maz@kernel.org>
Cc: David Woodhouse <dwmw2@infradead.org>
Link: https://lore.kernel.org/r/draft-87eekymlpz.fsf@nanos.tec.linutronix.de
drivers/iommu/intel/dmar.c