diff options
40 files changed, 69 insertions, 62 deletions
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt index da42ab414c48..74a8b6fefa29 100644 --- a/Documentation/cachetlb.txt +++ b/Documentation/cachetlb.txt | |||
@@ -88,12 +88,12 @@ changes occur: | |||
88 | This is used primarily during fault processing. | 88 | This is used primarily during fault processing. |
89 | 89 | ||
90 | 5) void update_mmu_cache(struct vm_area_struct *vma, | 90 | 5) void update_mmu_cache(struct vm_area_struct *vma, |
91 | unsigned long address, pte_t pte) | 91 | unsigned long address, pte_t *ptep) |
92 | 92 | ||
93 | At the end of every page fault, this routine is invoked to | 93 | At the end of every page fault, this routine is invoked to |
94 | tell the architecture specific code that a translation | 94 | tell the architecture specific code that a translation |
95 | described by "pte" now exists at virtual address "address" | 95 | now exists at virtual address "address" for address space |
96 | for address space "vma->vm_mm", in the software page tables. | 96 | "vma->vm_mm", in the software page tables. |
97 | 97 | ||
98 | A port may use this information in any way it so chooses. | 98 | A port may use this information in any way it so chooses. |
99 | For example, it could use this event to pre-load TLB | 99 | For example, it could use this event to pre-load TLB |
diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h index 3f0c59f6d8aa..71a243294142 100644 --- a/arch/alpha/include/asm/pgtable.h +++ b/arch/alpha/include/asm/pgtable.h | |||
@@ -329,7 +329,7 @@ extern pgd_t swapper_pg_dir[1024]; | |||
329 | * tables contain all the necessary information. | 329 | * tables contain all the necessary information. |
330 | */ | 330 | */ |
331 | extern inline void update_mmu_cache(struct vm_area_struct * vma, | 331 | extern inline void update_mmu_cache(struct vm_area_struct * vma, |
332 | unsigned long address, pte_t pte) | 332 | unsigned long address, pte_t *ptep) |
333 | { | 333 | { |
334 | } | 334 | } |
335 | 335 | ||
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h index c2f1605de359..e085e2c545eb 100644 --- a/arch/arm/include/asm/tlbflush.h +++ b/arch/arm/include/asm/tlbflush.h | |||
@@ -529,7 +529,8 @@ extern void flush_tlb_kernel_range(unsigned long start, unsigned long end); | |||
529 | * cache entries for the kernels virtual memory range are written | 529 | * cache entries for the kernels virtual memory range are written |
530 | * back to the page. | 530 | * back to the page. |
531 | */ | 531 | */ |
532 | extern void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte); | 532 | extern void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, |
533 | pte_t *ptep); | ||
533 | 534 | ||
534 | #endif | 535 | #endif |
535 | 536 | ||
diff --git a/arch/arm/mm/fault-armv.c b/arch/arm/mm/fault-armv.c index ae88f2c3a6df..c45f9bb318ad 100644 --- a/arch/arm/mm/fault-armv.c +++ b/arch/arm/mm/fault-armv.c | |||
@@ -149,9 +149,10 @@ make_coherent(struct address_space *mapping, struct vm_area_struct *vma, unsigne | |||
149 | * | 149 | * |
150 | * Note that the pte lock will be held. | 150 | * Note that the pte lock will be held. |
151 | */ | 151 | */ |
152 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte) | 152 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, |
153 | pte_t *ptep) | ||
153 | { | 154 | { |
154 | unsigned long pfn = pte_pfn(pte); | 155 | unsigned long pfn = pte_pfn(*ptep); |
155 | struct address_space *mapping; | 156 | struct address_space *mapping; |
156 | struct page *page; | 157 | struct page *page; |
157 | 158 | ||
diff --git a/arch/avr32/include/asm/pgtable.h b/arch/avr32/include/asm/pgtable.h index fecdda16f444..a9ae30c41e74 100644 --- a/arch/avr32/include/asm/pgtable.h +++ b/arch/avr32/include/asm/pgtable.h | |||
@@ -325,7 +325,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
325 | 325 | ||
326 | struct vm_area_struct; | 326 | struct vm_area_struct; |
327 | extern void update_mmu_cache(struct vm_area_struct * vma, | 327 | extern void update_mmu_cache(struct vm_area_struct * vma, |
328 | unsigned long address, pte_t pte); | 328 | unsigned long address, pte_t *ptep); |
329 | 329 | ||
330 | /* | 330 | /* |
331 | * Encode and decode a swap entry | 331 | * Encode and decode a swap entry |
diff --git a/arch/avr32/mm/tlb.c b/arch/avr32/mm/tlb.c index 06677be98ffb..0da23109f817 100644 --- a/arch/avr32/mm/tlb.c +++ b/arch/avr32/mm/tlb.c | |||
@@ -101,7 +101,7 @@ static void update_dtlb(unsigned long address, pte_t pte) | |||
101 | } | 101 | } |
102 | 102 | ||
103 | void update_mmu_cache(struct vm_area_struct *vma, | 103 | void update_mmu_cache(struct vm_area_struct *vma, |
104 | unsigned long address, pte_t pte) | 104 | unsigned long address, pte_t *ptep) |
105 | { | 105 | { |
106 | unsigned long flags; | 106 | unsigned long flags; |
107 | 107 | ||
@@ -110,7 +110,7 @@ void update_mmu_cache(struct vm_area_struct *vma, | |||
110 | return; | 110 | return; |
111 | 111 | ||
112 | local_irq_save(flags); | 112 | local_irq_save(flags); |
113 | update_dtlb(address, pte); | 113 | update_dtlb(address, *ptep); |
114 | local_irq_restore(flags); | 114 | local_irq_restore(flags); |
115 | } | 115 | } |
116 | 116 | ||
diff --git a/arch/cris/include/asm/pgtable.h b/arch/cris/include/asm/pgtable.h index 1fcce00f01f4..99ea6cd1b143 100644 --- a/arch/cris/include/asm/pgtable.h +++ b/arch/cris/include/asm/pgtable.h | |||
@@ -270,7 +270,7 @@ extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; /* defined in head.S */ | |||
270 | * Actually I am not sure on what this could be used for. | 270 | * Actually I am not sure on what this could be used for. |
271 | */ | 271 | */ |
272 | static inline void update_mmu_cache(struct vm_area_struct * vma, | 272 | static inline void update_mmu_cache(struct vm_area_struct * vma, |
273 | unsigned long address, pte_t pte) | 273 | unsigned long address, pte_t *ptep) |
274 | { | 274 | { |
275 | } | 275 | } |
276 | 276 | ||
diff --git a/arch/frv/include/asm/pgtable.h b/arch/frv/include/asm/pgtable.h index 22c60692b551..c18b0d32e636 100644 --- a/arch/frv/include/asm/pgtable.h +++ b/arch/frv/include/asm/pgtable.h | |||
@@ -505,7 +505,7 @@ static inline int pte_file(pte_t pte) | |||
505 | /* | 505 | /* |
506 | * preload information about a newly instantiated PTE into the SCR0/SCR1 PGE cache | 506 | * preload information about a newly instantiated PTE into the SCR0/SCR1 PGE cache |
507 | */ | 507 | */ |
508 | static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 508 | static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) |
509 | { | 509 | { |
510 | struct mm_struct *mm; | 510 | struct mm_struct *mm; |
511 | unsigned long ampr; | 511 | unsigned long ampr; |
diff --git a/arch/ia64/include/asm/pgtable.h b/arch/ia64/include/asm/pgtable.h index 69bf13857a9f..c3286f42e501 100644 --- a/arch/ia64/include/asm/pgtable.h +++ b/arch/ia64/include/asm/pgtable.h | |||
@@ -462,7 +462,7 @@ pte_same (pte_t a, pte_t b) | |||
462 | return pte_val(a) == pte_val(b); | 462 | return pte_val(a) == pte_val(b); |
463 | } | 463 | } |
464 | 464 | ||
465 | #define update_mmu_cache(vma, address, pte) do { } while (0) | 465 | #define update_mmu_cache(vma, address, ptep) do { } while (0) |
466 | 466 | ||
467 | extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; | 467 | extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; |
468 | extern void paging_init (void); | 468 | extern void paging_init (void); |
diff --git a/arch/m32r/include/asm/tlbflush.h b/arch/m32r/include/asm/tlbflush.h index 0ef95307784e..92614b0ccf17 100644 --- a/arch/m32r/include/asm/tlbflush.h +++ b/arch/m32r/include/asm/tlbflush.h | |||
@@ -92,6 +92,6 @@ static __inline__ void __flush_tlb_all(void) | |||
92 | ); | 92 | ); |
93 | } | 93 | } |
94 | 94 | ||
95 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t); | 95 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *); |
96 | 96 | ||
97 | #endif /* _ASM_M32R_TLBFLUSH_H */ | 97 | #endif /* _ASM_M32R_TLBFLUSH_H */ |
diff --git a/arch/m32r/mm/fault-nommu.c b/arch/m32r/mm/fault-nommu.c index 88469178ea6b..888aab1157ed 100644 --- a/arch/m32r/mm/fault-nommu.c +++ b/arch/m32r/mm/fault-nommu.c | |||
@@ -95,7 +95,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code, | |||
95 | * update_mmu_cache() | 95 | * update_mmu_cache() |
96 | *======================================================================*/ | 96 | *======================================================================*/ |
97 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, | 97 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, |
98 | pte_t pte) | 98 | pte_t *ptep) |
99 | { | 99 | { |
100 | BUG(); | 100 | BUG(); |
101 | } | 101 | } |
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c index 7274b47f4c22..28ee389e5f5a 100644 --- a/arch/m32r/mm/fault.c +++ b/arch/m32r/mm/fault.c | |||
@@ -336,7 +336,7 @@ vmalloc_fault: | |||
336 | 336 | ||
337 | addr = (address & PAGE_MASK); | 337 | addr = (address & PAGE_MASK); |
338 | set_thread_fault_code(error_code); | 338 | set_thread_fault_code(error_code); |
339 | update_mmu_cache(NULL, addr, *pte_k); | 339 | update_mmu_cache(NULL, addr, pte_k); |
340 | set_thread_fault_code(0); | 340 | set_thread_fault_code(0); |
341 | return; | 341 | return; |
342 | } | 342 | } |
@@ -349,7 +349,7 @@ vmalloc_fault: | |||
349 | #define ITLB_END (unsigned long *)(ITLB_BASE + (NR_TLB_ENTRIES * 8)) | 349 | #define ITLB_END (unsigned long *)(ITLB_BASE + (NR_TLB_ENTRIES * 8)) |
350 | #define DTLB_END (unsigned long *)(DTLB_BASE + (NR_TLB_ENTRIES * 8)) | 350 | #define DTLB_END (unsigned long *)(DTLB_BASE + (NR_TLB_ENTRIES * 8)) |
351 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr, | 351 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr, |
352 | pte_t pte) | 352 | pte_t *ptep) |
353 | { | 353 | { |
354 | volatile unsigned long *entry1, *entry2; | 354 | volatile unsigned long *entry1, *entry2; |
355 | unsigned long pte_data, flags; | 355 | unsigned long pte_data, flags; |
@@ -365,7 +365,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr, | |||
365 | 365 | ||
366 | vaddr = (vaddr & PAGE_MASK) | get_asid(); | 366 | vaddr = (vaddr & PAGE_MASK) | get_asid(); |
367 | 367 | ||
368 | pte_data = pte_val(pte); | 368 | pte_data = pte_val(*ptep); |
369 | 369 | ||
370 | #ifdef CONFIG_CHIP_OPSP | 370 | #ifdef CONFIG_CHIP_OPSP |
371 | entry1 = (unsigned long *)ITLB_BASE; | 371 | entry1 = (unsigned long *)ITLB_BASE; |
diff --git a/arch/m68k/include/asm/pgtable_mm.h b/arch/m68k/include/asm/pgtable_mm.h index aca0e28581c7..87174c904d2b 100644 --- a/arch/m68k/include/asm/pgtable_mm.h +++ b/arch/m68k/include/asm/pgtable_mm.h | |||
@@ -115,7 +115,7 @@ extern void kernel_set_cachemode(void *addr, unsigned long size, int cmode); | |||
115 | * they are updated on demand. | 115 | * they are updated on demand. |
116 | */ | 116 | */ |
117 | static inline void update_mmu_cache(struct vm_area_struct *vma, | 117 | static inline void update_mmu_cache(struct vm_area_struct *vma, |
118 | unsigned long address, pte_t pte) | 118 | unsigned long address, pte_t *ptep) |
119 | { | 119 | { |
120 | } | 120 | } |
121 | 121 | ||
diff --git a/arch/microblaze/include/asm/tlbflush.h b/arch/microblaze/include/asm/tlbflush.h index eb31a0e8a772..10ec70cd8735 100644 --- a/arch/microblaze/include/asm/tlbflush.h +++ b/arch/microblaze/include/asm/tlbflush.h | |||
@@ -38,7 +38,7 @@ static inline void local_flush_tlb_range(struct vm_area_struct *vma, | |||
38 | 38 | ||
39 | #define flush_tlb_kernel_range(start, end) do { } while (0) | 39 | #define flush_tlb_kernel_range(start, end) do { } while (0) |
40 | 40 | ||
41 | #define update_mmu_cache(vma, addr, pte) do { } while (0) | 41 | #define update_mmu_cache(vma, addr, ptep) do { } while (0) |
42 | 42 | ||
43 | #define flush_tlb_all local_flush_tlb_all | 43 | #define flush_tlb_all local_flush_tlb_all |
44 | #define flush_tlb_mm local_flush_tlb_mm | 44 | #define flush_tlb_mm local_flush_tlb_mm |
diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h index 1854336e56a2..c56bf8afc099 100644 --- a/arch/mips/include/asm/pgtable.h +++ b/arch/mips/include/asm/pgtable.h | |||
@@ -362,8 +362,9 @@ extern void __update_cache(struct vm_area_struct *vma, unsigned long address, | |||
362 | pte_t pte); | 362 | pte_t pte); |
363 | 363 | ||
364 | static inline void update_mmu_cache(struct vm_area_struct *vma, | 364 | static inline void update_mmu_cache(struct vm_area_struct *vma, |
365 | unsigned long address, pte_t pte) | 365 | unsigned long address, pte_t *ptep) |
366 | { | 366 | { |
367 | pte_t pte = *ptep; | ||
367 | __update_tlb(vma, address, pte); | 368 | __update_tlb(vma, address, pte); |
368 | __update_cache(vma, address, pte); | 369 | __update_cache(vma, address, pte); |
369 | } | 370 | } |
diff --git a/arch/mn10300/include/asm/pgtable.h b/arch/mn10300/include/asm/pgtable.h index 6dc30fc827c4..16d88577f3e0 100644 --- a/arch/mn10300/include/asm/pgtable.h +++ b/arch/mn10300/include/asm/pgtable.h | |||
@@ -466,7 +466,7 @@ static inline int set_kernel_exec(unsigned long vaddr, int enable) | |||
466 | * the kernel page tables containing the necessary information by tlb-mn10300.S | 466 | * the kernel page tables containing the necessary information by tlb-mn10300.S |
467 | */ | 467 | */ |
468 | extern void update_mmu_cache(struct vm_area_struct *vma, | 468 | extern void update_mmu_cache(struct vm_area_struct *vma, |
469 | unsigned long address, pte_t pte); | 469 | unsigned long address, pte_t *ptep); |
470 | 470 | ||
471 | #endif /* !__ASSEMBLY__ */ | 471 | #endif /* !__ASSEMBLY__ */ |
472 | 472 | ||
diff --git a/arch/mn10300/mm/mmu-context.c b/arch/mn10300/mm/mmu-context.c index 31c9d27a75ae..36ba02191d40 100644 --- a/arch/mn10300/mm/mmu-context.c +++ b/arch/mn10300/mm/mmu-context.c | |||
@@ -51,9 +51,10 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) | |||
51 | /* | 51 | /* |
52 | * preemptively set a TLB entry | 52 | * preemptively set a TLB entry |
53 | */ | 53 | */ |
54 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte) | 54 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) |
55 | { | 55 | { |
56 | unsigned long pteu, ptel, cnx, flags; | 56 | unsigned long pteu, ptel, cnx, flags; |
57 | pte_t pte = *ptep; | ||
57 | 58 | ||
58 | addr &= PAGE_MASK; | 59 | addr &= PAGE_MASK; |
59 | ptel = pte_val(pte) & ~(xPTEL_UNUSED1 | xPTEL_UNUSED2); | 60 | ptel = pte_val(pte) & ~(xPTEL_UNUSED1 | xPTEL_UNUSED2); |
diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h index a27d2e200fb2..01c15035e783 100644 --- a/arch/parisc/include/asm/pgtable.h +++ b/arch/parisc/include/asm/pgtable.h | |||
@@ -410,7 +410,7 @@ extern void paging_init (void); | |||
410 | 410 | ||
411 | #define PG_dcache_dirty PG_arch_1 | 411 | #define PG_dcache_dirty PG_arch_1 |
412 | 412 | ||
413 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t); | 413 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *); |
414 | 414 | ||
415 | /* Encode and de-code a swap entry */ | 415 | /* Encode and de-code a swap entry */ |
416 | 416 | ||
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index b6ed34de14e1..1054baa2fc69 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c | |||
@@ -68,9 +68,9 @@ flush_cache_all_local(void) | |||
68 | EXPORT_SYMBOL(flush_cache_all_local); | 68 | EXPORT_SYMBOL(flush_cache_all_local); |
69 | 69 | ||
70 | void | 70 | void |
71 | update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 71 | update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) |
72 | { | 72 | { |
73 | struct page *page = pte_page(pte); | 73 | struct page *page = pte_page(*ptep); |
74 | 74 | ||
75 | if (pfn_valid(page_to_pfn(page)) && page_mapping(page) && | 75 | if (pfn_valid(page_to_pfn(page)) && page_mapping(page) && |
76 | test_bit(PG_dcache_dirty, &page->flags)) { | 76 | test_bit(PG_dcache_dirty, &page->flags)) { |
diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h index 21207e54825b..89f158731ce3 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h | |||
@@ -209,7 +209,7 @@ extern void paging_init(void); | |||
209 | * corresponding HPTE into the hash table ahead of time, instead of | 209 | * corresponding HPTE into the hash table ahead of time, instead of |
210 | * waiting for the inevitable extra hash-table miss exception. | 210 | * waiting for the inevitable extra hash-table miss exception. |
211 | */ | 211 | */ |
212 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t); | 212 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *); |
213 | 213 | ||
214 | extern int gup_hugepd(hugepd_t *hugepd, unsigned pdshift, unsigned long addr, | 214 | extern int gup_hugepd(hugepd_t *hugepd, unsigned pdshift, unsigned long addr, |
215 | unsigned long end, int write, struct page **pages, int *nr); | 215 | unsigned long end, int write, struct page **pages, int *nr); |
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index b9b152558f9c..311224cdb7ad 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -494,13 +494,13 @@ EXPORT_SYMBOL(flush_icache_user_range); | |||
494 | * This must always be called with the pte lock held. | 494 | * This must always be called with the pte lock held. |
495 | */ | 495 | */ |
496 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, | 496 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, |
497 | pte_t pte) | 497 | pte_t *ptep) |
498 | { | 498 | { |
499 | #ifdef CONFIG_PPC_STD_MMU | 499 | #ifdef CONFIG_PPC_STD_MMU |
500 | unsigned long access = 0, trap; | 500 | unsigned long access = 0, trap; |
501 | 501 | ||
502 | /* We only want HPTEs for linux PTEs that have _PAGE_ACCESSED set */ | 502 | /* We only want HPTEs for linux PTEs that have _PAGE_ACCESSED set */ |
503 | if (!pte_young(pte) || address >= TASK_SIZE) | 503 | if (!pte_young(*ptep) || address >= TASK_SIZE) |
504 | return; | 504 | return; |
505 | 505 | ||
506 | /* We try to figure out if we are coming from an instruction | 506 | /* We try to figure out if we are coming from an instruction |
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index e2fa79cf0614..9b5b9189c15e 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h | |||
@@ -43,7 +43,7 @@ extern void vmem_map_init(void); | |||
43 | * The S390 doesn't have any external MMU info: the kernel page | 43 | * The S390 doesn't have any external MMU info: the kernel page |
44 | * tables contain all the necessary information. | 44 | * tables contain all the necessary information. |
45 | */ | 45 | */ |
46 | #define update_mmu_cache(vma, address, pte) do { } while (0) | 46 | #define update_mmu_cache(vma, address, ptep) do { } while (0) |
47 | 47 | ||
48 | /* | 48 | /* |
49 | * ZERO_PAGE is a global shared page that is always zero: used | 49 | * ZERO_PAGE is a global shared page that is always zero: used |
diff --git a/arch/score/include/asm/pgtable.h b/arch/score/include/asm/pgtable.h index 674934b40170..ccf38f06c57d 100644 --- a/arch/score/include/asm/pgtable.h +++ b/arch/score/include/asm/pgtable.h | |||
@@ -272,8 +272,9 @@ extern void __update_cache(struct vm_area_struct *vma, | |||
272 | unsigned long address, pte_t pte); | 272 | unsigned long address, pte_t pte); |
273 | 273 | ||
274 | static inline void update_mmu_cache(struct vm_area_struct *vma, | 274 | static inline void update_mmu_cache(struct vm_area_struct *vma, |
275 | unsigned long address, pte_t pte) | 275 | unsigned long address, pte_t *ptep) |
276 | { | 276 | { |
277 | pte_t pte = *ptep; | ||
277 | __update_tlb(vma, address, pte); | 278 | __update_tlb(vma, address, pte); |
278 | __update_cache(vma, address, pte); | 279 | __update_cache(vma, address, pte); |
279 | } | 280 | } |
diff --git a/arch/sh/include/asm/pgtable.h b/arch/sh/include/asm/pgtable.h index ba3046e4f06f..1ff93ac1aa44 100644 --- a/arch/sh/include/asm/pgtable.h +++ b/arch/sh/include/asm/pgtable.h | |||
@@ -165,8 +165,9 @@ extern void __update_tlb(struct vm_area_struct *vma, | |||
165 | unsigned long address, pte_t pte); | 165 | unsigned long address, pte_t pte); |
166 | 166 | ||
167 | static inline void | 167 | static inline void |
168 | update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 168 | update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) |
169 | { | 169 | { |
170 | pte_t pte = *ptep; | ||
170 | __update_cache(vma, address, pte); | 171 | __update_cache(vma, address, pte); |
171 | __update_tlb(vma, address, pte); | 172 | __update_tlb(vma, address, pte); |
172 | } | 173 | } |
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c index 47530104e0ad..1677b5ee191d 100644 --- a/arch/sh/mm/fault_32.c +++ b/arch/sh/mm/fault_32.c | |||
@@ -371,7 +371,7 @@ handle_tlbmiss(struct pt_regs *regs, unsigned long writeaccess, | |||
371 | local_flush_tlb_one(get_asid(), address & PAGE_MASK); | 371 | local_flush_tlb_one(get_asid(), address & PAGE_MASK); |
372 | #endif | 372 | #endif |
373 | 373 | ||
374 | update_mmu_cache(NULL, address, entry); | 374 | update_mmu_cache(NULL, address, pte); |
375 | 375 | ||
376 | return 0; | 376 | return 0; |
377 | } | 377 | } |
diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h index e0cabe790ec1..77f906d8cc21 100644 --- a/arch/sparc/include/asm/pgtable_32.h +++ b/arch/sparc/include/asm/pgtable_32.h | |||
@@ -330,9 +330,9 @@ BTFIXUPDEF_CALL(void, mmu_info, struct seq_file *) | |||
330 | #define FAULT_CODE_WRITE 0x2 | 330 | #define FAULT_CODE_WRITE 0x2 |
331 | #define FAULT_CODE_USER 0x4 | 331 | #define FAULT_CODE_USER 0x4 |
332 | 332 | ||
333 | BTFIXUPDEF_CALL(void, update_mmu_cache, struct vm_area_struct *, unsigned long, pte_t) | 333 | BTFIXUPDEF_CALL(void, update_mmu_cache, struct vm_area_struct *, unsigned long, pte_t *) |
334 | 334 | ||
335 | #define update_mmu_cache(vma,addr,pte) BTFIXUP_CALL(update_mmu_cache)(vma,addr,pte) | 335 | #define update_mmu_cache(vma,addr,ptep) BTFIXUP_CALL(update_mmu_cache)(vma,addr,ptep) |
336 | 336 | ||
337 | BTFIXUPDEF_CALL(void, sparc_mapiorange, unsigned int, unsigned long, | 337 | BTFIXUPDEF_CALL(void, sparc_mapiorange, unsigned int, unsigned long, |
338 | unsigned long, unsigned int) | 338 | unsigned long, unsigned int) |
diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h index f3cb790fa2ae..f5b5fa76c02d 100644 --- a/arch/sparc/include/asm/pgtable_64.h +++ b/arch/sparc/include/asm/pgtable_64.h | |||
@@ -706,7 +706,7 @@ extern unsigned long find_ecache_flush_span(unsigned long size); | |||
706 | #define mmu_unlockarea(vaddr, len) do { } while(0) | 706 | #define mmu_unlockarea(vaddr, len) do { } while(0) |
707 | 707 | ||
708 | struct vm_area_struct; | 708 | struct vm_area_struct; |
709 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t); | 709 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *); |
710 | 710 | ||
711 | /* Encode and de-code a swap entry */ | 711 | /* Encode and de-code a swap entry */ |
712 | #define __swp_type(entry) (((entry).val >> PAGE_SHIFT) & 0xffUL) | 712 | #define __swp_type(entry) (((entry).val >> PAGE_SHIFT) & 0xffUL) |
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c index b99f81c4906f..43e20efb2511 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c | |||
@@ -370,7 +370,7 @@ asmlinkage void do_sun4c_fault(struct pt_regs *regs, int text_fault, int write, | |||
370 | unsigned long address) | 370 | unsigned long address) |
371 | { | 371 | { |
372 | extern void sun4c_update_mmu_cache(struct vm_area_struct *, | 372 | extern void sun4c_update_mmu_cache(struct vm_area_struct *, |
373 | unsigned long,pte_t); | 373 | unsigned long,pte_t *); |
374 | extern pte_t *sun4c_pte_offset_kernel(pmd_t *,unsigned long); | 374 | extern pte_t *sun4c_pte_offset_kernel(pmd_t *,unsigned long); |
375 | struct task_struct *tsk = current; | 375 | struct task_struct *tsk = current; |
376 | struct mm_struct *mm = tsk->mm; | 376 | struct mm_struct *mm = tsk->mm; |
@@ -447,7 +447,7 @@ asmlinkage void do_sun4c_fault(struct pt_regs *regs, int text_fault, int write, | |||
447 | * on the CPU and doing a shrink_mmap() on this vma. | 447 | * on the CPU and doing a shrink_mmap() on this vma. |
448 | */ | 448 | */ |
449 | sun4c_update_mmu_cache (find_vma(current->mm, address), address, | 449 | sun4c_update_mmu_cache (find_vma(current->mm, address), address, |
450 | *ptep); | 450 | ptep); |
451 | else | 451 | else |
452 | do_sparc_fault(regs, text_fault, write, address); | 452 | do_sparc_fault(regs, text_fault, write, address); |
453 | } | 453 | } |
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c index 1886d37d411b..9245a822a2f1 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c | |||
@@ -289,12 +289,13 @@ static void flush_dcache(unsigned long pfn) | |||
289 | } | 289 | } |
290 | } | 290 | } |
291 | 291 | ||
292 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 292 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) |
293 | { | 293 | { |
294 | struct mm_struct *mm; | 294 | struct mm_struct *mm; |
295 | struct tsb *tsb; | 295 | struct tsb *tsb; |
296 | unsigned long tag, flags; | 296 | unsigned long tag, flags; |
297 | unsigned long tsb_index, tsb_hash_shift; | 297 | unsigned long tsb_index, tsb_hash_shift; |
298 | pte_t pte = *ptep; | ||
298 | 299 | ||
299 | if (tlb_type != hypervisor) { | 300 | if (tlb_type != hypervisor) { |
300 | unsigned long pfn = pte_pfn(pte); | 301 | unsigned long pfn = pte_pfn(pte); |
diff --git a/arch/sparc/mm/nosun4c.c b/arch/sparc/mm/nosun4c.c index 196263f895b7..4e62c27147c4 100644 --- a/arch/sparc/mm/nosun4c.c +++ b/arch/sparc/mm/nosun4c.c | |||
@@ -62,7 +62,7 @@ pte_t *sun4c_pte_offset_kernel(pmd_t *dir, unsigned long address) | |||
62 | return NULL; | 62 | return NULL; |
63 | } | 63 | } |
64 | 64 | ||
65 | void sun4c_update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 65 | void sun4c_update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) |
66 | { | 66 | { |
67 | } | 67 | } |
68 | 68 | ||
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c index 367321a030dd..df49b200ca4c 100644 --- a/arch/sparc/mm/srmmu.c +++ b/arch/sparc/mm/srmmu.c | |||
@@ -694,7 +694,7 @@ extern void tsunami_setup_blockops(void); | |||
694 | * The following code is a deadwood that may be necessary when | 694 | * The following code is a deadwood that may be necessary when |
695 | * we start to make precise page flushes again. --zaitcev | 695 | * we start to make precise page flushes again. --zaitcev |
696 | */ | 696 | */ |
697 | static void swift_update_mmu_cache(struct vm_area_struct * vma, unsigned long address, pte_t pte) | 697 | static void swift_update_mmu_cache(struct vm_area_struct * vma, unsigned long address, pte_t *ptep) |
698 | { | 698 | { |
699 | #if 0 | 699 | #if 0 |
700 | static unsigned long last; | 700 | static unsigned long last; |
@@ -703,10 +703,10 @@ static void swift_update_mmu_cache(struct vm_area_struct * vma, unsigned long ad | |||
703 | 703 | ||
704 | if (address == last) { | 704 | if (address == last) { |
705 | val = srmmu_hwprobe(address); | 705 | val = srmmu_hwprobe(address); |
706 | if (val != 0 && pte_val(pte) != val) { | 706 | if (val != 0 && pte_val(*ptep) != val) { |
707 | printk("swift_update_mmu_cache: " | 707 | printk("swift_update_mmu_cache: " |
708 | "addr %lx put %08x probed %08x from %p\n", | 708 | "addr %lx put %08x probed %08x from %p\n", |
709 | address, pte_val(pte), val, | 709 | address, pte_val(*ptep), val, |
710 | __builtin_return_address(0)); | 710 | __builtin_return_address(0)); |
711 | srmmu_flush_whole_tlb(); | 711 | srmmu_flush_whole_tlb(); |
712 | } | 712 | } |
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c index a89baf0d875a..18652534b91a 100644 --- a/arch/sparc/mm/sun4c.c +++ b/arch/sparc/mm/sun4c.c | |||
@@ -1887,7 +1887,7 @@ static void sun4c_check_pgt_cache(int low, int high) | |||
1887 | /* An experiment, turn off by default for now... -DaveM */ | 1887 | /* An experiment, turn off by default for now... -DaveM */ |
1888 | #define SUN4C_PRELOAD_PSEG | 1888 | #define SUN4C_PRELOAD_PSEG |
1889 | 1889 | ||
1890 | void sun4c_update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 1890 | void sun4c_update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) |
1891 | { | 1891 | { |
1892 | unsigned long flags; | 1892 | unsigned long flags; |
1893 | int pseg; | 1893 | int pseg; |
@@ -1929,7 +1929,7 @@ void sun4c_update_mmu_cache(struct vm_area_struct *vma, unsigned long address, p | |||
1929 | start += PAGE_SIZE; | 1929 | start += PAGE_SIZE; |
1930 | } | 1930 | } |
1931 | #ifndef SUN4C_PRELOAD_PSEG | 1931 | #ifndef SUN4C_PRELOAD_PSEG |
1932 | sun4c_put_pte(address, pte_val(pte)); | 1932 | sun4c_put_pte(address, pte_val(*ptep)); |
1933 | #endif | 1933 | #endif |
1934 | local_irq_restore(flags); | 1934 | local_irq_restore(flags); |
1935 | return; | 1935 | return; |
@@ -1940,7 +1940,7 @@ void sun4c_update_mmu_cache(struct vm_area_struct *vma, unsigned long address, p | |||
1940 | add_lru(entry); | 1940 | add_lru(entry); |
1941 | } | 1941 | } |
1942 | 1942 | ||
1943 | sun4c_put_pte(address, pte_val(pte)); | 1943 | sun4c_put_pte(address, pte_val(*ptep)); |
1944 | local_irq_restore(flags); | 1944 | local_irq_restore(flags); |
1945 | } | 1945 | } |
1946 | 1946 | ||
diff --git a/arch/um/include/asm/pgtable.h b/arch/um/include/asm/pgtable.h index 9ce3f165111a..a9f7251b4a8d 100644 --- a/arch/um/include/asm/pgtable.h +++ b/arch/um/include/asm/pgtable.h | |||
@@ -345,7 +345,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
345 | struct mm_struct; | 345 | struct mm_struct; |
346 | extern pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr); | 346 | extern pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr); |
347 | 347 | ||
348 | #define update_mmu_cache(vma,address,pte) do ; while (0) | 348 | #define update_mmu_cache(vma,address,ptep) do ; while (0) |
349 | 349 | ||
350 | /* Encode and de-code a swap entry */ | 350 | /* Encode and de-code a swap entry */ |
351 | #define __swp_type(x) (((x).val >> 4) & 0x3f) | 351 | #define __swp_type(x) (((x).val >> 4) & 0x3f) |
diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h index 01fd9461d323..a28668396508 100644 --- a/arch/x86/include/asm/pgtable_32.h +++ b/arch/x86/include/asm/pgtable_32.h | |||
@@ -80,7 +80,7 @@ do { \ | |||
80 | * The i386 doesn't have any external MMU info: the kernel page | 80 | * The i386 doesn't have any external MMU info: the kernel page |
81 | * tables contain all the necessary information. | 81 | * tables contain all the necessary information. |
82 | */ | 82 | */ |
83 | #define update_mmu_cache(vma, address, pte) do { } while (0) | 83 | #define update_mmu_cache(vma, address, ptep) do { } while (0) |
84 | 84 | ||
85 | #endif /* !__ASSEMBLY__ */ | 85 | #endif /* !__ASSEMBLY__ */ |
86 | 86 | ||
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h index c57a30117149..181be528c612 100644 --- a/arch/x86/include/asm/pgtable_64.h +++ b/arch/x86/include/asm/pgtable_64.h | |||
@@ -129,7 +129,7 @@ static inline int pgd_large(pgd_t pgd) { return 0; } | |||
129 | #define pte_unmap(pte) /* NOP */ | 129 | #define pte_unmap(pte) /* NOP */ |
130 | #define pte_unmap_nested(pte) /* NOP */ | 130 | #define pte_unmap_nested(pte) /* NOP */ |
131 | 131 | ||
132 | #define update_mmu_cache(vma, address, pte) do { } while (0) | 132 | #define update_mmu_cache(vma, address, ptep) do { } while (0) |
133 | 133 | ||
134 | /* Encode and de-code a swap entry */ | 134 | /* Encode and de-code a swap entry */ |
135 | #if _PAGE_BIT_FILE < _PAGE_BIT_PROTNONE | 135 | #if _PAGE_BIT_FILE < _PAGE_BIT_PROTNONE |
diff --git a/arch/xtensa/include/asm/pgtable.h b/arch/xtensa/include/asm/pgtable.h index a138770c358e..76bf35554117 100644 --- a/arch/xtensa/include/asm/pgtable.h +++ b/arch/xtensa/include/asm/pgtable.h | |||
@@ -394,7 +394,7 @@ ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep) | |||
394 | #define kern_addr_valid(addr) (1) | 394 | #define kern_addr_valid(addr) (1) |
395 | 395 | ||
396 | extern void update_mmu_cache(struct vm_area_struct * vma, | 396 | extern void update_mmu_cache(struct vm_area_struct * vma, |
397 | unsigned long address, pte_t pte); | 397 | unsigned long address, pte_t *ptep); |
398 | 398 | ||
399 | /* | 399 | /* |
400 | * remap a physical page `pfn' of size `size' with page protection `prot' | 400 | * remap a physical page `pfn' of size `size' with page protection `prot' |
diff --git a/arch/xtensa/mm/cache.c b/arch/xtensa/mm/cache.c index 3ba990c67676..85df4655d326 100644 --- a/arch/xtensa/mm/cache.c +++ b/arch/xtensa/mm/cache.c | |||
@@ -147,9 +147,9 @@ void flush_cache_page(struct vm_area_struct* vma, unsigned long address, | |||
147 | #endif | 147 | #endif |
148 | 148 | ||
149 | void | 149 | void |
150 | update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t pte) | 150 | update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep) |
151 | { | 151 | { |
152 | unsigned long pfn = pte_pfn(pte); | 152 | unsigned long pfn = pte_pfn(*ptep); |
153 | struct page *page; | 153 | struct page *page; |
154 | 154 | ||
155 | if (!pfn_valid(pfn)) | 155 | if (!pfn_valid(pfn)) |
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index e91b81b63670..94cd94df56e3 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
@@ -2088,7 +2088,7 @@ static void set_huge_ptep_writable(struct vm_area_struct *vma, | |||
2088 | 2088 | ||
2089 | entry = pte_mkwrite(pte_mkdirty(huge_ptep_get(ptep))); | 2089 | entry = pte_mkwrite(pte_mkdirty(huge_ptep_get(ptep))); |
2090 | if (huge_ptep_set_access_flags(vma, address, ptep, entry, 1)) { | 2090 | if (huge_ptep_set_access_flags(vma, address, ptep, entry, 1)) { |
2091 | update_mmu_cache(vma, address, entry); | 2091 | update_mmu_cache(vma, address, ptep); |
2092 | } | 2092 | } |
2093 | } | 2093 | } |
2094 | 2094 | ||
@@ -2559,7 +2559,7 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, | |||
2559 | entry = pte_mkyoung(entry); | 2559 | entry = pte_mkyoung(entry); |
2560 | if (huge_ptep_set_access_flags(vma, address, ptep, entry, | 2560 | if (huge_ptep_set_access_flags(vma, address, ptep, entry, |
2561 | flags & FAULT_FLAG_WRITE)) | 2561 | flags & FAULT_FLAG_WRITE)) |
2562 | update_mmu_cache(vma, address, entry); | 2562 | update_mmu_cache(vma, address, ptep); |
2563 | 2563 | ||
2564 | out_page_table_lock: | 2564 | out_page_table_lock: |
2565 | spin_unlock(&mm->page_table_lock); | 2565 | spin_unlock(&mm->page_table_lock); |
diff --git a/mm/memory.c b/mm/memory.c index 09e4b1be7b67..72fb5f39bccc 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -1593,7 +1593,7 @@ static int insert_pfn(struct vm_area_struct *vma, unsigned long addr, | |||
1593 | /* Ok, finally just insert the thing.. */ | 1593 | /* Ok, finally just insert the thing.. */ |
1594 | entry = pte_mkspecial(pfn_pte(pfn, prot)); | 1594 | entry = pte_mkspecial(pfn_pte(pfn, prot)); |
1595 | set_pte_at(mm, addr, pte, entry); | 1595 | set_pte_at(mm, addr, pte, entry); |
1596 | update_mmu_cache(vma, addr, entry); /* XXX: why not for insert_page? */ | 1596 | update_mmu_cache(vma, addr, pte); /* XXX: why not for insert_page? */ |
1597 | 1597 | ||
1598 | retval = 0; | 1598 | retval = 0; |
1599 | out_unlock: | 1599 | out_unlock: |
@@ -2116,7 +2116,7 @@ reuse: | |||
2116 | entry = pte_mkyoung(orig_pte); | 2116 | entry = pte_mkyoung(orig_pte); |
2117 | entry = maybe_mkwrite(pte_mkdirty(entry), vma); | 2117 | entry = maybe_mkwrite(pte_mkdirty(entry), vma); |
2118 | if (ptep_set_access_flags(vma, address, page_table, entry,1)) | 2118 | if (ptep_set_access_flags(vma, address, page_table, entry,1)) |
2119 | update_mmu_cache(vma, address, entry); | 2119 | update_mmu_cache(vma, address, page_table); |
2120 | ret |= VM_FAULT_WRITE; | 2120 | ret |= VM_FAULT_WRITE; |
2121 | goto unlock; | 2121 | goto unlock; |
2122 | } | 2122 | } |
@@ -2185,7 +2185,7 @@ gotten: | |||
2185 | * new page to be mapped directly into the secondary page table. | 2185 | * new page to be mapped directly into the secondary page table. |
2186 | */ | 2186 | */ |
2187 | set_pte_at_notify(mm, address, page_table, entry); | 2187 | set_pte_at_notify(mm, address, page_table, entry); |
2188 | update_mmu_cache(vma, address, entry); | 2188 | update_mmu_cache(vma, address, page_table); |
2189 | if (old_page) { | 2189 | if (old_page) { |
2190 | /* | 2190 | /* |
2191 | * Only after switching the pte to the new page may | 2191 | * Only after switching the pte to the new page may |
@@ -2629,7 +2629,7 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
2629 | } | 2629 | } |
2630 | 2630 | ||
2631 | /* No need to invalidate - it was non-present before */ | 2631 | /* No need to invalidate - it was non-present before */ |
2632 | update_mmu_cache(vma, address, pte); | 2632 | update_mmu_cache(vma, address, page_table); |
2633 | unlock: | 2633 | unlock: |
2634 | pte_unmap_unlock(page_table, ptl); | 2634 | pte_unmap_unlock(page_table, ptl); |
2635 | out: | 2635 | out: |
@@ -2694,7 +2694,7 @@ setpte: | |||
2694 | set_pte_at(mm, address, page_table, entry); | 2694 | set_pte_at(mm, address, page_table, entry); |
2695 | 2695 | ||
2696 | /* No need to invalidate - it was non-present before */ | 2696 | /* No need to invalidate - it was non-present before */ |
2697 | update_mmu_cache(vma, address, entry); | 2697 | update_mmu_cache(vma, address, page_table); |
2698 | unlock: | 2698 | unlock: |
2699 | pte_unmap_unlock(page_table, ptl); | 2699 | pte_unmap_unlock(page_table, ptl); |
2700 | return 0; | 2700 | return 0; |
@@ -2855,7 +2855,7 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, | |||
2855 | set_pte_at(mm, address, page_table, entry); | 2855 | set_pte_at(mm, address, page_table, entry); |
2856 | 2856 | ||
2857 | /* no need to invalidate: a not-present page won't be cached */ | 2857 | /* no need to invalidate: a not-present page won't be cached */ |
2858 | update_mmu_cache(vma, address, entry); | 2858 | update_mmu_cache(vma, address, page_table); |
2859 | } else { | 2859 | } else { |
2860 | if (charged) | 2860 | if (charged) |
2861 | mem_cgroup_uncharge_page(page); | 2861 | mem_cgroup_uncharge_page(page); |
@@ -2992,7 +2992,7 @@ static inline int handle_pte_fault(struct mm_struct *mm, | |||
2992 | } | 2992 | } |
2993 | entry = pte_mkyoung(entry); | 2993 | entry = pte_mkyoung(entry); |
2994 | if (ptep_set_access_flags(vma, address, pte, entry, flags & FAULT_FLAG_WRITE)) { | 2994 | if (ptep_set_access_flags(vma, address, pte, entry, flags & FAULT_FLAG_WRITE)) { |
2995 | update_mmu_cache(vma, address, entry); | 2995 | update_mmu_cache(vma, address, pte); |
2996 | } else { | 2996 | } else { |
2997 | /* | 2997 | /* |
2998 | * This is needed only for protection faults but the arch code | 2998 | * This is needed only for protection faults but the arch code |
diff --git a/mm/migrate.c b/mm/migrate.c index efddbf0926b2..e58e5da25b91 100644 --- a/mm/migrate.c +++ b/mm/migrate.c | |||
@@ -134,7 +134,7 @@ static int remove_migration_pte(struct page *new, struct vm_area_struct *vma, | |||
134 | page_add_file_rmap(new); | 134 | page_add_file_rmap(new); |
135 | 135 | ||
136 | /* No need to invalidate - it was non-present before */ | 136 | /* No need to invalidate - it was non-present before */ |
137 | update_mmu_cache(vma, addr, pte); | 137 | update_mmu_cache(vma, addr, ptep); |
138 | unlock: | 138 | unlock: |
139 | pte_unmap_unlock(ptep, ptl); | 139 | pte_unmap_unlock(ptep, ptl); |
140 | out: | 140 | out: |