All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolin Chen <nicolinc@nvidia.com>
To: "Liu, Yi L" <yi.l.liu@intel.com>
Cc: Baolu Lu <baolu.lu@linux.intel.com>,
	"joro@8bytes.org" <joro@8bytes.org>,
	"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
	"jgg@nvidia.com" <jgg@nvidia.com>,
	"Tian, Kevin" <kevin.tian@intel.com>,
	"robin.murphy@arm.com" <robin.murphy@arm.com>,
	"cohuck@redhat.com" <cohuck@redhat.com>,
	"eric.auger@redhat.com" <eric.auger@redhat.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"mjrosato@linux.ibm.com" <mjrosato@linux.ibm.com>,
	"chao.p.peng@linux.intel.com" <chao.p.peng@linux.intel.com>,
	"yi.y.sun@linux.intel.com" <yi.y.sun@linux.intel.com>,
	"peterx@redhat.com" <peterx@redhat.com>,
	"jasowang@redhat.com" <jasowang@redhat.com>,
	"shameerali.kolothum.thodi@huawei.com"
	<shameerali.kolothum.thodi@huawei.com>,
	"lulu@redhat.com" <lulu@redhat.com>,
	"suravee.suthikulpanit@amd.com" <suravee.suthikulpanit@amd.com>,
	"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-kselftest@vger.kernel.org"
	<linux-kselftest@vger.kernel.org>
Subject: Re: [PATCH 08/12] iommufd/device: Report supported hwpt_types
Date: Thu, 9 Mar 2023 23:45:05 -0800	[thread overview]
Message-ID: <ZArgAXMUpNjDfFgZ@Asurada-Nvidia> (raw)
In-Reply-To: <DS0PR11MB752928ECB7D395C601F14246C3BA9@DS0PR11MB7529.namprd11.prod.outlook.com>

On Fri, Mar 10, 2023 at 07:39:00AM +0000, Liu, Yi L wrote:
> External email: Use caution opening links or attachments
> 
> 
> > From: Nicolin Chen <nicolinc@nvidia.com>
> > Sent: Friday, March 10, 2023 3:10 PM
> >
> > On Fri, Mar 10, 2023 at 11:30:04AM +0800, Baolu Lu wrote:
> > > External email: Use caution opening links or attachments
> > >
> > >
> > > On 3/9/23 4:09 PM, Yi Liu wrote:
> > > > This provides a way for userspace to probe the supported hwpt data
> > > > types by kernel. Currently, kernel only supports
> > IOMMU_HWPT_TYPE_DEFAULT,
> > > > new types would be added per vendor drivers' extension.
> > > >
> > > > Userspace that wants to allocate hw_pagetable with user data should
> > check
> > > > this. While for the allocation without user data, no need for it. It is
> > > > supported by default.
> > > >
> > > > Co-developed-by: Nicolin Chen <nicolinc@nvidia.com>
> > > > Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
> > > > Signed-off-by: Yi Liu <yi.l.liu@intel.com>
> > > > ---
> > > >   drivers/iommu/iommufd/device.c          |  1 +
> > > >   drivers/iommu/iommufd/hw_pagetable.c    | 18 +++++++++++++++---
> > > >   drivers/iommu/iommufd/iommufd_private.h |  2 ++
> > > >   drivers/iommu/iommufd/main.c            |  2 +-
> > > >   include/uapi/linux/iommufd.h            |  8 ++++++++
> > > >   5 files changed, 27 insertions(+), 4 deletions(-)
> > > >
> > > > diff --git a/drivers/iommu/iommufd/device.c
> > b/drivers/iommu/iommufd/device.c
> > > > index 19cd6df46c6a..0328071dcac1 100644
> > > > --- a/drivers/iommu/iommufd/device.c
> > > > +++ b/drivers/iommu/iommufd/device.c
> > > > @@ -322,6 +322,7 @@ int iommufd_device_get_hw_info(struct
> > iommufd_ucmd *ucmd)
> > > >
> > > >       cmd->out_data_type = ops->driver_type;
> > > >       cmd->data_len = length;
> > > > +     cmd->out_hwpt_type_bitmap =
> > iommufd_hwpt_type_bitmaps[ops->driver_type];
> > > >
> > > >       rc = iommufd_ucmd_respond(ucmd, sizeof(*cmd));
> > > >
> > > > diff --git a/drivers/iommu/iommufd/hw_pagetable.c
> > b/drivers/iommu/iommufd/hw_pagetable.c
> > > > index 67facca98de1..160712256c64 100644
> > > > --- a/drivers/iommu/iommufd/hw_pagetable.c
> > > > +++ b/drivers/iommu/iommufd/hw_pagetable.c
> > > > @@ -173,6 +173,14 @@ static const size_t
> > iommufd_hwpt_alloc_data_size[] = {
> > > >       [IOMMU_HWPT_TYPE_DEFAULT] = 0,
> > > >   };
> > > >
> > > > +/*
> > > > + * bitmaps of supported hwpt types of by underlying iommu, indexed
> > > > + * by ops->driver_type which is one of enum iommu_hw_info_type.
> > > > + */
> > > > +const u64 iommufd_hwpt_type_bitmaps[] =  {
> > > > +     [IOMMU_HW_INFO_TYPE_DEFAULT] =
> > BIT_ULL(IOMMU_HWPT_TYPE_DEFAULT),
> > > > +};
> > >
> > > I am a bit confused here. Why do you need this array? What I read is
> > > that you want to convert ops->driver_type to a bit position in
> > > cmd->out_hwpt_type_bitmap.
> > >
> > > Am I getting it right?
> > >
> > > If so, why not just
> > >        cmd->out_hwpt_type_bitmap = BIT_ULL(ops->driver_type);
> > >
> > > ?
> 
> The reason is for future extensions. If future usages need different types
> of user data to allocate hwpt,  it can define a new type and corresponding
> data structure. Such new usages may be using new vendor-specific page
> tables or vendor-agnostic usages like Re-use of the KVM page table in
> the IOMMU mentioned by IOMMUFD basic series.
> 
> https://lore.kernel.org/kvm/0-v6-a196d26f289e+11787-iommufd_jgg@nvidia.com/
> 
> > A driver_type would be IOMMUFD_HW_INFO_TYPExx. What's inside the
> > BIT_ULL is IOMMUFD_HWPT_TYPE_*. It seems to get a bit confusing
> > after several rounds of renaming though. And they do seem to be
> > a bit of duplications at the actual values, at least for now.
> 
> For now, vendor drivers only have one stage-1 page table format.
> But in the future, it may change per new page table format
> introduction and new usage.

