lkml.org 
[lkml]   [2020]   [Nov]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v13 15/15] iommu/smmuv3: Add PASID cache invalidation per PASID
    Date
    In order to cascade guest CFGI_CD, let's add PASID cache invalidation
    per PASID.

    Signed-off-by: Eric Auger <eric.auger@redhat.com>

    ---

    v12 -> v13:
    - Fix !(info->flags & IOMMU_INV_PASID_FLAGS_PASID) check
    ---
    drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 16 +++++++++++++---
    1 file changed, 13 insertions(+), 3 deletions(-)

    diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
    index ed64699a4a0d..45adfe4da11b 100644
    --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
    +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
    @@ -2999,9 +2999,19 @@ arm_smmu_cache_invalidate(struct iommu_domain *domain, struct device *dev,
    } else {
    return -EINVAL;
    }
    - }
    - if (inv_info->cache & IOMMU_CACHE_INV_TYPE_PASID ||
    - inv_info->cache & IOMMU_CACHE_INV_TYPE_DEV_IOTLB) {
    + } else if (inv_info->cache & IOMMU_CACHE_INV_TYPE_PASID) {
    + if (inv_info->granularity == IOMMU_INV_GRANU_PASID) {
    + struct iommu_inv_pasid_info *info =
    + &inv_info->granu.pasid_info;
    +
    + if (!(info->flags & IOMMU_INV_PASID_FLAGS_PASID))
    + return -EINVAL;
    +
    + arm_smmu_sync_cd(smmu_domain, info->pasid, true);
    + } else {
    + return -ENOENT;
    + }
    + } else { /* IOMMU_CACHE_INV_TYPE_DEV_IOTLB */
    return -ENOENT;
    }
    return 0;
    --
    2.21.3
    \
     
     \ /
      Last update: 2020-11-18 12:40    [W:6.555 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site