"Aneesh Kumar K.V" <aneesh.kumar@xxxxxxxxxxxxxxxxxx> writes: > Hugh Dickins <hughd@xxxxxxxxxx> 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. -aneesh -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>