From: Vasant Hegde <vasant.hegde@amd.com>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: iommu@lists.linux.dev, joro@8bytes.org, will@kernel.org,
robin.murphy@arm.com, suravee.suthikulpanit@amd.com,
yi.l.liu@intel.com, baolu.lu@linux.intel.com,
kevin.tian@intel.com, jacob.pan@linux.microsoft.com
Subject: Re: [PATCH v4 09/12] iommu/amd: Enhance amd_iommu_domain_alloc_user()
Date: Thu, 24 Oct 2024 12:08:50 +0530 [thread overview]
Message-ID: <f5fb2b8c-2f8d-4dff-85cb-39247e71db7e@amd.com> (raw)
In-Reply-To: <20241023124603.GC13306@ziepe.ca>
Jason,
On 10/23/2024 6:16 PM, Jason Gunthorpe wrote:
> On Wed, Oct 23, 2024 at 10:42:04AM +0000, Vasant Hegde wrote:
>> Previous patch enhanced core layer to check device PASID capability and
>> pass right flags to ops->domain_alloc_user().
>>
>> Enhance amd_iommu_domain_alloc_user() to allocate domain with
>> appropriate page table based on flags parameter.
>> - If flags is empty then allocate domain with default page table type.
>> This will eventually replace ops->domain_alloc().
>> For UNMANAGED domain, core will call this interface with flags=0. So
>> AMD driver will continue to allocate V1 page table.
>>
>> - If IOMMU_HWPT_ALLOC_PASID flags is passed then allocate domain with v2
>> page table.
>>
>> Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
>> ---
>> drivers/iommu/amd/iommu.c | 18 +++++++++++++++++-
>> 1 file changed, 17 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
>> index cb6a72564c23..cdc93c794eff 100644
>> --- a/drivers/iommu/amd/iommu.c
>> +++ b/drivers/iommu/amd/iommu.c
>> @@ -2403,10 +2403,26 @@ amd_iommu_domain_alloc_user(struct device *dev, u32 flags,
>>
>> {
>> unsigned int type = IOMMU_DOMAIN_UNMANAGED;
>> + const u32 supported_flags = IOMMU_HWPT_ALLOC_DIRTY_TRACKING |
>> + IOMMU_HWPT_ALLOC_PASID;
>>
>> - if ((flags & ~IOMMU_HWPT_ALLOC_DIRTY_TRACKING) || parent || user_data)
>> + if ((flags & ~supported_flags) || parent || user_data)
>> return ERR_PTR(-EOPNOTSUPP);
>>
>> + /* Allocate domain with default page table */
>> + if (!flags) {
>> + return do_iommu_domain_alloc(IOMMU_DOMAIN_DMA,
>> + dev, 0, amd_iommu_pgtable);
>> + }
>> +
>> + /* Allocate domain with v2 page table if IOMMU supports PASID. */
>> + if (flags & IOMMU_HWPT_ALLOC_PASID) {
>> + if (!amd_iommu_pasid_supported())
>> + return ERR_PTR(-EOPNOTSUPP);
>> +
>> + return do_iommu_domain_alloc(type, dev, flags, AMD_IOMMU_V2);
>> + }
>> +
>> return do_iommu_domain_alloc(type, dev, flags, AMD_IOMMU_V1);
>
> This should be more specific about what the dirty_tracking
> configuration needs:
Sure. Fixed it.
-Vasant
>
> if (flags & IOMMU_HWPT_ALLOC_DIRTY_TRACKING) {
> if (!amd_iommu_hd_support(iommu) ||
> (flags & IOMMU_HWPT_ALLOC_PASID))
> return ERR_PTR(-EOPNOTSUPP);
> return do_iommu_domain_alloc(type, dev, flags, AMD_IOMMU_V1);
> }
>
> if (flags & IOMMU_HWPT_ALLOC_PASID) {
> if (!amd_iommu_pasid_supported())
> return ERR_PTR(-EOPNOTSUPP);
> return do_iommu_domain_alloc(type, dev, flags, AMD_IOMMU_V2);
> }
>
> /* If nothing specific is required use the kernel commandline default */
> return do_iommu_domain_alloc(IOMMU_DOMAIN_DMA, dev, 0,
> amd_iommu_pgtable);
>
> Jason
next prev parent reply other threads:[~2024-10-24 6:39 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-23 10:41 [PATCH v4 00/12] iommu: Domain allocation enhancements Vasant Hegde
2024-10-23 10:41 ` [PATCH v4 01/12] iommu: Refactor __iommu_domain_alloc() Vasant Hegde
2024-10-23 10:41 ` [PATCH v4 02/12] iommu: Introduce iommu_paging_domain_alloc_flags() Vasant Hegde
2024-10-23 14:26 ` Robin Murphy
2024-10-23 14:44 ` Jason Gunthorpe
2024-10-25 8:22 ` Tian, Kevin
2024-10-23 10:41 ` [PATCH v4 03/12] iommu: Add new flag to explictly request PASID capable domain Vasant Hegde
2024-10-23 11:11 ` Baolu Lu
2024-10-25 8:23 ` Tian, Kevin
2024-10-23 10:41 ` [PATCH v4 04/12] iommu/arm-smmu-v3: Enhance domain_alloc_user() to allocate " Vasant Hegde
2024-10-23 12:23 ` Jason Gunthorpe
2024-10-25 8:23 ` Tian, Kevin
2024-10-23 10:42 ` [PATCH v4 05/12] iommu/amd: Add helper function to check GIOSUP/GTSUP Vasant Hegde
2024-10-23 10:42 ` [PATCH v4 06/12] iommu/amd: Move V2 page table support check to early_amd_iommu_init() Vasant Hegde
2024-10-23 10:42 ` [PATCH v4 07/12] iommu/amd: Separate page table setup from domain allocation Vasant Hegde
2024-10-23 10:42 ` [PATCH v4 08/12] iommu/amd: Pass page table type as param to pdom_setup_pgtable() Vasant Hegde
2024-10-23 10:42 ` [PATCH v4 09/12] iommu/amd: Enhance amd_iommu_domain_alloc_user() Vasant Hegde
2024-10-23 12:46 ` Jason Gunthorpe
2024-10-24 6:38 ` Vasant Hegde [this message]
2024-10-25 8:24 ` Tian, Kevin
2024-10-23 10:42 ` [PATCH v4 10/12] iommu/amd: Implement global identity domain Vasant Hegde
2024-10-25 8:24 ` Tian, Kevin
2024-10-23 10:42 ` [PATCH v4 11/12] iommu: Put domain allocation in __iommu_group_alloc_blocking_domain() Vasant Hegde
2024-10-25 8:25 ` Tian, Kevin
2024-10-23 10:42 ` [PATCH v4 12/12] iommu: Create __iommu_alloc_identity_domain() Vasant Hegde
2024-10-25 8:25 ` Tian, Kevin
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=f5fb2b8c-2f8d-4dff-85cb-39247e71db7e@amd.com \
--to=vasant.hegde@amd.com \
--cc=baolu.lu@linux.intel.com \
--cc=iommu@lists.linux.dev \
--cc=jacob.pan@linux.microsoft.com \
--cc=jgg@ziepe.ca \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=robin.murphy@arm.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=will@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: 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.