diff options
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/hugetlbpage.c | 9 | ||||
-rw-r--r-- | arch/powerpc/mm/init_64.c | 24 | ||||
-rw-r--r-- | arch/powerpc/mm/mem.c | 39 |
3 files changed, 11 insertions, 61 deletions
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c index fb42c4dd3217..ed0aab0208a6 100644 --- a/arch/powerpc/mm/hugetlbpage.c +++ b/arch/powerpc/mm/hugetlbpage.c | |||
@@ -113,7 +113,7 @@ static inline pte_t *hugepte_offset(hugepd_t *hpdp, unsigned long addr, | |||
113 | static int __hugepte_alloc(struct mm_struct *mm, hugepd_t *hpdp, | 113 | static int __hugepte_alloc(struct mm_struct *mm, hugepd_t *hpdp, |
114 | unsigned long address, unsigned int psize) | 114 | unsigned long address, unsigned int psize) |
115 | { | 115 | { |
116 | pte_t *new = kmem_cache_alloc(huge_pgtable_cache(psize), | 116 | pte_t *new = kmem_cache_zalloc(huge_pgtable_cache(psize), |
117 | GFP_KERNEL|__GFP_REPEAT); | 117 | GFP_KERNEL|__GFP_REPEAT); |
118 | 118 | ||
119 | if (! new) | 119 | if (! new) |
@@ -730,11 +730,6 @@ static int __init hugepage_setup_sz(char *str) | |||
730 | } | 730 | } |
731 | __setup("hugepagesz=", hugepage_setup_sz); | 731 | __setup("hugepagesz=", hugepage_setup_sz); |
732 | 732 | ||
733 | static void zero_ctor(struct kmem_cache *cache, void *addr) | ||
734 | { | ||
735 | memset(addr, 0, kmem_cache_size(cache)); | ||
736 | } | ||
737 | |||
738 | static int __init hugetlbpage_init(void) | 733 | static int __init hugetlbpage_init(void) |
739 | { | 734 | { |
740 | unsigned int psize; | 735 | unsigned int psize; |
@@ -756,7 +751,7 @@ static int __init hugetlbpage_init(void) | |||
756 | HUGEPTE_TABLE_SIZE(psize), | 751 | HUGEPTE_TABLE_SIZE(psize), |
757 | HUGEPTE_TABLE_SIZE(psize), | 752 | HUGEPTE_TABLE_SIZE(psize), |
758 | 0, | 753 | 0, |
759 | zero_ctor); | 754 | NULL); |
760 | if (!huge_pgtable_cache(psize)) | 755 | if (!huge_pgtable_cache(psize)) |
761 | panic("hugetlbpage_init(): could not create %s"\ | 756 | panic("hugetlbpage_init(): could not create %s"\ |
762 | "\n", HUGEPTE_CACHE_NAME(psize)); | 757 | "\n", HUGEPTE_CACHE_NAME(psize)); |
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index a41bc5aa2043..4f7df85129d8 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c | |||
@@ -136,9 +136,14 @@ static int __init setup_kcore(void) | |||
136 | module_init(setup_kcore); | 136 | module_init(setup_kcore); |
137 | #endif | 137 | #endif |
138 | 138 | ||
139 | static void zero_ctor(struct kmem_cache *cache, void *addr) | 139 | static void pgd_ctor(void *addr) |
140 | { | 140 | { |
141 | memset(addr, 0, kmem_cache_size(cache)); | 141 | memset(addr, 0, PGD_TABLE_SIZE); |
142 | } | ||
143 | |||
144 | static void pmd_ctor(void *addr) | ||
145 | { | ||
146 | memset(addr, 0, PMD_TABLE_SIZE); | ||
142 | } | 147 | } |
143 | 148 | ||
144 | static const unsigned int pgtable_cache_size[2] = { | 149 | static const unsigned int pgtable_cache_size[2] = { |
@@ -163,19 +168,8 @@ struct kmem_cache *pgtable_cache[ARRAY_SIZE(pgtable_cache_size)]; | |||
163 | 168 | ||
164 | void pgtable_cache_init(void) | 169 | void pgtable_cache_init(void) |
165 | { | 170 | { |
166 | int i; | 171 | pgtable_cache[0] = kmem_cache_create(pgtable_cache_name[0], PGD_TABLE_SIZE, PGD_TABLE_SIZE, SLAB_PANIC, pgd_ctor); |
167 | 172 | pgtable_cache[1] = kmem_cache_create(pgtable_cache_name[1], PMD_TABLE_SIZE, PMD_TABLE_SIZE, SLAB_PANIC, pmd_ctor); | |
168 | for (i = 0; i < ARRAY_SIZE(pgtable_cache_size); i++) { | ||
169 | int size = pgtable_cache_size[i]; | ||
170 | const char *name = pgtable_cache_name[i]; | ||
171 | |||
172 | pr_debug("Allocating page table cache %s (#%d) " | ||
173 | "for size: %08x...\n", name, i, size); | ||
174 | pgtable_cache[i] = kmem_cache_create(name, | ||
175 | size, size, | ||
176 | SLAB_PANIC, | ||
177 | zero_ctor); | ||
178 | } | ||
179 | } | 173 | } |
180 | 174 | ||
181 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | 175 | #ifdef CONFIG_SPARSEMEM_VMEMMAP |
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 1ca2235f0965..702691cb9e82 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -186,45 +186,6 @@ walk_memory_resource(unsigned long start_pfn, unsigned long nr_pages, void *arg, | |||
186 | } | 186 | } |
187 | EXPORT_SYMBOL_GPL(walk_memory_resource); | 187 | EXPORT_SYMBOL_GPL(walk_memory_resource); |
188 | 188 | ||
189 | void show_mem(void) | ||
190 | { | ||
191 | unsigned long total = 0, reserved = 0; | ||
192 | unsigned long shared = 0, cached = 0; | ||
193 | unsigned long highmem = 0; | ||
194 | struct page *page; | ||
195 | pg_data_t *pgdat; | ||
196 | unsigned long i; | ||
197 | |||
198 | printk("Mem-info:\n"); | ||
199 | show_free_areas(); | ||
200 | for_each_online_pgdat(pgdat) { | ||
201 | unsigned long flags; | ||
202 | pgdat_resize_lock(pgdat, &flags); | ||
203 | for (i = 0; i < pgdat->node_spanned_pages; i++) { | ||
204 | if (!pfn_valid(pgdat->node_start_pfn + i)) | ||
205 | continue; | ||
206 | page = pgdat_page_nr(pgdat, i); | ||
207 | total++; | ||
208 | if (PageHighMem(page)) | ||
209 | highmem++; | ||
210 | if (PageReserved(page)) | ||
211 | reserved++; | ||
212 | else if (PageSwapCache(page)) | ||
213 | cached++; | ||
214 | else if (page_count(page)) | ||
215 | shared += page_count(page) - 1; | ||
216 | } | ||
217 | pgdat_resize_unlock(pgdat, &flags); | ||
218 | } | ||
219 | printk("%ld pages of RAM\n", total); | ||
220 | #ifdef CONFIG_HIGHMEM | ||
221 | printk("%ld pages of HIGHMEM\n", highmem); | ||
222 | #endif | ||
223 | printk("%ld reserved pages\n", reserved); | ||
224 | printk("%ld pages shared\n", shared); | ||
225 | printk("%ld pages swap cached\n", cached); | ||
226 | } | ||
227 | |||
228 | /* | 189 | /* |
229 | * Initialize the bootmem system and give it all the memory we | 190 | * Initialize the bootmem system and give it all the memory we |
230 | * have available. If we are using highmem, we only put the | 191 | * have available. If we are using highmem, we only put the |