[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <813d32e8-e84c-4744-bc2c-b76adc10d00f@linux.intel.com>
Date: Wed, 23 Oct 2024 12:49:44 +0800
From: Baolu Lu <baolu.lu@...ux.intel.com>
To: Zhenzhong Duan <zhenzhong.duan@...el.com>, iommu@...ts.linux.dev,
linux-kernel@...r.kernel.org
Cc: baolu.lu@...ux.intel.com, dwmw2@...radead.org, joro@...tes.org,
will@...nel.org, robin.murphy@....com, chao.p.peng@...el.com,
Kyung Min Park <kyung.min.park@...el.com>
Subject: Re: [PATCH 2/2] iommu/vt-d: Fix checks in pgtable_walk()
On 2024/10/22 17:50, Zhenzhong Duan wrote:
> It's not accurate to dump super page as non-present page,
> meanwhile bit7 in first level page table entry is PAT bit,
Can you please explain how the 'bit7 in first level page table entry' is
relevant to the changes made in this patch?
Also, please make full use of the maximum length of the commit message
line.
> also pointer pte is never NULL in pgtable_walk() context.
>
> Fixes: 914ff7719e8a ("iommu/vt-d: Dump DMAR translation structure when DMA fault occurs")
> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@...el.com>
> ---
> drivers/iommu/intel/iommu.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
> index 8288b0ee7a61..fec5cc1147f3 100644
> --- a/drivers/iommu/intel/iommu.c
> +++ b/drivers/iommu/intel/iommu.c
> @@ -707,14 +707,14 @@ static void pgtable_walk(struct intel_iommu *iommu, unsigned long pfn,
> while (1) {
> offset = pfn_level_offset(pfn, level);
> pte = &parent[offset];
> - if (!pte || (dma_pte_superpage(pte) || !dma_pte_present(pte))) {
> + if (!dma_pte_present(pte)) {
> pr_info("PTE not present at level %d\n", level);
> break;
> }
>
> pr_info("pte level: %d, pte value: 0x%016llx\n", level, pte->val);
>
> - if (level == 1)
> + if (level == 1 || dma_pte_superpage(pte))
> break;
>
> parent = phys_to_virt(dma_pte_addr(pte));
Thanks,
baolu
Powered by blists - more mailing lists