lkml.org 
[lkml]   [2022]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[patch V3 32/33] iommu/amd: Enable PCI/IMS
    Date
    PCI/IMS works like PCI/MSI-X in the remapping. Just add the feature flag,
    but only when on real hardware.

    Virtualized IOMMUs need additional support.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    V3: Only enable on real hardware (Kevin)
    ---
    drivers/iommu/amd/iommu.c | 17 +++++++++++++++--
    1 file changed, 15 insertions(+), 2 deletions(-)

    --- a/drivers/iommu/amd/iommu.c
    +++ b/drivers/iommu/amd/iommu.c
    @@ -3649,11 +3649,20 @@ static struct irq_chip amd_ir_chip = {
    };

    static const struct msi_parent_ops amdvi_msi_parent_ops = {
    - .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED | MSI_FLAG_MULTI_PCI_MSI,
    + .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED |
    + MSI_FLAG_MULTI_PCI_MSI |
    + MSI_FLAG_PCI_IMS,
    .prefix = "IR-",
    .init_dev_msi_info = msi_parent_init_dev_msi_info,
    };

    +static const struct msi_parent_ops virt_amdvi_msi_parent_ops = {
    + .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED |
    + MSI_FLAG_MULTI_PCI_MSI,
    + .prefix = "vIR-",
    + .init_dev_msi_info = msi_parent_init_dev_msi_info,
    +};
    +
    int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
    {
    struct fwnode_handle *fn;
    @@ -3670,7 +3679,11 @@ int amd_iommu_create_irq_domain(struct a

    irq_domain_update_bus_token(iommu->ir_domain, DOMAIN_BUS_AMDVI);
    iommu->ir_domain->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT;
    - iommu->ir_domain->msi_parent_ops = &amdvi_msi_parent_ops;
    +
    + if (amd_iommu_np_cache)
    + iommu->ir_domain->msi_parent_ops = &virt_amdvi_msi_parent_ops;
    + else
    + iommu->ir_domain->msi_parent_ops = &amdvi_msi_parent_ops;

    return 0;
    }
    \
     
     \ /
      Last update: 2022-11-25 00:32    [W:4.058 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site