Yea, that's what I thought too. Yet, I am wondering a bit if
it'd be better to have an ops->hwpt_type in the drivers, v.s.
maintaining a potentially big chunk of the array here.

Thanks
Nic

  reply	other threads:[~2023-03-10  7:45 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-09  8:08 [PATCH 00/12] iommufd: Add nesting infrastructure Yi Liu
2023-03-09  8:08 ` [PATCH 01/12] iommu: Add new iommu op to create domains owned by userspace Yi Liu
2023-03-10  0:56   ` Jason Gunthorpe
2023-03-29 10:56     ` Liu, Yi L
2023-04-13  0:44     ` Nicolin Chen
2023-04-13 11:37       ` Jason Gunthorpe
2023-04-13 15:25         ` Nicolin Chen
2023-03-09  8:09 ` [PATCH 02/12] iommu: Add nested domain support Yi Liu
2023-03-17 10:25   ` Tian, Kevin
2023-03-18  8:34     ` Baolu Lu
2023-03-09  8:09 ` [PATCH 03/12] iommufd/hw_pagetable: Use domain_alloc_user op for domain allocation Yi Liu
2023-03-10  1:17   ` Baolu Lu
2023-03-09  8:09 ` [PATCH 04/12] iommufd: Pass parent hwpt and user_data to iommufd_hw_pagetable_alloc() Yi Liu
2023-03-10  2:10   ` Baolu Lu
2023-03-10 17:49     ` Jason Gunthorpe
2023-03-17 10:23   ` Tian, Kevin
2023-03-20 12:47     ` Jason Gunthorpe
2023-03-21  1:25       ` Tian, Kevin
2023-03-09  8:09 ` [PATCH 05/12] iommufd/hw_pagetable: Do not populate user-managed hw_pagetables Yi Liu
2023-03-10  2:25   ` Baolu Lu
2023-03-10  6:50     ` Nicolin Chen
2023-03-10 12:51       ` Baolu Lu
2023-03-23  8:06       ` Liu, Yi L
2023-03-23  8:12         ` Nicolin Chen
2023-03-23  8:28           ` Liu, Yi L
2023-03-10 15:29   ` Jason Gunthorpe
2023-03-10 23:31     ` Nicolin Chen
2023-03-09  8:09 ` [PATCH 06/12] iommufd: IOMMU_HWPT_ALLOC allocation with user data Yi Liu
2023-03-10  3:02   ` Baolu Lu
2023-03-23  8:11     ` Liu, Yi L
2023-03-09  8:09 ` [PATCH 07/12] iommufd: Add IOMMU_HWPT_INVALIDATE Yi Liu
2023-03-10  3:15   ` Baolu Lu
2023-03-14  4:12     ` Liu, Yi L
2023-03-10 17:50   ` Jason Gunthorpe
2023-03-14  4:14     ` Liu, Yi L
2023-03-14  4:18     ` Liu, Yi L
2023-03-20 12:48       ` Jason Gunthorpe
2023-03-09  8:09 ` [PATCH 08/12] iommufd/device: Report supported hwpt_types Yi Liu
2023-03-10  3:30   ` Baolu Lu
2023-03-10  7:10     ` Nicolin Chen
2023-03-10  7:39       ` Liu, Yi L
2023-03-10  7:45         ` Nicolin Chen [this message]
2023-03-10 17:52           ` Jason Gunthorpe
2023-03-23  8:08             ` Liu, Yi L
2023-03-09  8:09 ` [PATCH 09/12] iommufd/selftest: Add domain_alloc_user() support in iommu mock Yi Liu
2023-03-09  8:09 ` [PATCH 10/12] iommufd/selftest: Add coverage for IOMMU_HWPT_ALLOC with user data Yi Liu
2023-03-09  8:09 ` [PATCH 11/12] iommufd/selftest: Add IOMMU_TEST_OP_MD_CHECK_IOTLB test op Yi Liu
2023-03-09  8:09 ` [PATCH 12/12] iommufd/selftest: Add coverage for IOMMU_HWPT_INVALIDATE ioctl Yi Liu
2023-03-09 14:02 ` [PATCH 00/12] iommufd: Add nesting infrastructure Baolu Lu

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=ZArgAXMUpNjDfFgZ@Asurada-Nvidia \
    --to=nicolinc@nvidia.com \
    --cc=alex.williamson@redhat.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=chao.p.peng@linux.intel.com \
    --cc=cohuck@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=iommu@lists.linux.dev \
    --cc=jasowang@redhat.com \
    --cc=jgg@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=lulu@redhat.com \
    --cc=mjrosato@linux.ibm.com \
    --cc=peterx@redhat.com \
    --cc=robin.murphy@arm.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=yi.l.liu@intel.com \
    --cc=yi.y.sun@linux.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: link
Be 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.