diff options
author | Zachary Amsden <zach@vmware.com> | 2006-10-01 02:29:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-01 03:39:34 -0400 |
commit | a93cb055a23f3172c1e6a22ac1dc4f1c07929b08 (patch) | |
tree | b2118140583912c78d42a3ba950be39815addc14 | |
parent | d6d861e3c963b4077c83e078e3e300c4b81f93e7 (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.h | 2 | ||||
-rw-r--r-- | include/asm-generic/pgtable.h | 8 | ||||
-rw-r--r-- | include/asm-i386/pgtable-3level.h | 1 | ||||
-rw-r--r-- | include/asm-m32r/pgtable-2level.h | 2 |
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) \ |
20 | do { \ | 19 | do { \ |
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) \ | ||
26 | do { \ | ||
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.) |