Convert most of the I/O patch to use 64-bit types. Index: bus/isa/i386/isa_dma.c =================================================================== RCS file: /scratch/dcvs/src/sys/bus/isa/i386/isa_dma.c,v retrieving revision 1.5 diff -u -r1.5 isa_dma.c --- bus/isa/i386/isa_dma.c 27 Aug 2003 11:42:34 -0000 1.5 +++ bus/isa/i386/isa_dma.c 27 Oct 2003 08:47:44 -0000 @@ -208,7 +208,7 @@ 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 @@ 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); Index: i386/i386/busdma_machdep.c =================================================================== RCS file: /scratch/dcvs/src/sys/i386/i386/busdma_machdep.c,v retrieving revision 1.4 diff -u -r1.4 busdma_machdep.c --- i386/i386/busdma_machdep.c 27 Jul 2003 01:49:51 -0000 1.4 +++ i386/i386/busdma_machdep.c 27 Oct 2003 16:01:45 -0000 @@ -97,7 +97,7 @@ 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 @@ 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 @@ } } - 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 @@ /* 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 @@ */ 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 @@ 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_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 @@ * 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 @@ 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) { Index: i386/i386/machdep.c =================================================================== RCS file: /scratch/dcvs/src/sys/i386/i386/machdep.c,v retrieving revision 1.40 diff -u -r1.40 machdep.c --- i386/i386/machdep.c 25 Oct 2003 17:36:22 -0000 1.40 +++ i386/i386/machdep.c 27 Oct 2003 15:46:39 -0000 @@ -237,10 +237,11 @@ &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 @@ #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 @@ 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 @@ 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, Index: i386/i386/pmap.c =================================================================== RCS file: /scratch/dcvs/src/sys/i386/i386/pmap.c,v retrieving revision 1.22 diff -u -r1.22 pmap.c --- i386/i386/pmap.c 2 Sep 2003 20:11:34 -0000 1.22 +++ i386/i386/pmap.c 27 Oct 2003 14:22:09 -0000 @@ -149,8 +149,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 @@ */ 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 @@ */ 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 @@ * 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 @@ * 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 @@ * 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); @@ -1870,9 +1870,9 @@ 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 +1921,8 @@ * 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 +2064,7 @@ 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 +2156,7 @@ * 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 +2582,7 @@ * required. */ void -pmap_zero_page(vm_offset_t phys) +pmap_zero_page(vm_paddr_t phys) { struct mdglobaldata *gd = mdcpu; @@ -2612,7 +2612,7 @@ * 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 +2640,7 @@ * 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 +2918,7 @@ } } -vm_offset_t +vm_paddr_t pmap_phys_address(int ppn) { return (i386_ptob(ppn)); @@ -3056,7 +3056,7 @@ * 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 +3264,7 @@ } void -pmap_pvdump(vm_offset_t pa) +pmap_pvdump(vm_paddr_t pa) { pv_entry_t pv; vm_page_t m; Index: i386/i386/vm_machdep.c =================================================================== RCS file: /scratch/dcvs/src/sys/i386/i386/vm_machdep.c,v retrieving revision 1.24 diff -u -r1.24 vm_machdep.c --- i386/i386/vm_machdep.c 26 Aug 2003 21:42:18 -0000 1.24 +++ i386/i386/vm_machdep.c 27 Oct 2003 13:06:08 -0000 @@ -383,15 +383,15 @@ /* * 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); } /* Index: i386/include/bus_at386.h =================================================================== RCS file: /scratch/dcvs/src/sys/i386/include/bus_at386.h,v retrieving revision 1.5 diff -u -r1.5 bus_at386.h --- i386/include/bus_at386.h 7 Aug 2003 21:17:22 -0000 1.5 +++ i386/include/bus_at386.h 27 Oct 2003 13:30:16 -0000 @@ -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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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_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_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_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_) Index: i386/include/md_var.h =================================================================== RCS file: /scratch/dcvs/src/sys/i386/include/md_var.h,v retrieving revision 1.11 diff -u -r1.11 md_var.h --- i386/include/md_var.h 24 Oct 2003 14:10:45 -0000 1.11 +++ i386/include/md_var.h 27 Oct 2003 15:47:09 -0000 @@ -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 @@ 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); Index: i386/include/param.h =================================================================== RCS file: /scratch/dcvs/src/sys/i386/include/param.h,v retrieving revision 1.5 diff -u -r1.5 param.h --- i386/include/param.h 19 Oct 2003 00:13:18 -0000 1.5 +++ i386/include/param.h 27 Oct 2003 13:09:19 -0000 @@ -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)) Index: i386/include/pmap.h =================================================================== RCS file: /scratch/dcvs/src/sys/i386/include/pmap.h,v retrieving revision 1.4 diff -u -r1.4 pmap.h --- i386/include/pmap.h 26 Aug 2003 21:42:18 -0000 1.4 +++ i386/include/pmap.h 27 Oct 2003 13:15:44 -0000 @@ -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 @@ * 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 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); Index: i386/include/types.h =================================================================== RCS file: /scratch/dcvs/src/sys/i386/include/types.h,v retrieving revision 1.5 diff -u -r1.5 types.h --- i386/include/types.h 27 Aug 2003 01:43:07 -0000 1.5 +++ i386/include/types.h 27 Oct 2003 14:17:37 -0000 @@ -68,5 +68,7 @@ /* 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_ */ Index: i386/include/vmparam.h =================================================================== RCS file: /scratch/dcvs/src/sys/i386/include/vmparam.h,v retrieving revision 1.5 diff -u -r1.5 vmparam.h --- i386/include/vmparam.h 19 Oct 2003 00:23:23 -0000 1.5 +++ i386/include/vmparam.h 27 Oct 2003 08:47:28 -0000 @@ -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 Index: kern/sys_pipe.c =================================================================== RCS file: /scratch/dcvs/src/sys/kern/sys_pipe.c,v retrieving revision 1.12 diff -u -r1.12 sys_pipe.c --- kern/sys_pipe.c 3 Sep 2003 14:19:06 -0000 1.12 +++ kern/sys_pipe.c 27 Oct 2003 08:47:44 -0000 @@ -549,7 +549,8 @@ { 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) Index: kern/vfs_bio.c =================================================================== RCS file: /scratch/dcvs/src/sys/kern/vfs_bio.c,v retrieving revision 1.15 diff -u -r1.15 vfs_bio.c --- kern/vfs_bio.c 8 Oct 2003 00:10:56 -0000 1.15 +++ kern/vfs_bio.c 27 Oct 2003 08:47:44 -0000 @@ -3212,7 +3212,7 @@ 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; Index: kern/vfs_subr.c =================================================================== RCS file: /scratch/dcvs/src/sys/kern/vfs_subr.c,v retrieving revision 1.22 diff -u -r1.22 vfs_subr.c --- kern/vfs_subr.c 9 Oct 2003 22:27:19 -0000 1.22 +++ kern/vfs_subr.c 27 Oct 2003 14:53:39 -0000 @@ -73,6 +73,7 @@ #include #include #include +#include #include #include #include @@ -181,7 +182,18 @@ 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); Index: sys/malloc.h =================================================================== RCS file: /scratch/dcvs/src/sys/sys/malloc.h,v retrieving revision 1.12 diff -u -r1.12 malloc.h --- sys/malloc.h 20 Oct 2003 16:50:39 -0000 1.12 +++ sys/malloc.h 27 Oct 2003 09:35:50 -0000 @@ -202,7 +202,7 @@ 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); Index: vm/device_pager.c =================================================================== RCS file: /scratch/dcvs/src/sys/vm/device_pager.c,v retrieving revision 1.5 diff -u -r1.5 device_pager.c --- vm/device_pager.c 20 Aug 2003 08:03:01 -0000 1.5 +++ vm/device_pager.c 27 Oct 2003 09:42:08 -0000 @@ -68,7 +68,7 @@ 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 @@ 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 @@ static vm_page_t dev_pager_getfake(paddr) - vm_offset_t paddr; + vm_paddr_t paddr; { vm_page_t m; Index: vm/pmap.h =================================================================== RCS file: /scratch/dcvs/src/sys/vm/pmap.h,v retrieving revision 1.7 diff -u -r1.7 pmap.h --- vm/pmap.h 20 Aug 2003 08:03:01 -0000 1.7 +++ vm/pmap.h 27 Oct 2003 14:04:49 -0000 @@ -101,18 +101,18 @@ 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 @@ 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_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_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 */ Index: vm/vm_contig.c =================================================================== RCS file: /scratch/dcvs/src/sys/vm/vm_contig.c,v retrieving revision 1.1 diff -u -r1.1 vm_contig.c --- vm/vm_contig.c 15 Oct 2003 16:48:04 -0000 1.1 +++ vm/vm_contig.c 27 Oct 2003 14:02:15 -0000 @@ -160,8 +160,8 @@ 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 @@ 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 @@ 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 @@ 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, Index: vm/vm_extern.h =================================================================== RCS file: /scratch/dcvs/src/sys/vm/vm_extern.h,v retrieving revision 1.5 diff -u -r1.5 vm_extern.h --- vm/vm_extern.h 27 Aug 2003 01:43:08 -0000 1.5 +++ vm/vm_extern.h 27 Oct 2003 09:45:28 -0000 @@ -85,7 +85,7 @@ 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 *); Index: vm/vm_fault.c =================================================================== RCS file: /scratch/dcvs/src/sys/vm/vm_fault.c,v retrieving revision 1.8 diff -u -r1.8 vm_fault.c --- vm/vm_fault.c 2 Oct 2003 21:00:20 -0000 1.8 +++ vm/vm_fault.c 27 Oct 2003 09:44:03 -0000 @@ -978,7 +978,8 @@ 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 @@ 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); } Index: vm/vm_kern.h =================================================================== RCS file: /scratch/dcvs/src/sys/vm/vm_kern.h,v retrieving revision 1.6 diff -u -r1.6 vm_kern.h --- vm/vm_kern.h 19 Oct 2003 00:23:30 -0000 1.6 +++ vm/vm_kern.h 27 Oct 2003 09:46:11 -0000 @@ -80,7 +80,7 @@ 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_ */ Index: vm/vm_object.c =================================================================== RCS file: /scratch/dcvs/src/sys/vm/vm_object.c,v retrieving revision 1.10 diff -u -r1.10 vm_object.c --- vm/vm_object.c 19 Oct 2003 00:23:30 -0000 1.10 +++ vm/vm_object.c 27 Oct 2003 08:47:45 -0000 @@ -1902,7 +1902,7 @@ 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; Index: vm/vm_page.c =================================================================== RCS file: /scratch/dcvs/src/sys/vm/vm_page.c,v retrieving revision 1.14 diff -u -r1.14 vm_page.c --- vm/vm_page.c 15 Oct 2003 16:48:04 -0000 1.14 +++ vm/vm_page.c 27 Oct 2003 08:47:45 -0000 @@ -158,7 +158,7 @@ * 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_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 @@ } 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; Index: vm/vm_page.h =================================================================== RCS file: /scratch/dcvs/src/sys/vm/vm_page.h,v retrieving revision 1.7 diff -u -r1.7 vm_page.h --- vm/vm_page.h 15 Oct 2003 16:03:04 -0000 1.7 +++ vm/vm_page.h 27 Oct 2003 14:01:28 -0000 @@ -117,7 +117,7 @@ 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 @@ 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 @@ 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);