On Thu, Mar 22, 2012 at 5:00 AM, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > On Thu, 23 Feb 2012 12:12:38 -0800 > Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > >> On Thu, 23 Feb 2012 21:05:41 +0800 >> Hillf Danton <dhillf@xxxxxxxxx> wrote: >> >> > and a follow-up cleanup also attached. >> >> Please, never put more than one patches in an email - it is rather a >> pain to manually unpick everything. >> >> > When unmapping given VM range, a couple of code duplicate, such as pte_page() >> > and huge_pte_none(), so a cleanup needed to compact them together. >> > >> > Signed-off-by: Hillf Danton <dhillf@xxxxxxxxx> >> > --- >> > >> > --- a/mm/hugetlb.c Thu Feb 23 20:13:06 2012 >> > +++ b/mm/hugetlb.c Thu Feb 23 20:30:16 2012 >> > @@ -2245,16 +2245,23 @@ void __unmap_hugepage_range(struct vm_ar >> > if (huge_pmd_unshare(mm, &address, ptep)) >> > continue; >> > >> > + pte = huge_ptep_get(ptep); >> > + if (huge_pte_none(pte)) >> > + continue; >> > + >> > + /* >> > + * HWPoisoned hugepage is already unmapped and dropped reference >> > + */ >> > + if (unlikely(is_hugetlb_entry_hwpoisoned(pte))) >> > + continue; >> > + >> > + page = pte_page(pte); >> > /* >> > * If a reference page is supplied, it is because a specific >> > * page is being unmapped, not a range. Ensure the page we >> > * are about to unmap is the actual page of interest. >> > */ >> > if (ref_page) { >> > - pte = huge_ptep_get(ptep); >> > - if (huge_pte_none(pte)) >> > - continue; >> > - page = pte_page(pte); >> > if (page != ref_page) >> > continue; >> > >> > @@ -2267,16 +2274,6 @@ void __unmap_hugepage_range(struct vm_ar >> > } >> > >> > pte = huge_ptep_get_and_clear(mm, address, ptep); >> > - if (huge_pte_none(pte)) >> > - continue; >> > - >> > - /* >> > - * HWPoisoned hugepage is already unmapped and dropped reference >> > - */ >> > - if (unlikely(is_hugetlb_entry_hwpoisoned(pte))) >> > - continue; >> > - >> > - page = pte_page(pte); >> > if (pte_dirty(pte)) >> > set_page_dirty(page); >> > list_add(&page->lru, &page_list); >> >> This changes behaviour when ref_page refers to a hwpoisoned page. > > Respond, please? First say sorry to you, Andrew. The comment says, HWPoisoned hugepage is already unmapped; and even if ref_page == HWPoisoned page, it is not added onto page_list and no page_remove_rmap() is issued for it, so we end up with no behavior change. Thanks -hd -- 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/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href