From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Gerst Date: Tue, 04 Jan 2005 21:21:03 +0000 Subject: Re: page fault scalability patch V14 [5/7]: x86_64 atomic pte operations Message-Id: <41DB08BF.4000700@didntduck.org> List-Id: References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Christoph Lameter Cc: Linus Torvalds , Hugh Dickins , akpm@osdl.org, Nick Piggin , linux-mm@kvack.org, linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org Christoph Lameter wrote: > Changelog > * Provide atomic pte operations for x86_64 > > Signed-off-by: Christoph Lameter > > Index: linux-2.6.10/include/asm-x86_64/pgalloc.h > =================================> --- linux-2.6.10.orig/include/asm-x86_64/pgalloc.h 2005-01-03 10:31:31.000000000 -0800 > +++ linux-2.6.10/include/asm-x86_64/pgalloc.h 2005-01-03 12:21:28.000000000 -0800 > @@ -7,6 +7,10 @@ > #include > #include > > +#define PMD_NONE 0 > +#define PUD_NONE 0 > +#define PGD_NONE 0 > + > #define pmd_populate_kernel(mm, pmd, pte) \ > set_pmd(pmd, __pmd(_PAGE_TABLE | __pa(pte))) > #define pud_populate(mm, pud, pmd) \ > @@ -14,11 +18,24 @@ > #define pgd_populate(mm, pgd, pud) \ > set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud))) > > +#define pmd_test_and_populate(mm, pmd, pte) \ > + (cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | __pa(pte)) = PMD_NONE) > +#define pud_test_and_populate(mm, pud, pmd) \ > + (cmpxchg((int *)pgd, PUD_NONE, _PAGE_TABLE | __pa(pmd)) = PUD_NONE) ^^^ Shouldn't this be pud? > +#define pgd_test_and_populate(mm, pgd, pud) \ > + (cmpxchg((int *)pgd, PGD_NONE, _PAGE_TABLE | __pa(pud)) = PGD_NONE) > + > + -- Brian Gerst