<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Hello Dave,</p>
    <p>I was talking about the users pace. The "vtop -u" or "rd -u"
      commands do not work for user space memory mapped above 8 PB.
      Memory is reported as not mapped. See the sample below:<br>
    </p>
    <p><font size="-2"><b><font face="Courier New">crash> rd -u
            0x60000000000000<br>
            rd: invalid user virtual address: 60000000000000  type:
            "64-bit UVADDR"<br>
            crash> vtop -u 0x60000000000000<br>
            VIRTUAL           PHYSICAL<br>
            60000000000000    (not mapped)<br>
            <br>
            <br>
                  VMA              START             END        FLAGS
            FILE<br>
                62e5bde8       60000000000000   60000000001000 8100073<br>
          </font></b></font><br>
    </p>
    <pre wrap="">Thanks,
Mikhail Zaslonko</pre>
    <br>
    <div class="moz-cite-prefix">On 11.05.2017 20:26, Dave Anderson
      wrote:<br>
    </div>
    <blockquote
      cite="mid:1659354142.8570918.1494527172723.JavaMail.zimbra@redhat.com"
      type="cite">
      <pre wrap="">

----- Original Message -----
</pre>
      <blockquote type="cite">
        <pre wrap="">Hello Dave,

We have recently found that Crash is not capable of processing 5 level
page tables virtual addresses (higher than 8 Petabytes). Please find the
enclosed patch below.

Thanks,
Mikhail Zaslonko
</pre>
      </blockquote>
      <pre wrap="">
Hi Mikhail,

For the changelog, can you give an example of the symptoms of the
failure?  Does it fail to handle kernel modules during session 
initialization, or what?

Thanks,
  Dave


</pre>
      <blockquote type="cite">
        <pre wrap="">

[PATCH] s390x: Fix virtual address check for 5 level page tables


The current validity check for virtual addresses fails for
five level page tables because in that case it uses a 64 bit
left-shift operation which is undefined in the C standard.

Quote from C99 standard:

  If the  value  of  the  right  operand  is  negative or is
  greater than or equal to the width of the promoted left operand,
  the behavior is undefined.

To fix this, we just skip the validity check in case of highest
page-level (level = 3) due to redundancy

Signed-off-by: Mikhail Zaslonko <a class="moz-txt-link-rfc2396E" href="mailto:zaslonko@linux.vnet.ibm.com"><zaslonko@linux.vnet.ibm.com></a>
---
  s390x.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/s390x.c b/s390x.c
index e13bd59..96ce3dc 100644
--- a/s390x.c
+++ b/s390x.c
@@ -688,7 +688,7 @@ int s390x_vtop(ulong table, ulong vaddr, physaddr_t
*phys_addr, int verbose)
        /* Read the first entry to find the number of page table levels. */
        readmem(table, KVADDR, &entry, sizeof(entry), "entry", FAULT_ON_ERROR);
        level = (entry & 0xcULL) >> 2;
-       if ((vaddr >> (31 + 11*level)) != 0ULL) {
+       if ((level < 3) && (vaddr >> (31 + 11*level)) != 0ULL) {
                /* Address too big for the number of page table levels. */
                return FALSE;
        }
--
2.10.2


</pre>
      </blockquote>
      <pre wrap="">
</pre>
    </blockquote>
    <br>
  </body>
</html>