Author: marius
Date: Mon Jul 25 18:25:30 2011
New Revision: 224361
URL: http://svn.freebsd.org/changeset/base/224361

Log:
  MFC: r223347
  
  As astopgap minimize the sched_lock coverage in pmap_activate() in order
  to reduce lock contention.

Modified:
  stable/8/sys/sparc64/sparc64/pmap.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/geom/label/   (props changed)

Modified: stable/8/sys/sparc64/sparc64/pmap.c
==============================================================================
--- stable/8/sys/sparc64/sparc64/pmap.c Mon Jul 25 18:25:30 2011        
(r224360)
+++ stable/8/sys/sparc64/sparc64/pmap.c Mon Jul 25 18:25:30 2011        
(r224361)
@@ -2136,11 +2136,10 @@ pmap_activate(struct thread *td)
        struct pmap *pm;
        int context;
 
+       critical_enter();
        vm = td->td_proc->p_vmspace;
        pm = vmspace_pmap(vm);
 
-       mtx_lock_spin(&sched_lock);
-
        context = PCPU_GET(tlb_ctx);
        if (context == PCPU_GET(tlb_ctx_max)) {
                tlb_flush_user();
@@ -2148,17 +2147,18 @@ pmap_activate(struct thread *td)
        }
        PCPU_SET(tlb_ctx, context + 1);
 
+       mtx_lock_spin(&sched_lock);
        pm->pm_context[curcpu] = context;
        pm->pm_active |= PCPU_GET(cpumask);
        PCPU_SET(pmap, pm);
+       mtx_unlock_spin(&sched_lock);
 
        stxa(AA_DMMU_TSB, ASI_DMMU, pm->pm_tsb);
        stxa(AA_IMMU_TSB, ASI_IMMU, pm->pm_tsb);
        stxa(AA_DMMU_PCXR, ASI_DMMU, (ldxa(AA_DMMU_PCXR, ASI_DMMU) &
            TLB_CXR_PGSZ_MASK) | context);
        flush(KERNBASE);
-
-       mtx_unlock_spin(&sched_lock);
+       critical_exit();
 }
 
 void
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to