All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Suthikulpanit, Suravee" <suravee.suthikulpanit@amd.com>
To: "guanghuifeng@linux.alibaba.com" <guanghuifeng@linux.alibaba.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,
	vasant.hegde@amd.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 08/24] iommu/amd: Introduce Reset vMMIO Command
Date: Thu, 3 Sep 2026 05:33:06 +0700	[thread overview]
Message-ID: <9448b225-c047-4b99-8e05-bbe706cb348f@amd.com> (raw)
In-Reply-To: <0bc1f0c9-b52b-4369-83f1-822c67bf1151@linux.alibaba.com>



On 8/19/2026 3:34 PM, guanghuifeng@linux.alibaba.com wrote:
> 
> 在 2026/7/27 21:28, Suravee Suthikulpanit 写道:
>> Introduce new IOMMU commands for vIOMMU to reset
>> virtualized MMIO registers of a particular guest.
>>
>> Reviewed-by: Weinan Liu <wnliu@google.com>
>> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
>> ---
>>   drivers/iommu/amd/amd_iommu.h       |  1 +
>>   drivers/iommu/amd/amd_iommu_types.h |  1 +
>>   drivers/iommu/amd/iommu.c           | 22 ++++++++++++++++++++++
>>   drivers/iommu/amd/iommufd.c         |  3 +++
>>   4 files changed, 27 insertions(+)
>>
>> diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/ 
>> amd_iommu.h
>> index 044bc9a634a1..2ce207529ea0 100644
>> --- a/drivers/iommu/amd/amd_iommu.h
>> +++ b/drivers/iommu/amd/amd_iommu.h
>> @@ -11,6 +11,7 @@
>>   #include "amd_iommu_types.h"
>> +void iommu_reset_vmmio(struct amd_iommu *iommu, u16 gid);
>>   extern int amd_iommu_evtlog_size;
>>   extern int amd_iommu_pprlog_size;
>> diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/ 
>> amd_iommu_types.h
>> index cc7049bbfa14..44fa1d6c64d6 100644
>> --- a/drivers/iommu/amd/amd_iommu_types.h
>> +++ b/drivers/iommu/amd/amd_iommu_types.h
>> @@ -218,6 +218,7 @@
>>   #define CMD_INV_IRT        0x05
>>   #define CMD_COMPLETE_PPR    0x07
>>   #define CMD_INV_ALL        0x08
>> +#define CMD_RESET_VMMIO        0x0A
>>   #define CMD_COMPL_WAIT_STORE_MASK    0x01
>>   #define CMD_COMPL_WAIT_INT_MASK        0x02
>> diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
>> index 73fba8be40d1..6f5ecc48f4ad 100644
>> --- a/drivers/iommu/amd/iommu.c
>> +++ b/drivers/iommu/amd/iommu.c
>> @@ -1428,6 +1428,18 @@ static void build_inv_irt(struct iommu_cmd 
>> *cmd, u16 devid)
>>       CMD_SET_TYPE(cmd, CMD_INV_IRT);
>>   }
>> +static void build_reset_vmmio(struct iommu_cmd *cmd, u16 gid,
>> +                  bool vcmd, bool all)
>> +{
>> +    memset(cmd, 0, sizeof(*cmd));
>> +    cmd->data[0] = gid;
>> +    if (all)
>> +        cmd->data[0] |= (1 << 28);
>> +    if (vcmd)
>> +        cmd->data[0] |= (1 << 31);
>> +    CMD_SET_TYPE(cmd, CMD_RESET_VMMIO);
>> +}
> 
> This looks like a bug. Per the AMD IOMMU Specification (Rev 3.10,
> Section 2.4.10), the 'All' bit of the RESET_VMMIO command is at bit
> position 27, not bit 28. Writing bit 28 targets a reserved field and
> may either trigger an ILLEGAL_COMMAND_ERROR or silently fail to reset
> the full vIOMMU context. This should be:
> 
>      if (all)
>          cmd->data[0] |= (1 << 27);

Actually, this is a typo in the spec. AMD will update the spec in the 
next revision. The correct bit is 28.

>> +
>>   /*
>>    * Writes the command to the IOMMUs command buffer and informs the
>>    * hardware about the new command.
>> @@ -1668,6 +1680,16 @@ void amd_iommu_flush_all_caches(struct 
>> amd_iommu *iommu)
>>       }
>>   }
>> +void iommu_reset_vmmio(struct amd_iommu *iommu, u16 gid)
>> +{
>> +    struct iommu_cmd cmd;
>> +
>> +    build_reset_vmmio(&cmd, gid, 1, 1);
>> +
>> +    iommu_queue_command(iommu, &cmd);
>> +    amd_iommu_completion_wait(iommu);
>> +}
>> +
> 
> Both iommu_queue_command() and amd_iommu_completion_wait() return
> status, but iommu_reset_vmmio() returns void and ignores them. A
> failed reset during vIOMMU init would go unnoticed. Consider
> propagating the error to the caller.

I'll handle the return of iommu_queue_command() in iommu_reset_vmmio(). 
The amd_iommu_completion_wait() does not normally handle error in this 
driver. This needs a separate clean up.

Thanks,
Suravee


  reply	other threads:[~2026-09-02 22:33 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
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 [this message]
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=9448b225-c047-4b99-8e05-bbe706cb348f@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=guanghuifeng@linux.alibaba.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.