diff for duplicates of <m1652ddljp.fsf@muc.de> diff --git a/a/1.txt b/N1/1.txt index 02a3fb3..46e2a59 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -10,11 +10,11 @@ I bet this has been never tested. > 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) +> + (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) +> + (cmpxchg((int *)pgd, PUD_NONE, _PAGE_TABLE | __pa(pmd)) == PUD_NONE) > +#define pgd_test_and_populate(mm, pgd, pud) \ -> + (cmpxchg((int *)pgd, PGD_NONE, _PAGE_TABLE | __pa(pud)) = PGD_NONE) +> + (cmpxchg((int *)pgd, PGD_NONE, _PAGE_TABLE | __pa(pud)) == PGD_NONE) > + Shouldn't this all be (long *)pmd ? page table entries on x86-64 are 64bit. @@ -29,7 +29,7 @@ pointer. > > +static inline int pmd_test_and_populate(struct mm_struct *mm, pmd_t *pmd, struct page *pte) > +{ -> + return cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | (page_to_pfn(pte) << PAGE_SHIFT)) = PMD_NONE; +> + return cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | (page_to_pfn(pte) << PAGE_SHIFT)) == PMD_NONE; Same. diff --git a/a/content_digest b/N1/content_digest index 8665715..702ffd5 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -8,8 +8,8 @@ "ref\0Pine.LNX.4.58.0501041129030.805@schroedinger.engr.sgi.com\0" "ref\0Pine.LNX.4.58.0501041137410.805@schroedinger.engr.sgi.com\0" "From\0Andi Kleen <ak@muc.de>\0" - "Subject\0Re: page fault scalability patch V14 [5/7]: x86_64 atomic pte\0" - "Date\0Tue, 04 Jan 2005 19:46:50 +0000\0" + "Subject\0Re: page fault scalability patch V14 [5/7]: x86_64 atomic pte operations\0" + "Date\0Tue, 04 Jan 2005 20:46:50 +0100\0" "To\0Christoph Lameter <clameter@sgi.com>\0" "Cc\0Hugh Dickins <hugh@veritas.com>" akpm@osdl.org @@ -31,11 +31,11 @@ "> \t\tset_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud)))\n" ">\n" "> +#define pmd_test_and_populate(mm, pmd, pte) \\\n" - "> +\t\t(cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | __pa(pte)) = PMD_NONE)\n" + "> +\t\t(cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | __pa(pte)) == PMD_NONE)\n" "> +#define pud_test_and_populate(mm, pud, pmd) \\\n" - "> +\t\t(cmpxchg((int *)pgd, PUD_NONE, _PAGE_TABLE | __pa(pmd)) = PUD_NONE)\n" + "> +\t\t(cmpxchg((int *)pgd, PUD_NONE, _PAGE_TABLE | __pa(pmd)) == PUD_NONE)\n" "> +#define pgd_test_and_populate(mm, pgd, pud) \\\n" - "> +\t\t(cmpxchg((int *)pgd, PGD_NONE, _PAGE_TABLE | __pa(pud)) = PGD_NONE)\n" + "> +\t\t(cmpxchg((int *)pgd, PGD_NONE, _PAGE_TABLE | __pa(pud)) == PGD_NONE)\n" "> +\n" "\n" "Shouldn't this all be (long *)pmd ? page table entries on x86-64 are 64bit.\n" @@ -50,10 +50,10 @@ ">\n" "> +static inline int pmd_test_and_populate(struct mm_struct *mm, pmd_t *pmd, struct page *pte)\n" "> +{\n" - "> +\treturn cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | (page_to_pfn(pte) << PAGE_SHIFT)) = PMD_NONE;\n" + "> +\treturn cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | (page_to_pfn(pte) << PAGE_SHIFT)) == PMD_NONE;\n" "\n" "Same.\n" "\n" -Andi -108572f7919647e6b1d79ad9ad094b93b966ce14015e78237eee30b178f1f941 +a6f6089233791e086e6f83326980fb433046dba0514b8823075580dfa2568962
diff --git a/a/1.txt b/N2/1.txt index 02a3fb3..998f242 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -10,11 +10,11 @@ I bet this has been never tested. > 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) +> + (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) +> + (cmpxchg((int *)pgd, PUD_NONE, _PAGE_TABLE | __pa(pmd)) == PUD_NONE) > +#define pgd_test_and_populate(mm, pgd, pud) \ -> + (cmpxchg((int *)pgd, PGD_NONE, _PAGE_TABLE | __pa(pud)) = PGD_NONE) +> + (cmpxchg((int *)pgd, PGD_NONE, _PAGE_TABLE | __pa(pud)) == PGD_NONE) > + Shouldn't this all be (long *)pmd ? page table entries on x86-64 are 64bit. @@ -29,8 +29,13 @@ pointer. > > +static inline int pmd_test_and_populate(struct mm_struct *mm, pmd_t *pmd, struct page *pte) > +{ -> + return cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | (page_to_pfn(pte) << PAGE_SHIFT)) = PMD_NONE; +> + return cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | (page_to_pfn(pte) << PAGE_SHIFT)) == PMD_NONE; Same. -Andi +-- +To unsubscribe, send a message with 'unsubscribe linux-mm' in +the body to majordomo@kvack.org. For more info on Linux MM, +see: http://www.linux-mm.org/ . +Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> diff --git a/a/content_digest b/N2/content_digest index 8665715..ca5b7c0 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -8,8 +8,8 @@ "ref\0Pine.LNX.4.58.0501041129030.805@schroedinger.engr.sgi.com\0" "ref\0Pine.LNX.4.58.0501041137410.805@schroedinger.engr.sgi.com\0" "From\0Andi Kleen <ak@muc.de>\0" - "Subject\0Re: page fault scalability patch V14 [5/7]: x86_64 atomic pte\0" - "Date\0Tue, 04 Jan 2005 19:46:50 +0000\0" + "Subject\0Re: page fault scalability patch V14 [5/7]: x86_64 atomic pte operations\0" + "Date\0Tue, 04 Jan 2005 20:46:50 +0100\0" "To\0Christoph Lameter <clameter@sgi.com>\0" "Cc\0Hugh Dickins <hugh@veritas.com>" akpm@osdl.org @@ -31,11 +31,11 @@ "> \t\tset_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud)))\n" ">\n" "> +#define pmd_test_and_populate(mm, pmd, pte) \\\n" - "> +\t\t(cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | __pa(pte)) = PMD_NONE)\n" + "> +\t\t(cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | __pa(pte)) == PMD_NONE)\n" "> +#define pud_test_and_populate(mm, pud, pmd) \\\n" - "> +\t\t(cmpxchg((int *)pgd, PUD_NONE, _PAGE_TABLE | __pa(pmd)) = PUD_NONE)\n" + "> +\t\t(cmpxchg((int *)pgd, PUD_NONE, _PAGE_TABLE | __pa(pmd)) == PUD_NONE)\n" "> +#define pgd_test_and_populate(mm, pgd, pud) \\\n" - "> +\t\t(cmpxchg((int *)pgd, PGD_NONE, _PAGE_TABLE | __pa(pud)) = PGD_NONE)\n" + "> +\t\t(cmpxchg((int *)pgd, PGD_NONE, _PAGE_TABLE | __pa(pud)) == PGD_NONE)\n" "> +\n" "\n" "Shouldn't this all be (long *)pmd ? page table entries on x86-64 are 64bit.\n" @@ -50,10 +50,15 @@ ">\n" "> +static inline int pmd_test_and_populate(struct mm_struct *mm, pmd_t *pmd, struct page *pte)\n" "> +{\n" - "> +\treturn cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | (page_to_pfn(pte) << PAGE_SHIFT)) = PMD_NONE;\n" + "> +\treturn cmpxchg((int *)pmd, PMD_NONE, _PAGE_TABLE | (page_to_pfn(pte) << PAGE_SHIFT)) == PMD_NONE;\n" "\n" "Same.\n" "\n" - -Andi + "-Andi\n" + "--\n" + "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" + "the body to majordomo@kvack.org. For more info on Linux MM,\n" + "see: http://www.linux-mm.org/ .\n" + "Don't email: <a href=mailto:\"aart@kvack.org\"> aart@kvack.org </a>" -108572f7919647e6b1d79ad9ad094b93b966ce14015e78237eee30b178f1f941 +28f95c6e22892f90c8fc9ec806ae72edbe595dc54717fb730710ccf246373b27
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.