Le 02/05/2019 à 07:51, Russell Currey a écrit :
+       if (radix_enabled())
+               st.start_address = PAGE_OFFSET;
+       else
+               st.start_address = KERN_VIRT_START;

KERN_VIRT_START doesn't exist on PPC32.

Christophe

Thanks a lot for the review!  Applied all your suggestions.  What
should I use on PPC32 instead?

Indeed it looks like KERN_VIRT_START is defined as 0 for PPC32 at
the
top of ptdump.c, which look strange to me.

I guess PAGE_OFFSET should be the good value for KERN_VIRT_START on
PPC32.

Christophe

git blame says you put it there :) I'll set it to PAGE_OFFSET instead
of zero.  Cheers


Finally it seems that I was right at first place. KERN_VIRT_START should be 0 because in walk_pagetables(), it starts with:

pgd_t *pgd = pgd_offset_k(0UL);

Now that KERN_VIRT_START has changed to 0xc0000000, I get a shift of 0xc0000000 in the display, ie the kernel pages are displayed starting at 0x80000000 instead of 0xc0000000 (0x80000000 = 0xc0000000 + 0xc0000000)

Since we only want to display kernel pages, I guess we should use

pgd_t *pgd = pgd_offset_k(KERN_VIRT_START); but then we can't use the for () loop as it is.

Does it work properly on PPC64 ? If so, that's surprising.

Christophe

Reply via email to