Commit a93cb055 authored by Zachary Amsden's avatar Zachary Amsden Committed by Linus Torvalds

[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: default avatarZachary 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: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent d6d861e3
...@@ -176,8 +176,6 @@ do { \ ...@@ -176,8 +176,6 @@ do { \
} while(0) } while(0)
#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
#define set_pte_atomic(pteptr, pteval) set_pte((pteptr), (pteval))
/* /*
* pgd_offset() returns a (pgd_t *) * pgd_offset() returns a (pgd_t *)
* pgd_index() is used get the offset into the pgd page's array of pgd_t's; * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
......
...@@ -15,19 +15,11 @@ ...@@ -15,19 +15,11 @@
* Note: the old pte is known to not be writable, so we don't need to * Note: the old pte is known to not be writable, so we don't need to
* worry about dirty bits etc getting lost. * worry about dirty bits etc getting lost.
*/ */
#ifndef __HAVE_ARCH_SET_PTE_ATOMIC
#define ptep_establish(__vma, __address, __ptep, __entry) \ #define ptep_establish(__vma, __address, __ptep, __entry) \
do { \ do { \
set_pte_at((__vma)->vm_mm, (__address), __ptep, __entry); \ set_pte_at((__vma)->vm_mm, (__address), __ptep, __entry); \
flush_tlb_page(__vma, __address); \ flush_tlb_page(__vma, __address); \
} while (0) } while (0)
#else /* __HAVE_ARCH_SET_PTE_ATOMIC */
#define ptep_establish(__vma, __address, __ptep, __entry) \
do { \
set_pte_atomic(__ptep, __entry); \
flush_tlb_page(__vma, __address); \
} while (0)
#endif /* __HAVE_ARCH_SET_PTE_ATOMIC */
#endif #endif
#ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS #ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
......
...@@ -73,7 +73,6 @@ static inline void set_pte_present(struct mm_struct *mm, unsigned long addr, pte ...@@ -73,7 +73,6 @@ static inline void set_pte_present(struct mm_struct *mm, unsigned long addr, pte
ptep->pte_low = pte.pte_low; ptep->pte_low = pte.pte_low;
} }
#define __HAVE_ARCH_SET_PTE_ATOMIC
#define set_pte_atomic(pteptr,pteval) \ #define set_pte_atomic(pteptr,pteval) \
set_64bit((unsigned long long *)(pteptr),pte_val(pteval)) set_64bit((unsigned long long *)(pteptr),pte_val(pteval))
#define set_pmd(pmdptr,pmdval) \ #define set_pmd(pmdptr,pmdval) \
......
...@@ -44,7 +44,7 @@ static inline int pgd_present(pgd_t pgd) { return 1; } ...@@ -44,7 +44,7 @@ static inline int pgd_present(pgd_t pgd) { return 1; }
*/ */
#define set_pte(pteptr, pteval) (*(pteptr) = pteval) #define set_pte(pteptr, pteval) (*(pteptr) = pteval)
#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
#define set_pte_atomic(pteptr, pteval) set_pte(pteptr, pteval)
/* /*
* (pmds are folded into pgds so this doesnt get actually called, * (pmds are folded into pgds so this doesnt get actually called,
* but the define is needed for a generic inline function.) * but the define is needed for a generic inline function.)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment