From: "Suthikulpanit, Suravee" <suravee.suthikulpanit@amd.com>
To: Vasant Hegde <vasant.hegde@amd.com>,
linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
joro@8bytes.org, jgg@nvidia.com
Cc: yi.l.liu@intel.com, kevin.tian@intel.com, nicolinc@nvidia.com,
jon.grimm@amd.com, santosh.shukla@amd.com, Sairaj.K@amd.com,
jay.chen@amd.com, wvw@google.com, wnliu@google.com,
dantuluris@google.com, chriscli@google.com, kpsingh@google.com,
alejandro.j.jimenez@oracle.com, joao.m.martins@oracle.com
Subject: Re: [PATCH 05/24] iommu/amd: Allocate Guest IDs for IOMMUFD vIOMMU instances
Date: Wed, 2 Sep 2026 14:49:21 +0700 [thread overview]
Message-ID: <63fe2fd5-61aa-4e69-a0b0-59b67038f6b5@amd.com> (raw)
In-Reply-To: <7a9a2703-d4de-40da-8724-ae9ae79c358c@amd.com>
On 8/10/2026 4:21 PM, Vasant Hegde wrote:
> Suravee,
>
> On 7/27/2026 6:58 PM, Suravee Suthikulpanit wrote:
>> .....
>> diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_iommu_types.h
>> index b5327bf6814b..00f964d5b149 100644
>> --- a/drivers/iommu/amd/amd_iommu_types.h
>> +++ b/drivers/iommu/amd/amd_iommu_types.h
>> @@ -21,6 +21,7 @@
>> #include <linux/iommufd.h>
>> #include <linux/irqreturn.h>
>> #include <linux/generic_pt/iommu.h>
>> +#include <linux/idr.h>
>>
>> #include <uapi/linux/iommufd.h>
>>
>> @@ -413,6 +414,9 @@
>>
>> #define MAX_DOMAIN_ID 65536
>>
>> +/* For vIOMMU, the GID is 16-bit. */
>> +#define VIOMMU_MAX_GID 0xFFFF
>> +
>> /* Timeout stuff */
>> #define LOOP_TIMEOUT 100000
>> #define MMIO_STATUS_TIMEOUT 2000000
>> @@ -509,6 +513,7 @@ struct amd_iommu_viommu {
>> struct iommufd_viommu core;
>> struct protection_domain *parent; /* nest parent domain for this viommu */
>> struct list_head pdom_list; /* For protection_domain->viommu_list */
>> + u16 gid; /* Guest ID for the vIOMMU */
>>
>> /*
>> * Per-vIOMMU guest domain ID to host domain ID mapping.
>> @@ -768,6 +773,9 @@ struct amd_iommu {
>> /* IOPF support */
>> struct iopf_queue *iopf_queue;
>> unsigned char iopfq_name[32];
>> +
>> + struct ida gid_ida; /* guest IDs for this IOMMU */
>> + bool gid_ida_inited;
>
> Redundant variable? May be remove gid_ida_inited.
Ok
>
>> };
>>
>> static inline struct amd_iommu *dev_to_amd_iommu(struct device *dev)
>> diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
>> index 50f26c8123f3..73fba8be40d1 100644
>> --- a/drivers/iommu/amd/iommu.c
>> +++ b/drivers/iommu/amd/iommu.c
>> @@ -252,6 +252,25 @@ static inline bool pdom_is_sva_capable(struct protection_domain *pdom)
>> return pdom_is_v2_pgtbl_mode(pdom) || pdom_is_in_pt_mode(pdom);
>> }
>>
>> +int amd_iommu_gid_alloc(struct amd_iommu *iommu)
>> +{
>> + int ret = ida_alloc_range(&iommu->gid_ida, 1, VIOMMU_MAX_GID, GFP_KERNEL);
>
>
> We know that top half is reserved for secure vIOMMU and we have to construct
> that differently. May be restrict max GID to 0x7FFF ?
Ok
>> .......
>> diff --git a/drivers/iommu/amd/iommufd.c b/drivers/iommu/amd/iommufd.c
>> index eee29c26169a..ec3c14e18c7b 100644
>> --- a/drivers/iommu/amd/iommufd.c
>> +++ b/drivers/iommu/amd/iommufd.c
>> @@ -43,13 +43,37 @@ size_t amd_iommufd_get_viommu_size(struct device *dev, enum iommu_viommu_type vi
>> int amd_iommufd_viommu_init(struct iommufd_viommu *viommu, struct iommu_domain *parent,
>> const struct iommu_user_data *user_data)
>> {
>> + int ret;
>> unsigned long flags;
>> + struct iommu_viommu_amd data = {};
>> struct protection_domain *pdom = to_pdomain(parent);
>> struct amd_iommu_viommu *aviommu = container_of(viommu, struct amd_iommu_viommu, core);
>> + struct amd_iommu *iommu = container_of(viommu->iommu_dev, struct amd_iommu, iommu);
>>
>> xa_init_flags(&aviommu->gdomid_array, XA_FLAGS_ALLOC1);
>> aviommu->parent = pdom;
>>
>> + if (!user_data)
>> + return -EINVAL;
>> +
>> + ret = iommu_copy_struct_from_user(&data, user_data,
>> + IOMMU_VIOMMU_TYPE_AMD,
>> + out_vfmmio_mmap_offset);
>> + if (ret)
>> + return ret;
>
> May be move this before "xa_init_flags" ?
>
Ok
>> +
>> + ret = amd_iommu_gid_alloc(iommu);
>
> Looks like you missed initializing "iommu->gid_ida" ?
>
It's being initialized at host IOMMU bring-up, from amd_viommu_init() in
init.c (early_amd_iommu / per-IOMMU setup).
>> + if (ret < 0)
>> + goto err_gid;
>> + aviommu->gid = ret;
>> + pr_debug("%s: gid=%#x", __func__, aviommu->gid);
>
> Redundat as you already have pr_debug inside amd_iommu_gid_alloc()?
>
> -Vasant
>
Ok.
I'll update these in V5.
Thanks,
Suravee
next prev parent reply other threads:[~2026-09-02 7:49 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-27 13:28 [PATCH v4 00/24] iommu/amd: Introduce AMD Hardware-accelerated Virtualized IOMMU (vIOMMU) Support Suravee Suthikulpanit
2026-07-27 13:28 ` [PATCH 01/24] iommu/amd: Make amd_iommu_completion_wait() non-static Suravee Suthikulpanit
2026-08-05 17:01 ` Vasant Hegde
2026-09-01 7:56 ` Suthikulpanit, Suravee
2026-07-27 13:28 ` [PATCH 02/24] iommu/amd: Introduce vIOMMU-specific events and event Suravee Suthikulpanit
2026-08-10 7:12 ` Vasant Hegde
2026-09-01 8:28 ` Suthikulpanit, Suravee
2026-08-19 8:17 ` guanghuifeng
2026-09-01 14:21 ` Suthikulpanit, Suravee
2026-07-27 13:28 ` [PATCH 03/24] iommu/amd: Detect and initialize AMD vIOMMU feature Suravee Suthikulpanit
2026-08-10 8:13 ` Vasant Hegde
2026-09-01 16:32 ` Suthikulpanit, Suravee
2026-07-27 13:28 ` [PATCH 04/24] iommu/amd: Introduce IOMMUFD vIOMMU support for AMD Suravee Suthikulpanit
2026-08-24 17:24 ` Jason Gunthorpe
2026-07-27 13:28 ` [PATCH 05/24] iommu/amd: Allocate Guest IDs for IOMMUFD vIOMMU instances Suravee Suthikulpanit
2026-08-10 9:21 ` Vasant Hegde
2026-09-02 7:49 ` Suthikulpanit, Suravee [this message]
2026-08-24 17:24 ` Jason Gunthorpe
2026-09-02 7:50 ` Suthikulpanit, Suravee
2026-07-27 13:28 ` [PATCH 06/24] iommu/amd: Map vIOMMU VF and VF Control MMIO BARs Suravee Suthikulpanit
2026-08-10 10:00 ` Vasant Hegde
2026-09-02 12:16 ` Suthikulpanit, Suravee
2026-08-19 13:18 ` guanghuifeng
2026-09-02 12:16 ` Suthikulpanit, Suravee
2026-07-27 13:28 ` [PATCH 07/24] iommu/amd: Add support for AMD vIOMMU VF MMIO region Suravee Suthikulpanit
2026-08-10 10:49 ` Vasant Hegde
2026-08-24 17:24 ` Jason Gunthorpe
2026-07-27 13:28 ` [PATCH 08/24] iommu/amd: Introduce Reset vMMIO Command Suravee Suthikulpanit
2026-08-19 8:34 ` guanghuifeng
2026-09-02 22:33 ` Suthikulpanit, Suravee
2026-07-27 13:28 ` [PATCH 09/24] iommu/amd: Introduce and map vIOMMU private IPA region Suravee Suthikulpanit
2026-08-24 17:24 ` Jason Gunthorpe
2026-07-27 13:28 ` [PATCH 10/24] iommu/amd: Pass iommu to device_flush_dte() Suravee Suthikulpanit
2026-08-10 11:07 ` Vasant Hegde
2026-08-24 17:24 ` Jason Gunthorpe
2026-07-27 13:29 ` [PATCH 11/24] iommu/amd: Export amd_iommu_alloc_dev_data() helper Suravee Suthikulpanit
2026-08-24 17:24 ` Jason Gunthorpe
2026-07-27 13:29 ` [PATCH 12/24] iommu/amd: Pass iommu and devid to amd_iommu_make_clear_dte() Suravee Suthikulpanit
2026-08-24 17:24 ` Jason Gunthorpe
2026-07-27 13:29 ` [PATCH 13/24] iommu/amd: Assign IOMMU Private Address domain to IOMMU Suravee Suthikulpanit
2026-08-24 17:24 ` Jason Gunthorpe
2026-07-27 13:29 ` [PATCH 14/24] iommu/amd: Add per-VM private IPA alloc/map helpers Suravee Suthikulpanit
2026-08-24 17:24 ` Jason Gunthorpe
2026-07-27 13:29 ` [PATCH 15/24] iommu/amd: Add helper functions to manage DevID / DomID mapping tables Suravee Suthikulpanit
2026-08-19 13:30 ` guanghuifeng
2026-09-03 0:41 ` Suthikulpanit, Suravee
2026-07-27 13:29 ` [PATCH 16/24] iommu/amd: Introduce IOMMUFD vDevice support for AMD Suravee Suthikulpanit
2026-08-19 13:34 ` guanghuifeng
2026-09-03 2:41 ` Suthikulpanit, Suravee
2026-08-24 17:24 ` Jason Gunthorpe
2026-07-27 13:29 ` [PATCH 17/24] iommu/amd: Introduce helper function for updating domain ID mapping table Suravee Suthikulpanit
2026-08-19 10:45 ` guanghuifeng
2026-09-03 3:26 ` Suthikulpanit, Suravee
2026-07-27 13:29 ` [PATCH 18/24] iommu/amd: Introduce helper function for updating device " Suravee Suthikulpanit
2026-08-10 15:17 ` Vasant Hegde
2026-09-03 3:19 ` Suthikulpanit, Suravee
2026-08-19 10:26 ` guanghuifeng
2026-07-27 13:29 ` [PATCH 19/24] iommu/amd: Add per-segment translate device ID pool Suravee Suthikulpanit
2026-07-27 13:29 ` [PATCH 20/24] iommu/amd: Reserve translate-device-id for PCI requestor aliases Suravee Suthikulpanit
2026-07-27 13:29 ` [PATCH 21/24] iommu/amd: Add translation DTE and VFctrl TransDevID helpers Suravee Suthikulpanit
2026-07-27 13:29 ` [PATCH 22/24] iommu/amd: Add translate-device-id alloc/free with vIOMMU owner Suravee Suthikulpanit
2026-07-27 13:29 ` [PATCH 23/24] iommu/amd: Assign per-vIOMMU translate device ID Suravee Suthikulpanit
2026-08-19 10:18 ` guanghuifeng
2026-07-27 13:29 ` [PATCH 24/24] iommu/amd: Relocate vIOMMU translate-device-id on PCI reserve Suravee Suthikulpanit
2026-08-19 9:42 ` guanghuifeng
2026-09-03 3:56 ` Suthikulpanit, Suravee
2026-08-11 7:18 ` [PATCH v4 00/24] iommu/amd: Introduce AMD Hardware-accelerated Virtualized IOMMU (vIOMMU) Support Tian, Kevin
2026-08-24 17:24 ` Jason Gunthorpe
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=63fe2fd5-61aa-4e69-a0b0-59b67038f6b5@amd.com \
--to=suravee.suthikulpanit@amd.com \
--cc=Sairaj.K@amd.com \
--cc=alejandro.j.jimenez@oracle.com \
--cc=chriscli@google.com \
--cc=dantuluris@google.com \
--cc=iommu@lists.linux.dev \
--cc=jay.chen@amd.com \
--cc=jgg@nvidia.com \
--cc=joao.m.martins@oracle.com \
--cc=jon.grimm@amd.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kpsingh@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nicolinc@nvidia.com \
--cc=santosh.shukla@amd.com \
--cc=vasant.hegde@amd.com \
--cc=wnliu@google.com \
--cc=wvw@google.com \
--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.