Message ID | 20231115030226.16700-5-baolu.lu@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iommu: Prepare to deliver page faults to user space | expand |
On 2023/11/15 11:02, Lu Baolu wrote: > struct iommu_fault_page_request and struct iommu_page_response are not > part of uAPI anymore. Convert them to data structures for kAPI. > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> > Reviewed-by: Kevin Tian <kevin.tian@intel.com> > Tested-by: Yan Zhao <yan.y.zhao@intel.com> > --- > include/linux/iommu.h | 27 +++++++++++---------------- > drivers/iommu/io-pgfault.c | 1 - > drivers/iommu/iommu.c | 4 ---- > 3 files changed, 11 insertions(+), 21 deletions(-) Reviewed-by: Yi Liu <yi.l.liu@intel.com> > diff --git a/include/linux/iommu.h b/include/linux/iommu.h > index 81eee1afec72..79775859af42 100644 > --- a/include/linux/iommu.h > +++ b/include/linux/iommu.h > @@ -71,12 +71,12 @@ struct iommu_fault_page_request { > #define IOMMU_FAULT_PAGE_REQUEST_LAST_PAGE (1 << 1) > #define IOMMU_FAULT_PAGE_REQUEST_PRIV_DATA (1 << 2) > #define IOMMU_FAULT_PAGE_RESPONSE_NEEDS_PASID (1 << 3) > - __u32 flags; > - __u32 pasid; > - __u32 grpid; > - __u32 perm; > - __u64 addr; > - __u64 private_data[2]; > + u32 flags; > + u32 pasid; > + u32 grpid; > + u32 perm; > + u64 addr; > + u64 private_data[2]; > }; > > /** > @@ -85,7 +85,7 @@ struct iommu_fault_page_request { > * @prm: Page Request message, when @type is %IOMMU_FAULT_PAGE_REQ > */ > struct iommu_fault { > - __u32 type; > + u32 type; > struct iommu_fault_page_request prm; > }; > > @@ -106,8 +106,6 @@ enum iommu_page_response_code { > > /** > * struct iommu_page_response - Generic page response information > - * @argsz: User filled size of this data > - * @version: API version of this structure > * @flags: encodes whether the corresponding fields are valid > * (IOMMU_FAULT_PAGE_RESPONSE_* values) > * @pasid: Process Address Space ID > @@ -115,14 +113,11 @@ enum iommu_page_response_code { > * @code: response code from &enum iommu_page_response_code > */ > struct iommu_page_response { > - __u32 argsz; > -#define IOMMU_PAGE_RESP_VERSION_1 1 > - __u32 version; > #define IOMMU_PAGE_RESP_PASID_VALID (1 << 0) > - __u32 flags; > - __u32 pasid; > - __u32 grpid; > - __u32 code; > + u32 flags; > + u32 pasid; > + u32 grpid; > + u32 code; > }; > > > diff --git a/drivers/iommu/io-pgfault.c b/drivers/iommu/io-pgfault.c > index e5b8b9110c13..24b5545352ae 100644 > --- a/drivers/iommu/io-pgfault.c > +++ b/drivers/iommu/io-pgfault.c > @@ -56,7 +56,6 @@ static int iopf_complete_group(struct device *dev, struct iopf_fault *iopf, > enum iommu_page_response_code status) > { > struct iommu_page_response resp = { > - .version = IOMMU_PAGE_RESP_VERSION_1, > .pasid = iopf->fault.prm.pasid, > .grpid = iopf->fault.prm.grpid, > .code = status, > diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c > index f17a1113f3d6..f24513e2b025 100644 > --- a/drivers/iommu/iommu.c > +++ b/drivers/iommu/iommu.c > @@ -1465,10 +1465,6 @@ int iommu_page_response(struct device *dev, > if (!param || !param->fault_param) > return -EINVAL; > > - if (msg->version != IOMMU_PAGE_RESP_VERSION_1 || > - msg->flags & ~IOMMU_PAGE_RESP_PASID_VALID) > - return -EINVAL; > - > /* Only send response if there is a fault report pending */ > mutex_lock(¶m->fault_param->lock); > if (list_empty(¶m->fault_param->faults)) {
diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 81eee1afec72..79775859af42 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -71,12 +71,12 @@ struct iommu_fault_page_request { #define IOMMU_FAULT_PAGE_REQUEST_LAST_PAGE (1 << 1) #define IOMMU_FAULT_PAGE_REQUEST_PRIV_DATA (1 << 2) #define IOMMU_FAULT_PAGE_RESPONSE_NEEDS_PASID (1 << 3) - __u32 flags; - __u32 pasid; - __u32 grpid; - __u32 perm; - __u64 addr; - __u64 private_data[2]; + u32 flags; + u32 pasid; + u32 grpid; + u32 perm; + u64 addr; + u64 private_data[2]; }; /** @@ -85,7 +85,7 @@ struct iommu_fault_page_request { * @prm: Page Request message, when @type is %IOMMU_FAULT_PAGE_REQ */ struct iommu_fault { - __u32 type; + u32 type; struct iommu_fault_page_request prm; }; @@ -106,8 +106,6 @@ enum iommu_page_response_code { /** * struct iommu_page_response - Generic page response information - * @argsz: User filled size of this data - * @version: API version of this structure * @flags: encodes whether the corresponding fields are valid * (IOMMU_FAULT_PAGE_RESPONSE_* values) * @pasid: Process Address Space ID @@ -115,14 +113,11 @@ enum iommu_page_response_code { * @code: response code from &enum iommu_page_response_code */ struct iommu_page_response { - __u32 argsz; -#define IOMMU_PAGE_RESP_VERSION_1 1 - __u32 version; #define IOMMU_PAGE_RESP_PASID_VALID (1 << 0) - __u32 flags; - __u32 pasid; - __u32 grpid; - __u32 code; + u32 flags; + u32 pasid; + u32 grpid; + u32 code; }; diff --git a/drivers/iommu/io-pgfault.c b/drivers/iommu/io-pgfault.c index e5b8b9110c13..24b5545352ae 100644 --- a/drivers/iommu/io-pgfault.c +++ b/drivers/iommu/io-pgfault.c @@ -56,7 +56,6 @@ static int iopf_complete_group(struct device *dev, struct iopf_fault *iopf, enum iommu_page_response_code status) { struct iommu_page_response resp = { - .version = IOMMU_PAGE_RESP_VERSION_1, .pasid = iopf->fault.prm.pasid, .grpid = iopf->fault.prm.grpid, .code = status, diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index f17a1113f3d6..f24513e2b025 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -1465,10 +1465,6 @@ int iommu_page_response(struct device *dev, if (!param || !param->fault_param) return -EINVAL; - if (msg->version != IOMMU_PAGE_RESP_VERSION_1 || - msg->flags & ~IOMMU_PAGE_RESP_PASID_VALID) - return -EINVAL; - /* Only send response if there is a fault report pending */ mutex_lock(¶m->fault_param->lock); if (list_empty(¶m->fault_param->faults)) {