aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mm/context.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/mm/context.c b/arch/arm/mm/context.c
index b6c776ae4039..b0ee9ba3cfab 100644
--- a/arch/arm/mm/context.c
+++ b/arch/arm/mm/context.c
@@ -93,7 +93,7 @@ static void reset_context(void *info)
93 return; 93 return;
94 94
95 smp_rmb(); 95 smp_rmb();
96 asid = cpu_last_asid + cpu; 96 asid = cpu_last_asid + cpu + 1;
97 97
98 flush_context(); 98 flush_context();
99 set_mm_context(mm, asid); 99 set_mm_context(mm, asid);
@@ -143,13 +143,13 @@ void __new_context(struct mm_struct *mm)
143 * to start a new version and flush the TLB. 143 * to start a new version and flush the TLB.
144 */ 144 */
145 if (unlikely((asid & ~ASID_MASK) == 0)) { 145 if (unlikely((asid & ~ASID_MASK) == 0)) {
146 asid = cpu_last_asid + smp_processor_id(); 146 asid = cpu_last_asid + smp_processor_id() + 1;
147 flush_context(); 147 flush_context();
148#ifdef CONFIG_SMP 148#ifdef CONFIG_SMP
149 smp_wmb(); 149 smp_wmb();
150 smp_call_function(reset_context, NULL, 1); 150 smp_call_function(reset_context, NULL, 1);
151#endif 151#endif
152 cpu_last_asid += NR_CPUS - 1; 152 cpu_last_asid += NR_CPUS;
153 } 153 }
154 154
155 set_mm_context(mm, asid); 155 set_mm_context(mm, asid);