From: Matthew Dillon Date: Mon, 3 Nov 2003 17:11:23 +0000 (+0000) Subject: 64 bit address space cleanups which are a prerequisit for future 64 bit X-Git-Tag: v2.0.1~12747 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/6ef943a38bfc3d05b2a8d8c22081ac4bfd331dde 64 bit address space cleanups which are a prerequisit for future 64 bit address space work and PAE. Note: this is not PAE. This patch basically adds vm_paddr_t, which represents a 'physical address'. Physical addresses may be larger then virtual addresses and on IA32 we make vm_paddr_t a 64 bit quantity. Submitted-by: Hiten Pandya --- diff --git a/sys/bus/isa/i386/isa_dma.c b/sys/bus/isa/i386/isa_dma.c index a3d12fd259..d24618f1e0 100644 --- a/sys/bus/isa/i386/isa_dma.c +++ b/sys/bus/isa/i386/isa_dma.c @@ -35,7 +35,7 @@ * * from: @(#)isa.c 7.2 (Berkeley) 5/13/91 * $FreeBSD: src/sys/i386/isa/isa_dma.c,v 1.4.2.1 2000/08/08 19:49:53 peter Exp $ - * $DragonFly: src/sys/bus/isa/i386/isa_dma.c,v 1.5 2003/08/27 11:42:34 rob Exp $ + * $DragonFly: src/sys/bus/isa/i386/isa_dma.c,v 1.6 2003/11/03 17:11:10 dillon Exp $ */ /* @@ -208,7 +208,7 @@ isa_dmacascade(chan) void isa_dmastart(int flags, caddr_t addr, u_int nbytes, int chan) { - vm_offset_t phys; + vm_paddr_t phys; int waport; caddr_t newaddr; @@ -366,7 +366,8 @@ isa_dmadone(int flags, caddr_t addr, int nbytes, int chan) static int isa_dmarangecheck(caddr_t va, u_int length, int chan) { - vm_offset_t phys, priorpage = 0, endva; + vm_paddr_t phys, priorpage = 0; + vm_offset_t endva; u_int dma_pgmsk = (chan & 4) ? ~(128*1024-1) : ~(64*1024-1); endva = (vm_offset_t)round_page((vm_offset_t)va + length); diff --git a/sys/cpu/i386/include/bus_at386.h b/sys/cpu/i386/include/bus_at386.h index d9f09696b9..40431b94c9 100644 --- a/sys/cpu/i386/include/bus_at386.h +++ b/sys/cpu/i386/include/bus_at386.h @@ -68,7 +68,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* $FreeBSD: src/sys/i386/include/bus_at386.h,v 1.8.2.3 2002/03/03 05:42:50 nyan Exp $ */ -/* $DragonFly: src/sys/cpu/i386/include/bus_at386.h,v 1.5 2003/08/07 21:17:22 dillon Exp $ */ +/* $DragonFly: src/sys/cpu/i386/include/bus_at386.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _I386_BUS_AT386_H_ #define _I386_BUS_AT386_H_ @@ -93,15 +93,15 @@ /* * Bus address and size types */ -typedef u_int bus_addr_t; -typedef u_int bus_size_t; +typedef u_int32_t bus_addr_t; +typedef u_int32_t bus_size_t; #define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFF #define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF #define BUS_SPACE_MAXSIZE (64 * 1024) /* Maximum supported size */ #define BUS_SPACE_MAXADDR_24BIT 0xFFFFFF #define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFF -#define BUS_SPACE_MAXADDR 0xFFFFFFFF +#define BUS_SPACE_MAXADDR BUS_SPACE_MAXADDR_32BIT #define BUS_SPACE_UNRESTRICTED (~0) @@ -829,7 +829,7 @@ static __inline void bus_space_set_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int8_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -851,7 +851,7 @@ static __inline void bus_space_set_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int16_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -873,7 +873,7 @@ static __inline void bus_space_set_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int32_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -917,7 +917,7 @@ static __inline void bus_space_set_region_1(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int8_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -939,7 +939,7 @@ static __inline void bus_space_set_region_2(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int16_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -961,7 +961,7 @@ static __inline void bus_space_set_region_4(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int32_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -1011,8 +1011,8 @@ bus_space_copy_region_1(bus_space_tag_t tag, bus_space_handle_t bsh1, bus_size_t off1, bus_space_handle_t bsh2, bus_size_t off2, size_t count) { - bus_addr_t addr1 = bsh1 + off1; - bus_addr_t addr2 = bsh2 + off2; + bus_space_handle_t addr1 = bsh1 + off1; + bus_space_handle_t addr2 = bsh2 + off2; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -1057,8 +1057,8 @@ bus_space_copy_region_2(bus_space_tag_t tag, bus_space_handle_t bsh1, bus_size_t off1, bus_space_handle_t bsh2, bus_size_t off2, size_t count) { - bus_addr_t addr1 = bsh1 + off1; - bus_addr_t addr2 = bsh2 + off2; + bus_space_handle_t addr1 = bsh1 + off1; + bus_space_handle_t addr2 = bsh2 + off2; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -1103,8 +1103,8 @@ bus_space_copy_region_4(bus_space_tag_t tag, bus_space_handle_t bsh1, bus_size_t off1, bus_space_handle_t bsh2, bus_size_t off2, size_t count) { - bus_addr_t addr1 = bsh1 + off1; - bus_addr_t addr2 = bsh2 + off2; + bus_space_handle_t addr1 = bsh1 + off1; + bus_space_handle_t addr2 = bsh2 + off2; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) diff --git a/sys/cpu/i386/include/param.h b/sys/cpu/i386/include/param.h index 9a61c6cda5..16acadfed5 100644 --- a/sys/cpu/i386/include/param.h +++ b/sys/cpu/i386/include/param.h @@ -35,7 +35,7 @@ * * from: @(#)param.h 5.8 (Berkeley) 6/28/91 * $FreeBSD: src/sys/i386/include/param.h,v 1.54.2.8 2002/08/31 21:15:55 dillon Exp $ - * $DragonFly: src/sys/cpu/i386/include/param.h,v 1.5 2003/10/19 00:13:18 dillon Exp $ + * $DragonFly: src/sys/cpu/i386/include/param.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _MACHINE_PARAM_H_ @@ -193,14 +193,14 @@ */ #define trunc_page(x) ((x) & ~PAGE_MASK) #define round_page(x) (((x) + PAGE_MASK) & ~PAGE_MASK) -#define trunc_4mpage(x) ((unsigned)(x) & ~PDRMASK) -#define round_4mpage(x) ((((unsigned)(x)) + PDRMASK) & ~PDRMASK) +#define trunc_4mpage(x) ((x) & ~PDRMASK) +#define round_4mpage(x) ((((x)) + PDRMASK) & ~PDRMASK) -#define atop(x) ((unsigned)(x) >> PAGE_SHIFT) -#define ptoa(x) ((unsigned)(x) << PAGE_SHIFT) +#define atop(x) ((x) >> PAGE_SHIFT) +#define ptoa(x) ((x) << PAGE_SHIFT) -#define i386_btop(x) ((unsigned)(x) >> PAGE_SHIFT) -#define i386_ptob(x) ((unsigned)(x) << PAGE_SHIFT) +#define i386_btop(x) ((x) >> PAGE_SHIFT) +#define i386_ptob(x) ((x) << PAGE_SHIFT) #define pgtok(x) ((x) * (PAGE_SIZE / 1024)) diff --git a/sys/cpu/i386/include/pmap.h b/sys/cpu/i386/include/pmap.h index 39d3444f37..9ed3d2725a 100644 --- a/sys/cpu/i386/include/pmap.h +++ b/sys/cpu/i386/include/pmap.h @@ -43,7 +43,7 @@ * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 * $FreeBSD: src/sys/i386/include/pmap.h,v 1.65.2.3 2001/10/03 07:15:37 peter Exp $ - * $DragonFly: src/sys/cpu/i386/include/pmap.h,v 1.4 2003/08/26 21:42:18 rob Exp $ + * $DragonFly: src/sys/cpu/i386/include/pmap.h,v 1.5 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -71,7 +71,7 @@ /* Our various interpretations of the above */ #define PG_W PG_AVAIL1 /* "Wired" pseudoflag */ #define PG_MANAGED PG_AVAIL2 -#define PG_FRAME (~PAGE_MASK) +#define PG_FRAME (~((vm_paddr_t)PAGE_MASK)) #define PG_PROT (PG_RW|PG_U) /* all protection bits . */ #define PG_N (PG_NC_PWT|PG_NC_PCD) /* Non-cacheable */ @@ -163,10 +163,11 @@ extern pd_entry_t IdlePTD; /* physical address of "Idle" state directory */ * Extract the physical page address associated * kernel virtual address. */ -static __inline vm_offset_t +static __inline vm_paddr_t pmap_kextract(vm_offset_t va) { - vm_offset_t pa; + vm_paddr_t pa; + if ((pa = (vm_offset_t) PTD[va >> PDRSHIFT]) & PG_PS) { pa = (pa & ~(NBPDR - 1)) | (va & (NBPDR - 1)); } else { @@ -243,18 +244,18 @@ extern struct ppro_vmtrr PPro_vmtrr[NPPROVMTRR]; extern caddr_t CADDR1; extern pt_entry_t *CMAP1; -extern vm_offset_t avail_end; -extern vm_offset_t avail_start; +extern vm_paddr_t avail_end; +extern vm_paddr_t avail_start; extern vm_offset_t clean_eva; extern vm_offset_t clean_sva; -extern vm_offset_t phys_avail[]; +extern vm_paddr_t phys_avail[]; extern char *ptvmmap; /* poor name! */ extern vm_offset_t virtual_avail; extern vm_offset_t virtual_end; -void pmap_bootstrap ( vm_offset_t, vm_offset_t); +void pmap_bootstrap ( vm_paddr_t, vm_paddr_t); pmap_t pmap_kernel (void); -void *pmap_mapdev (vm_offset_t, vm_size_t); +void *pmap_mapdev (vm_paddr_t, vm_size_t); void pmap_unmapdev (vm_offset_t, vm_size_t); unsigned *pmap_pte (pmap_t, vm_offset_t) __pure2; vm_page_t pmap_use_pt (pmap_t, vm_offset_t); diff --git a/sys/cpu/i386/include/types.h b/sys/cpu/i386/include/types.h index 7eb0ac5bb7..4b504a49d8 100644 --- a/sys/cpu/i386/include/types.h +++ b/sys/cpu/i386/include/types.h @@ -32,7 +32,7 @@ * * @(#)types.h 8.3 (Berkeley) 1/5/94 * $FreeBSD: src/sys/i386/include/types.h,v 1.19.2.1 2001/03/21 10:50:58 peter Exp $ - * $DragonFly: src/sys/cpu/i386/include/types.h,v 1.5 2003/08/27 01:43:07 dillon Exp $ + * $DragonFly: src/sys/cpu/i386/include/types.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _MACHINE_TYPES_H_ @@ -68,5 +68,7 @@ typedef unsigned int *pt_entry_t; /* Interrupt mask (spl, xxx_imask, etc) */ typedef __uint32_t intrmask_t; +typedef __int64_t intmax_t; +typedef __uint64_t uintmax_t; #endif /* !_MACHINE_TYPES_H_ */ diff --git a/sys/i386/i386/busdma_machdep.c b/sys/i386/i386/busdma_machdep.c index b8cbfd1bb6..ab1e7c269e 100644 --- a/sys/i386/i386/busdma_machdep.c +++ b/sys/i386/i386/busdma_machdep.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.16.2.2 2003/01/23 00:55:27 scottl Exp $ - * $DragonFly: src/sys/i386/i386/Attic/busdma_machdep.c,v 1.4 2003/07/27 01:49:51 hmp Exp $ + * $DragonFly: src/sys/i386/i386/Attic/busdma_machdep.c,v 1.5 2003/11/03 17:11:18 dillon Exp $ */ #include @@ -97,7 +97,7 @@ static struct bus_dmamap nobounce_dmamap; static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages); static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map); -static vm_offset_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, +static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, bus_size_t size); static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage); static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr); @@ -144,8 +144,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, newtag->parent = parent; newtag->alignment = alignment; newtag->boundary = boundary; - newtag->lowaddr = trunc_page((vm_offset_t)lowaddr) + (PAGE_SIZE - 1); - newtag->highaddr = trunc_page((vm_offset_t)highaddr) + (PAGE_SIZE - 1); + newtag->lowaddr = trunc_page((vm_paddr_t)lowaddr) + (PAGE_SIZE - 1); + newtag->highaddr = trunc_page((vm_paddr_t)highaddr) + (PAGE_SIZE - 1); newtag->filter = filter; newtag->filterarg = filterarg; newtag->maxsize = maxsize; @@ -178,7 +178,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, } } - if (newtag->lowaddr < ptoa(Maxmem) && (flags & BUS_DMA_ALLOCNOW) != 0) { + if (newtag->lowaddr < ptoa(Maxmem) && + (flags & BUS_DMA_ALLOCNOW) != 0) { /* Must bounce */ if (lowaddr > bounce_lowaddr) { @@ -328,7 +329,8 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, /* If we succeed, no mapping/bouncing will be required */ *mapp = NULL; - if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem)) { + if ((dmat->maxsize <= PAGE_SIZE) && + dmat->lowaddr >= ptoa(Maxmem)) { *vaddr = malloc(dmat->maxsize, M_DEVBUF, (flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK); } else { @@ -360,7 +362,8 @@ bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map) */ if (map != NULL) panic("bus_dmamem_free: Invalid map freed\n"); - if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem)) + if ((dmat->maxsize <= PAGE_SIZE) && + dmat->lowaddr >= ptoa(Maxmem)) free(vaddr, M_DEVBUF); else contigfree(vaddr, dmat->maxsize, M_DEVBUF); @@ -377,7 +380,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, void *callback_arg, int flags) { vm_offset_t vaddr; - vm_offset_t paddr; + vm_paddr_t paddr; #ifdef __GNUC__ bus_dma_segment_t dm_segments[dmat->nsegments]; #else @@ -386,7 +389,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, bus_dma_segment_t *sg; int seg; int error; - vm_offset_t nextpaddr; + vm_paddr_t nextpaddr; if (map == NULL) map = &nobounce_dmamap; @@ -396,7 +399,8 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, * If we are being called during a callback, pagesneeded will * be non-zero, so we can avoid doing the work twice. */ - if (dmat->lowaddr < ptoa(Maxmem) && map->pagesneeded == 0) { + if (dmat->lowaddr < ptoa(Maxmem) && + map->pagesneeded == 0) { vm_offset_t vendaddr; /* @@ -799,7 +803,7 @@ reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map) return (pages); } -static vm_offset_t +static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, bus_size_t size) { diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index 29921bf510..704ffa689e 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -36,7 +36,7 @@ * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 * $FreeBSD: src/sys/i386/i386/machdep.c,v 1.385.2.30 2003/05/31 08:48:05 alc Exp $ - * $DragonFly: src/sys/i386/i386/Attic/machdep.c,v 1.40 2003/10/25 17:36:22 dillon Exp $ + * $DragonFly: src/sys/i386/i386/Attic/machdep.c,v 1.41 2003/11/03 17:11:18 dillon Exp $ */ #include "use_apm.h" @@ -237,10 +237,11 @@ SYSCTL_PROC(_machdep, OID_AUTO, msgbuf_clear, CTLTYPE_INT|CTLFLAG_RW, &msgbuf_clear, 0, sysctl_machdep_msgbuf_clear, "I", "Clear kernel message buffer"); -int bootverbose = 0, Maxmem = 0; +int bootverbose = 0; +vm_paddr_t Maxmem = 0; long dumplo; -vm_offset_t phys_avail[10]; +vm_paddr_t phys_avail[10]; /* must be 2 less so 0 0 can signal end of chunks */ #define PHYS_AVAIL_ARRAY_END ((sizeof(phys_avail) / sizeof(vm_offset_t)) - 2) @@ -274,7 +275,7 @@ cpu_startup(dummy) #ifdef PERFMON perfmon_init(); #endif - printf("real memory = %u (%uK bytes)\n", ptoa(Maxmem), ptoa(Maxmem) / 1024); + printf("real memory = %llu (%lluK bytes)\n", ptoa(Maxmem), ptoa(Maxmem) / 1024); /* * Display any holes after the first chunk of extended memory. */ @@ -283,9 +284,9 @@ cpu_startup(dummy) printf("Physical memory chunk(s):\n"); for (indx = 0; phys_avail[indx + 1] != 0; indx += 2) { - unsigned int size1 = phys_avail[indx + 1] - phys_avail[indx]; + vm_paddr_t size1 = phys_avail[indx + 1] - phys_avail[indx]; - printf("0x%08x - 0x%08x, %u bytes (%u pages)\n", + printf("0x%08llx - 0x%08llx, %llu bytes (%llu pages)\n", phys_avail[indx], phys_avail[indx + 1] - 1, size1, size1 / PAGE_SIZE); } @@ -1460,7 +1461,7 @@ physmap_done: if (atop(physmap[physmap_idx + 1]) != Maxmem && (boothowto & RB_VERBOSE)) - printf("Physical memory use set to %uK\n", Maxmem * 4); + printf("Physical memory use set to %lluK\n", Maxmem * 4); /* * If Maxmem has been increased beyond what the system has detected, diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 5ba50653fa..f15ae8c449 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -40,7 +40,7 @@ * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 * $FreeBSD: src/sys/i386/i386/pmap.c,v 1.250.2.18 2002/03/06 22:48:53 silby Exp $ - * $DragonFly: src/sys/i386/i386/Attic/pmap.c,v 1.22 2003/09/02 20:11:34 dillon Exp $ + * $DragonFly: src/sys/i386/i386/Attic/pmap.c,v 1.23 2003/11/03 17:11:18 dillon Exp $ */ /* @@ -149,8 +149,8 @@ static int protection_codes[8]; static struct pmap kernel_pmap_store; pmap_t kernel_pmap; -vm_offset_t avail_start; /* PA of first available physical page */ -vm_offset_t avail_end; /* PA of last available physical page */ +vm_paddr_t avail_start; /* PA of first available physical page */ +vm_paddr_t avail_end; /* PA of last available physical page */ vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */ vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */ static boolean_t pmap_initialized = FALSE; /* Has pmap_init completed? */ @@ -307,8 +307,8 @@ pmap_pte_quick(pmap_t pmap, vm_offset_t va) */ void pmap_bootstrap(firstaddr, loadaddr) - vm_offset_t firstaddr; - vm_offset_t loadaddr; + vm_paddr_t firstaddr; + vm_paddr_t loadaddr; { vm_offset_t va; pt_entry_t *pte; @@ -494,7 +494,7 @@ pmap_set_opt(void) */ void pmap_init(phys_start, phys_end) - vm_offset_t phys_start, phys_end; + vm_paddr_t phys_start, phys_end; { int i; int initial_pvs; @@ -666,7 +666,7 @@ get_ptbase(pmap_t pmap) * This function may not be called from an interrupt if the pmap is * not kernel_pmap. */ -vm_offset_t +vm_paddr_t pmap_extract(pmap_t pmap, vm_offset_t va) { vm_offset_t rtval; @@ -698,7 +698,7 @@ pmap_extract(pmap_t pmap, vm_offset_t va) * should do a invltlb after doing the pmap_kenter... */ PMAP_INLINE void -pmap_kenter(vm_offset_t va, vm_offset_t pa) +pmap_kenter(vm_offset_t va, vm_paddr_t pa) { unsigned *pte; unsigned npte, opte; @@ -731,7 +731,7 @@ pmap_kremove(vm_offset_t va) * specified memory. */ vm_offset_t -pmap_map(vm_offset_t virt, vm_offset_t start, vm_offset_t end, int prot) +pmap_map(vm_offset_t virt, vm_paddr_t start, vm_paddr_t end, int prot) { while (start < end) { pmap_kenter(virt, start); @@ -816,6 +816,7 @@ retry: /* * Create a new thread and optionally associate it with a (new) process. + * NOTE! the new thread's cpu may not equal the current cpu. */ void pmap_init_thread(thread_t td) @@ -1870,9 +1871,9 @@ void pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, boolean_t wired) { - vm_offset_t pa; + vm_paddr_t pa; unsigned *pte; - vm_offset_t opa; + vm_paddr_t opa; vm_offset_t origpte, newpte; vm_page_t mpte; @@ -1921,8 +1922,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, * Page Directory table entry not valid, we need a new PT page */ if (pte == NULL) { - panic("pmap_enter: invalid page directory, pdir=%p, va=0x%x\n", - (void *)pmap->pm_pdir[PTDPTDI], va); + panic("pmap_enter: invalid page directory pdir=%x, va=0x%x\n", + (unsigned) pmap->pm_pdir[PTDPTDI], va); } pa = VM_PAGE_TO_PHYS(m) & PG_FRAME; @@ -2064,7 +2065,7 @@ static vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte) { unsigned *pte; - vm_offset_t pa; + vm_paddr_t pa; /* * In the case that a page table page is not @@ -2156,7 +2157,7 @@ retry: * to be used for panic dumps. */ void * -pmap_kenter_temporary(vm_offset_t pa, int i) +pmap_kenter_temporary(vm_paddr_t pa, int i) { pmap_kenter((vm_offset_t)crashdumpmap + (i * PAGE_SIZE), pa); return ((void *)crashdumpmap); @@ -2582,7 +2583,7 @@ pmap_kernel(void) * required. */ void -pmap_zero_page(vm_offset_t phys) +pmap_zero_page(vm_paddr_t phys) { struct mdglobaldata *gd = mdcpu; @@ -2612,7 +2613,7 @@ pmap_zero_page(vm_offset_t phys) * off and size may not cover an area beyond a single hardware page. */ void -pmap_zero_page_area(vm_offset_t phys, int off, int size) +pmap_zero_page_area(vm_paddr_t phys, int off, int size) { struct mdglobaldata *gd = mdcpu; @@ -2640,7 +2641,7 @@ pmap_zero_page_area(vm_offset_t phys, int off, int size) * is required. */ void -pmap_copy_page(vm_offset_t src, vm_offset_t dst) +pmap_copy_page(vm_paddr_t src, vm_paddr_t dst) { struct mdglobaldata *gd = mdcpu; @@ -2918,7 +2919,7 @@ pmap_page_protect(vm_page_t m, vm_prot_t prot) } } -vm_offset_t +vm_paddr_t pmap_phys_address(int ppn) { return (i386_ptob(ppn)); @@ -3056,7 +3057,7 @@ i386_protection_init(void) * a time. */ void * -pmap_mapdev(vm_offset_t pa, vm_size_t size) +pmap_mapdev(vm_paddr_t pa, vm_size_t size) { vm_offset_t va, tmpva, offset; unsigned *pte; @@ -3264,7 +3265,7 @@ pads(pmap_t pm) } void -pmap_pvdump(vm_offset_t pa) +pmap_pvdump(vm_paddr_t pa) { pv_entry_t pv; vm_page_t m; diff --git a/sys/i386/i386/vm_machdep.c b/sys/i386/i386/vm_machdep.c index 20094730af..191c5f3cc5 100644 --- a/sys/i386/i386/vm_machdep.c +++ b/sys/i386/i386/vm_machdep.c @@ -39,7 +39,7 @@ * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ * $FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.132.2.9 2003/01/25 19:02:23 dillon Exp $ - * $DragonFly: src/sys/i386/i386/Attic/vm_machdep.c,v 1.24 2003/08/26 21:42:18 rob Exp $ + * $DragonFly: src/sys/i386/i386/Attic/vm_machdep.c,v 1.25 2003/11/03 17:11:18 dillon Exp $ */ #include "use_npx.h" @@ -383,15 +383,15 @@ setredzone(pte, vaddr) /* * Convert kernel VA to physical address */ -u_long +vm_paddr_t kvtop(void *addr) { - vm_offset_t va; + vm_paddr_t pa; - va = pmap_kextract((vm_offset_t)addr); - if (va == 0) + pa = pmap_kextract((vm_offset_t)addr); + if (pa == 0) panic("kvtop: zero page frame"); - return((int)va); + return (pa); } /* diff --git a/sys/i386/include/bus_at386.h b/sys/i386/include/bus_at386.h index f52f2d9e9a..d691e9159b 100644 --- a/sys/i386/include/bus_at386.h +++ b/sys/i386/include/bus_at386.h @@ -68,7 +68,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* $FreeBSD: src/sys/i386/include/bus_at386.h,v 1.8.2.3 2002/03/03 05:42:50 nyan Exp $ */ -/* $DragonFly: src/sys/i386/include/Attic/bus_at386.h,v 1.5 2003/08/07 21:17:22 dillon Exp $ */ +/* $DragonFly: src/sys/i386/include/Attic/bus_at386.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _I386_BUS_AT386_H_ #define _I386_BUS_AT386_H_ @@ -93,15 +93,15 @@ /* * Bus address and size types */ -typedef u_int bus_addr_t; -typedef u_int bus_size_t; +typedef u_int32_t bus_addr_t; +typedef u_int32_t bus_size_t; #define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFF #define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF #define BUS_SPACE_MAXSIZE (64 * 1024) /* Maximum supported size */ #define BUS_SPACE_MAXADDR_24BIT 0xFFFFFF #define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFF -#define BUS_SPACE_MAXADDR 0xFFFFFFFF +#define BUS_SPACE_MAXADDR BUS_SPACE_MAXADDR_32BIT #define BUS_SPACE_UNRESTRICTED (~0) @@ -829,7 +829,7 @@ static __inline void bus_space_set_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int8_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -851,7 +851,7 @@ static __inline void bus_space_set_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int16_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -873,7 +873,7 @@ static __inline void bus_space_set_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int32_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -917,7 +917,7 @@ static __inline void bus_space_set_region_1(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int8_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -939,7 +939,7 @@ static __inline void bus_space_set_region_2(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int16_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -961,7 +961,7 @@ static __inline void bus_space_set_region_4(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int32_t value, size_t count) { - bus_addr_t addr = bsh + offset; + bus_space_handle_t addr = bsh + offset; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -1011,8 +1011,8 @@ bus_space_copy_region_1(bus_space_tag_t tag, bus_space_handle_t bsh1, bus_size_t off1, bus_space_handle_t bsh2, bus_size_t off2, size_t count) { - bus_addr_t addr1 = bsh1 + off1; - bus_addr_t addr2 = bsh2 + off2; + bus_space_handle_t addr1 = bsh1 + off1; + bus_space_handle_t addr2 = bsh2 + off2; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -1057,8 +1057,8 @@ bus_space_copy_region_2(bus_space_tag_t tag, bus_space_handle_t bsh1, bus_size_t off1, bus_space_handle_t bsh2, bus_size_t off2, size_t count) { - bus_addr_t addr1 = bsh1 + off1; - bus_addr_t addr2 = bsh2 + off2; + bus_space_handle_t addr1 = bsh1 + off1; + bus_space_handle_t addr2 = bsh2 + off2; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) @@ -1103,8 +1103,8 @@ bus_space_copy_region_4(bus_space_tag_t tag, bus_space_handle_t bsh1, bus_size_t off1, bus_space_handle_t bsh2, bus_size_t off2, size_t count) { - bus_addr_t addr1 = bsh1 + off1; - bus_addr_t addr2 = bsh2 + off2; + bus_space_handle_t addr1 = bsh1 + off1; + bus_space_handle_t addr2 = bsh2 + off2; #if defined(_I386_BUS_PIO_H_) #if defined(_I386_BUS_MEMIO_H_) diff --git a/sys/i386/include/md_var.h b/sys/i386/include/md_var.h index 9ab2c93bfb..8e8ab43408 100644 --- a/sys/i386/include/md_var.h +++ b/sys/i386/include/md_var.h @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/i386/include/md_var.h,v 1.35.2.4 2003/01/22 20:14:53 jhb Exp $ - * $DragonFly: src/sys/i386/include/Attic/md_var.h,v 1.11 2003/10/24 14:10:45 daver Exp $ + * $DragonFly: src/sys/i386/include/Attic/md_var.h,v 1.12 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _MACHINE_MD_VAR_H_ @@ -37,7 +37,7 @@ * Miscellaneous machine-dependent declarations. */ -extern int Maxmem; +extern vm_paddr_t Maxmem; extern u_int atdevbase; /* offset in virtual memory of ISA io mem */ extern void (*bcopy_vector) (const void *from, void *to, size_t len); extern int busdma_swi_pending; @@ -106,7 +106,7 @@ int i586_copyout (const void *kaddr, void *udaddr, size_t len); void i686_pagezero (void *addr); void init_AMD_Elan_sc520(void); int is_physical_memory (vm_offset_t addr); -u_long kvtop (void *addr); +vm_paddr_t kvtop (void *addr); void setidt (int idx, alias_for_inthand_t *func, int typ, int dpl, int selec); void userconfig (void); diff --git a/sys/i386/include/param.h b/sys/i386/include/param.h index 2c037739a3..e9fe0d73c0 100644 --- a/sys/i386/include/param.h +++ b/sys/i386/include/param.h @@ -35,7 +35,7 @@ * * from: @(#)param.h 5.8 (Berkeley) 6/28/91 * $FreeBSD: src/sys/i386/include/param.h,v 1.54.2.8 2002/08/31 21:15:55 dillon Exp $ - * $DragonFly: src/sys/i386/include/Attic/param.h,v 1.5 2003/10/19 00:13:18 dillon Exp $ + * $DragonFly: src/sys/i386/include/Attic/param.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _MACHINE_PARAM_H_ @@ -193,14 +193,14 @@ */ #define trunc_page(x) ((x) & ~PAGE_MASK) #define round_page(x) (((x) + PAGE_MASK) & ~PAGE_MASK) -#define trunc_4mpage(x) ((unsigned)(x) & ~PDRMASK) -#define round_4mpage(x) ((((unsigned)(x)) + PDRMASK) & ~PDRMASK) +#define trunc_4mpage(x) ((x) & ~PDRMASK) +#define round_4mpage(x) ((((x)) + PDRMASK) & ~PDRMASK) -#define atop(x) ((unsigned)(x) >> PAGE_SHIFT) -#define ptoa(x) ((unsigned)(x) << PAGE_SHIFT) +#define atop(x) ((x) >> PAGE_SHIFT) +#define ptoa(x) ((x) << PAGE_SHIFT) -#define i386_btop(x) ((unsigned)(x) >> PAGE_SHIFT) -#define i386_ptob(x) ((unsigned)(x) << PAGE_SHIFT) +#define i386_btop(x) ((x) >> PAGE_SHIFT) +#define i386_ptob(x) ((x) << PAGE_SHIFT) #define pgtok(x) ((x) * (PAGE_SIZE / 1024)) diff --git a/sys/i386/include/pmap.h b/sys/i386/include/pmap.h index cb906cfc64..a829c59107 100644 --- a/sys/i386/include/pmap.h +++ b/sys/i386/include/pmap.h @@ -43,7 +43,7 @@ * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 * $FreeBSD: src/sys/i386/include/pmap.h,v 1.65.2.3 2001/10/03 07:15:37 peter Exp $ - * $DragonFly: src/sys/i386/include/Attic/pmap.h,v 1.4 2003/08/26 21:42:18 rob Exp $ + * $DragonFly: src/sys/i386/include/Attic/pmap.h,v 1.5 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -71,7 +71,7 @@ /* Our various interpretations of the above */ #define PG_W PG_AVAIL1 /* "Wired" pseudoflag */ #define PG_MANAGED PG_AVAIL2 -#define PG_FRAME (~PAGE_MASK) +#define PG_FRAME (~((vm_paddr_t)PAGE_MASK)) #define PG_PROT (PG_RW|PG_U) /* all protection bits . */ #define PG_N (PG_NC_PWT|PG_NC_PCD) /* Non-cacheable */ @@ -163,10 +163,11 @@ extern pd_entry_t IdlePTD; /* physical address of "Idle" state directory */ * Extract the physical page address associated * kernel virtual address. */ -static __inline vm_offset_t +static __inline vm_paddr_t pmap_kextract(vm_offset_t va) { - vm_offset_t pa; + vm_paddr_t pa; + if ((pa = (vm_offset_t) PTD[va >> PDRSHIFT]) & PG_PS) { pa = (pa & ~(NBPDR - 1)) | (va & (NBPDR - 1)); } else { @@ -243,18 +244,18 @@ extern struct ppro_vmtrr PPro_vmtrr[NPPROVMTRR]; extern caddr_t CADDR1; extern pt_entry_t *CMAP1; -extern vm_offset_t avail_end; -extern vm_offset_t avail_start; +extern vm_paddr_t avail_end; +extern vm_paddr_t avail_start; extern vm_offset_t clean_eva; extern vm_offset_t clean_sva; -extern vm_offset_t phys_avail[]; +extern vm_paddr_t phys_avail[]; extern char *ptvmmap; /* poor name! */ extern vm_offset_t virtual_avail; extern vm_offset_t virtual_end; -void pmap_bootstrap ( vm_offset_t, vm_offset_t); +void pmap_bootstrap ( vm_paddr_t, vm_paddr_t); pmap_t pmap_kernel (void); -void *pmap_mapdev (vm_offset_t, vm_size_t); +void *pmap_mapdev (vm_paddr_t, vm_size_t); void pmap_unmapdev (vm_offset_t, vm_size_t); unsigned *pmap_pte (pmap_t, vm_offset_t) __pure2; vm_page_t pmap_use_pt (pmap_t, vm_offset_t); diff --git a/sys/i386/include/types.h b/sys/i386/include/types.h index 81ffca2bd3..166c2d4fa5 100644 --- a/sys/i386/include/types.h +++ b/sys/i386/include/types.h @@ -32,7 +32,7 @@ * * @(#)types.h 8.3 (Berkeley) 1/5/94 * $FreeBSD: src/sys/i386/include/types.h,v 1.19.2.1 2001/03/21 10:50:58 peter Exp $ - * $DragonFly: src/sys/i386/include/Attic/types.h,v 1.5 2003/08/27 01:43:07 dillon Exp $ + * $DragonFly: src/sys/i386/include/Attic/types.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _MACHINE_TYPES_H_ @@ -68,5 +68,7 @@ typedef unsigned int *pt_entry_t; /* Interrupt mask (spl, xxx_imask, etc) */ typedef __uint32_t intrmask_t; +typedef __int64_t intmax_t; +typedef __uint64_t uintmax_t; #endif /* !_MACHINE_TYPES_H_ */ diff --git a/sys/i386/include/vmparam.h b/sys/i386/include/vmparam.h index 0fadd424f1..aa4d4673eb 100644 --- a/sys/i386/include/vmparam.h +++ b/sys/i386/include/vmparam.h @@ -37,7 +37,7 @@ * * from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91 * $FreeBSD: src/sys/i386/include/vmparam.h,v 1.32.2.1 2000/04/02 08:47:01 peter Exp $ - * $DragonFly: src/sys/i386/include/Attic/vmparam.h,v 1.5 2003/10/19 00:23:23 dillon Exp $ + * $DragonFly: src/sys/i386/include/Attic/vmparam.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */ @@ -91,7 +91,7 @@ * messy at times, but hey, we'll do anything to save a page :-) */ -#define VM_MAX_KERNEL_ADDRESS VADDR(KPTDI+NKPDE, 0) +#define VM_MAX_KERNEL_ADDRESS VADDR(KPTDI+NKPDE-1, NPTEPG-1) #define VM_MIN_KERNEL_ADDRESS VADDR(PTDPTDI, PTDPTDI) #define KERNBASE VADDR(KPTDI, 0) @@ -102,7 +102,7 @@ #define UPT_MAX_ADDRESS VADDR(PTDPTDI, PTDPTDI) #define UPT_MIN_ADDRESS VADDR(PTDPTDI, 0) -#define VM_MAXUSER_ADDRESS VADDR(UMAXPTDI, UMAXPTEOFF) +#define VM_MAXUSER_ADDRESS VADDR(PTDPTDI, 0) #define USRSTACK VM_MAXUSER_ADDRESS diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c index 1b6554f3f0..f9060097a5 100644 --- a/sys/kern/sys_pipe.c +++ b/sys/kern/sys_pipe.c @@ -17,7 +17,7 @@ * are met. * * $FreeBSD: src/sys/kern/sys_pipe.c,v 1.60.2.13 2002/08/05 15:05:15 des Exp $ - * $DragonFly: src/sys/kern/sys_pipe.c,v 1.12 2003/09/03 14:19:06 hmp Exp $ + * $DragonFly: src/sys/kern/sys_pipe.c,v 1.13 2003/11/03 17:11:21 dillon Exp $ */ /* @@ -549,7 +549,8 @@ pipe_build_write_buffer(wpipe, uio) { u_int size; int i; - vm_offset_t addr, endaddr, paddr; + vm_offset_t addr, endaddr; + vm_paddr_t paddr; size = (u_int) uio->uio_iov->iov_len; if (size > wpipe->pipe_buffer.size) diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index a09817fe2a..75354d77e9 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -12,7 +12,7 @@ * John S. Dyson. * * $FreeBSD: src/sys/kern/vfs_bio.c,v 1.242.2.20 2003/05/28 18:38:10 alc Exp $ - * $DragonFly: src/sys/kern/vfs_bio.c,v 1.15 2003/10/08 00:10:56 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_bio.c,v 1.16 2003/11/03 17:11:21 dillon Exp $ */ /* @@ -3212,7 +3212,7 @@ int vmapbuf(struct buf *bp) { caddr_t addr, v, kva; - vm_offset_t pa; + vm_paddr_t pa; int pidx; int i; struct vm_page *m; diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 20dde8e982..a2de5ed518 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -37,7 +37,7 @@ * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 * $FreeBSD: src/sys/kern/vfs_subr.c,v 1.249.2.30 2003/04/04 20:35:57 tegge Exp $ - * $DragonFly: src/sys/kern/vfs_subr.c,v 1.22 2003/10/09 22:27:19 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_subr.c,v 1.23 2003/11/03 17:11:21 dillon Exp $ */ /* @@ -73,6 +73,7 @@ #include #include #include +#include #include #include #include @@ -181,7 +182,18 @@ void vntblinit() { - desiredvnodes = maxproc + vmstats.v_page_count / 4; + /* + * Desired vnodes is a result of the physical page count + * and the size of kernel's heap. It scales in proportion + * to the amount of available physical memory. This can + * cause trouble on 64-bit and large memory platforms. + */ + /* desiredvnodes = maxproc + vmstats.v_page_count / 4; */ + desiredvnodes = + min(maxproc + vmstats.v_page_count /4, + 2 * (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / + (5 * (sizeof(struct vm_object) + sizeof(struct vnode)))); + minvnodes = desiredvnodes / 4; lwkt_inittoken(&mntvnode_token); lwkt_inittoken(&mntid_token); diff --git a/sys/platform/pc32/i386/busdma_machdep.c b/sys/platform/pc32/i386/busdma_machdep.c index bc6d0edfe6..9f7de93520 100644 --- a/sys/platform/pc32/i386/busdma_machdep.c +++ b/sys/platform/pc32/i386/busdma_machdep.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.16.2.2 2003/01/23 00:55:27 scottl Exp $ - * $DragonFly: src/sys/platform/pc32/i386/busdma_machdep.c,v 1.4 2003/07/27 01:49:51 hmp Exp $ + * $DragonFly: src/sys/platform/pc32/i386/busdma_machdep.c,v 1.5 2003/11/03 17:11:18 dillon Exp $ */ #include @@ -97,7 +97,7 @@ static struct bus_dmamap nobounce_dmamap; static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages); static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map); -static vm_offset_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, +static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, bus_size_t size); static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage); static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr); @@ -144,8 +144,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, newtag->parent = parent; newtag->alignment = alignment; newtag->boundary = boundary; - newtag->lowaddr = trunc_page((vm_offset_t)lowaddr) + (PAGE_SIZE - 1); - newtag->highaddr = trunc_page((vm_offset_t)highaddr) + (PAGE_SIZE - 1); + newtag->lowaddr = trunc_page((vm_paddr_t)lowaddr) + (PAGE_SIZE - 1); + newtag->highaddr = trunc_page((vm_paddr_t)highaddr) + (PAGE_SIZE - 1); newtag->filter = filter; newtag->filterarg = filterarg; newtag->maxsize = maxsize; @@ -178,7 +178,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, } } - if (newtag->lowaddr < ptoa(Maxmem) && (flags & BUS_DMA_ALLOCNOW) != 0) { + if (newtag->lowaddr < ptoa(Maxmem) && + (flags & BUS_DMA_ALLOCNOW) != 0) { /* Must bounce */ if (lowaddr > bounce_lowaddr) { @@ -328,7 +329,8 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, /* If we succeed, no mapping/bouncing will be required */ *mapp = NULL; - if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem)) { + if ((dmat->maxsize <= PAGE_SIZE) && + dmat->lowaddr >= ptoa(Maxmem)) { *vaddr = malloc(dmat->maxsize, M_DEVBUF, (flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK); } else { @@ -360,7 +362,8 @@ bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map) */ if (map != NULL) panic("bus_dmamem_free: Invalid map freed\n"); - if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem)) + if ((dmat->maxsize <= PAGE_SIZE) && + dmat->lowaddr >= ptoa(Maxmem)) free(vaddr, M_DEVBUF); else contigfree(vaddr, dmat->maxsize, M_DEVBUF); @@ -377,7 +380,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, void *callback_arg, int flags) { vm_offset_t vaddr; - vm_offset_t paddr; + vm_paddr_t paddr; #ifdef __GNUC__ bus_dma_segment_t dm_segments[dmat->nsegments]; #else @@ -386,7 +389,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, bus_dma_segment_t *sg; int seg; int error; - vm_offset_t nextpaddr; + vm_paddr_t nextpaddr; if (map == NULL) map = &nobounce_dmamap; @@ -396,7 +399,8 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, * If we are being called during a callback, pagesneeded will * be non-zero, so we can avoid doing the work twice. */ - if (dmat->lowaddr < ptoa(Maxmem) && map->pagesneeded == 0) { + if (dmat->lowaddr < ptoa(Maxmem) && + map->pagesneeded == 0) { vm_offset_t vendaddr; /* @@ -799,7 +803,7 @@ reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map) return (pages); } -static vm_offset_t +static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, bus_size_t size) { diff --git a/sys/platform/pc32/i386/machdep.c b/sys/platform/pc32/i386/machdep.c index 3036f8f1dd..603e287b38 100644 --- a/sys/platform/pc32/i386/machdep.c +++ b/sys/platform/pc32/i386/machdep.c @@ -36,7 +36,7 @@ * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 * $FreeBSD: src/sys/i386/i386/machdep.c,v 1.385.2.30 2003/05/31 08:48:05 alc Exp $ - * $DragonFly: src/sys/platform/pc32/i386/machdep.c,v 1.40 2003/10/25 17:36:22 dillon Exp $ + * $DragonFly: src/sys/platform/pc32/i386/machdep.c,v 1.41 2003/11/03 17:11:18 dillon Exp $ */ #include "use_apm.h" @@ -237,10 +237,11 @@ SYSCTL_PROC(_machdep, OID_AUTO, msgbuf_clear, CTLTYPE_INT|CTLFLAG_RW, &msgbuf_clear, 0, sysctl_machdep_msgbuf_clear, "I", "Clear kernel message buffer"); -int bootverbose = 0, Maxmem = 0; +int bootverbose = 0; +vm_paddr_t Maxmem = 0; long dumplo; -vm_offset_t phys_avail[10]; +vm_paddr_t phys_avail[10]; /* must be 2 less so 0 0 can signal end of chunks */ #define PHYS_AVAIL_ARRAY_END ((sizeof(phys_avail) / sizeof(vm_offset_t)) - 2) @@ -274,7 +275,7 @@ cpu_startup(dummy) #ifdef PERFMON perfmon_init(); #endif - printf("real memory = %u (%uK bytes)\n", ptoa(Maxmem), ptoa(Maxmem) / 1024); + printf("real memory = %llu (%lluK bytes)\n", ptoa(Maxmem), ptoa(Maxmem) / 1024); /* * Display any holes after the first chunk of extended memory. */ @@ -283,9 +284,9 @@ cpu_startup(dummy) printf("Physical memory chunk(s):\n"); for (indx = 0; phys_avail[indx + 1] != 0; indx += 2) { - unsigned int size1 = phys_avail[indx + 1] - phys_avail[indx]; + vm_paddr_t size1 = phys_avail[indx + 1] - phys_avail[indx]; - printf("0x%08x - 0x%08x, %u bytes (%u pages)\n", + printf("0x%08llx - 0x%08llx, %llu bytes (%llu pages)\n", phys_avail[indx], phys_avail[indx + 1] - 1, size1, size1 / PAGE_SIZE); } @@ -1460,7 +1461,7 @@ physmap_done: if (atop(physmap[physmap_idx + 1]) != Maxmem && (boothowto & RB_VERBOSE)) - printf("Physical memory use set to %uK\n", Maxmem * 4); + printf("Physical memory use set to %lluK\n", Maxmem * 4); /* * If Maxmem has been increased beyond what the system has detected, diff --git a/sys/platform/pc32/i386/pmap.c b/sys/platform/pc32/i386/pmap.c index 18e7763c05..7e4667cc3c 100644 --- a/sys/platform/pc32/i386/pmap.c +++ b/sys/platform/pc32/i386/pmap.c @@ -40,7 +40,7 @@ * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 * $FreeBSD: src/sys/i386/i386/pmap.c,v 1.250.2.18 2002/03/06 22:48:53 silby Exp $ - * $DragonFly: src/sys/platform/pc32/i386/pmap.c,v 1.22 2003/09/02 20:11:34 dillon Exp $ + * $DragonFly: src/sys/platform/pc32/i386/pmap.c,v 1.23 2003/11/03 17:11:18 dillon Exp $ */ /* @@ -149,8 +149,8 @@ static int protection_codes[8]; static struct pmap kernel_pmap_store; pmap_t kernel_pmap; -vm_offset_t avail_start; /* PA of first available physical page */ -vm_offset_t avail_end; /* PA of last available physical page */ +vm_paddr_t avail_start; /* PA of first available physical page */ +vm_paddr_t avail_end; /* PA of last available physical page */ vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */ vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */ static boolean_t pmap_initialized = FALSE; /* Has pmap_init completed? */ @@ -307,8 +307,8 @@ pmap_pte_quick(pmap_t pmap, vm_offset_t va) */ void pmap_bootstrap(firstaddr, loadaddr) - vm_offset_t firstaddr; - vm_offset_t loadaddr; + vm_paddr_t firstaddr; + vm_paddr_t loadaddr; { vm_offset_t va; pt_entry_t *pte; @@ -494,7 +494,7 @@ pmap_set_opt(void) */ void pmap_init(phys_start, phys_end) - vm_offset_t phys_start, phys_end; + vm_paddr_t phys_start, phys_end; { int i; int initial_pvs; @@ -666,7 +666,7 @@ get_ptbase(pmap_t pmap) * This function may not be called from an interrupt if the pmap is * not kernel_pmap. */ -vm_offset_t +vm_paddr_t pmap_extract(pmap_t pmap, vm_offset_t va) { vm_offset_t rtval; @@ -698,7 +698,7 @@ pmap_extract(pmap_t pmap, vm_offset_t va) * should do a invltlb after doing the pmap_kenter... */ PMAP_INLINE void -pmap_kenter(vm_offset_t va, vm_offset_t pa) +pmap_kenter(vm_offset_t va, vm_paddr_t pa) { unsigned *pte; unsigned npte, opte; @@ -731,7 +731,7 @@ pmap_kremove(vm_offset_t va) * specified memory. */ vm_offset_t -pmap_map(vm_offset_t virt, vm_offset_t start, vm_offset_t end, int prot) +pmap_map(vm_offset_t virt, vm_paddr_t start, vm_paddr_t end, int prot) { while (start < end) { pmap_kenter(virt, start); @@ -816,6 +816,7 @@ retry: /* * Create a new thread and optionally associate it with a (new) process. + * NOTE! the new thread's cpu may not equal the current cpu. */ void pmap_init_thread(thread_t td) @@ -1870,9 +1871,9 @@ void pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, boolean_t wired) { - vm_offset_t pa; + vm_paddr_t pa; unsigned *pte; - vm_offset_t opa; + vm_paddr_t opa; vm_offset_t origpte, newpte; vm_page_t mpte; @@ -1921,8 +1922,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, * Page Directory table entry not valid, we need a new PT page */ if (pte == NULL) { - panic("pmap_enter: invalid page directory, pdir=%p, va=0x%x\n", - (void *)pmap->pm_pdir[PTDPTDI], va); + panic("pmap_enter: invalid page directory pdir=%x, va=0x%x\n", + (unsigned) pmap->pm_pdir[PTDPTDI], va); } pa = VM_PAGE_TO_PHYS(m) & PG_FRAME; @@ -2064,7 +2065,7 @@ static vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte) { unsigned *pte; - vm_offset_t pa; + vm_paddr_t pa; /* * In the case that a page table page is not @@ -2156,7 +2157,7 @@ retry: * to be used for panic dumps. */ void * -pmap_kenter_temporary(vm_offset_t pa, int i) +pmap_kenter_temporary(vm_paddr_t pa, int i) { pmap_kenter((vm_offset_t)crashdumpmap + (i * PAGE_SIZE), pa); return ((void *)crashdumpmap); @@ -2582,7 +2583,7 @@ pmap_kernel(void) * required. */ void -pmap_zero_page(vm_offset_t phys) +pmap_zero_page(vm_paddr_t phys) { struct mdglobaldata *gd = mdcpu; @@ -2612,7 +2613,7 @@ pmap_zero_page(vm_offset_t phys) * off and size may not cover an area beyond a single hardware page. */ void -pmap_zero_page_area(vm_offset_t phys, int off, int size) +pmap_zero_page_area(vm_paddr_t phys, int off, int size) { struct mdglobaldata *gd = mdcpu; @@ -2640,7 +2641,7 @@ pmap_zero_page_area(vm_offset_t phys, int off, int size) * is required. */ void -pmap_copy_page(vm_offset_t src, vm_offset_t dst) +pmap_copy_page(vm_paddr_t src, vm_paddr_t dst) { struct mdglobaldata *gd = mdcpu; @@ -2918,7 +2919,7 @@ pmap_page_protect(vm_page_t m, vm_prot_t prot) } } -vm_offset_t +vm_paddr_t pmap_phys_address(int ppn) { return (i386_ptob(ppn)); @@ -3056,7 +3057,7 @@ i386_protection_init(void) * a time. */ void * -pmap_mapdev(vm_offset_t pa, vm_size_t size) +pmap_mapdev(vm_paddr_t pa, vm_size_t size) { vm_offset_t va, tmpva, offset; unsigned *pte; @@ -3264,7 +3265,7 @@ pads(pmap_t pm) } void -pmap_pvdump(vm_offset_t pa) +pmap_pvdump(vm_paddr_t pa) { pv_entry_t pv; vm_page_t m; diff --git a/sys/platform/pc32/i386/vm_machdep.c b/sys/platform/pc32/i386/vm_machdep.c index beeba382f1..ec212f020d 100644 --- a/sys/platform/pc32/i386/vm_machdep.c +++ b/sys/platform/pc32/i386/vm_machdep.c @@ -39,7 +39,7 @@ * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ * $FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.132.2.9 2003/01/25 19:02:23 dillon Exp $ - * $DragonFly: src/sys/platform/pc32/i386/vm_machdep.c,v 1.24 2003/08/26 21:42:18 rob Exp $ + * $DragonFly: src/sys/platform/pc32/i386/vm_machdep.c,v 1.25 2003/11/03 17:11:18 dillon Exp $ */ #include "use_npx.h" @@ -383,15 +383,15 @@ setredzone(pte, vaddr) /* * Convert kernel VA to physical address */ -u_long +vm_paddr_t kvtop(void *addr) { - vm_offset_t va; + vm_paddr_t pa; - va = pmap_kextract((vm_offset_t)addr); - if (va == 0) + pa = pmap_kextract((vm_offset_t)addr); + if (pa == 0) panic("kvtop: zero page frame"); - return((int)va); + return (pa); } /* diff --git a/sys/platform/pc32/include/md_var.h b/sys/platform/pc32/include/md_var.h index 9164249423..c5de38122c 100644 --- a/sys/platform/pc32/include/md_var.h +++ b/sys/platform/pc32/include/md_var.h @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/i386/include/md_var.h,v 1.35.2.4 2003/01/22 20:14:53 jhb Exp $ - * $DragonFly: src/sys/platform/pc32/include/md_var.h,v 1.11 2003/10/24 14:10:45 daver Exp $ + * $DragonFly: src/sys/platform/pc32/include/md_var.h,v 1.12 2003/11/03 17:11:19 dillon Exp $ */ #ifndef _MACHINE_MD_VAR_H_ @@ -37,7 +37,7 @@ * Miscellaneous machine-dependent declarations. */ -extern int Maxmem; +extern vm_paddr_t Maxmem; extern u_int atdevbase; /* offset in virtual memory of ISA io mem */ extern void (*bcopy_vector) (const void *from, void *to, size_t len); extern int busdma_swi_pending; @@ -106,7 +106,7 @@ int i586_copyout (const void *kaddr, void *udaddr, size_t len); void i686_pagezero (void *addr); void init_AMD_Elan_sc520(void); int is_physical_memory (vm_offset_t addr); -u_long kvtop (void *addr); +vm_paddr_t kvtop (void *addr); void setidt (int idx, alias_for_inthand_t *func, int typ, int dpl, int selec); void userconfig (void); diff --git a/sys/platform/pc32/include/vmparam.h b/sys/platform/pc32/include/vmparam.h index b5ff14c4f4..ce7b8a799e 100644 --- a/sys/platform/pc32/include/vmparam.h +++ b/sys/platform/pc32/include/vmparam.h @@ -37,7 +37,7 @@ * * from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91 * $FreeBSD: src/sys/i386/include/vmparam.h,v 1.32.2.1 2000/04/02 08:47:01 peter Exp $ - * $DragonFly: src/sys/platform/pc32/include/vmparam.h,v 1.5 2003/10/19 00:23:23 dillon Exp $ + * $DragonFly: src/sys/platform/pc32/include/vmparam.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */ @@ -91,7 +91,7 @@ * messy at times, but hey, we'll do anything to save a page :-) */ -#define VM_MAX_KERNEL_ADDRESS VADDR(KPTDI+NKPDE, 0) +#define VM_MAX_KERNEL_ADDRESS VADDR(KPTDI+NKPDE-1, NPTEPG-1) #define VM_MIN_KERNEL_ADDRESS VADDR(PTDPTDI, PTDPTDI) #define KERNBASE VADDR(KPTDI, 0) @@ -102,7 +102,7 @@ #define UPT_MAX_ADDRESS VADDR(PTDPTDI, PTDPTDI) #define UPT_MIN_ADDRESS VADDR(PTDPTDI, 0) -#define VM_MAXUSER_ADDRESS VADDR(UMAXPTDI, UMAXPTEOFF) +#define VM_MAXUSER_ADDRESS VADDR(PTDPTDI, 0) #define USRSTACK VM_MAXUSER_ADDRESS diff --git a/sys/sys/malloc.h b/sys/sys/malloc.h index 384968be27..b0aeb26eac 100644 --- a/sys/sys/malloc.h +++ b/sys/sys/malloc.h @@ -32,7 +32,7 @@ * * @(#)malloc.h 8.5 (Berkeley) 5/3/95 * $FreeBSD: src/sys/sys/malloc.h,v 1.48.2.2 2002/03/16 02:19:16 archie Exp $ - * $DragonFly: src/sys/sys/malloc.h,v 1.12 2003/10/20 16:50:39 dillon Exp $ + * $DragonFly: src/sys/sys/malloc.h,v 1.13 2003/11/03 17:11:22 dillon Exp $ */ #ifndef _SYS_MALLOC_H_ @@ -202,7 +202,7 @@ MALLOC_DECLARE(M_IOV); void contigfree (void *addr, unsigned long size, struct malloc_type *type); void *contigmalloc (unsigned long size, struct malloc_type *type, - int flags, unsigned long low, unsigned long high, + int flags, vm_paddr_t low, vm_paddr_t high, unsigned long alignment, unsigned long boundary); void free (void *addr, struct malloc_type *type); void *malloc (unsigned long size, struct malloc_type *type, int flags); diff --git a/sys/vm/device_pager.c b/sys/vm/device_pager.c index 83938adbb3..411accc5a4 100644 --- a/sys/vm/device_pager.c +++ b/sys/vm/device_pager.c @@ -37,7 +37,7 @@ * * @(#)device_pager.c 8.1 (Berkeley) 6/11/93 * $FreeBSD: src/sys/vm/device_pager.c,v 1.46.2.1 2000/08/02 21:54:37 peter Exp $ - * $DragonFly: src/sys/vm/device_pager.c,v 1.5 2003/08/20 08:03:01 rob Exp $ + * $DragonFly: src/sys/vm/device_pager.c,v 1.6 2003/11/03 17:11:23 dillon Exp $ */ #include @@ -68,7 +68,7 @@ static struct pagerlst dev_pager_object_list; static vm_zone_t fakepg_zone; static struct vm_zone fakepg_zone_store; -static vm_page_t dev_pager_getfake (vm_offset_t); +static vm_page_t dev_pager_getfake (vm_paddr_t); static void dev_pager_putfake (vm_page_t); static int dev_pager_alloc_lock, dev_pager_alloc_lock_want; @@ -187,7 +187,7 @@ dev_pager_getpages(object, m, count, reqpage) int reqpage; { vm_offset_t offset; - vm_offset_t paddr; + vm_paddr_t paddr; vm_page_t page; dev_t dev; int i, s; @@ -242,7 +242,7 @@ dev_pager_haspage(object, pindex, before, after) static vm_page_t dev_pager_getfake(paddr) - vm_offset_t paddr; + vm_paddr_t paddr; { vm_page_t m; diff --git a/sys/vm/pmap.h b/sys/vm/pmap.h index b751dbf2eb..2f82deec85 100644 --- a/sys/vm/pmap.h +++ b/sys/vm/pmap.h @@ -62,7 +62,7 @@ * rights to redistribute these changes. * * $FreeBSD: src/sys/vm/pmap.h,v 1.33.2.4 2002/03/06 22:44:24 silby Exp $ - * $DragonFly: src/sys/vm/pmap.h,v 1.7 2003/08/20 08:03:01 rob Exp $ + * $DragonFly: src/sys/vm/pmap.h,v 1.8 2003/11/03 17:11:23 dillon Exp $ */ /* @@ -101,18 +101,18 @@ void pmap_clear_reference (vm_page_t m); void pmap_collect (void); void pmap_copy (pmap_t, pmap_t, vm_offset_t, vm_size_t, vm_offset_t); -void pmap_copy_page (vm_offset_t, vm_offset_t); +void pmap_copy_page (vm_paddr_t, vm_paddr_t); void pmap_destroy (pmap_t); void pmap_enter (pmap_t, vm_offset_t, vm_page_t, vm_prot_t, boolean_t); -vm_offset_t pmap_extract (pmap_t pmap, vm_offset_t va); +vm_paddr_t pmap_extract (pmap_t pmap, vm_offset_t va); void pmap_growkernel (vm_offset_t); -void pmap_init (vm_offset_t, vm_offset_t); +void pmap_init (vm_paddr_t, vm_paddr_t); boolean_t pmap_is_modified (vm_page_t m); boolean_t pmap_ts_referenced (vm_page_t m); -void pmap_kenter (vm_offset_t va, vm_offset_t pa); +void pmap_kenter (vm_offset_t va, vm_paddr_t pa); void pmap_kremove (vm_offset_t); -vm_offset_t pmap_map (vm_offset_t, vm_offset_t, vm_offset_t, int); +vm_offset_t pmap_map (vm_offset_t, vm_paddr_t, vm_paddr_t, int); void pmap_object_init_pt (pmap_t pmap, vm_offset_t addr, vm_object_t object, vm_pindex_t pindex, vm_offset_t size, int pagelimit); @@ -120,7 +120,7 @@ boolean_t pmap_page_exists_quick (pmap_t pmap, vm_page_t m); void pmap_page_protect (vm_page_t m, vm_prot_t prot); void pmap_pageable (pmap_t, vm_offset_t, vm_offset_t, boolean_t); -vm_offset_t pmap_phys_address (int); +vm_paddr_t pmap_phys_address (int); void pmap_pinit (pmap_t); void pmap_pinit0 (pmap_t); void pmap_pinit2 (pmap_t); @@ -132,8 +132,8 @@ void pmap_reference (pmap_t); void pmap_release (pmap_t); void pmap_remove (pmap_t, vm_offset_t, vm_offset_t); void pmap_remove_pages (pmap_t, vm_offset_t, vm_offset_t); -void pmap_zero_page (vm_offset_t); -void pmap_zero_page_area (vm_offset_t, int off, int size); +void pmap_zero_page (vm_paddr_t); +void pmap_zero_page_area (vm_paddr_t, int off, int size); void pmap_prefault (pmap_t, vm_offset_t, vm_map_entry_t); int pmap_mincore (pmap_t pmap, vm_offset_t addr); void pmap_init_proc (struct proc *p, struct thread *td); @@ -143,7 +143,7 @@ void pmap_swapout_proc (struct proc *p); void pmap_swapin_proc (struct proc *p); void pmap_activate (struct proc *p); vm_offset_t pmap_addr_hint (vm_object_t obj, vm_offset_t addr, vm_size_t size); -void *pmap_kenter_temporary (vm_offset_t pa, int i); +void *pmap_kenter_temporary (vm_paddr_t pa, int i); void pmap_init2 (void); #endif /* _KERNEL */ diff --git a/sys/vm/vm_contig.c b/sys/vm/vm_contig.c index 21adeb8708..fd86578e16 100644 --- a/sys/vm/vm_contig.c +++ b/sys/vm/vm_contig.c @@ -37,7 +37,7 @@ * SUCH DAMAGE. * * from: @(#)vm_page.c 7.4 (Berkeley) 5/7/91 - * $DragonFly: src/sys/vm/vm_contig.c,v 1.1 2003/10/15 16:48:04 hmp Exp $ + * $DragonFly: src/sys/vm/vm_contig.c,v 1.2 2003/11/03 17:11:23 dillon Exp $ */ /* @@ -160,8 +160,8 @@ vm_contig_pg_clean(int queue) int vm_contig_pg_alloc( unsigned long size, - unsigned long low, - unsigned long high, + vm_paddr_t low, + vm_paddr_t high, unsigned long alignment, unsigned long boundary) { @@ -352,8 +352,8 @@ contigmalloc( unsigned long size, /* should be size_t here and for malloc() */ struct malloc_type *type, int flags, - unsigned long low, - unsigned long high, + vm_paddr_t low, + vm_paddr_t high, unsigned long alignment, unsigned long boundary) { @@ -366,8 +366,8 @@ contigmalloc_map( unsigned long size, /* should be size_t here and for malloc() */ struct malloc_type *type, int flags, - unsigned long low, - unsigned long high, + vm_paddr_t low, + vm_paddr_t high, unsigned long alignment, unsigned long boundary, vm_map_t map) @@ -397,8 +397,8 @@ contigfree(void *addr, unsigned long size, struct malloc_type *type) vm_offset_t vm_page_alloc_contig( vm_offset_t size, - vm_offset_t low, - vm_offset_t high, + vm_paddr_t low, + vm_paddr_t high, vm_offset_t alignment) { return ((vm_offset_t)contigmalloc_map(size, M_DEVBUF, M_NOWAIT, low, diff --git a/sys/vm/vm_extern.h b/sys/vm/vm_extern.h index f1078663e2..d1dc2f2b0a 100644 --- a/sys/vm/vm_extern.h +++ b/sys/vm/vm_extern.h @@ -32,7 +32,7 @@ * * @(#)vm_extern.h 8.2 (Berkeley) 1/12/94 * $FreeBSD: src/sys/vm/vm_extern.h,v 1.46.2.3 2003/01/13 22:51:17 dillon Exp $ - * $DragonFly: src/sys/vm/vm_extern.h,v 1.5 2003/08/27 01:43:08 dillon Exp $ + * $DragonFly: src/sys/vm/vm_extern.h,v 1.6 2003/11/03 17:11:23 dillon Exp $ */ #ifndef _VM_EXTERN_H_ @@ -85,7 +85,7 @@ int vm_fault_user_wire (vm_map_t, vm_offset_t, vm_offset_t); void vm_fork (struct proc *, struct proc *, int); void vm_waitproc (struct proc *); int vm_mmap (vm_map_t, vm_offset_t *, vm_size_t, vm_prot_t, vm_prot_t, int, void *, vm_ooffset_t); -vm_offset_t vm_page_alloc_contig (vm_offset_t, vm_offset_t, vm_offset_t, vm_offset_t); +vm_offset_t vm_page_alloc_contig (vm_offset_t, vm_paddr_t, vm_paddr_t, vm_offset_t); void vm_set_page_size (void); struct vmspace *vmspace_alloc (vm_offset_t, vm_offset_t); struct vmspace *vmspace_fork (struct vmspace *); diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 6025d17436..353e35f4c2 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -67,7 +67,7 @@ * rights to redistribute these changes. * * $FreeBSD: src/sys/vm/vm_fault.c,v 1.108.2.8 2002/02/26 05:49:27 silby Exp $ - * $DragonFly: src/sys/vm/vm_fault.c,v 1.8 2003/10/02 21:00:20 hmp Exp $ + * $DragonFly: src/sys/vm/vm_fault.c,v 1.9 2003/11/03 17:11:23 dillon Exp $ */ /* @@ -978,7 +978,8 @@ vm_fault_unwire(map, start, end) vm_offset_t start, end; { - vm_offset_t va, pa; + vm_offset_t va; + vm_paddr_t pa; pmap_t pmap; pmap = vm_map_pmap(map); @@ -990,7 +991,7 @@ vm_fault_unwire(map, start, end) for (va = start; va < end; va += PAGE_SIZE) { pa = pmap_extract(pmap, va); - if (pa != (vm_offset_t) 0) { + if (pa != 0) { pmap_change_wiring(pmap, va, FALSE); vm_page_unwire(PHYS_TO_VM_PAGE(pa), 1); } diff --git a/sys/vm/vm_kern.h b/sys/vm/vm_kern.h index 548351ecdf..a2951e56af 100644 --- a/sys/vm/vm_kern.h +++ b/sys/vm/vm_kern.h @@ -62,7 +62,7 @@ * rights to redistribute these changes. * * $FreeBSD: src/sys/vm/vm_kern.h,v 1.22 2000/02/16 21:11:31 dillon Exp $ - * $DragonFly: src/sys/vm/vm_kern.h,v 1.6 2003/10/19 00:23:30 dillon Exp $ + * $DragonFly: src/sys/vm/vm_kern.h,v 1.7 2003/11/03 17:11:23 dillon Exp $ */ #ifndef _VM_VM_KERN_H_ @@ -80,7 +80,7 @@ extern u_int vm_kmem_size; extern vm_offset_t kernel_vm_end; /* XXX - elsewhere? */ struct malloc_type; -extern void *contigmalloc_map(u_long, struct malloc_type *, int, u_long, u_long, - u_long, u_long, vm_map_t); +extern void *contigmalloc_map(u_long, struct malloc_type *, int, + vm_paddr_t, vm_paddr_t, u_long, u_long, vm_map_t); #endif /* _VM_VM_KERN_H_ */ diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index b9c15f835c..494ca6658c 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -62,7 +62,7 @@ * rights to redistribute these changes. * * $FreeBSD: src/sys/vm/vm_object.c,v 1.171.2.8 2003/05/26 19:17:56 alc Exp $ - * $DragonFly: src/sys/vm/vm_object.c,v 1.10 2003/10/19 00:23:30 dillon Exp $ + * $DragonFly: src/sys/vm/vm_object.c,v 1.11 2003/11/03 17:11:23 dillon Exp $ */ /* @@ -1902,7 +1902,7 @@ DB_SHOW_COMMAND(vmopag, vm_object_print_pages) object = TAILQ_NEXT(object, object_list)) { vm_pindex_t idx, fidx; vm_pindex_t osize; - vm_offset_t pa = -1, padiff; + vm_paddr_t pa = -1, padiff; int rcount; vm_page_t m; diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 5cdee09382..2bc962a5e5 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -35,7 +35,7 @@ * * from: @(#)vm_page.c 7.4 (Berkeley) 5/7/91 * $FreeBSD: src/sys/vm/vm_page.c,v 1.147.2.18 2002/03/10 05:03:19 alc Exp $ - * $DragonFly: src/sys/vm/vm_page.c,v 1.14 2003/10/15 16:48:04 hmp Exp $ + * $DragonFly: src/sys/vm/vm_page.c,v 1.15 2003/11/03 17:11:23 dillon Exp $ */ /* @@ -158,7 +158,7 @@ vm_set_page_size(void) * Must be called at splhigh(). */ vm_page_t -vm_add_new_page(vm_offset_t pa) +vm_add_new_page(vm_paddr_t pa) { vm_page_t m; struct vpgqueues *vpq; @@ -195,18 +195,19 @@ vm_page_startup(vm_offset_t starta, vm_offset_t enda, vm_offset_t vaddr) { vm_offset_t mapped; struct vm_page **bucket; - vm_size_t npages, page_range; - vm_offset_t new_end; + vm_size_t npages; + vm_paddr_t page_range; + vm_paddr_t new_end; int i; - vm_offset_t pa; + vm_paddr_t pa; int nblocks; - vm_offset_t last_pa; + vm_paddr_t last_pa; /* the biggest memory array is the second group of pages */ - vm_offset_t end; - vm_offset_t biggestone, biggestsize; + vm_paddr_t end; + vm_paddr_t biggestone, biggestsize; - vm_offset_t total; + vm_paddr_t total; total = 0; biggestsize = 0; @@ -220,7 +221,7 @@ vm_page_startup(vm_offset_t starta, vm_offset_t enda, vm_offset_t vaddr) } for (i = 0; phys_avail[i + 1]; i += 2) { - int size = phys_avail[i + 1] - phys_avail[i]; + vm_paddr_t size = phys_avail[i + 1] - phys_avail[i]; if (size > biggestsize) { biggestone = i; diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h index 5629d7c8a7..592ed47efb 100644 --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -62,7 +62,7 @@ * rights to redistribute these changes. * * $FreeBSD: src/sys/vm/vm_page.h,v 1.75.2.8 2002/03/06 01:07:09 dillon Exp $ - * $DragonFly: src/sys/vm/vm_page.h,v 1.7 2003/10/15 16:03:04 hmp Exp $ + * $DragonFly: src/sys/vm/vm_page.h,v 1.8 2003/11/03 17:11:23 dillon Exp $ */ /* @@ -117,7 +117,7 @@ struct vm_page { vm_object_t object; /* which object am I in (O,P)*/ vm_pindex_t pindex; /* offset into object (O,P) */ - vm_offset_t phys_addr; /* physical address of page */ + vm_paddr_t phys_addr; /* physical address of page */ struct md_page md; /* machine dependant stuff */ u_short queue; /* page queue index */ u_short flags, /* see below */ @@ -413,7 +413,7 @@ vm_page_t vm_page_lookup (vm_object_t, vm_pindex_t); void vm_page_remove (vm_page_t); void vm_page_rename (vm_page_t, vm_object_t, vm_pindex_t); vm_offset_t vm_page_startup (vm_offset_t, vm_offset_t, vm_offset_t); -vm_page_t vm_add_new_page (vm_offset_t pa); +vm_page_t vm_add_new_page (vm_paddr_t pa); void vm_page_unmanage (vm_page_t); void vm_page_unwire (vm_page_t, int); void vm_page_wire (vm_page_t); @@ -431,7 +431,7 @@ vm_page_t _vm_page_list_find (int, int); void vm_page_zero_invalid(vm_page_t m, boolean_t setvalid); void vm_page_free_toq(vm_page_t m); -int vm_contig_pg_alloc(u_long, u_long, u_long, u_long, u_long); +int vm_contig_pg_alloc(u_long, vm_paddr_t, vm_paddr_t, u_long, u_long); vm_offset_t vm_contig_pg_kmap(int, u_long, vm_map_t); void vm_contig_pg_free(int, u_long);