[PATCH next] powerpc/mm: fix _PAGE_PTE breaking swapoff

Hugh Dickins hughd at google.com
Mon Jan 11 17:09:04 AEDT 2016


On Mon, 11 Jan 2016, Aneesh Kumar K.V wrote:
> "Aneesh Kumar K.V" <aneesh.kumar at linux.vnet.ibm.com> writes:
> > Hugh Dickins <hughd at google.com> writes:
> >
> >> Swapoff after swapping hangs on the G5.  That's because the _PAGE_PTE
> >> bit, added by set_pte_at(), is not expected by swapoff: so swap ptes
> >> cannot be recognized.
> >>
> >> I'm not sure whether a swap pte should or should not have _PAGE_PTE set:
> >> this patch assumes not, and fixes set_pte_at() to set _PAGE_PTE only on
> >> present entries.
> >
> > One of the reason we added _PAGE_PTE is to enable HUGETLB migration. So
> > we want migratio ptes to have _PAGE_PTE set.
> >
> >>
> >> But if that's wrong, a reasonable alternative would be to
> >> #define __pte_to_swp_entry(pte)	((swp_entry_t) { pte_val(pte) & ~_PAGE_PTE })
> >> #define __swp_entry_to_pte(x)	__pte((x).val | _PAGE_PTE)
> >>
> 
> You other email w.r.t soft dirty bits explained this. What I missed was
> the fact that core kernel expect swp_entry_t to be of an arch neutral
> format.  The confusing part was "arch_entry"
> 
> static inline pte_t swp_entry_to_pte(swp_entry_t entry)
> {
> 	swp_entry_t arch_entry;
> .....
> }
> 	
> IMHO we should use the alternative you suggested above. I can write a
> patch with additional comments around that if you want me to do that.

Sure, please go ahead - thanks.

Hugh


More information about the Linuxppc-dev mailing list