| From e028a9e6b8a637af09ac4114083280df4a7045f1 Mon Sep 17 00:00:00 2001 |
| From: Alex Williamson <alex.williamson@redhat.com> |
| Date: Tue, 22 Apr 2014 10:08:40 -0600 |
| Subject: iommu/amd: Fix interrupt remapping for aliased devices |
| |
| From: Alex Williamson <alex.williamson@redhat.com> |
| |
| commit e028a9e6b8a637af09ac4114083280df4a7045f1 upstream. |
| |
| An apparent cut and paste error prevents the correct flags from being |
| set on the alias device resulting in MSI on conventional PCI devices |
| failing to work. This also produces error events from the IOMMU like: |
| |
| AMD-Vi: Event logged [INVALID_DEVICE_REQUEST device=00:14.4 address=0x000000fdf8000000 flags=0x0a00] |
| |
| Where 14.4 is a PCIe-to-PCI bridge with a device behind it trying to |
| use MSI interrupts. |
| |
| Signed-off-by: Alex Williamson <alex.williamson@redhat.com> |
| Signed-off-by: Joerg Roedel <joro@8bytes.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/iommu/amd_iommu.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/iommu/amd_iommu.c |
| +++ b/drivers/iommu/amd_iommu.c |
| @@ -3959,7 +3959,7 @@ static struct irq_remap_table *get_irq_t |
| iommu_flush_dte(iommu, devid); |
| if (devid != alias) { |
| irq_lookup_table[alias] = table; |
| - set_dte_irq_entry(devid, table); |
| + set_dte_irq_entry(alias, table); |
| iommu_flush_dte(iommu, alias); |
| } |
| |