From: Benjamin Herrenschmidt Some changes done a while ago to avoid pounding on ptep_set_access_flags and update_mmu_cache in some race situations break sun4c which requires update_mmu_cache() to always be called on minor faults. This patch reworks ptep_set_access_flags() semantics, implementations and callers so that it's now responsible for returning whether an update is necessary or not (basically whether the PTE actually changed). This allow fixing the sparc implementation to always return 1 on sun4c. Hope I got ia64 right this time ! Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Andrew Morton --- include/asm-ia64/pgtable.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff -puN include/asm-ia64/pgtable.h~rework-ptep_set_access_flags-and-fix-sun4c-fix-fix-fix include/asm-ia64/pgtable.h --- a/include/asm-ia64/pgtable.h~rework-ptep_set_access_flags-and-fix-sun4c-fix-fix-fix +++ a/include/asm-ia64/pgtable.h @@ -534,13 +534,13 @@ extern void lazy_mmu_prot_update (pte_t */ #ifdef CONFIG_SMP # define ptep_set_access_flags(__vma, __addr, __ptep, __entry, __safely_writable) \ -({ \ - int __changed = !pte_same(*(__ptep), __entry); \ - if (__changed && __safely_writable) { \ - set_pte(__ptep, __entry); \ - flush_tlb_page(__vma, __addr); \ - } \ - __changed; \ +({ \ + int __changed = !pte_same(*(__ptep), __entry); \ + if (__changed && __safely_writable) { \ + set_pte(__ptep, __entry); \ + flush_tlb_page(__vma, __addr); \ + } \ + __changed; \ }) #else # define ptep_set_access_flags(__vma, __addr, __ptep, __entry, __safely_writable) \ _