----- Original Message ----- > Hello Dave, > > 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: Ok good -- the patch is queued for crash-7.2.0: https://github.com/crash-utility/crash/commit/c30fbd7a43be118c9a342064180a2a8b15cc940a Thanks, Dave > > *crash> rd -u 0x60000000000000 > rd: invalid user virtual address: 60000000000000 type: "64-bit UVADDR" > crash> vtop -u 0x60000000000000 > VIRTUAL PHYSICAL > 60000000000000 (not mapped) > > > VMA START END FLAGS FILE > 62e5bde8 60000000000000 60000000001000 8100073 > * > > Thanks, > Mikhail Zaslonko > > > On 11.05.2017 20:26, Dave Anderson wrote: > > > > ----- Original Message ----- > >> 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 > > 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 > > > > > >> > >> [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 <zaslonko@xxxxxxxxxxxxxxxxxx> > >> --- > >> 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 > >> > >> > > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility