diff options
Diffstat (limited to 'arch/powerpc/mm/copro_fault.c')
-rw-r--r-- | arch/powerpc/mm/copro_fault.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/arch/powerpc/mm/copro_fault.c b/arch/powerpc/mm/copro_fault.c index c8da352e8686..f137286740cb 100644 --- a/arch/powerpc/mm/copro_fault.c +++ b/arch/powerpc/mm/copro_fault.c | |||
@@ -105,7 +105,7 @@ int copro_calculate_slb(struct mm_struct *mm, u64 ea, struct copro_slb *slb) | |||
105 | u64 vsid, vsidkey; | 105 | u64 vsid, vsidkey; |
106 | int psize, ssize; | 106 | int psize, ssize; |
107 | 107 | ||
108 | switch (REGION_ID(ea)) { | 108 | switch (get_region_id(ea)) { |
109 | case USER_REGION_ID: | 109 | case USER_REGION_ID: |
110 | pr_devel("%s: 0x%llx -- USER_REGION_ID\n", __func__, ea); | 110 | pr_devel("%s: 0x%llx -- USER_REGION_ID\n", __func__, ea); |
111 | if (mm == NULL) | 111 | if (mm == NULL) |
@@ -117,16 +117,20 @@ int copro_calculate_slb(struct mm_struct *mm, u64 ea, struct copro_slb *slb) | |||
117 | break; | 117 | break; |
118 | case VMALLOC_REGION_ID: | 118 | case VMALLOC_REGION_ID: |
119 | pr_devel("%s: 0x%llx -- VMALLOC_REGION_ID\n", __func__, ea); | 119 | pr_devel("%s: 0x%llx -- VMALLOC_REGION_ID\n", __func__, ea); |
120 | if (ea < VMALLOC_END) | 120 | psize = mmu_vmalloc_psize; |
121 | psize = mmu_vmalloc_psize; | ||
122 | else | ||
123 | psize = mmu_io_psize; | ||
124 | ssize = mmu_kernel_ssize; | 121 | ssize = mmu_kernel_ssize; |
125 | vsid = get_kernel_vsid(ea, mmu_kernel_ssize); | 122 | vsid = get_kernel_vsid(ea, mmu_kernel_ssize); |
126 | vsidkey = SLB_VSID_KERNEL; | 123 | vsidkey = SLB_VSID_KERNEL; |
127 | break; | 124 | break; |
128 | case KERNEL_REGION_ID: | 125 | case IO_REGION_ID: |
129 | pr_devel("%s: 0x%llx -- KERNEL_REGION_ID\n", __func__, ea); | 126 | pr_devel("%s: 0x%llx -- IO_REGION_ID\n", __func__, ea); |
127 | psize = mmu_io_psize; | ||
128 | ssize = mmu_kernel_ssize; | ||
129 | vsid = get_kernel_vsid(ea, mmu_kernel_ssize); | ||
130 | vsidkey = SLB_VSID_KERNEL; | ||
131 | break; | ||
132 | case LINEAR_MAP_REGION_ID: | ||
133 | pr_devel("%s: 0x%llx -- LINEAR_MAP_REGION_ID\n", __func__, ea); | ||
130 | psize = mmu_linear_psize; | 134 | psize = mmu_linear_psize; |
131 | ssize = mmu_kernel_ssize; | 135 | ssize = mmu_kernel_ssize; |
132 | vsid = get_kernel_vsid(ea, mmu_kernel_ssize); | 136 | vsid = get_kernel_vsid(ea, mmu_kernel_ssize); |