Index: i386/i386/pmap.c =================================================================== RCS file: /home/ncvs/src/sys/i386/i386/pmap.c,v retrieving revision 1.544 diff -u -r1.544 pmap.c --- i386/i386/pmap.c 16 Feb 2006 22:10:57 -0000 1.544 +++ i386/i386/pmap.c 21 Mar 2006 05:33:01 -0000 @@ -3010,7 +3010,6 @@ void pmap_activate(struct thread *td) { - struct proc *p = td->td_proc; pmap_t pmap, oldpmap; u_int32_t cr3; @@ -3029,18 +3028,10 @@ #else cr3 = vtophys(pmap->pm_pdir); #endif - /* XXXKSE this is wrong. + /* * pmap_activate is for the current thread on the current cpu */ - if (p->p_flag & P_SA) { - /* Make sure all other cr3 entries are updated. */ - /* what if they are running? XXXKSE (maybe abort them) */ - FOREACH_THREAD_IN_PROC(p, td) { - td->td_pcb->pcb_cr3 = cr3; - } - } else { - td->td_pcb->pcb_cr3 = cr3; - } + td->td_pcb->pcb_cr3 = cr3; load_cr3(cr3); PCPU_SET(curpmap, pmap); critical_exit(); Index: amd64/amd64/pmap.c =================================================================== RCS file: /home/ncvs/src/sys/amd64/amd64/pmap.c,v retrieving revision 1.537 diff -u -r1.537 pmap.c --- amd64/amd64/pmap.c 13 Mar 2006 08:13:37 -0000 1.537 +++ amd64/amd64/pmap.c 21 Mar 2006 05:33:02 -0000 @@ -2988,7 +2988,6 @@ void pmap_activate(struct thread *td) { - struct proc *p = td->td_proc; pmap_t pmap, oldpmap; u_int64_t cr3; @@ -3005,18 +3004,7 @@ pmap->pm_active |= PCPU_GET(cpumask); #endif cr3 = vtophys(pmap->pm_pml4); - /* XXXKSE this is wrong. - * pmap_activate is for the current thread on the current cpu - */ - if (p->p_flag & P_SA) { - /* Make sure all other cr3 entries are updated. */ - /* what if they are running? XXXKSE (maybe abort them) */ - FOREACH_THREAD_IN_PROC(p, td) { - td->td_pcb->pcb_cr3 = cr3; - } - } else { - td->td_pcb->pcb_cr3 = cr3; - } + td->td_pcb->pcb_cr3 = cr3; load_cr3(cr3); critical_exit(); }