|
@@ -93,7 +93,7 @@ static void reset_context(void *info)
|
|
|
return;
|
|
|
|
|
|
smp_rmb();
|
|
|
- asid = cpu_last_asid + cpu;
|
|
|
+ asid = cpu_last_asid + cpu + 1;
|
|
|
|
|
|
flush_context();
|
|
|
set_mm_context(mm, asid);
|
|
@@ -143,13 +143,13 @@ void __new_context(struct mm_struct *mm)
|
|
|
* to start a new version and flush the TLB.
|
|
|
*/
|
|
|
if (unlikely((asid & ~ASID_MASK) == 0)) {
|
|
|
- asid = cpu_last_asid + smp_processor_id();
|
|
|
+ asid = cpu_last_asid + smp_processor_id() + 1;
|
|
|
flush_context();
|
|
|
#ifdef CONFIG_SMP
|
|
|
smp_wmb();
|
|
|
smp_call_function(reset_context, NULL, 1);
|
|
|
#endif
|
|
|
- cpu_last_asid += NR_CPUS - 1;
|
|
|
+ cpu_last_asid += NR_CPUS;
|
|
|
}
|
|
|
|
|
|
set_mm_context(mm, asid);
|