Reuse UAPI version for each UAPI data structure. This is to avoid supporting multiple version combinations, simplify support model as we bump up the versions.
Signed-off-by: Liu Yi L <[email protected]> Signed-off-by: Jacob Pan <[email protected]> --- drivers/iommu/intel-iommu.c | 3 ++- drivers/iommu/intel-svm.c | 2 +- drivers/iommu/iommu.c | 3 ++- include/uapi/linux/iommu.h | 9 +++------ 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index b3778e86dc32..b17b338ada34 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -5763,8 +5763,9 @@ static int intel_iommu_sva_invalidate(struct iommu_domain *domain, int ret = 0; u64 size; + /* Support current or older UAPI versions */ if (!inv_info || !dmar_domain || - inv_info->version != IOMMU_CACHE_INVALIDATE_INFO_VERSION_1) + inv_info->version > IOMMU_UAPI_VERSION) return -EINVAL; if (!dev || !dev_is_pci(dev)) diff --git a/drivers/iommu/intel-svm.c b/drivers/iommu/intel-svm.c index 7a87d2e2e0ad..c756b43e959c 100644 --- a/drivers/iommu/intel-svm.c +++ b/drivers/iommu/intel-svm.c @@ -239,7 +239,7 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, if (WARN_ON(!iommu) || !data) return -EINVAL; - if (data->version != IOMMU_GPASID_BIND_VERSION_1 || + if (data->version > IOMMU_UAPI_VERSION || data->format != IOMMU_PASID_FORMAT_INTEL_VTD) return -EINVAL; diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index fdd40756dbc1..7dd51c5d2ba1 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -1094,7 +1094,8 @@ int iommu_page_response(struct device *dev, if (!param || !param->fault_param) return -EINVAL; - if (msg->version != IOMMU_PAGE_RESP_VERSION_1 || + /* Support current or older UAPI versions */ + if (msg->version > IOMMU_UAPI_VERSION || msg->flags & ~IOMMU_PAGE_RESP_PASID_VALID) return -EINVAL; diff --git a/include/uapi/linux/iommu.h b/include/uapi/linux/iommu.h index 65a26c2519ee..5e410761dfa3 100644 --- a/include/uapi/linux/iommu.h +++ b/include/uapi/linux/iommu.h @@ -183,7 +183,7 @@ enum iommu_page_response_code { /** * struct iommu_page_response - Generic page response information - * @version: API version of this structure + * @version: IOMMU_UAPI_VERSION * @flags: encodes whether the corresponding fields are valid * (IOMMU_FAULT_PAGE_RESPONSE_* values) * @pasid: Process Address Space ID @@ -191,7 +191,6 @@ enum iommu_page_response_code { * @code: response code from &enum iommu_page_response_code */ struct iommu_page_response { -#define IOMMU_PAGE_RESP_VERSION_1 1 __u32 version; #define IOMMU_PAGE_RESP_PASID_VALID (1 << 0) __u32 flags; @@ -266,7 +265,7 @@ struct iommu_inv_pasid_info { /** * struct iommu_cache_invalidate_info - First level/stage invalidation * information - * @version: API version of this structure + * @version: IOMMU_UAPI_VERSION * @cache: bitfield that allows to select which caches to invalidate * @granularity: defines the lowest granularity used for the invalidation: * domain > PASID > addr @@ -294,7 +293,6 @@ struct iommu_inv_pasid_info { * must support the used granularity. */ struct iommu_cache_invalidate_info { -#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1 __u32 version; /* IOMMU paging structure cache */ #define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0) /* IOMMU IOTLB */ @@ -338,7 +336,7 @@ struct iommu_gpasid_bind_data_vtd { IOMMU_SVA_VTD_GPASID_PWT) /** * struct iommu_gpasid_bind_data - Information about device and guest PASID binding - * @version: Version of this data structure + * @version: IOMMU_UAPI_VERSION * @format: PASID table entry format * @flags: Additional information on guest bind request * @gpgd: Guest page directory base of the guest mm to bind @@ -355,7 +353,6 @@ struct iommu_gpasid_bind_data_vtd { * PASID to host PASID based on this bind data. */ struct iommu_gpasid_bind_data { -#define IOMMU_GPASID_BIND_VERSION_1 1 __u32 version; #define IOMMU_PASID_FORMAT_INTEL_VTD 1 __u32 format; -- 2.7.4 _______________________________________________ iommu mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/iommu
