On Sun, Mar 23, 2014 at 1:26 PM, John Stultz <john.stultz@xxxxxxxxxx> wrote: > On Sun, Mar 23, 2014 at 10:50 AM, KOSAKI Motohiro > <kosaki.motohiro@xxxxxxxxx> wrote: >>> +/** >>> + * vrange_check_purged_pte - Checks ptes for purged pages >>> + * >>> + * Iterates over the ptes in the pmd checking if they have >>> + * purged swap entries. >>> + * >>> + * Sets the vrange_walker.pages_purged to 1 if any were purged. >>> + */ >>> +static int vrange_check_purged_pte(pmd_t *pmd, unsigned long addr, >>> + unsigned long end, struct mm_walk *walk) >>> +{ >>> + struct vrange_walker *vw = walk->private; >>> + pte_t *pte; >>> + spinlock_t *ptl; >>> + >>> + if (pmd_trans_huge(*pmd)) >>> + return 0; >>> + if (pmd_trans_unstable(pmd)) >>> + return 0; >>> + >>> + pte = pte_offset_map_lock(walk->mm, pmd, addr, &ptl); >>> + for (; addr != end; pte++, addr += PAGE_SIZE) { >>> + if (!pte_present(*pte)) { >>> + swp_entry_t vrange_entry = pte_to_swp_entry(*pte); >>> + >>> + if (unlikely(is_vpurged_entry(vrange_entry))) { >>> + vw->page_was_purged = 1; >>> + break; >> >> This function only detect there is vpurge entry or not. But >> VRANGE_NONVOLATILE should remove all vpurge entries. >> Otherwise, non-volatiled range still makes SIGBUS. > > So in the following patch (3/5), we only SIGBUS if the swap entry > is_vpurged_entry() && the vma is still marked volatile, so this > shouldn't be an issue. When VOLATILE -> NON-VOLATILE -> VOLATILE transition happen, the page immediately marked "was purged"? I don't understand why vma check help. -- 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>