The patch titled i386: fix missing pte update has been removed from the -mm tree. Its filename was paravirt-pte-update-common.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ Subject: i386: fix missing pte update From: Zachary Amsden <zach@xxxxxxxxxx> The function ptep_get_and_clear uses an atomic instruction sequence to get and clear an active pte. Rather than add such an atomic operator to all virtual machine implementations in paravirt-ops, it is easier to support the raw atomic sequence and use either a trapping writable pagetable approach, or a post-update notification. For the post update notification, we require the pte_update function to be called after the access. Combine the 2-level and 3-level paging operators into one common function which does the post-update notification, and rename the actual atomic sequences to raw_ptep_xxx operators. Signed-off-by: Zachary Amsden <zach@xxxxxxxxxx> Signed-off-by: Andi Kleen <ak@xxxxxxx> Cc: Andi Kleen <ak@xxxxxx> Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx> Cc: Chris Wright <chrisw@xxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- include/asm-i386/pgtable-2level.h | 3 +-- include/asm-i386/pgtable-3level.h | 3 +-- include/asm-i386/pgtable.h | 8 ++++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff -puN include/asm-i386/pgtable-2level.h~paravirt-pte-update-common include/asm-i386/pgtable-2level.h --- a/include/asm-i386/pgtable-2level.h~paravirt-pte-update-common +++ a/include/asm-i386/pgtable-2level.h @@ -23,8 +23,7 @@ #define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0) #define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0) -#define __HAVE_ARCH_PTEP_GET_AND_CLEAR -#define ptep_get_and_clear(mm,addr,xp) __pte(xchg(&(xp)->pte_low, 0)) +#define raw_ptep_get_and_clear(xp) __pte(xchg(&(xp)->pte_low, 0)) #define pte_page(x) pfn_to_page(pte_pfn(x)) #define pte_none(x) (!(x).pte_low) diff -puN include/asm-i386/pgtable-3level.h~paravirt-pte-update-common include/asm-i386/pgtable-3level.h --- a/include/asm-i386/pgtable-3level.h~paravirt-pte-update-common +++ a/include/asm-i386/pgtable-3level.h @@ -119,8 +119,7 @@ static inline void pmd_clear(pmd_t *pmd) *(tmp + 1) = 0; } -#define __HAVE_ARCH_PTEP_GET_AND_CLEAR -static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) +static inline pte_t raw_ptep_get_and_clear(pte_t *ptep) { pte_t res; diff -puN include/asm-i386/pgtable.h~paravirt-pte-update-common include/asm-i386/pgtable.h --- a/include/asm-i386/pgtable.h~paravirt-pte-update-common +++ a/include/asm-i386/pgtable.h @@ -326,6 +326,14 @@ do { \ __young; \ }) +#define __HAVE_ARCH_PTEP_GET_AND_CLEAR +static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) +{ + pte_t pte = raw_ptep_get_and_clear(ptep); + pte_update(mm, addr, ptep); + return pte; +} + #define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long addr, pte_t *ptep, int full) { _ Patches currently in -mm which might be from zach@xxxxxxxxxx are fix-kunmap_atomics-use-of-kpte_clear_flush.patch updated-i386-cleanup-apic-code.patch updated-i386-rework-local-apic-calibration.patch updated-dynticks-fix-nmi-watchdog.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html