aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2016-08-20 00:22:39 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2016-08-20 00:22:39 +0000
commit1f65581b7d43907b1359afa3560eef33e0efd287 (patch)
treebbd588f6ca8570e2f6e1c055da33bc8621c62b3b
parentf7bf0c8e6fbd8d2a6f243f8e61617d7fe58393ed (diff)
downloadsrc-1f65581b7d43907b1359afa3560eef33e0efd287.tar.gz
src-1f65581b7d43907b1359afa3560eef33e0efd287.zip
MFC 298950: Fix an off by one error when remapping MSI-X vectors.
pci_remap_msix() can be used to alter the mapping of allocated MSI-X vectors to the MSI-X table. The code had an off by one error when adding the IRQ resources after performing a remap. This was fatal for any vectors in the table that used the "last" valid IRQ as those vectors were assigned a garbage IRQ value.
Notes
Notes: svn path=/stable/8/; revision=304511
-rw-r--r--sys/dev/pci/pci.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index 07423f7a8427..d95a388f373a 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -1617,7 +1617,7 @@ pci_remap_msix_method(device_t dev, device_t child, int count,
for (i = 0; i < count; i++) {
if (vectors[i] == 0)
continue;
- irq = msix->msix_vectors[vectors[i]].mv_irq;
+ irq = msix->msix_vectors[vectors[i] - 1].mv_irq;
resource_list_add(&dinfo->resources, SYS_RES_IRQ, i + 1, irq,
irq, 1);
}
@@ -1631,7 +1631,7 @@ pci_remap_msix_method(device_t dev, device_t child, int count,
printf("---");
else
printf("%d",
- msix->msix_vectors[vectors[i]].mv_irq);
+ msix->msix_vectors[vectors[i] - 1].mv_irq);
}
printf("\n");
}