Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761012Ab3DDNqq (ORCPT ); Thu, 4 Apr 2013 09:46:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39907 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1760835Ab3DDNqp (ORCPT ); Thu, 4 Apr 2013 09:46:45 -0400 Date: Thu, 4 Apr 2013 15:45:45 +0200 From: Andrea Arcangeli To: Minchan Kim Cc: Hugh Dickins , David Rientjes , Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Mel Gorman , Kamezawa Hiroyuki , Peter Zijlstra Subject: Re: [PATCH] THP: Use explicit memory barrier Message-ID: <20130404134545.GF3423@redhat.com> References: <1364773535-26264-1-git-send-email-minchan@kernel.org> <20130402003746.GA30444@blaptop> <20130403001401.GC16026@blaptop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130403001401.GC16026@blaptop> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1734 Lines: 51 On Wed, Apr 03, 2013 at 09:14:01AM +0900, Minchan Kim wrote: > clear_huge_page(page, haddr, HPAGE_PMD_NR); > + /* > + * The memory barrier inside __SetPageUptodate makes sure that > + * clear_huge_page writes become visible after the set_pmd_at() s/after/before/ > + * write. > + */ > __SetPageUptodate(page); > > spin_lock(&mm->page_table_lock); > @@ -724,12 +729,6 @@ static int __do_huge_pmd_anonymous_page(struct mm_struct *mm, > } else { > pmd_t entry; > entry = mk_huge_pmd(page, vma); > - /* > - * The spinlocking to take the lru_lock inside > - * page_add_new_anon_rmap() acts as a full memory > - * barrier to be sure clear_huge_page writes become > - * visible after the set_pmd_at() write. > - */ > page_add_new_anon_rmap(page, vma, haddr); > set_pmd_at(mm, haddr, pmd, entry); > pgtable_trans_huge_deposit(mm, pgtable); > diff --git a/mm/memory.c b/mm/memory.c > index 494526a..d0da51e 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -3196,6 +3196,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, > page = alloc_zeroed_user_highpage_movable(vma, address); > if (!page) > goto oom; > + /* > + * The memory barrier inside __SetPageUptodate makes sure that > + * preceeding stores to the page contents become visible after > + * the set_pte_at() write. > + */ s/after/before/ After the above correction it looks nice cleanup, thanks! Acked-by: Andrea Arcangeli -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/