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)); |
