pci: return 0 for pci_remap_intr_method MSI-X non-error case

When remapping a MSI-X vector, we would always return ENOENT, even if
successful.  This didn't really matter, as the sole caller of
BUS_REMAP_INTR also didn't check for errors.

Return 0 if there's no error, so that we can start handling (or at least
warning about) actual failures.

Reviewed by:	jhb
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D41449
This commit is contained in:
Ed Maste 2023-08-14 16:35:34 -04:00
parent a51f81c2e5
commit 43e545e8e0

View file

@ -2447,6 +2447,8 @@ pci_remap_intr_method(device_t bus, device_t dev, u_int irq)
* through all the slots that use this IRQ and update them.
*/
if (cfg->msix.msix_alloc > 0) {
bool found = false;
for (i = 0; i < cfg->msix.msix_alloc; i++) {
mv = &cfg->msix.msix_vectors[i];
if (mv->mv_irq == irq) {
@ -2466,9 +2468,10 @@ pci_remap_intr_method(device_t bus, device_t dev, u_int irq)
pci_enable_msix(dev, j, addr, data);
pci_unmask_msix(dev, j);
}
found = true;
}
}
return (ENOENT);
return (found ? 0 : ENOENT);
}
return (ENOENT);