Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/yamt-km]: src/sys/arch/sparc/sparc - use new apis.



details:   https://anonhg.NetBSD.org/src/rev/41ac3da5cf3e
branches:  yamt-km
changeset: 573337:41ac3da5cf3e
user:      yamt <yamt%NetBSD.org@localhost>
date:      Sat Feb 12 15:16:47 2005 +0000

description:
- use new apis.
- don't leave page mapped at kva being freed.

diffstat:

 sys/arch/sparc/sparc/cpu.c     |  12 ++++++++----
 sys/arch/sparc/sparc/iommu.c   |  24 ++++++++++++++++++++++--
 sys/arch/sparc/sparc/machdep.c |  18 +++++++++++-------
 sys/arch/sparc/sparc/msiiep.c  |   6 +++---
 4 files changed, 44 insertions(+), 16 deletions(-)

diffs (179 lines):

diff -r 3b448dada51a -r 41ac3da5cf3e sys/arch/sparc/sparc/cpu.c
--- a/sys/arch/sparc/sparc/cpu.c        Sat Feb 12 15:09:12 2005 +0000
+++ b/sys/arch/sparc/sparc/cpu.c        Sat Feb 12 15:16:47 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cpu.c,v 1.186 2004/05/07 14:59:26 pk Exp $ */
+/*     $NetBSD: cpu.c,v 1.186.6.1 2005/02/12 15:16:47 yamt Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -52,7 +52,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.186 2004/05/07 14:59:26 pk Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.186.6.1 2005/02/12 15:16:47 yamt Exp $");
 
 #include "opt_multiprocessor.h"
 #include "opt_lockdebug.h"
@@ -183,7 +183,10 @@
        sz = (sz + PAGE_SIZE - 1) & -PAGE_SIZE;
        esz = sz + align - PAGE_SIZE;
 
-       if ((sva = uvm_km_valloc(kernel_map, esz)) == 0)
+       sva = vm_map_min(kernel_map);
+       if (uvm_map(kernel_map, &sva, esz, NULL, UVM_UNKNOWN_OFFSET,
+           align, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_NONE,
+           UVM_ADV_RANDOM, UVM_FLAG_NOWAIT)))
                panic("alloc_cpuinfo_global_va: no virtual space");
 
        va = sva + (((CPUINFO_VA & (align - 1)) + align - sva) & (align - 1));
@@ -237,7 +240,8 @@
        cpi->eintstack = cpi->idle_u = (void *)((vaddr_t)cpi + sz - USPACE);
 
        /* Allocate virtual space for pmap page_copy/page_zero */
-       if ((va = uvm_km_valloc(kernel_map, 2*PAGE_SIZE)) == 0)
+       va = uvm_km_alloc(kernel_map, 2*PAGE_SIZE, 0, UVM_KMF_VAONLY);
+       if (va == 0)
                panic("alloc_cpuinfo: no virtual space");
 
        cpi->vpage[0] = (caddr_t)(va + 0);
diff -r 3b448dada51a -r 41ac3da5cf3e sys/arch/sparc/sparc/iommu.c
--- a/sys/arch/sparc/sparc/iommu.c      Sat Feb 12 15:09:12 2005 +0000
+++ b/sys/arch/sparc/sparc/iommu.c      Sat Feb 12 15:16:47 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: iommu.c,v 1.80.6.1 2005/02/12 14:35:03 yamt Exp $ */
+/*     $NetBSD: iommu.c,v 1.80.6.2 2005/02/12 15:16:47 yamt Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: iommu.c,v 1.80.6.1 2005/02/12 14:35:03 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: iommu.c,v 1.80.6.2 2005/02/12 15:16:47 yamt Exp $");
 
 #include "opt_sparc_arch.h"
 
@@ -107,6 +107,7 @@
 
 int    iommu_dmamem_map __P((bus_dma_tag_t tag, bus_dma_segment_t *segs,
                        int nsegs, size_t size, caddr_t *kvap, int flags));
+void   iommu_dmamem_unmap __P((bus_dma_tag_t t, caddr_t kva, size_t size));
 paddr_t        iommu_dmamem_mmap __P((bus_dma_tag_t tag, bus_dma_segment_t *segs,
                        int nsegs, off_t off, int prot, int flags));
 int    iommu_dvma_alloc(struct iommu_softc *, bus_dmamap_t, vaddr_t,
@@ -839,6 +840,25 @@
        return (0);
 }
 
+void
+iommu_dmamem_unmap(t, kva, size)
+       bus_dma_tag_t t;
+       caddr_t kva;
+       size_t size;
+{
+
+#ifdef DIAGNOSTIC
+       if ((u_long)kva & PAGE_MASK)
+               panic("iommu_dmamem_unmap");
+#endif
+
+       size = round_page(size);
+       pmap_kremove((vaddr_t)kva, size);
+       pmap_update(pmap_kernel());
+       uvm_unmap(kernel_map, (vaddr_t)kva, (vaddr_t)kva + size);
+}
+
+
 /*
  * mmap(2)'ing DMA-safe memory.
  */
