[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3b8fb87d-8257-44a6-8098-cf2c267087ad@amd.com>
Date: Tue, 7 Jan 2025 14:20:48 +0530
From: "Srivastava, Dheeraj Kumar" <dheerajkumar.srivastava@....com>
To: Alejandro Jimenez <alejandro.j.jimenez@...cle.com>,
iommu@...ts.linux.dev, linux-kernel@...r.kernel.org
Cc: joro@...tes.org, suravee.suthikulpanit@....com, vasant.hegde@....com,
will@...nel.org, jgg@...dia.com, joao.m.martins@...cle.com,
boris.ostrovsky@...cle.com
Subject: Re: [PATCH 1/1] iommu/amd: Preserve default DTE fields when updating
Host Page Table Root
Hi,
On 1/7/2025 12:44 AM, Alejandro Jimenez wrote:
> When updating the page table root field on the DTE, avoid overwriting any
> bits that are already set. The earlier call to make_clear_dte() writes
> default values that all DTEs must have set (currently DTE[V]), and those
> must be preserved.
>
> Currently this doesn't cause problems since the page table root update is
> the first field that is set after make_clear_dte() is called, and
> DTE_FLAG_V is set again later along with the permission bits (IR/IW).
> Remove this redundant assignment too.
>
> Fixes: fd5dff9de4be ("iommu/amd: Modify set_dte_entry() to use 256-bit DTE helpers")
> Signed-off-by: Alejandro Jimenez <alejandro.j.jimenez@...cle.com>
LGTM. Please feel free to add...
Reviewed-by: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@....com>
Thanks
Dheeraj
> ---
> drivers/iommu/amd/iommu.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
> index 20177e18eb0d..a8c17b602c95 100644
> --- a/drivers/iommu/amd/iommu.c
> +++ b/drivers/iommu/amd/iommu.c
> @@ -2052,12 +2052,12 @@ static void set_dte_entry(struct amd_iommu *iommu,
> make_clear_dte(dev_data, dte, &new);
>
> if (domain->iop.mode != PAGE_MODE_NONE)
> - new.data[0] = iommu_virt_to_phys(domain->iop.root);
> + new.data[0] |= iommu_virt_to_phys(domain->iop.root);
>
> new.data[0] |= (domain->iop.mode & DEV_ENTRY_MODE_MASK)
> << DEV_ENTRY_MODE_SHIFT;
>
> - new.data[0] |= DTE_FLAG_IR | DTE_FLAG_IW | DTE_FLAG_V;
> + new.data[0] |= DTE_FLAG_IR | DTE_FLAG_IW;
>
> /*
> * When SNP is enabled, we can only support TV=1 with non-zero domain ID.
>
> base-commit: 1f37ef785d54b27e304c189038697a845259408a
Powered by blists - more mailing lists