From: Nicolin Chen <nicolinc@nvidia.com>
To: "jgg@nvidia.com" <jgg@nvidia.com>, "Tian, Kevin" <kevin.tian@intel.com>
Cc: "corbet@lwn.net" <corbet@lwn.net>,
"will@kernel.org" <will@kernel.org>,
"bagasdotme@gmail.com" <bagasdotme@gmail.com>,
"robin.murphy@arm.com" <robin.murphy@arm.com>,
"joro@8bytes.org" <joro@8bytes.org>,
"thierry.reding@gmail.com" <thierry.reding@gmail.com>,
"vdumpa@nvidia.com" <vdumpa@nvidia.com>,
"jonathanh@nvidia.com" <jonathanh@nvidia.com>,
"shuah@kernel.org" <shuah@kernel.org>,
"jsnitsel@redhat.com" <jsnitsel@redhat.com>,
"nathan@kernel.org" <nathan@kernel.org>,
"peterz@infradead.org" <peterz@infradead.org>,
"Liu, Yi L" <yi.l.liu@intel.com>,
"mshavit@google.com" <mshavit@google.com>,
"praan@google.com" <praan@google.com>,
"zhangzekun11@huawei.com" <zhangzekun11@huawei.com>,
"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
"linux-kselftest@vger.kernel.org"
<linux-kselftest@vger.kernel.org>,
"patches@lists.linux.dev" <patches@lists.linux.dev>,
"mochs@nvidia.com" <mochs@nvidia.com>,
"alok.a.tiwari@oracle.com" <alok.a.tiwari@oracle.com>,
"vasant.hegde@amd.com" <vasant.hegde@amd.com>
Subject: Re: [PATCH v4 11/23] iommufd/viommu: Add IOMMUFD_CMD_HW_QUEUE_ALLOC ioctl
Date: Thu, 15 May 2025 21:05:08 -0700 [thread overview]
Message-ID: <aCa5dLKso2WXliut@Asurada-Nvidia> (raw)
In-Reply-To: <BN9PR11MB5276C2D25DCF30A7367EFD168C93A@BN9PR11MB5276.namprd11.prod.outlook.com>
On Fri, May 16, 2025 at 03:52:16AM +0000, Tian, Kevin wrote:
> > From: Nicolin Chen <nicolinc@nvidia.com>
> > Sent: Friday, May 16, 2025 11:17 AM
> >
> > On Fri, May 16, 2025 at 02:49:44AM +0000, Tian, Kevin wrote:
> > > > From: Nicolin Chen <nicolinc@nvidia.com>
> > > > Sent: Friday, May 16, 2025 2:45 AM
> > > >
> > > > On Thu, May 15, 2025 at 06:30:27AM +0000, Tian, Kevin wrote:
> > > > > > From: Nicolin Chen <nicolinc@nvidia.com>
> > > > > > Sent: Friday, May 9, 2025 11:03 AM
> > > > > >
> > > > > > +
> > > > > > +/**
> > > > > > + * struct iommu_hw_queue_alloc - ioctl(IOMMU_HW_QUEUE_ALLOC)
> > > > > > + * @size: sizeof(struct iommu_hw_queue_alloc)
> > > > > > + * @flags: Must be 0
> > > > > > + * @viommu_id: Virtual IOMMU ID to associate the HW queue with
> > > > > > + * @type: One of enum iommu_hw_queue_type
> > > > > > + * @index: The logical index to the HW queue per virtual IOMMU for
> > a
> > > > > > multi-queue
> > > > > > + * model
> > > > >
> > > > > I'm thinking of an alternative way w/o having the user to assign index
> > > > > and allowing the driver to poke object dependency (next patch).
> > > > >
> > > > > Let's say the index is internally assigned by the driver. so this cmd is
> > > > > just for allowing a hw queue and it's the driver to decide the allocation
> > > > > policy, e.g. in ascending order.
> > > > >
> > > > > Introduce a new flag in viommu_ops to indicate to core that the
> > > > > new hw queue should hold a reference to the previous hw queue.
> > > > >
> > > > > core maintains a last_queue field in viommu. Upon success return
> > > > > from @hw_queue_alloc() the core increments the users refcnt of
> > > > > last_queue, records the dependency in iommufd_hw_queue struct,
> > > > > and update viommu->last_queue.
> > > > >
> > > > > Then the destroy order is naturally guaranteed.
> > > >
> > > > I have thought about that too. It's nice that the core can easily
> > > > maintain the dependency for the driver.
> > > >
> > > > But there would still need an out_index to mark each dynamically
> > > > allocated queue. So VMM would know where it should map the queue.
> > > >
> > > > For example, if VMM wants to allocate a queue at its own index=1
> > > > without allocating index=0 first, kernel cannot fail that as VMM
> > > > doesn't provide the index. The only way left for kernel would be
> > > > to output the allocated queue with index=0 and then wish VMM can
> > > > validate it, which doesn't sound safe..
> > > >
> > >
> > > VMM's index is virtual which could be mapped to whatever queue
> > > object created at its own disposal.
> > >
> > > the uAPI just requires VMM to remember a sequential list of allocated
> > > queue objects and destroy them in reverse order of allocation, instead
> > > of in the reverse order of virtual indexes.
> >
> > But that's not going to work for VCMDQ.
> >
> > VINTF mmaps only a single page that controls multiple queues. And
> > all queues have to be mapped correctly between HW and VM indexes.
> > Otherwise, it won't work if VMM maps:
> >
> > HW-level VINTF1 LVCMDQ0 <==> VM-level VINTF0 LVCMDQ1
> > HW-level VINTF1 LVCMDQ1 <==> VM-level VINTF0 LVCMDQ0
> >
> > So, one way or another, kernel has to ensure the static mappings
> > of the indexes. And I think it's safer in the way that VMM tells
> > what index to allocate..
> >
>
> Okay, that's a valid point.
>
> But hey, we are already adding various restrictions to the uAPI
> about dependency, contiguity, etc. which the VMM should conform
> to. What hurts if we further say that the VMM should allocate
> virtual index in an ascending order along with hw queue allocation?
You mean adding another flag to manage the dependency in the core,
right?
I talked with Jason offline when adding that depend API. He didn't
want it to be in the core, saying that is a driver thing.
But that was before we added pin and contiguity, which he doesn't
really enjoy being in the core either.
So, yea, I think you have a point here..
@Jason?
Thanks
Nicolin
next prev parent reply other threads:[~2025-05-16 4:08 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-09 3:02 [PATCH v4 00/23] iommufd: Add vIOMMU infrastructure (Part-4 HW QUEUE) Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 01/23] iommufd/viommu: Add driver-allocated vDEVICE support Nicolin Chen
2025-05-15 5:42 ` Tian, Kevin
2025-05-15 16:55 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 02/23] iommu: Pass in a driver-level user data structure to viommu_alloc op Nicolin Chen
2025-05-15 5:44 ` Tian, Kevin
2025-05-09 3:02 ` [PATCH v4 03/23] iommufd/viommu: Allow driver-specific user data for a vIOMMU object Nicolin Chen
2025-05-15 5:45 ` Tian, Kevin
2025-05-15 16:56 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 04/23] iommu: Add iommu_copy_struct_to_user helper Nicolin Chen
2025-05-15 5:46 ` Tian, Kevin
2025-05-09 3:02 ` [PATCH v4 05/23] iommufd/driver: Let iommufd_viommu_alloc helper save ictx to viommu->ictx Nicolin Chen
2025-05-14 17:06 ` Jason Gunthorpe
2025-05-16 2:05 ` Nicolin Chen
2025-05-16 13:28 ` Jason Gunthorpe
2025-05-16 20:56 ` Nicolin Chen
2025-05-26 13:30 ` Jason Gunthorpe
2025-05-27 18:41 ` Nicolin Chen
2025-05-30 18:27 ` Jason Gunthorpe
2025-05-30 18:34 ` Nicolin Chen
2025-05-15 5:48 ` Tian, Kevin
2025-05-09 3:02 ` [PATCH v4 06/23] iommufd/driver: Add iommufd_struct_destroy to revert iommufd_viommu_alloc Nicolin Chen
2025-05-14 18:26 ` Jason Gunthorpe
2025-05-14 19:21 ` Nicolin Chen
2025-05-15 12:49 ` Jason Gunthorpe
2025-05-15 16:55 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 07/23] iommufd/selftest: Support user_data in mock_viommu_alloc Nicolin Chen
2025-05-15 5:49 ` Tian, Kevin
2025-05-09 3:02 ` [PATCH v4 08/23] iommufd/selftest: Add covearge for viommu data Nicolin Chen
2025-05-15 5:50 ` Tian, Kevin
2025-05-09 3:02 ` [PATCH v4 09/23] iommufd: Abstract iopt_pin_pages and iopt_unpin_pages helpers Nicolin Chen
2025-05-14 18:45 ` Jason Gunthorpe
2025-05-15 5:54 ` Tian, Kevin
2025-05-09 3:02 ` [PATCH v4 10/23] iommufd/viommu: Introduce IOMMUFD_OBJ_HW_QUEUE and its related struct Nicolin Chen
2025-05-15 5:58 ` Tian, Kevin
2025-05-15 17:14 ` Nicolin Chen
2025-05-16 2:30 ` Nicolin Chen
2025-05-16 2:59 ` Tian, Kevin
2025-05-19 17:05 ` Vasant Hegde
2025-05-15 15:39 ` Jason Gunthorpe
2025-05-15 17:17 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 11/23] iommufd/viommu: Add IOMMUFD_CMD_HW_QUEUE_ALLOC ioctl Nicolin Chen
2025-05-15 6:30 ` Tian, Kevin
2025-05-15 18:44 ` Nicolin Chen
2025-05-16 2:49 ` Tian, Kevin
2025-05-16 3:16 ` Nicolin Chen
2025-05-16 3:52 ` Tian, Kevin
2025-05-16 4:05 ` Nicolin Chen [this message]
2025-05-18 15:19 ` Nicolin Chen
2025-05-15 16:06 ` Jason Gunthorpe
2025-05-15 18:16 ` Nicolin Chen
2025-05-15 18:59 ` Jason Gunthorpe
2025-05-15 20:32 ` Nicolin Chen
2025-05-16 13:26 ` Jason Gunthorpe
2025-05-16 2:42 ` Tian, Kevin
2025-05-16 13:25 ` Jason Gunthorpe
2025-05-19 17:29 ` Vasant Hegde
2025-05-19 18:14 ` Nicolin Chen
2025-05-20 8:38 ` Vasant Hegde
2025-05-23 1:51 ` Tian, Kevin
2025-05-26 13:29 ` Jason Gunthorpe
2025-05-09 3:02 ` [PATCH v4 12/23] iommufd/driver: Add iommufd_hw_queue_depend/undepend() helpers Nicolin Chen
2025-05-15 16:12 ` Jason Gunthorpe
2025-05-16 4:51 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 13/23] iommufd/selftest: Add coverage for IOMMUFD_CMD_HW_QUEUE_ALLOC Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 14/23] iommufd: Add mmap interface Nicolin Chen
2025-05-09 14:13 ` kernel test robot
2025-05-09 19:30 ` Nicolin Chen
2025-05-15 6:41 ` Tian, Kevin
2025-05-15 16:47 ` Jason Gunthorpe
2025-05-16 4:08 ` Tian, Kevin
2025-05-16 13:29 ` Jason Gunthorpe
2025-05-16 17:42 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 15/23] iommufd/selftest: Add coverage for the new " Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 16/23] Documentation: userspace-api: iommufd: Update HW QUEUE Nicolin Chen
2025-05-15 6:42 ` Tian, Kevin
2025-05-15 16:58 ` Jason Gunthorpe
2025-05-09 3:02 ` [PATCH v4 17/23] iommu/arm-smmu-v3-iommufd: Add vsmmu_alloc impl op Nicolin Chen
2025-05-15 7:52 ` Tian, Kevin
2025-05-15 17:19 ` Jason Gunthorpe
2025-05-15 17:32 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 18/23] iommu/arm-smmu-v3-iommufd: Support implementation-defined hw_info Nicolin Chen
2025-05-15 7:54 ` Tian, Kevin
2025-05-15 17:17 ` Jason Gunthorpe
2025-05-15 18:52 ` Nicolin Chen
2025-05-15 18:56 ` Jason Gunthorpe
2025-05-15 19:21 ` Nicolin Chen
2025-05-15 19:23 ` Jason Gunthorpe
2025-05-15 20:17 ` Nicolin Chen
2025-05-16 13:22 ` Jason Gunthorpe
2025-05-16 17:34 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 19/23] iommu/tegra241-cmdqv: Use request_threaded_irq Nicolin Chen
2025-05-15 7:57 ` Tian, Kevin
2025-05-15 17:21 ` Jason Gunthorpe
2025-05-09 3:02 ` [PATCH v4 20/23] iommu/tegra241-cmdqv: Simplify deinit flow in tegra241_cmdqv_remove_vintf() Nicolin Chen
2025-05-15 8:00 ` Tian, Kevin
2025-05-15 17:27 ` Jason Gunthorpe
2025-05-09 3:02 ` [PATCH v4 21/23] iommu/tegra241-cmdqv: Do not statically map LVCMDQs Nicolin Chen
2025-05-15 8:20 ` Tian, Kevin
2025-05-15 17:03 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 22/23] iommu/tegra241-cmdqv: Add user-space use support Nicolin Chen
2025-05-15 8:27 ` Tian, Kevin
2025-05-15 17:13 ` Nicolin Chen
2025-05-16 4:00 ` Tian, Kevin
2025-05-16 4:10 ` Nicolin Chen
2025-05-09 3:02 ` [PATCH v4 23/23] iommu/tegra241-cmdqv: Add IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQV support Nicolin Chen
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=aCa5dLKso2WXliut@Asurada-Nvidia \
--to=nicolinc@nvidia.com \
--cc=alok.a.tiwari@oracle.com \
--cc=bagasdotme@gmail.com \
--cc=corbet@lwn.net \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=jonathanh@nvidia.com \
--cc=joro@8bytes.org \
--cc=jsnitsel@redhat.com \
--cc=kevin.tian@intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mochs@nvidia.com \
--cc=mshavit@google.com \
--cc=nathan@kernel.org \
--cc=patches@lists.linux.dev \
--cc=peterz@infradead.org \
--cc=praan@google.com \
--cc=robin.murphy@arm.com \
--cc=shuah@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=vasant.hegde@amd.com \
--cc=vdumpa@nvidia.com \
--cc=will@kernel.org \
--cc=yi.l.liu@intel.com \
--cc=zhangzekun11@huawei.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.