diff options
-rw-r--r-- | arch/sparc64/mm/tlb.c | 4 | ||||
-rw-r--r-- | include/asm-arm/tlb.h | 5 | ||||
-rw-r--r-- | include/asm-arm26/tlb.h | 7 | ||||
-rw-r--r-- | include/asm-generic/tlb.h | 6 | ||||
-rw-r--r-- | include/asm-ia64/tlb.h | 6 | ||||
-rw-r--r-- | include/asm-sparc64/tlb.h | 13 | ||||
-rw-r--r-- | mm/memory.c | 4 |
7 files changed, 8 insertions, 37 deletions
diff --git a/arch/sparc64/mm/tlb.c b/arch/sparc64/mm/tlb.c index 90ca99d0b89c..6a43f7cd090e 100644 --- a/arch/sparc64/mm/tlb.c +++ b/arch/sparc64/mm/tlb.c | |||
@@ -72,7 +72,7 @@ void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t | |||
72 | 72 | ||
73 | no_cache_flush: | 73 | no_cache_flush: |
74 | 74 | ||
75 | if (mp->tlb_frozen) | 75 | if (mp->fullmm) |
76 | return; | 76 | return; |
77 | 77 | ||
78 | nr = mp->tlb_nr; | 78 | nr = mp->tlb_nr; |
@@ -97,7 +97,7 @@ void flush_tlb_pgtables(struct mm_struct *mm, unsigned long start, unsigned long | |||
97 | unsigned long nr = mp->tlb_nr; | 97 | unsigned long nr = mp->tlb_nr; |
98 | long s = start, e = end, vpte_base; | 98 | long s = start, e = end, vpte_base; |
99 | 99 | ||
100 | if (mp->tlb_frozen) | 100 | if (mp->fullmm) |
101 | return; | 101 | return; |
102 | 102 | ||
103 | /* If start is greater than end, that is a real problem. */ | 103 | /* If start is greater than end, that is a real problem. */ |
diff --git a/include/asm-arm/tlb.h b/include/asm-arm/tlb.h index da41df20928f..a35ab0f2e25e 100644 --- a/include/asm-arm/tlb.h +++ b/include/asm-arm/tlb.h | |||
@@ -68,11 +68,6 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) | |||
68 | put_cpu_var(mmu_gathers); | 68 | put_cpu_var(mmu_gathers); |
69 | } | 69 | } |
70 | 70 | ||
71 | static inline unsigned int tlb_is_full_mm(struct mmu_gather *tlb) | ||
72 | { | ||
73 | return tlb->fullmm; | ||
74 | } | ||
75 | |||
76 | #define tlb_remove_tlb_entry(tlb,ptep,address) do { } while (0) | 71 | #define tlb_remove_tlb_entry(tlb,ptep,address) do { } while (0) |
77 | 72 | ||
78 | /* | 73 | /* |
diff --git a/include/asm-arm26/tlb.h b/include/asm-arm26/tlb.h index 8486b00a6799..c7d54ca0a239 100644 --- a/include/asm-arm26/tlb.h +++ b/include/asm-arm26/tlb.h | |||
@@ -55,13 +55,6 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) | |||
55 | put_cpu_var(mmu_gathers); | 55 | put_cpu_var(mmu_gathers); |
56 | } | 56 | } |
57 | 57 | ||
58 | |||
59 | static inline unsigned int | ||
60 | tlb_is_full_mm(struct mmu_gather *tlb) | ||
61 | { | ||
62 | return tlb->fullmm; | ||
63 | } | ||
64 | |||
65 | #define tlb_remove_tlb_entry(tlb,ptep,address) do { } while (0) | 58 | #define tlb_remove_tlb_entry(tlb,ptep,address) do { } while (0) |
66 | //#define tlb_start_vma(tlb,vma) do { } while (0) | 59 | //#define tlb_start_vma(tlb,vma) do { } while (0) |
67 | //FIXME - ARM32 uses this now that things changed in the kernel. seems like it may be pointless on arm26, however to get things compiling... | 60 | //FIXME - ARM32 uses this now that things changed in the kernel. seems like it may be pointless on arm26, however to get things compiling... |
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h index c8232622c8d9..5d352a70f004 100644 --- a/include/asm-generic/tlb.h +++ b/include/asm-generic/tlb.h | |||
@@ -103,12 +103,6 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) | |||
103 | put_cpu_var(mmu_gathers); | 103 | put_cpu_var(mmu_gathers); |
104 | } | 104 | } |
105 | 105 | ||
106 | static inline unsigned int | ||
107 | tlb_is_full_mm(struct mmu_gather *tlb) | ||
108 | { | ||
109 | return tlb->fullmm; | ||
110 | } | ||
111 | |||
112 | /* tlb_remove_page | 106 | /* tlb_remove_page |
113 | * Must perform the equivalent to __free_pte(pte_get_and_clear(ptep)), while | 107 | * Must perform the equivalent to __free_pte(pte_get_and_clear(ptep)), while |
114 | * handling the additional races in SMP caused by other CPUs caching valid | 108 | * handling the additional races in SMP caused by other CPUs caching valid |
diff --git a/include/asm-ia64/tlb.h b/include/asm-ia64/tlb.h index 1b82299d7c1e..0bbd79f6a793 100644 --- a/include/asm-ia64/tlb.h +++ b/include/asm-ia64/tlb.h | |||
@@ -178,12 +178,6 @@ tlb_finish_mmu (struct mmu_gather *tlb, unsigned long start, unsigned long end) | |||
178 | put_cpu_var(mmu_gathers); | 178 | put_cpu_var(mmu_gathers); |
179 | } | 179 | } |
180 | 180 | ||
181 | static inline unsigned int | ||
182 | tlb_is_full_mm(struct mmu_gather *tlb) | ||
183 | { | ||
184 | return tlb->fullmm; | ||
185 | } | ||
186 | |||
187 | /* | 181 | /* |
188 | * Logically, this routine frees PAGE. On MP machines, the actual freeing of the page | 182 | * Logically, this routine frees PAGE. On MP machines, the actual freeing of the page |
189 | * must be delayed until after the TLB has been flushed (see comments at the beginning of | 183 | * must be delayed until after the TLB has been flushed (see comments at the beginning of |
diff --git a/include/asm-sparc64/tlb.h b/include/asm-sparc64/tlb.h index 169309bdbf82..5d194eae870c 100644 --- a/include/asm-sparc64/tlb.h +++ b/include/asm-sparc64/tlb.h | |||
@@ -25,7 +25,7 @@ struct mmu_gather { | |||
25 | struct mm_struct *mm; | 25 | struct mm_struct *mm; |
26 | unsigned int pages_nr; | 26 | unsigned int pages_nr; |
27 | unsigned int need_flush; | 27 | unsigned int need_flush; |
28 | unsigned int tlb_frozen; | 28 | unsigned int fullmm; |
29 | unsigned int tlb_nr; | 29 | unsigned int tlb_nr; |
30 | unsigned long freed; | 30 | unsigned long freed; |
31 | unsigned long vaddrs[TLB_BATCH_NR]; | 31 | unsigned long vaddrs[TLB_BATCH_NR]; |
@@ -50,7 +50,7 @@ static inline struct mmu_gather *tlb_gather_mmu(struct mm_struct *mm, unsigned i | |||
50 | 50 | ||
51 | mp->mm = mm; | 51 | mp->mm = mm; |
52 | mp->pages_nr = num_online_cpus() > 1 ? 0U : ~0U; | 52 | mp->pages_nr = num_online_cpus() > 1 ? 0U : ~0U; |
53 | mp->tlb_frozen = full_mm_flush; | 53 | mp->fullmm = full_mm_flush; |
54 | mp->freed = 0; | 54 | mp->freed = 0; |
55 | 55 | ||
56 | return mp; | 56 | return mp; |
@@ -88,10 +88,10 @@ static inline void tlb_finish_mmu(struct mmu_gather *mp, unsigned long start, un | |||
88 | 88 | ||
89 | tlb_flush_mmu(mp); | 89 | tlb_flush_mmu(mp); |
90 | 90 | ||
91 | if (mp->tlb_frozen) { | 91 | if (mp->fullmm) { |
92 | if (CTX_VALID(mm->context)) | 92 | if (CTX_VALID(mm->context)) |
93 | do_flush_tlb_mm(mm); | 93 | do_flush_tlb_mm(mm); |
94 | mp->tlb_frozen = 0; | 94 | mp->fullmm = 0; |
95 | } else | 95 | } else |
96 | flush_tlb_pending(); | 96 | flush_tlb_pending(); |
97 | 97 | ||
@@ -101,11 +101,6 @@ static inline void tlb_finish_mmu(struct mmu_gather *mp, unsigned long start, un | |||
101 | put_cpu_var(mmu_gathers); | 101 | put_cpu_var(mmu_gathers); |
102 | } | 102 | } |
103 | 103 | ||
104 | static inline unsigned int tlb_is_full_mm(struct mmu_gather *mp) | ||
105 | { | ||
106 | return mp->tlb_frozen; | ||
107 | } | ||
108 | |||
109 | static inline void tlb_remove_page(struct mmu_gather *mp, struct page *page) | 104 | static inline void tlb_remove_page(struct mmu_gather *mp, struct page *page) |
110 | { | 105 | { |
111 | mp->need_flush = 1; | 106 | mp->need_flush = 1; |
diff --git a/mm/memory.c b/mm/memory.c index eaf79031f573..585bb4e0b97f 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -249,7 +249,7 @@ void free_pgd_range(struct mmu_gather **tlb, | |||
249 | free_pud_range(*tlb, pgd, addr, next, floor, ceiling); | 249 | free_pud_range(*tlb, pgd, addr, next, floor, ceiling); |
250 | } while (pgd++, addr = next, addr != end); | 250 | } while (pgd++, addr = next, addr != end); |
251 | 251 | ||
252 | if (!tlb_is_full_mm(*tlb)) | 252 | if (!(*tlb)->fullmm) |
253 | flush_tlb_pgtables((*tlb)->mm, start, end); | 253 | flush_tlb_pgtables((*tlb)->mm, start, end); |
254 | } | 254 | } |
255 | 255 | ||
@@ -698,7 +698,7 @@ unsigned long unmap_vmas(struct mmu_gather **tlbp, struct mm_struct *mm, | |||
698 | int tlb_start_valid = 0; | 698 | int tlb_start_valid = 0; |
699 | unsigned long start = start_addr; | 699 | unsigned long start = start_addr; |
700 | spinlock_t *i_mmap_lock = details? details->i_mmap_lock: NULL; | 700 | spinlock_t *i_mmap_lock = details? details->i_mmap_lock: NULL; |
701 | int fullmm = tlb_is_full_mm(*tlbp); | 701 | int fullmm = (*tlbp)->fullmm; |
702 | 702 | ||
703 | for ( ; vma && vma->vm_start < end_addr; vma = vma->vm_next) { | 703 | for ( ; vma && vma->vm_start < end_addr; vma = vma->vm_next) { |
704 | unsigned long end; | 704 | unsigned long end; |