summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asm-generic/tlb.h1
-rw-r--r--mm/mmu_gather.c34
2 files changed, 17 insertions, 18 deletions
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
index ddd3d02be93d..fc661b4675ff 100644
--- a/include/asm-generic/tlb.h
+++ b/include/asm-generic/tlb.h
@@ -182,7 +182,6 @@ struct mmu_table_batch {
182#define MAX_TABLE_BATCH \ 182#define MAX_TABLE_BATCH \
183 ((PAGE_SIZE - sizeof(struct mmu_table_batch)) / sizeof(void *)) 183 ((PAGE_SIZE - sizeof(struct mmu_table_batch)) / sizeof(void *))
184 184
185extern void tlb_table_flush(struct mmu_gather *tlb);
186extern void tlb_remove_table(struct mmu_gather *tlb, void *table); 185extern void tlb_remove_table(struct mmu_gather *tlb, void *table);
187 186
188#endif 187#endif
diff --git a/mm/mmu_gather.c b/mm/mmu_gather.c
index 35699a4d0a74..99740e1dd273 100644
--- a/mm/mmu_gather.c
+++ b/mm/mmu_gather.c
@@ -91,22 +91,6 @@ bool __tlb_remove_page_size(struct mmu_gather *tlb, struct page *page, int page_
91 91
92#endif /* HAVE_MMU_GATHER_NO_GATHER */ 92#endif /* HAVE_MMU_GATHER_NO_GATHER */
93 93
94static void tlb_flush_mmu_free(struct mmu_gather *tlb)
95{
96#ifdef CONFIG_HAVE_RCU_TABLE_FREE
97 tlb_table_flush(tlb);
98#endif
99#ifndef CONFIG_HAVE_MMU_GATHER_NO_GATHER
100 tlb_batch_pages_flush(tlb);
101#endif
102}
103
104void tlb_flush_mmu(struct mmu_gather *tlb)
105{
106 tlb_flush_mmu_tlbonly(tlb);
107 tlb_flush_mmu_free(tlb);
108}
109
110#ifdef CONFIG_HAVE_RCU_TABLE_FREE 94#ifdef CONFIG_HAVE_RCU_TABLE_FREE
111 95
112/* 96/*
@@ -159,7 +143,7 @@ static void tlb_remove_table_rcu(struct rcu_head *head)
159 free_page((unsigned long)batch); 143 free_page((unsigned long)batch);
160} 144}
161 145
162void tlb_table_flush(struct mmu_gather *tlb) 146static void tlb_table_flush(struct mmu_gather *tlb)
163{ 147{
164 struct mmu_table_batch **batch = &tlb->batch; 148 struct mmu_table_batch **batch = &tlb->batch;
165 149
@@ -191,6 +175,22 @@ void tlb_remove_table(struct mmu_gather *tlb, void *table)
191 175
192#endif /* CONFIG_HAVE_RCU_TABLE_FREE */ 176#endif /* CONFIG_HAVE_RCU_TABLE_FREE */
193 177
178static void tlb_flush_mmu_free(struct mmu_gather *tlb)
179{
180#ifdef CONFIG_HAVE_RCU_TABLE_FREE
181 tlb_table_flush(tlb);
182#endif
183#ifndef CONFIG_HAVE_MMU_GATHER_NO_GATHER
184 tlb_batch_pages_flush(tlb);
185#endif
186}
187
188void tlb_flush_mmu(struct mmu_gather *tlb)
189{
190 tlb_flush_mmu_tlbonly(tlb);
191 tlb_flush_mmu_free(tlb);
192}
193
194/** 194/**
195 * tlb_gather_mmu - initialize an mmu_gather structure for page-table tear-down 195 * tlb_gather_mmu - initialize an mmu_gather structure for page-table tear-down
196 * @tlb: the mmu_gather structure to initialize 196 * @tlb: the mmu_gather structure to initialize