PCI/MSI: Export pci_msix_prepare_desc() for dynamic MSI-X allocations
For supporting dynamic MSI-X vector allocation by PCI controllers, enabling the flag MSI_FLAG_PCI_MSIX_ALLOC_DYN is not enough, msix_prepare_msi_desc() to prepare the MSI descriptor is also needed. Export pci_msix_prepare_desc() to allow PCI controllers to support dynamic MSI-X vector allocation. Signed-off-by: Shradha Gupta <shradhagupta@linux.microsoft.com> Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com> Reviewed-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
@@ -222,13 +222,14 @@ static void pci_irq_unmask_msix(struct irq_data *data)
|
||||
pci_msix_unmask(irq_data_get_msi_desc(data));
|
||||
}
|
||||
|
||||
static void pci_msix_prepare_desc(struct irq_domain *domain, msi_alloc_info_t *arg,
|
||||
struct msi_desc *desc)
|
||||
void pci_msix_prepare_desc(struct irq_domain *domain, msi_alloc_info_t *arg,
|
||||
struct msi_desc *desc)
|
||||
{
|
||||
/* Don't fiddle with preallocated MSI descriptors */
|
||||
if (!desc->pci.mask_base)
|
||||
msix_prepare_msi_desc(to_pci_dev(desc->dev), desc);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_msix_prepare_desc);
|
||||
|
||||
static const struct msi_domain_template pci_msix_template = {
|
||||
.chip = {
|
||||
|
||||
@@ -706,6 +706,8 @@ struct irq_domain *pci_msi_create_irq_domain(struct fwnode_handle *fwnode,
|
||||
struct irq_domain *parent);
|
||||
u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev);
|
||||
struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev);
|
||||
void pci_msix_prepare_desc(struct irq_domain *domain, msi_alloc_info_t *arg,
|
||||
struct msi_desc *desc);
|
||||
#else /* CONFIG_PCI_MSI */
|
||||
static inline struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user