diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-14 12:46:06 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-14 12:46:06 -0500 |
| commit | 414f827c46973ba39320cfb43feb55a0eeb9b4e8 (patch) | |
| tree | 45e860974ef698e71370a0ebdddcff4f14fbdf9e /include/asm-i386/pgalloc.h | |
| parent | 86a71dbd3e81e8870d0f0e56b87875f57e58222b (diff) | |
| parent | 126b1922367fbe5513daa675a2abd13ed3917f4e (diff) | |
Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6
* 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: (94 commits)
[PATCH] x86-64: Remove mk_pte_phys()
[PATCH] i386: Fix broken CONFIG_COMPAT_VDSO on i386
[PATCH] i386: fix 32-bit ioctls on x64_32
[PATCH] x86: Unify pcspeaker platform device code between i386/x86-64
[PATCH] i386: Remove extern declaration from mm/discontig.c, put in header.
[PATCH] i386: Rename cpu_gdt_descr and remove extern declaration from smpboot.c
[PATCH] i386: Move mce_disabled to asm/mce.h
[PATCH] i386: paravirt unhandled fallthrough
[PATCH] x86_64: Wire up compat epoll_pwait
[PATCH] x86: Don't require the vDSO for handling a.out signals
[PATCH] i386: Fix Cyrix MediaGX detection
[PATCH] i386: Fix warning in cpu initialization
[PATCH] i386: Fix warning in microcode.c
[PATCH] x86: Enable NMI watchdog for AMD Family 0x10 CPUs
[PATCH] x86: Add new CPUID bits for AMD Family 10 CPUs in /proc/cpuinfo
[PATCH] i386: Remove fastcall in paravirt.[ch]
[PATCH] x86-64: Fix wrong gcc check in bitops.h
[PATCH] x86-64: survive having no irq mapping for a vector
[PATCH] i386: geode configuration fixes
[PATCH] i386: add option to show more code in oops reports
...
Diffstat (limited to 'include/asm-i386/pgalloc.h')
| -rw-r--r-- | include/asm-i386/pgalloc.h | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/include/asm-i386/pgalloc.h b/include/asm-i386/pgalloc.h index 4b1e61359f89..c8dc2d0141a7 100644 --- a/include/asm-i386/pgalloc.h +++ b/include/asm-i386/pgalloc.h | |||
| @@ -5,13 +5,31 @@ | |||
| 5 | #include <linux/threads.h> | 5 | #include <linux/threads.h> |
| 6 | #include <linux/mm.h> /* for struct page */ | 6 | #include <linux/mm.h> /* for struct page */ |
| 7 | 7 | ||
| 8 | #define pmd_populate_kernel(mm, pmd, pte) \ | 8 | #ifdef CONFIG_PARAVIRT |
| 9 | set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte))) | 9 | #include <asm/paravirt.h> |
| 10 | #else | ||
| 11 | #define paravirt_alloc_pt(pfn) do { } while (0) | ||
| 12 | #define paravirt_alloc_pd(pfn) do { } while (0) | ||
| 13 | #define paravirt_alloc_pd(pfn) do { } while (0) | ||
| 14 | #define paravirt_alloc_pd_clone(pfn, clonepfn, start, count) do { } while (0) | ||
| 15 | #define paravirt_release_pt(pfn) do { } while (0) | ||
| 16 | #define paravirt_release_pd(pfn) do { } while (0) | ||
| 17 | #endif | ||
| 18 | |||
| 19 | #define pmd_populate_kernel(mm, pmd, pte) \ | ||
| 20 | do { \ | ||
| 21 | paravirt_alloc_pt(__pa(pte) >> PAGE_SHIFT); \ | ||
| 22 | set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte))); \ | ||
| 23 | } while (0) | ||
| 10 | 24 | ||
| 11 | #define pmd_populate(mm, pmd, pte) \ | 25 | #define pmd_populate(mm, pmd, pte) \ |
| 26 | do { \ | ||
| 27 | paravirt_alloc_pt(page_to_pfn(pte)); \ | ||
| 12 | set_pmd(pmd, __pmd(_PAGE_TABLE + \ | 28 | set_pmd(pmd, __pmd(_PAGE_TABLE + \ |
| 13 | ((unsigned long long)page_to_pfn(pte) << \ | 29 | ((unsigned long long)page_to_pfn(pte) << \ |
| 14 | (unsigned long long) PAGE_SHIFT))) | 30 | (unsigned long long) PAGE_SHIFT))); \ |
| 31 | } while (0) | ||
| 32 | |||
| 15 | /* | 33 | /* |
| 16 | * Allocate and free page tables. | 34 | * Allocate and free page tables. |
| 17 | */ | 35 | */ |
| @@ -32,7 +50,11 @@ static inline void pte_free(struct page *pte) | |||
| 32 | } | 50 | } |
| 33 | 51 | ||
| 34 | 52 | ||
| 35 | #define __pte_free_tlb(tlb,pte) tlb_remove_page((tlb),(pte)) | 53 | #define __pte_free_tlb(tlb,pte) \ |
| 54 | do { \ | ||
| 55 | paravirt_release_pt(page_to_pfn(pte)); \ | ||
| 56 | tlb_remove_page((tlb),(pte)); \ | ||
| 57 | } while (0) | ||
| 36 | 58 | ||
| 37 | #ifdef CONFIG_X86_PAE | 59 | #ifdef CONFIG_X86_PAE |
| 38 | /* | 60 | /* |
