Re: [PATCH 3/3] iommu/amd: Support multiple PCI DMA aliases in IRQ Remapping
From: Joerg Roedel
Date: Tue Oct 15 2019 - 09:38:05 EST
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