aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZachary Amsden <zach@vmware.com>2006-10-01 02:29:37 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-01 03:39:34 -0400
commita93cb055a23f3172c1e6a22ac1dc4f1c07929b08 (patch)
treeb2118140583912c78d42a3ba950be39815addc14
parentd6d861e3c963b4077c83e078e3e300c4b81f93e7 (diff)
[PATCH] paravirt: remove set pte atomic
Now that ptep_establish has a definition in PAE i386 3-level paging code, the only paging model which is insane enough to have multi-word hardware PTEs which are not efficient to set atomically, we can remove the ghost of set_pte_atomic from other architectures which falesly duplicated it, and remove all knowledge of it from the generic pgtable code. set_pte_atomic is now a private pte operator which is specific to i386 Signed-off-by: Zachary Amsden <zach@vmware.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Jeremy Fitzhardinge <jeremy@xensource.com> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--include/asm-frv/pgtable.h2
-rw-r--r--include/asm-generic/pgtable.h8
-rw-r--r--include/asm-i386/pgtable-3level.h1
-rw-r--r--include/asm-m32r/pgtable-2level.h2
4 files changed, 1 insertions, 12 deletions
diff --git a/include/asm-frv/pgtable.h b/include/asm-frv/pgtable.h
index 2fb3c6f05e03..ba1b37df69d5 100644
--- a/include/asm-frv/pgtable.h
+++ b/include/asm-frv/pgtable.h
@@ -176,8 +176,6 @@ do { \
176} while(0) 176} while(0)
177#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) 177#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
178 178
179#define set_pte_atomic(pteptr, pteval) set_pte((pteptr), (pteval))
180
181/* 179/*
182 * pgd_offset() returns a (pgd_t *) 180 * pgd_offset() returns a (pgd_t *)
183 * pgd_index() is used get the offset into the pgd page's array of pgd_t's; 181 * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
index 56627fa453a6..9d774d07d95b 100644
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -15,19 +15,11 @@
15 * Note: the old pte is known to not be writable, so we don't need to 15 * Note: the old pte is known to not be writable, so we don't need to
16 * worry about dirty bits etc getting lost. 16 * worry about dirty bits etc getting lost.
17 */ 17 */
18#ifndef __HAVE_ARCH_SET_PTE_ATOMIC
19#define ptep_establish(__vma, __address, __ptep, __entry) \ 18#define ptep_establish(__vma, __address, __ptep, __entry) \
20do { \ 19do { \
21 set_pte_at((__vma)->vm_mm, (__address), __ptep, __entry); \ 20 set_pte_at((__vma)->vm_mm, (__address), __ptep, __entry); \
22 flush_tlb_page(__vma, __address); \ 21 flush_tlb_page(__vma, __address); \
23} while (0) 22} while (0)
24#else /* __HAVE_ARCH_SET_PTE_ATOMIC */
25#define ptep_establish(__vma, __address, __ptep, __entry) \
26do { \
27 set_pte_atomic(__ptep, __entry); \
28 flush_tlb_page(__vma, __address); \
29} while (0)
30#endif /* __HAVE_ARCH_SET_PTE_ATOMIC */
31#endif 23#endif
32 24
33#ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS 25#ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
diff --git a/include/asm-i386/pgtable-3level.h b/include/asm-i386/pgtable-3level.h
index 7c58debdb39e..c2d701ea35be 100644
--- a/include/asm-i386/pgtable-3level.h
+++ b/include/asm-i386/pgtable-3level.h
@@ -73,7 +73,6 @@ static inline void set_pte_present(struct mm_struct *mm, unsigned long addr, pte
73 ptep->pte_low = pte.pte_low; 73 ptep->pte_low = pte.pte_low;
74} 74}
75 75
76#define __HAVE_ARCH_SET_PTE_ATOMIC
77#define set_pte_atomic(pteptr,pteval) \ 76#define set_pte_atomic(pteptr,pteval) \
78 set_64bit((unsigned long long *)(pteptr),pte_val(pteval)) 77 set_64bit((unsigned long long *)(pteptr),pte_val(pteval))
79#define set_pmd(pmdptr,pmdval) \ 78#define set_pmd(pmdptr,pmdval) \
diff --git a/include/asm-m32r/pgtable-2level.h b/include/asm-m32r/pgtable-2level.h
index 6a674e3d37a2..84152760e0b5 100644
--- a/include/asm-m32r/pgtable-2level.h
+++ b/include/asm-m32r/pgtable-2level.h
@@ -44,7 +44,7 @@ static inline int pgd_present(pgd_t pgd) { return 1; }
44 */ 44 */
45#define set_pte(pteptr, pteval) (*(pteptr) = pteval) 45#define set_pte(pteptr, pteval) (*(pteptr) = pteval)
46#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) 46#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
47#define set_pte_atomic(pteptr, pteval) set_pte(pteptr, pteval) 47
48/* 48/*
49 * (pmds are folded into pgds so this doesnt get actually called, 49 * (pmds are folded into pgds so this doesnt get actually called,
50 * but the define is needed for a generic inline function.) 50 * but the define is needed for a generic inline function.)