diff -r 3b448dada51a -r 41ac3da5cf3e sys/arch/sparc/sparc/machdep.c
--- a/sys/arch/sparc/sparc/machdep.c    Sat Feb 12 15:09:12 2005 +0000
+++ b/sys/arch/sparc/sparc/machdep.c    Sat Feb 12 15:16:47 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.251 2004/06/30 21:16:39 pk Exp $ */
+/*     $NetBSD: machdep.c,v 1.251.6.1 2005/02/12 15:16:47 yamt Exp $ */
 
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -78,7 +78,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.251 2004/06/30 21:16:39 pk Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.251.6.1 2005/02/12 15:16:47 yamt Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_compat_sunos.h"
@@ -226,7 +226,7 @@
        pmap_update(pmap_kernel());
 
        /* Allocate virtual memory space */
-       va0 = va = uvm_km_valloc(kernel_map, size);
+       va0 = va = uvm_km_alloc(kernel_map, size, 0, UVM_KMF_VAONLY);
        if (va == 0)
                panic("cpu_start: no virtual memory for message buffer");
 
@@ -1721,7 +1721,9 @@
 #endif
 
        size = round_page(size);
-       uvm_unmap(kernel_map, (vaddr_t)kva, (vaddr_t)kva + size);
+       pmap_kremove((vaddr_t)kva, size);
+       pmap_update(pmap_kernel());
+       uvm_km_free(kernel_map, (vaddr_t)kva, size, UVM_KMF_VAONLY);
 }
 
 /*
@@ -1789,8 +1791,10 @@
         * First, find a region large enough to contain any aligned chunk
         */
        oversize = size + align - PAGE_SIZE;
-       sva = uvm_km_valloc(kernel_map, oversize);
-       if (sva == 0)
+       sva = vm_map_min(kernel_map);
+       if (uvm_map(kernel_map, &sva, oversize, NULL, UVM_UNKNOWN_OFFSET,
+           align, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_NONE,
+           UVM_ADV_RANDOM, UVM_FLAG_NOWAIT)))
                return (0);
 
        /*
@@ -2072,7 +2076,7 @@
 
        size = round_page(size);
 
-       va = uvm_km_valloc(kernel_map, size);
+       va = uvm_km_alloc(kernel_map, size, 0, UVM_KMF_VAONLY);
        if (va == 0)
                return (ENOMEM);
 
diff -r 3b448dada51a -r 41ac3da5cf3e sys/arch/sparc/sparc/msiiep.c
--- a/sys/arch/sparc/sparc/msiiep.c     Sat Feb 12 15:09:12 2005 +0000
+++ b/sys/arch/sparc/sparc/msiiep.c     Sat Feb 12 15:16:47 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: msiiep.c,v 1.23 2004/08/30 15:05:18 drochner Exp $ */
+/*     $NetBSD: msiiep.c,v 1.23.6.1 2005/02/12 15:16:47 yamt Exp $ */
 
 /*
  * Copyright (c) 2001 Valeriy E. Ushakov
@@ -27,7 +27,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msiiep.c,v 1.23 2004/08/30 15:05:18 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msiiep.c,v 1.23.6.1 2005/02/12 15:16:47 yamt Exp $");
 
 #include <sys/param.h>
 #include <sys/malloc.h>
@@ -637,7 +637,7 @@
 
        size = round_page(size);
 
-       va = uvm_km_valloc(kernel_map, size);
+       va = uvm_km_alloc(kernel_map, size, 0, UVM_KMF_VAONLY);
        if (va == 0)
                return (ENOMEM);
 



Home | Main Index | Thread Index | Old Index