[Crash-utility] Fwd: s390x fixes

Dave Anderson anderson at redhat.com
Wed May 2 13:21:57 UTC 2012



----- Original Message -----

> > 
> > And that's because when a "machdep->uvtop()" operation is done on a
> > user page that is not resident, the machine-dependent function should
> > return FALSE -- but it should return the PTE value in the paddr
> > pointer field so that it can be translated by vm_area_page_dump().
> > The s390x_uvtop() does not return the PTE, so the failed output can
> > vary, because it's using an uninitialized "paddr" stack variable.
> > But this is another easy fix, in this case to s390x_vtop():
> > 
> > /* lookup virtual address in page tables */
> > int s390x_vtop(ulong table, ulong vaddr, physaddr_t *phys_addr, int
> > verbose) {
> >         ulong entry, paddr;
> >         int level, len;
> > 
> > +       *phys_addr = 0;
> 
> 
> Looks also good. But probably I should implement a better fix that
> returns the pte for s390x swap entries.

That's true -- so since you've got the __swp_type() and __swp_offset()
macros #define'd for s390x, presumably it should work if you just pass
it back as is?  Even though you've got the common s390x_vtop() function
used by both s390x_kvtop() and s390x_uvtop(), I think it would be
safe to pass the PTE entry back in either case, because kvtop() operations
don't care about the paddr contents if you return FALSE. 

Dave




More information about the Crash-utility mailing list