> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Sent: Monday, November 21, 2022 10:38 PM > > +/** > + * pci_msix_alloc_irq_at - Allocate an MSI-X interrupt after enabling MSI-X > + * at a given MSI-X vector index or any free vector > index > + * > + * @dev: PCI device to operate on > + * @index: Index to allocate. If @index == MSI_ANY_INDEX this allocates > + * the next free index in the MSI-X table %MSI_ANY_INDEX as done in other places. > + > +/** > + * pci_msix_free_irq - Free an interrupt on a PCI/MSIX interrupt domain > + * which was allocated via pci_msix_alloc_irq_at() > + * > + * @dev: The PCI device to operate on > + * @map: A struct msi_map describing the interrupt to free > + * as returned from the allocation function. > + */ Can this be used on preallocated descriptors? If not any guard required or just treat it as a driver responsibility to not misuse? > +void pci_msix_free_irq(struct pci_dev *dev, struct msi_map map) > +{ > + if (WARN_ON_ONCE(map.index < 0 || map.virq <= 0)) map.virq cannot be negative.