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. MFC after: 3 days
This commit is contained in:
parent
adddf34a2a
commit
593ac218e0
@ -1855,7 +1855,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);
|
||||
}
|
||||
@ -1869,7 +1869,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");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user