diff options
Diffstat (limited to 'arch/powerpc')
| -rw-r--r-- | arch/powerpc/include/asm/pgtable-4k.h | 2 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/pgtable-64k.h | 2 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/pgtable-ppc32.h | 3 | ||||
| -rw-r--r-- | arch/powerpc/kernel/align.c | 7 | ||||
| -rw-r--r-- | arch/powerpc/kvm/powerpc.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/mm/numa.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/platforms/ps3/mm.c | 2 |
7 files changed, 18 insertions, 7 deletions
diff --git a/arch/powerpc/include/asm/pgtable-4k.h b/arch/powerpc/include/asm/pgtable-4k.h index 6b18ba9d2d85..1dbca4e7de67 100644 --- a/arch/powerpc/include/asm/pgtable-4k.h +++ b/arch/powerpc/include/asm/pgtable-4k.h | |||
| @@ -60,7 +60,7 @@ | |||
| 60 | /* It should be preserving the high 48 bits and then specifically */ | 60 | /* It should be preserving the high 48 bits and then specifically */ |
| 61 | /* preserving _PAGE_SECONDARY | _PAGE_GROUP_IX */ | 61 | /* preserving _PAGE_SECONDARY | _PAGE_GROUP_IX */ |
| 62 | #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | \ | 62 | #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | \ |
| 63 | _PAGE_HPTEFLAGS) | 63 | _PAGE_HPTEFLAGS | _PAGE_SPECIAL) |
| 64 | 64 | ||
| 65 | /* Bits to mask out from a PMD to get to the PTE page */ | 65 | /* Bits to mask out from a PMD to get to the PTE page */ |
| 66 | #define PMD_MASKED_BITS 0 | 66 | #define PMD_MASKED_BITS 0 |
diff --git a/arch/powerpc/include/asm/pgtable-64k.h b/arch/powerpc/include/asm/pgtable-64k.h index 07b0d8f09cb6..7389003349a6 100644 --- a/arch/powerpc/include/asm/pgtable-64k.h +++ b/arch/powerpc/include/asm/pgtable-64k.h | |||
| @@ -114,7 +114,7 @@ static inline struct subpage_prot_table *pgd_subpage_prot(pgd_t *pgd) | |||
| 114 | * pgprot changes | 114 | * pgprot changes |
| 115 | */ | 115 | */ |
| 116 | #define _PAGE_CHG_MASK (PTE_RPN_MASK | _PAGE_HPTEFLAGS | _PAGE_DIRTY | \ | 116 | #define _PAGE_CHG_MASK (PTE_RPN_MASK | _PAGE_HPTEFLAGS | _PAGE_DIRTY | \ |
| 117 | _PAGE_ACCESSED) | 117 | _PAGE_ACCESSED | _PAGE_SPECIAL) |
| 118 | 118 | ||
| 119 | /* Bits to mask out from a PMD to get to the PTE page */ | 119 | /* Bits to mask out from a PMD to get to the PTE page */ |
| 120 | #define PMD_MASKED_BITS 0x1ff | 120 | #define PMD_MASKED_BITS 0x1ff |
diff --git a/arch/powerpc/include/asm/pgtable-ppc32.h b/arch/powerpc/include/asm/pgtable-ppc32.h index f69a4d977729..820b5f0a35ce 100644 --- a/arch/powerpc/include/asm/pgtable-ppc32.h +++ b/arch/powerpc/include/asm/pgtable-ppc32.h | |||
| @@ -429,7 +429,8 @@ extern int icache_44x_need_flush; | |||
| 429 | #define PMD_PAGE_SIZE(pmd) bad_call_to_PMD_PAGE_SIZE() | 429 | #define PMD_PAGE_SIZE(pmd) bad_call_to_PMD_PAGE_SIZE() |
| 430 | #endif | 430 | #endif |
| 431 | 431 | ||
| 432 | #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY) | 432 | #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | \ |
| 433 | _PAGE_SPECIAL) | ||
| 433 | 434 | ||
| 434 | 435 | ||
| 435 | #define PAGE_PROT_BITS (_PAGE_GUARDED | _PAGE_COHERENT | _PAGE_NO_CACHE | \ | 436 | #define PAGE_PROT_BITS (_PAGE_GUARDED | _PAGE_COHERENT | _PAGE_NO_CACHE | \ |
diff --git a/arch/powerpc/kernel/align.c b/arch/powerpc/kernel/align.c index 5af4e9b2dbe2..ada06924a423 100644 --- a/arch/powerpc/kernel/align.c +++ b/arch/powerpc/kernel/align.c | |||
| @@ -646,11 +646,16 @@ static int emulate_vsx(unsigned char __user *addr, unsigned int reg, | |||
| 646 | unsigned int areg, struct pt_regs *regs, | 646 | unsigned int areg, struct pt_regs *regs, |
| 647 | unsigned int flags, unsigned int length) | 647 | unsigned int flags, unsigned int length) |
| 648 | { | 648 | { |
| 649 | char *ptr = (char *) ¤t->thread.TS_FPR(reg); | 649 | char *ptr; |
| 650 | int ret = 0; | 650 | int ret = 0; |
| 651 | 651 | ||
| 652 | flush_vsx_to_thread(current); | 652 | flush_vsx_to_thread(current); |
| 653 | 653 | ||
| 654 | if (reg < 32) | ||
| 655 | ptr = (char *) ¤t->thread.TS_FPR(reg); | ||
| 656 | else | ||
| 657 | ptr = (char *) ¤t->thread.vr[reg - 32]; | ||
| 658 | |||
| 654 | if (flags & ST) | 659 | if (flags & ST) |
| 655 | ret = __copy_to_user(addr, ptr, length); | 660 | ret = __copy_to_user(addr, ptr, length); |
| 656 | else { | 661 | else { |
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index 2822c8ccfaaf..5f81256287f5 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c | |||
| @@ -125,6 +125,10 @@ static void kvmppc_free_vcpus(struct kvm *kvm) | |||
| 125 | } | 125 | } |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | void kvm_arch_sync_events(struct kvm *kvm) | ||
| 129 | { | ||
| 130 | } | ||
| 131 | |||
| 128 | void kvm_arch_destroy_vm(struct kvm *kvm) | 132 | void kvm_arch_destroy_vm(struct kvm *kvm) |
| 129 | { | 133 | { |
| 130 | kvmppc_free_vcpus(kvm); | 134 | kvmppc_free_vcpus(kvm); |
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index 7393bd76d698..5ac08b8ab654 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include <linux/notifier.h> | 19 | #include <linux/notifier.h> |
| 20 | #include <linux/lmb.h> | 20 | #include <linux/lmb.h> |
| 21 | #include <linux/of.h> | 21 | #include <linux/of.h> |
| 22 | #include <linux/pfn.h> | ||
| 22 | #include <asm/sparsemem.h> | 23 | #include <asm/sparsemem.h> |
| 23 | #include <asm/prom.h> | 24 | #include <asm/prom.h> |
| 24 | #include <asm/system.h> | 25 | #include <asm/system.h> |
| @@ -882,7 +883,7 @@ static void mark_reserved_regions_for_nid(int nid) | |||
| 882 | unsigned long physbase = lmb.reserved.region[i].base; | 883 | unsigned long physbase = lmb.reserved.region[i].base; |
| 883 | unsigned long size = lmb.reserved.region[i].size; | 884 | unsigned long size = lmb.reserved.region[i].size; |
| 884 | unsigned long start_pfn = physbase >> PAGE_SHIFT; | 885 | unsigned long start_pfn = physbase >> PAGE_SHIFT; |
| 885 | unsigned long end_pfn = ((physbase + size) >> PAGE_SHIFT); | 886 | unsigned long end_pfn = PFN_UP(physbase + size); |
| 886 | struct node_active_region node_ar; | 887 | struct node_active_region node_ar; |
| 887 | unsigned long node_end_pfn = node->node_start_pfn + | 888 | unsigned long node_end_pfn = node->node_start_pfn + |
| 888 | node->node_spanned_pages; | 889 | node->node_spanned_pages; |
| @@ -908,7 +909,7 @@ static void mark_reserved_regions_for_nid(int nid) | |||
| 908 | */ | 909 | */ |
| 909 | if (end_pfn > node_ar.end_pfn) | 910 | if (end_pfn > node_ar.end_pfn) |
| 910 | reserve_size = (node_ar.end_pfn << PAGE_SHIFT) | 911 | reserve_size = (node_ar.end_pfn << PAGE_SHIFT) |
| 911 | - (start_pfn << PAGE_SHIFT); | 912 | - physbase; |
| 912 | /* | 913 | /* |
| 913 | * Only worry about *this* node, others may not | 914 | * Only worry about *this* node, others may not |
| 914 | * yet have valid NODE_DATA(). | 915 | * yet have valid NODE_DATA(). |
diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c index 67de6bf3db3d..d281cc0bca71 100644 --- a/arch/powerpc/platforms/ps3/mm.c +++ b/arch/powerpc/platforms/ps3/mm.c | |||
| @@ -328,7 +328,7 @@ static int __init ps3_mm_add_memory(void) | |||
| 328 | return result; | 328 | return result; |
| 329 | } | 329 | } |
| 330 | 330 | ||
| 331 | core_initcall(ps3_mm_add_memory); | 331 | device_initcall(ps3_mm_add_memory); |
| 332 | 332 | ||
| 333 | /*============================================================================*/ | 333 | /*============================================================================*/ |
| 334 | /* dma routines */ | 334 | /* dma routines */ |
