mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
[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>
This commit is contained in:
parent
d6d861e3c9
commit
a93cb055a2
@ -176,8 +176,6 @@ do { \
|
||||
} while(0)
|
||||
#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_index() is used get the offset into the pgd page's array of pgd_t's;
|
||||
|
@ -15,19 +15,11 @@
|
||||
* Note: the old pte is known to not be writable, so we don't need to
|
||||
* worry about dirty bits etc getting lost.
|
||||
*/
|
||||
#ifndef __HAVE_ARCH_SET_PTE_ATOMIC
|
||||
#define ptep_establish(__vma, __address, __ptep, __entry) \
|
||||
do { \
|
||||
set_pte_at((__vma)->vm_mm, (__address), __ptep, __entry); \
|
||||
flush_tlb_page(__vma, __address); \
|
||||
} 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
|
||||
|
||||
#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
|
||||
ptep->pte_low = pte.pte_low;
|
||||
}
|
||||
|
||||
#define __HAVE_ARCH_SET_PTE_ATOMIC
|
||||
#define set_pte_atomic(pteptr,pteval) \
|
||||
set_64bit((unsigned long long *)(pteptr),pte_val(pteval))
|
||||
#define set_pmd(pmdptr,pmdval) \
|
||||
|
@ -44,7 +44,7 @@ static inline int pgd_present(pgd_t pgd) { return 1; }
|
||||
*/
|
||||
#define set_pte(pteptr, pteval) (*(pteptr) = 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,
|
||||
* but the define is needed for a generic inline function.)
|
||||
|
Loading…
Reference in New Issue
Block a user