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