Author: jchandra
Date: Fri Jun 18 20:07:30 2010
New Revision: 209314
URL: http://svn.freebsd.org/changeset/base/209314

Log:
  Merge jmallett@'s n64 work into HEAD - changeset 5
  
  Remove unnecessary locking and sched_pin() call while creating a temporary
  mapping.
  
  Changes from http://svn.freebsd.org/base/user/jmallett/octeon
  
  Approved by:  rrs (mentor), jmallett

Modified:
  head/sys/mips/include/pmap.h
  head/sys/mips/mips/pmap.c

Modified: head/sys/mips/include/pmap.h
==============================================================================
--- head/sys/mips/include/pmap.h        Fri Jun 18 18:51:09 2010        
(r209313)
+++ head/sys/mips/include/pmap.h        Fri Jun 18 20:07:30 2010        
(r209314)
@@ -116,12 +116,6 @@ extern struct pmap kernel_pmap_store;
 #define        PMAP_TRYLOCK(pmap)      mtx_trylock(&(pmap)->pm_mtx)
 #define        PMAP_UNLOCK(pmap)       mtx_unlock(&(pmap)->pm_mtx)
 
-#define PMAP_LGMEM_LOCK_INIT(sysmap) mtx_init(&(sysmap)->lock, "pmap-lgmem", \
-                                   "per-cpu-map", (MTX_DEF| MTX_DUPOK))
-#define PMAP_LGMEM_LOCK(sysmap) mtx_lock(&(sysmap)->lock)
-#define PMAP_LGMEM_UNLOCK(sysmap) mtx_unlock(&(sysmap)->lock)
-#define PMAP_LGMEM_DESTROY(sysmap) mtx_destroy(&(sysmap)->lock)
-
 /*
  * For each vm_page_t, there is a list of all currently valid virtual
  * mappings of that page.  An entry is a pv_entry_t, the list is pv_table.

Modified: head/sys/mips/mips/pmap.c
==============================================================================
--- head/sys/mips/mips/pmap.c   Fri Jun 18 18:51:09 2010        (r209313)
+++ head/sys/mips/mips/pmap.c   Fri Jun 18 20:07:30 2010        (r209314)
@@ -195,7 +195,6 @@ static void *pmap_ptpgzone_allocf(uma_zo
 static uma_zone_t ptpgzone;
 
 struct local_sysmaps {
-       struct mtx lock;
        vm_offset_t base;
        uint16_t valid1, valid2;
 };
@@ -214,11 +213,9 @@ static struct local_sysmaps sysmap_lmem[
        struct local_sysmaps *sysm;                                     \
        pt_entry_t *pte, npte;                                          \
                                                                        \
+       intr = intr_disable();                                          \
        cpu = PCPU_GET(cpuid);                                          \
        sysm = &sysmap_lmem[cpu];                                       \
-       PMAP_LGMEM_LOCK(sysm);                                          \
-       intr = intr_disable();                                          \
-       sched_pin();                                                    \
        va = sysm->base;                                                \
        npte = TLBLO_PA_TO_PFN(phys) |                                  \
            PTE_RW | PTE_V | PTE_G | PTE_W | PTE_CACHE;                 \
@@ -231,11 +228,9 @@ static struct local_sysmaps sysmap_lmem[
        struct local_sysmaps *sysm;                                     \
        pt_entry_t *pte, npte;                                          \
                                                                        \
+       intr = intr_disable();                                          \
        cpu = PCPU_GET(cpuid);                                          \
        sysm = &sysmap_lmem[cpu];                                       \
-       PMAP_LGMEM_LOCK(sysm);                                          \
-       intr = intr_disable();                                          \
-       sched_pin();                                                    \
        va1 = sysm->base;                                               \
        va2 = sysm->base + PAGE_SIZE;                                   \
        npte = TLBLO_PA_TO_PFN(phys1) |                                 \
@@ -258,9 +253,7 @@ static struct local_sysmaps sysmap_lmem[
        *pte = PTE_G;                                                   \
        tlb_invalidate_address(kernel_pmap, sysm->base + PAGE_SIZE);    \
        sysm->valid2 = 0;                                               \
-       sched_unpin();                                                  \
-       intr_restore(intr);                                             \
-       PMAP_LGMEM_UNLOCK(sysm);
+       intr_restore(intr)
 
 pd_entry_t
 pmap_segmap(pmap_t pmap, vm_offset_t va)
@@ -436,7 +429,6 @@ again:
                        sysmap_lmem[i].base = virtual_avail;
                        virtual_avail += PAGE_SIZE * 2;
                        sysmap_lmem[i].valid1 = sysmap_lmem[i].valid2 = 0;
-                       PMAP_LGMEM_LOCK_INIT(&sysmap_lmem[i]);
                }
        }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to