> + > +bool numa_hinting_fault(struct page *page, int numpages) > +{ > + bool migrated = false; > + > + /* > + * "current->mm" could be different from the "mm" where the > + * NUMA hinting page fault happened, if get_user_pages() > + * triggered the fault on some other process "mm". That is ok, > + * all we care about is to count the "page_nid" access on the > + * current->task_autonuma, even if the page belongs to a > + * different "mm". > + */ > + WARN_ON_ONCE(!current->mm); Given the above comment, Do we really need this warn_on? I think I have seen this warning when using autonuma. > + if (likely(current->mm && !current->mempolicy && autonuma_enabled())) { > + struct task_struct *p = current; > + int this_nid, page_nid, access_nid; > + bool new_pass; > + > + /* > + * new_pass is only true the first time the thread > + * faults on this pass of knuma_scand. > + */ > + new_pass = p->task_autonuma->task_numa_fault_pass != > + p->mm->mm_autonuma->mm_numa_fault_pass; > + page_nid = page_to_nid(page); > + this_nid = numa_node_id(); > + VM_BUG_ON(this_nid < 0); > + VM_BUG_ON(this_nid >= MAX_NUMNODES); > + access_nid = numa_hinting_fault_memory_follow_cpu(page, > + this_nid, > + page_nid, > + new_pass, > + &migrated); > + /* "page" has been already freed if "migrated" is true */ > + numa_hinting_fault_cpu_follow_memory(p, access_nid, > + numpages, new_pass); > + if (unlikely(new_pass)) > + /* > + * Set the task's fault_pass equal to the new > + * mm's fault_pass, so new_pass will be false > + * on the next fault by this thread in this > + * same pass. > + */ > + p->task_autonuma->task_numa_fault_pass = > + p->mm->mm_autonuma->mm_numa_fault_pass; > + } > + > + return migrated; > +} > + -- Thanks and Regards Srikar -- 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>