diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-03-17 19:37:13 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-24 17:57:31 -0400 |
commit | 68db065c845bd9d0eb96946ab104b4c82d0ae9da (patch) | |
tree | a12f007e11538af668227d6da1c476af6329899f /arch/x86/mm/pgtable.c | |
parent | 90e9f53662826db3cdd6d99bd394d727b05160c1 (diff) |
x86: unify KERNEL_PGD_PTRS
Make KERNEL_PGD_PTRS common, as previously it was only being defined
for 32-bit.
There are a couple of follow-on changes from this:
- KERNEL_PGD_PTRS was being defined in terms of USER_PGD_PTRS. The
definition of USER_PGD_PTRS doesn't really make much sense on x86-64,
since it can have two different user address-space configurations.
I renamed USER_PGD_PTRS to KERNEL_PGD_BOUNDARY, which is meaningful
for all of 32/32, 32/64 and 64/64 process configurations.
- USER_PTRS_PER_PGD was also defined and was being used for similar
purposes. Converting its users to KERNEL_PGD_BOUNDARY left it
completely unused, and so I removed it.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Andi Kleen <ak@suse.de>
Cc: Zach Amsden <zach@vmware.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/mm/pgtable.c')
-rw-r--r-- | arch/x86/mm/pgtable.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index af0c50161d95..e2ac320e6151 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c | |||
@@ -104,7 +104,7 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd) | |||
104 | * -- wli | 104 | * -- wli |
105 | */ | 105 | */ |
106 | #define UNSHARED_PTRS_PER_PGD \ | 106 | #define UNSHARED_PTRS_PER_PGD \ |
107 | (SHARED_KERNEL_PMD ? USER_PTRS_PER_PGD : PTRS_PER_PGD) | 107 | (SHARED_KERNEL_PMD ? KERNEL_PGD_BOUNDARY : PTRS_PER_PGD) |
108 | 108 | ||
109 | static void pgd_ctor(void *p) | 109 | static void pgd_ctor(void *p) |
110 | { | 110 | { |
@@ -112,7 +112,7 @@ static void pgd_ctor(void *p) | |||
112 | unsigned long flags; | 112 | unsigned long flags; |
113 | 113 | ||
114 | /* Clear usermode parts of PGD */ | 114 | /* Clear usermode parts of PGD */ |
115 | memset(pgd, 0, USER_PTRS_PER_PGD*sizeof(pgd_t)); | 115 | memset(pgd, 0, KERNEL_PGD_BOUNDARY*sizeof(pgd_t)); |
116 | 116 | ||
117 | spin_lock_irqsave(&pgd_lock, flags); | 117 | spin_lock_irqsave(&pgd_lock, flags); |
118 | 118 | ||
@@ -121,12 +121,12 @@ static void pgd_ctor(void *p) | |||
121 | references from swapper_pg_dir. */ | 121 | references from swapper_pg_dir. */ |
122 | if (PAGETABLE_LEVELS == 2 || | 122 | if (PAGETABLE_LEVELS == 2 || |
123 | (PAGETABLE_LEVELS == 3 && SHARED_KERNEL_PMD)) { | 123 | (PAGETABLE_LEVELS == 3 && SHARED_KERNEL_PMD)) { |
124 | clone_pgd_range(pgd + USER_PTRS_PER_PGD, | 124 | clone_pgd_range(pgd + KERNEL_PGD_BOUNDARY, |
125 | swapper_pg_dir + USER_PTRS_PER_PGD, | 125 | swapper_pg_dir + KERNEL_PGD_BOUNDARY, |
126 | KERNEL_PGD_PTRS); | 126 | KERNEL_PGD_PTRS); |
127 | paravirt_alloc_pmd_clone(__pa(pgd) >> PAGE_SHIFT, | 127 | paravirt_alloc_pmd_clone(__pa(pgd) >> PAGE_SHIFT, |
128 | __pa(swapper_pg_dir) >> PAGE_SHIFT, | 128 | __pa(swapper_pg_dir) >> PAGE_SHIFT, |
129 | USER_PTRS_PER_PGD, | 129 | KERNEL_PGD_BOUNDARY, |
130 | KERNEL_PGD_PTRS); | 130 | KERNEL_PGD_PTRS); |
131 | } | 131 | } |
132 | 132 | ||
@@ -201,7 +201,7 @@ static int pgd_prepopulate_pmd(struct mm_struct *mm, pgd_t *pgd) | |||
201 | return 0; | 201 | return 0; |
202 | } | 202 | } |
203 | 203 | ||
204 | if (i >= USER_PTRS_PER_PGD) | 204 | if (i >= KERNEL_PGD_BOUNDARY) |
205 | memcpy(pmd, (pmd_t *)pgd_page_vaddr(swapper_pg_dir[i]), | 205 | memcpy(pmd, (pmd_t *)pgd_page_vaddr(swapper_pg_dir[i]), |
206 | sizeof(pmd_t) * PTRS_PER_PMD); | 206 | sizeof(pmd_t) * PTRS_PER_PMD); |
207 | 207 | ||