From: Auger Eric <eric.auger@redhat.com> To: Jacob Pan <jacob.jun.pan@linux.intel.com>, iommu@lists.linux-foundation.org, LKML <linux-kernel@vger.kernel.org>, Joerg Roedel <joro@8bytes.org>, Alex Williamson <alex.williamson@redhat.com> Cc: Lu Baolu <baolu.lu@linux.intel.com>, David Woodhouse <dwmw2@infradead.org>, Yi Liu <yi.l.liu@intel.com>, "Tian, Kevin" <kevin.tian@intel.com>, Raj Ashok <ashok.raj@intel.com>, Christoph Hellwig <hch@infradead.org>, Jean-Philippe Brucker <jean-philippe@linaro.com>, Jonathan Corbet <corbet@lwn.net> Subject: Re: [PATCH v7 2/7] iommu/uapi: Add argsz for user filled data Date: Wed, 12 Aug 2020 18:59:14 +0200 [thread overview] Message-ID: <1ac39547-143b-2a2e-e142-92be023ef8d7@redhat.com> (raw) In-Reply-To: <1596068467-49322-3-git-send-email-jacob.jun.pan@linux.intel.com> Hi, On 7/30/20 2:21 AM, Jacob Pan wrote: > As IOMMU UAPI gets extended, user data size may increase. To support > backward compatibiliy, this patch introduces a size field to each UAPI s/compatibiliy/compatibility > data structures. It is *always* the responsibility for the user to fill in > the correct size. Padding fields are adjusted to ensure 8 byte alignment. > > Specific scenarios for user data handling are documented in: > Documentation/userspace-api/iommu.rst you may mention the struct version does not need to be incremented as no IOCTL uses the structs yet. > > Signed-off-by: Liu Yi L <yi.l.liu@intel.com> > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> > --- > include/uapi/linux/iommu.h | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/include/uapi/linux/iommu.h b/include/uapi/linux/iommu.h > index e907b7091a46..d5e9014f690e 100644 > --- a/include/uapi/linux/iommu.h > +++ b/include/uapi/linux/iommu.h > @@ -135,6 +135,7 @@ 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) > @@ -143,6 +144,7 @@ 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) > @@ -218,6 +220,7 @@ struct iommu_inv_pasid_info { > /** > * struct iommu_cache_invalidate_info - First level/stage invalidation > * information > + * @argsz: User filled size of this data > * @version: API version of this structure > * @cache: bitfield that allows to select which caches to invalidate > * @granularity: defines the lowest granularity used for the invalidation: > @@ -246,6 +249,7 @@ struct iommu_inv_pasid_info { > * must support the used granularity. > */ > struct iommu_cache_invalidate_info { > + __u32 argsz; > #define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1 > __u32 version; > /* IOMMU paging structure cache */ > @@ -255,7 +259,7 @@ struct iommu_cache_invalidate_info { > #define IOMMU_CACHE_INV_TYPE_NR (3) > __u8 cache; > __u8 granularity; > - __u8 padding[2]; > + __u8 padding[6]; > union { > struct iommu_inv_pasid_info pasid_info; > struct iommu_inv_addr_info addr_info; > @@ -292,6 +296,7 @@ struct iommu_gpasid_bind_data_vtd { > > /** > * struct iommu_gpasid_bind_data - Information about device and guest PASID binding > + * @argsz: User filled size of this data > * @version: Version of this data structure > * @format: PASID table entry format > * @flags: Additional information on guest bind request > @@ -309,17 +314,18 @@ struct iommu_gpasid_bind_data_vtd { > * PASID to host PASID based on this bind data. > */ > struct iommu_gpasid_bind_data { > + __u32 argsz; > #define IOMMU_GPASID_BIND_VERSION_1 1 > __u32 version; > #define IOMMU_PASID_FORMAT_INTEL_VTD 1 > __u32 format; > + __u32 addr_width; > #define IOMMU_SVA_GPASID_VAL (1 << 0) /* guest PASID valid */ > __u64 flags; > __u64 gpgd; > __u64 hpasid; > __u64 gpasid; > - __u32 addr_width; > - __u8 padding[12]; > + __u8 padding[8]; > /* Vendor specific data */ > union { > struct iommu_gpasid_bind_data_vtd vtd; > Reviewed-by: Eric Auger <eric.auger@redhat.com> Thanks Eric
WARNING: multiple messages have this Message-ID (diff)
From: Auger Eric <eric.auger@redhat.com> To: Jacob Pan <jacob.jun.pan@linux.intel.com>, iommu@lists.linux-foundation.org, LKML <linux-kernel@vger.kernel.org>, Joerg Roedel <joro@8bytes.org>, Alex Williamson <alex.williamson@redhat.com> Cc: "Tian, Kevin" <kevin.tian@intel.com>, Raj Ashok <ashok.raj@intel.com>, Jonathan Corbet <corbet@lwn.net>, Jean-Philippe Brucker <jean-philippe@linaro.com>, Christoph Hellwig <hch@infradead.org>, David Woodhouse <dwmw2@infradead.org> Subject: Re: [PATCH v7 2/7] iommu/uapi: Add argsz for user filled data Date: Wed, 12 Aug 2020 18:59:14 +0200 [thread overview] Message-ID: <1ac39547-143b-2a2e-e142-92be023ef8d7@redhat.com> (raw) In-Reply-To: <1596068467-49322-3-git-send-email-jacob.jun.pan@linux.intel.com> Hi, On 7/30/20 2:21 AM, Jacob Pan wrote: > As IOMMU UAPI gets extended, user data size may increase. To support > backward compatibiliy, this patch introduces a size field to each UAPI s/compatibiliy/compatibility > data structures. It is *always* the responsibility for the user to fill in > the correct size. Padding fields are adjusted to ensure 8 byte alignment. > > Specific scenarios for user data handling are documented in: > Documentation/userspace-api/iommu.rst you may mention the struct version does not need to be incremented as no IOCTL uses the structs yet. > > Signed-off-by: Liu Yi L <yi.l.liu@intel.com> > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> > --- > include/uapi/linux/iommu.h | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/include/uapi/linux/iommu.h b/include/uapi/linux/iommu.h > index e907b7091a46..d5e9014f690e 100644 > --- a/include/uapi/linux/iommu.h > +++ b/include/uapi/linux/iommu.h > @@ -135,6 +135,7 @@ 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) > @@ -143,6 +144,7 @@ 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) > @@ -218,6 +220,7 @@ struct iommu_inv_pasid_info { > /** > * struct iommu_cache_invalidate_info - First level/stage invalidation > * information > + * @argsz: User filled size of this data > * @version: API version of this structure > * @cache: bitfield that allows to select which caches to invalidate > * @granularity: defines the lowest granularity used for the invalidation: > @@ -246,6 +249,7 @@ struct iommu_inv_pasid_info { > * must support the used granularity. > */ > struct iommu_cache_invalidate_info { > + __u32 argsz; > #define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1 > __u32 version; > /* IOMMU paging structure cache */ > @@ -255,7 +259,7 @@ struct iommu_cache_invalidate_info { > #define IOMMU_CACHE_INV_TYPE_NR (3) > __u8 cache; > __u8 granularity; > - __u8 padding[2]; > + __u8 padding[6]; > union { > struct iommu_inv_pasid_info pasid_info; > struct iommu_inv_addr_info addr_info; > @@ -292,6 +296,7 @@ struct iommu_gpasid_bind_data_vtd { > > /** > * struct iommu_gpasid_bind_data - Information about device and guest PASID binding > + * @argsz: User filled size of this data > * @version: Version of this data structure > * @format: PASID table entry format > * @flags: Additional information on guest bind request > @@ -309,17 +314,18 @@ struct iommu_gpasid_bind_data_vtd { > * PASID to host PASID based on this bind data. > */ > struct iommu_gpasid_bind_data { > + __u32 argsz; > #define IOMMU_GPASID_BIND_VERSION_1 1 > __u32 version; > #define IOMMU_PASID_FORMAT_INTEL_VTD 1 > __u32 format; > + __u32 addr_width; > #define IOMMU_SVA_GPASID_VAL (1 << 0) /* guest PASID valid */ > __u64 flags; > __u64 gpgd; > __u64 hpasid; > __u64 gpasid; > - __u32 addr_width; > - __u8 padding[12]; > + __u8 padding[8]; > /* Vendor specific data */ > union { > struct iommu_gpasid_bind_data_vtd vtd; > Reviewed-by: Eric Auger <eric.auger@redhat.com> Thanks Eric _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
next prev parent reply other threads:[~2020-08-12 16:59 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-30 0:21 [PATCH v7 0/7] IOMMU user API enhancement Jacob Pan 2020-07-30 0:21 ` Jacob Pan 2020-07-30 0:21 ` [PATCH v7 1/7] docs: IOMMU user API Jacob Pan 2020-07-30 0:21 ` Jacob Pan 2020-08-12 16:38 ` Auger Eric 2020-08-12 16:38 ` Auger Eric 2020-08-17 22:07 ` Jacob Pan 2020-08-17 22:07 ` Jacob Pan 2020-07-30 0:21 ` [PATCH v7 2/7] iommu/uapi: Add argsz for user filled data Jacob Pan 2020-07-30 0:21 ` Jacob Pan 2020-08-12 16:59 ` Auger Eric [this message] 2020-08-12 16:59 ` Auger Eric 2020-08-17 22:48 ` Jacob Pan 2020-08-17 22:48 ` Jacob Pan 2020-07-30 0:21 ` [PATCH v7 3/7] iommu/uapi: Introduce enum type for PASID data format Jacob Pan 2020-07-30 0:21 ` Jacob Pan 2020-08-13 9:29 ` Auger Eric 2020-08-13 9:29 ` Auger Eric 2020-07-30 0:21 ` [PATCH v7 4/7] iommu/uapi: Use named union for user data Jacob Pan 2020-07-30 0:21 ` Jacob Pan 2020-07-30 0:21 ` [PATCH v7 5/7] iommu/uapi: Rename uapi functions Jacob Pan 2020-07-30 0:21 ` Jacob Pan 2020-08-13 8:58 ` Auger Eric 2020-08-13 8:58 ` Auger Eric 2020-08-17 23:16 ` Jacob Pan 2020-08-17 23:16 ` Jacob Pan 2020-07-30 0:21 ` [PATCH v7 6/7] iommu/uapi: Handle data and argsz filled by users Jacob Pan 2020-07-30 0:21 ` Jacob Pan 2020-08-13 9:11 ` Auger Eric 2020-08-13 9:11 ` Auger Eric 2020-08-13 9:25 ` Liu, Yi L 2020-08-13 9:25 ` Liu, Yi L 2020-08-13 9:30 ` Auger Eric 2020-08-13 9:30 ` Auger Eric 2020-08-13 9:38 ` Liu, Yi L 2020-08-13 9:38 ` Liu, Yi L 2020-08-13 10:03 ` Auger Eric 2020-08-13 10:03 ` Auger Eric 2020-07-30 0:21 ` [PATCH v7 7/7] iommu/vt-d: Check UAPI data processed by IOMMU core Jacob Pan 2020-07-30 0:21 ` Jacob Pan 2020-08-13 9:19 ` Auger Eric 2020-08-13 9:19 ` Auger Eric 2020-08-31 17:52 ` Jacob Pan 2020-08-31 17:52 ` Jacob Pan
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1ac39547-143b-2a2e-e142-92be023ef8d7@redhat.com \ --to=eric.auger@redhat.com \ --cc=alex.williamson@redhat.com \ --cc=ashok.raj@intel.com \ --cc=baolu.lu@linux.intel.com \ --cc=corbet@lwn.net \ --cc=dwmw2@infradead.org \ --cc=hch@infradead.org \ --cc=iommu@lists.linux-foundation.org \ --cc=jacob.jun.pan@linux.intel.com \ --cc=jean-philippe@linaro.com \ --cc=joro@8bytes.org \ --cc=kevin.tian@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=yi.l.liu@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.