On Tue, Oct 08, 2019 at 04:18:37PM -0600, Logan Gunthorpe wrote:
> -static struct irq_remap_table *alloc_irq_table(u16 devid)
> +static int set_remap_table_entry_alias(struct pci_dev *pdev, u16 alias,
> +                                    void *data)
> +{
> +     struct irq_remap_table *table = data;
> +
> +     irq_lookup_table[alias] = table;
> +     set_dte_irq_entry(alias, table);
> +
> +     return 0;
> +}
> +
> +static int iommu_flush_dte_alias(struct pci_dev *pdev, u16 alias, void *data)
> +{
> +     struct amd_iommu *iommu = data;
> +
> +     iommu_flush_dte(iommu, alias);
> +
> +     return 0;
> +}

I think these two functions can be merged into one, saving one
pci_for_each_dma_alias() call below. You can lookup the iommu using the
amd_iommu_rlookup_table[alias] in the first function and issue the flush
there.


Regards,

        Joerg

Reply via email to