aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-01-31 16:05:48 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-31 16:05:48 -0500
commit5aa0508508e7cd62bec6e3933b86fce03d2e8502 (patch)
tree575c16be2d09315f18dfba35df878f98b3d31440
parent072b7a58ca534a667f9649ead1628dfb20087e4b (diff)
x86: uninline __pte_free_tlb() and __pmd_free_tlb()
this also removes an include file dependency. Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--arch/x86/mm/pgtable_32.c23
-rw-r--r--include/asm-x86/pgalloc_32.h20
2 files changed, 26 insertions, 17 deletions
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
index 2ae5999a795a..cb3aa470249b 100644
--- a/arch/x86/mm/pgtable_32.c
+++ b/arch/x86/mm/pgtable_32.c
@@ -376,3 +376,26 @@ void check_pgt_cache(void)
376{ 376{
377 quicklist_trim(0, pgd_dtor, 25, 16); 377 quicklist_trim(0, pgd_dtor, 25, 16);
378} 378}
379
380void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte)
381{
382 paravirt_release_pt(page_to_pfn(pte));
383 tlb_remove_page(tlb, pte);
384}
385
386#ifdef CONFIG_X86_PAE
387
388void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd)
389{
390 /* This is called just after the pmd has been detached from
391 the pgd, which requires a full tlb flush to be recognized
392 by the CPU. Rather than incurring multiple tlb flushes
393 while the address space is being pulled down, make the tlb
394 gathering machinery do a full flush when we're done. */
395 tlb->fullmm = 1;
396
397 paravirt_release_pd(__pa(pmd) >> PAGE_SHIFT);
398 tlb_remove_page(tlb, virt_to_page(pmd));
399}
400
401#endif
diff --git a/include/asm-x86/pgalloc_32.h b/include/asm-x86/pgalloc_32.h
index 10c2b452e64c..7641e7b5d931 100644
--- a/include/asm-x86/pgalloc_32.h
+++ b/include/asm-x86/pgalloc_32.h
@@ -3,6 +3,7 @@
3 3
4#include <linux/threads.h> 4#include <linux/threads.h>
5#include <linux/mm.h> /* for struct page */ 5#include <linux/mm.h> /* for struct page */
6#include <linux/pagemap.h>
6#include <asm/tlb.h> 7#include <asm/tlb.h>
7#include <asm-generic/tlb.h> 8#include <asm-generic/tlb.h>
8 9
@@ -51,11 +52,7 @@ static inline void pte_free(struct page *pte)
51} 52}
52 53
53 54
54static inline void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte) 55extern void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte);
55{
56 paravirt_release_pt(page_to_pfn(pte));
57 tlb_remove_page(tlb, pte);
58}
59 56
60#ifdef CONFIG_X86_PAE 57#ifdef CONFIG_X86_PAE
61/* 58/*
@@ -72,18 +69,7 @@ static inline void pmd_free(pmd_t *pmd)
72 free_page((unsigned long)pmd); 69 free_page((unsigned long)pmd);
73} 70}
74 71
75static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) 72extern void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd);
76{
77 /* This is called just after the pmd has been detached from
78 the pgd, which requires a full tlb flush to be recognized
79 by the CPU. Rather than incurring multiple tlb flushes
80 while the address space is being pulled down, make the tlb
81 gathering machinery do a full flush when we're done. */
82 tlb->fullmm = 1;
83
84 paravirt_release_pd(__pa(pmd) >> PAGE_SHIFT);
85 tlb_remove_page(tlb, virt_to_page(pmd));
86}
87 73
88static inline void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd) 74static inline void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd)
89{ 75{