<div dir="ltr"><div dir="ltr">On Wed, Apr 6, 2022 at 11:48 PM <<a href="mailto:crash-utility-request@redhat.com">crash-utility-request@redhat.com</a>> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Date: Wed,  6 Apr 2022 22:38:40 +0800<br>
From: Rongwei Wang <<a href="mailto:rongwei.wang@linux.alibaba.com" target="_blank">rongwei.wang@linux.alibaba.com</a>><br>
To: <a href="mailto:crash-utility@redhat.com" target="_blank">crash-utility@redhat.com</a>, <a href="mailto:k-hagio-ab@nec.com" target="_blank">k-hagio-ab@nec.com</a>,<br>
        <a href="mailto:shijie@os.amperecomputing.com" target="_blank">shijie@os.amperecomputing.com</a>, <a href="mailto:piliu@redhat.com" target="_blank">piliu@redhat.com</a><br>
Subject: [Crash-utility] [PATCH v2] arm64: handle 1GB block for<br>
        VM_L4_4K<br>
Message-ID: <<a href="mailto:20220406143840.76523-1-rongwei.wang@linux.alibaba.com" target="_blank">20220406143840.76523-1-rongwei.wang@linux.alibaba.com</a>><br>
Content-Type: text/plain; charset="US-ASCII"; x-default=true<br>
<br>
When arm64 is configured with PAGE_SIZE=4k and 4 level<br>
translation, the pagetable of all pages may be created with<br>
block mapping or contiguous mapping as much as possible, likes<br>
disable CONFIG_RODATA_FULL_DEFAULT_ENABLED. But now, vtop<br>
command can not handle 1GB block (PUD mapping) well, and just<br>
shows a seek error:<br>
<br>
crash> vtop ffff00184a800000<br>
VIRTUAL           PHYSICAL<br>
ffff00184a800000  188a800000<br>
<br>
PAGE DIRECTORY: ffff8000110aa000<br>
   PGD: ffff8000110aa000 => 203fff9003<br>
   PUD: ffff001fffff9308 => 68001880000705<br>
   PMD: ffff0018400002a0 => ffff8000103b4fd0<br>
vtop: seek error: kernel virtual address: ffff7fffd03b4000  type: "page table"<br>
<br>
This patch fixes it, and shows as following:<br>
<br>
crash> vtop ffff00184a800000<br>
VIRTUAL           PHYSICAL<br>
ffff00184a800000  188a800000<br>
<br>
PAGE DIRECTORY: ffff8000110aa000<br>
   PGD: ffff8000110aa000 => 203fff9003<br>
   PUD: ffff001fffff9308 => 68001880000705<br>
  PAGE: 1880000000  (1GB)<br>
<br>
     PTE         PHYSICAL   FLAGS<br>
68001880000705  1880000000  (VALID|SHARED|AF|PXN|UXN)<br>
<br>
      PAGE         PHYSICAL      MAPPING       INDEX CNT FLAGS<br>
fffffe00610a0000 188a800000                0        0  0 77fffe0000000000<br>
<br>
Acked-by: Kazuhito Hagio <<a href="mailto:k-hagio-ab@nec.com" target="_blank">k-hagio-ab@nec.com</a>><br>
Signed-off-by: Rongwei Wang <<a href="mailto:rongwei.wang@linux.alibaba.com" target="_blank">rongwei.wang@linux.alibaba.com</a>><br>
---<br>
 arm64.c | 10 ++++++++++<br>
 1 file changed, 10 insertions(+)<br>
<br>
diff --git a/arm64.c b/arm64.c<br>
index 2177c52..65f6cdf 100644<br>
--- a/arm64.c<br>
+++ b/arm64.c<br>
@@ -1999,6 +1999,16 @@ arm64_vtop_4level_4k(ulong pgd, ulong vaddr, physaddr_t *paddr, int verbose)<br>
        if (!pud_val)<br>
                goto no_page;<br>
<br>
+       if ((pud_val & PUD_TYPE_MASK) == PUD_TYPE_SECT) {<br>
+               ulong sectionbase = (pud_val & SECTION_PAGE_MASK_1GB) & PHYS_MASK;<br>
+               if (verbose) {<br>
+                       fprintf(fp, "  PAGE: %lx  (1GB)\n\n", sectionbase);<br>
+                       arm64_translate_pte(pud_val, 0, 0);<br>
+               }<br>
+               *paddr = sectionbase + (vaddr & ~SECTION_PAGE_MASK_1GB);<br>
+               return TRUE;<br>
+       }<br>
+<br>
        pmd_base = (ulong *)PTOV(pud_val & PHYS_MASK & (s32)machdep->pagemask);<br>
        FILL_PMD(pmd_base, KVADDR, PTRS_PER_PMD_L4_4K * sizeof(ulong));<br>
        pmd_ptr = pmd_base + (((vaddr) >> PMD_SHIFT_L4_4K) & (PTRS_PER_PMD_L4_4K - 1));<br>
--</blockquote><div><br></div><div>Thank you for the fix.</div><div>The v2 looks good to me. Applied.</div><div><br></div><div>Thanks.</div><div>Lianbo</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br>
2.27.0<br>
</blockquote></div></div>