diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-07-28 15:14:43 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-28 15:14:43 -0400 |
commit | 414f746d232d41ed6ae8632c4495ae795373c44b (patch) | |
tree | 167f9bc8f139c6e82e6732b38c7a938b8a9d31cd /arch/powerpc | |
parent | 5a7a201c51c324876d00a54e7208af6af12d1ca4 (diff) | |
parent | c9272c4f9fbe2087beb3392f526dc5b19efaa56b (diff) |
Merge branch 'linus' into cpus4096
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/kernel/machine_kexec.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/rtas_flash.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kvm/44x_tlb.c | 5 | ||||
-rw-r--r-- | arch/powerpc/kvm/emulate.c | 2 | ||||
-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 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/celleb_scc_pciex.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/spider-pci.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/inode.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/mf.c | 2 |
11 files changed, 21 insertions, 70 deletions
diff --git a/arch/powerpc/kernel/machine_kexec.c b/arch/powerpc/kernel/machine_kexec.c index 29a0e039d436..aab76887a842 100644 --- a/arch/powerpc/kernel/machine_kexec.c +++ b/arch/powerpc/kernel/machine_kexec.c | |||
@@ -48,7 +48,7 @@ void machine_kexec_cleanup(struct kimage *image) | |||
48 | * Do not allocate memory (or fail in any way) in machine_kexec(). | 48 | * Do not allocate memory (or fail in any way) in machine_kexec(). |
49 | * We are past the point of no return, committed to rebooting now. | 49 | * We are past the point of no return, committed to rebooting now. |
50 | */ | 50 | */ |
51 | NORET_TYPE void machine_kexec(struct kimage *image) | 51 | void machine_kexec(struct kimage *image) |
52 | { | 52 | { |
53 | if (ppc_md.machine_kexec) | 53 | if (ppc_md.machine_kexec) |
54 | ppc_md.machine_kexec(image); | 54 | ppc_md.machine_kexec(image); |
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index 09ded5c424a9..149cb112cd1a 100644 --- a/arch/powerpc/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c | |||
@@ -286,7 +286,7 @@ static ssize_t rtas_flash_read(struct file *file, char __user *buf, | |||
286 | } | 286 | } |
287 | 287 | ||
288 | /* constructor for flash_block_cache */ | 288 | /* constructor for flash_block_cache */ |
289 | void rtas_block_ctor(struct kmem_cache *cache, void *ptr) | 289 | void rtas_block_ctor(void *ptr) |
290 | { | 290 | { |
291 | memset(ptr, 0, RTAS_BLK_SIZE); | 291 | memset(ptr, 0, RTAS_BLK_SIZE); |
292 | } | 292 | } |
diff --git a/arch/powerpc/kvm/44x_tlb.c b/arch/powerpc/kvm/44x_tlb.c index 75dff7cfa814..5a5602da5091 100644 --- a/arch/powerpc/kvm/44x_tlb.c +++ b/arch/powerpc/kvm/44x_tlb.c | |||
@@ -177,7 +177,8 @@ void kvmppc_mmu_map(struct kvm_vcpu *vcpu, u64 gvaddr, gfn_t gfn, u64 asid, | |||
177 | vcpu->arch.msr & MSR_PR); | 177 | vcpu->arch.msr & MSR_PR); |
178 | } | 178 | } |
179 | 179 | ||
180 | void kvmppc_mmu_invalidate(struct kvm_vcpu *vcpu, u64 eaddr, u64 asid) | 180 | void kvmppc_mmu_invalidate(struct kvm_vcpu *vcpu, gva_t eaddr, |
181 | gva_t eend, u32 asid) | ||
181 | { | 182 | { |
182 | unsigned int pid = asid & 0xff; | 183 | unsigned int pid = asid & 0xff; |
183 | int i; | 184 | int i; |
@@ -191,7 +192,7 @@ void kvmppc_mmu_invalidate(struct kvm_vcpu *vcpu, u64 eaddr, u64 asid) | |||
191 | if (!get_tlb_v(stlbe)) | 192 | if (!get_tlb_v(stlbe)) |
192 | continue; | 193 | continue; |
193 | 194 | ||
194 | if (eaddr < get_tlb_eaddr(stlbe)) | 195 | if (eend < get_tlb_eaddr(stlbe)) |
195 | continue; | 196 | continue; |
196 | 197 | ||
197 | if (eaddr > get_tlb_end(stlbe)) | 198 | if (eaddr > get_tlb_end(stlbe)) |
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c index 000097461283..8c605d0a5488 100644 --- a/arch/powerpc/kvm/emulate.c +++ b/arch/powerpc/kvm/emulate.c | |||
@@ -137,7 +137,7 @@ static int kvmppc_emul_tlbwe(struct kvm_vcpu *vcpu, u32 inst) | |||
137 | if (tlbe->word0 & PPC44x_TLB_VALID) { | 137 | if (tlbe->word0 & PPC44x_TLB_VALID) { |
138 | eaddr = get_tlb_eaddr(tlbe); | 138 | eaddr = get_tlb_eaddr(tlbe); |
139 | asid = (tlbe->word0 & PPC44x_TLB_TS) | tlbe->tid; | 139 | asid = (tlbe->word0 & PPC44x_TLB_TS) | tlbe->tid; |
140 | kvmppc_mmu_invalidate(vcpu, eaddr, asid); | 140 | kvmppc_mmu_invalidate(vcpu, eaddr, get_tlb_end(tlbe), asid); |
141 | } | 141 | } |
142 | 142 | ||
143 | switch (ws) { | 143 | switch (ws) { |
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 |
diff --git a/arch/powerpc/platforms/cell/celleb_scc_pciex.c b/arch/powerpc/platforms/cell/celleb_scc_pciex.c index 0e04f8fb152a..3e7e0f1568ef 100644 --- a/arch/powerpc/platforms/cell/celleb_scc_pciex.c +++ b/arch/powerpc/platforms/cell/celleb_scc_pciex.c | |||
@@ -281,7 +281,7 @@ static int __init scc_pciex_iowa_init(struct iowa_bus *bus, void *data) | |||
281 | 281 | ||
282 | dummy_page_da = dma_map_single(bus->phb->parent, dummy_page_va, | 282 | dummy_page_da = dma_map_single(bus->phb->parent, dummy_page_va, |
283 | PAGE_SIZE, DMA_FROM_DEVICE); | 283 | PAGE_SIZE, DMA_FROM_DEVICE); |
284 | if (dma_mapping_error(dummy_page_da)) { | 284 | if (dma_mapping_error(bus->phb->parent, dummy_page_da)) { |
285 | pr_err("PCIEX:Map dummy page failed.\n"); | 285 | pr_err("PCIEX:Map dummy page failed.\n"); |
286 | kfree(dummy_page_va); | 286 | kfree(dummy_page_va); |
287 | return -1; | 287 | return -1; |
diff --git a/arch/powerpc/platforms/cell/spider-pci.c b/arch/powerpc/platforms/cell/spider-pci.c index 418b605ac35a..5122ec145271 100644 --- a/arch/powerpc/platforms/cell/spider-pci.c +++ b/arch/powerpc/platforms/cell/spider-pci.c | |||
@@ -111,7 +111,7 @@ static int __init spiderpci_pci_setup_chip(struct pci_controller *phb, | |||
111 | 111 | ||
112 | dummy_page_da = dma_map_single(phb->parent, dummy_page_va, | 112 | dummy_page_da = dma_map_single(phb->parent, dummy_page_va, |
113 | PAGE_SIZE, DMA_FROM_DEVICE); | 113 | PAGE_SIZE, DMA_FROM_DEVICE); |
114 | if (dma_mapping_error(dummy_page_da)) { | 114 | if (dma_mapping_error(phb->parent, dummy_page_da)) { |
115 | pr_err("SPIDER-IOWA:Map dummy page filed.\n"); | 115 | pr_err("SPIDER-IOWA:Map dummy page filed.\n"); |
116 | kfree(dummy_page_va); | 116 | kfree(dummy_page_va); |
117 | return -1; | 117 | return -1; |
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index 7123472801d9..690ca7b0dcf6 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -78,7 +78,7 @@ spufs_destroy_inode(struct inode *inode) | |||
78 | } | 78 | } |
79 | 79 | ||
80 | static void | 80 | static void |
81 | spufs_init_once(struct kmem_cache *cachep, void *p) | 81 | spufs_init_once(void *p) |
82 | { | 82 | { |
83 | struct spufs_inode_info *ei = p; | 83 | struct spufs_inode_info *ei = p; |
84 | 84 | ||
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c index 1dc7295746da..731d7b157749 100644 --- a/arch/powerpc/platforms/iseries/mf.c +++ b/arch/powerpc/platforms/iseries/mf.c | |||
@@ -871,7 +871,7 @@ static int proc_mf_dump_cmdline(char *page, char **start, off_t off, | |||
871 | count = 256 - off; | 871 | count = 256 - off; |
872 | 872 | ||
873 | dma_addr = iseries_hv_map(page, off + count, DMA_FROM_DEVICE); | 873 | dma_addr = iseries_hv_map(page, off + count, DMA_FROM_DEVICE); |
874 | if (dma_mapping_error(dma_addr)) | 874 | if (dma_mapping_error(NULL, dma_addr)) |
875 | return -ENOMEM; | 875 | return -ENOMEM; |
876 | memset(page, 0, off + count); | 876 | memset(page, 0, off + count); |
877 | memset(&vsp_cmd, 0, sizeof(vsp_cmd)); | 877 | memset(&vsp_cmd, 0, sizeof(vsp_cmd)); |