Commit Graph

79 Commits

Author SHA1 Message Date
thorpej
3b9d583516 Use PAGE_SIZE rather than NBPG. 2003-04-01 15:23:07 +00:00
wiz
c8f0cb5777 eventually, not eventualy. Noted by mjl. 2003-01-28 22:52:11 +00:00
wiz
9115df8c49 success, not sucess. Noted by mjl. 2003-01-28 22:35:02 +00:00
thorpej
d2275d51e1 Merge the nathanw_sa branch. 2003-01-18 06:55:21 +00:00
chs
1c2419d28a merge the 12 copies of vm_machdep.c on the m68k platforms.
clean up some other stuff along the way, including:
 - use m68k/cacheops.*, remove duplicates from cpu.h.
 - centralize a few declarations in (all the copies of) cpu.h.
 - define M68K_VAC on platforms which have a VAC.
 - switch the sun platforms to the (now common) proc_trampoline().
 - do the phys_map thang on the sun platforms too, no reason not to.
2002-10-20 02:37:21 +00:00
thorpej
a180cee23b Pool deals fairly well with physical memory shortage, but it doesn't
deal with shortages of the VM maps where the backing pages are mapped
(usually kmem_map).  Try to deal with this:

* Group all information about the backend allocator for a pool in a
  separate structure.  The pool references this structure, rather than
  the individual fields.
* Change the pool_init() API accordingly, and adjust all callers.
* Link all pools using the same backend allocator on a list.
* The backend allocator is responsible for waiting for physical memory
  to become available, but will still fail if it cannot callocate KVA
  space for the pages.  If this happens, carefully drain all pools using
  the same backend allocator, so that some KVA space can be freed.
* Change pool_reclaim() to indicate if it actually succeeded in freeing
  some pages, and use that information to make draining easier and more
  efficient.
* Get rid of PR_URGENT.  There was only one use of it, and it could be
  dealt with by the caller.

From art@openbsd.org.
2002-03-08 20:48:27 +00:00
chris
0e7661f023 Update pmap_update to now take the updated pmap as an argument.
This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.

Currently this is a no-op on most platforms, so they should see no difference.

Reviewed by Jason.
2001-09-10 21:19:08 +00:00
tsutsui
66187ea9e9 Fix function names in panic messages. 2001-09-07 10:35:59 +00:00
tsutsui
1abb4c9be6 bcopy() -> memcpy(), bzero() -> memset() 2001-09-05 14:18:10 +00:00
wiz
1e378c4c12 precede, not preceed. 2001-08-20 12:00:46 +00:00
chs
1e3003dad7 vm_offset_t -> [pv]addr_t.
implement pmap_k{enter_pa,remove}() correctly.
general cleanup.
2001-07-03 06:15:16 +00:00
wiz
3f9984fc90 existent', not existant' 2001-06-19 13:42:07 +00:00
chs
821ec03ed9 replace vm_map{,_entry}_t with struct vm_map{,_entry} *. 2001-06-02 18:09:08 +00:00
thorpej
fe664428c8 Garbage-collect pmap_page_index(). 2001-04-25 17:35:00 +00:00
thorpej
1c3a62e066 Sprinkle pmap_update() calls after calls to:
- pmap_enter()
- pmap_remove()
- pmap_protect()
- pmap_kenter_pa()
- pmap_kremove()
as described in pmap(9).

These calls are relatively conservative.  It may be possible to
optimize these a little more.
2001-04-24 04:30:50 +00:00
thorpej
a5dd88f940 Add local prototype for internal pmap_bootstrap_alloc() function. 2001-04-23 23:57:49 +00:00
thorpej
55044638aa Remove pmap_kenter_pgs(). It was never really adopted by
anything, and the interface itself wasn't as flexible as
callers would have probably liked.
2001-04-22 23:42:11 +00:00
thorpej
7f10ba88b1 #define away pmap_update() in <machine/pmap.h> so that no function
call overhead is incurred as we start sprinkling pmap_update() calls
throughout the source tree (no pmaps currently defer operations, but
we are adding the infrastructure to allow them to do so).
2001-04-21 23:51:14 +00:00
chs
ac3bc537bd eliminate the KERN_* error codes in favor of the traditional E* codes.
the mapping is:

KERN_SUCCESS			0
KERN_INVALID_ADDRESS		EFAULT
KERN_PROTECTION_FAILURE		EACCES
KERN_NO_SPACE			ENOMEM
KERN_INVALID_ARGUMENT		EINVAL
KERN_FAILURE			various, mostly turn into KASSERTs
KERN_RESOURCE_SHORTAGE		ENOMEM
KERN_NOT_RECEIVER		<unused>
KERN_NO_ACCESS			<unused>
KERN_PAGES_LOCKED		<unused>
2001-03-15 06:10:32 +00:00
tsutsui
968d0f81c6 Adjust only avail_end address rather than reduce
the last bank size of avail_mem[] so that all RAM area
will be dumped in dumpsys().
2001-02-20 12:52:57 +00:00
tsutsui
497bb4f2ea Remove declaration of copypage() and zeropage(); they are in <m68k/m68k.h> 2001-02-03 12:57:05 +00:00
thorpej
a3ec356d52 splimp() -> splvm() 2001-01-14 03:22:04 +00:00
tsutsui
500525029a PAGE_SIZE on sun3/sun3x is now constant;
Use uvmexp.pagesize itself for its initialization.
2000-11-24 11:57:45 +00:00
tsutsui
4774402d68 Use pool(9) for pmap structures. 2000-10-27 13:28:54 +00:00
tsutsui
e000111847 Initialize pmap->pm_refcount properly in pmap_pinit() and
add simple_locks where pmap->pm_refcount are refered.

This should fix a long-standing "out of space kmem_map" panic bug on sun3x.
2000-10-21 14:10:25 +00:00
mrg
9c11d316b4 remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h> 2000-06-29 07:18:57 +00:00
mrg
2f159a1bac remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h>
	<vm/vm_inherit.h> -> <uvm/uvm_inherit.h>
	<vm/vm_kern.h> -> into <uvm/uvm_extern.h>
	<vm/vm_object.h> -> nothing
	<vm/vm_pager.h> -> into <uvm/uvm_pager.h>

also includes a bunch of <vm/vm_page.h> include removals (due to redudancy
with <vm/vm.h>), and a scattering of other similar headers.
2000-06-26 14:20:25 +00:00
jeremy
a1c67d1d61 Renamed a temporary variable in pmap_enter() that conflicted with the
name of the new 'flags' argument, added as part of the new pmap_enter() API.
Added a comment which explains why there are still sun3x-specific flags
being passed in the unused bits of the physical address, and how these flags
are independent of the new 'flags' argument.
1999-12-17 08:10:59 +00:00
thorpej
1946167939 Update for pmap_enter() API change. No functional difference. 1999-11-13 00:30:26 +00:00
chs
b42715c204 fix something that was missed in the PMAP_NEW cleanup. 1999-09-19 19:05:44 +00:00
chs
f3a668ed84 eliminate the PMAP_NEW option by making it required for all ports.
ports which previously had no support for PMAP_NEW now implement
the pmap_k* interfaces as wrappers around the non-k versions.
1999-09-12 01:16:55 +00:00
thorpej
3ebbe095e0 Change the pmap_extract() interface to:
boolean_t pmap_extract(pmap_t, vaddr_t, paddr_t *);
This makes it possible for the pmap to map physical address 0.
1999-07-08 18:05:21 +00:00
thorpej
0288ffb53a pmap_change_wiring() -> pmap_unwire(). 1999-06-17 19:23:20 +00:00
thorpej
f5a527bb4e Remove pmap_pageable(); no pmap implements it, and it is not really useful,
because pmap_enter()/pmap_change_wiring() (soon to be pmap_unwire())
communicate the information in greater detail.
1999-06-17 18:21:21 +00:00
gwr
f6422020e5 Add opt_ddb.h 1999-04-08 05:07:35 +00:00
mycroft
9c6b797796 Changes for modified pmap_enter() API:
* Map the message buffer with access_type = VM_PROT_READ|VM_PROT_WRITE `just
  because'.
* Map the file system buffers with access_type = VM_PROT_READ|VM_PROT_WRITE to
  avoid possible problems with pagemove().
* Do not use VM_PROT_EXEC with either of the above.
* Map pages for /dev/mem with access_type = prot.  Also, DO NOT use
  pmap_kenter() for this, as we DO NOT want to lose modification information.
* Map pages in dumpsys() with VM_PROT_READ.
* Map pages in m68k mappedcopyin()/mappedcopyout() and writeback() with
  access_type = prot.
* For now, bus_dma*(), pmap_map(), vmapbuf(), and similar functions still use
  access_type = 0.  This should probably be revisited.
1999-03-26 23:41:25 +00:00
mrg
d2397ac5f7 completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
1999-03-24 05:50:49 +00:00
is
d04273bac7 sun3 part of fix for PR 6152 1999-02-26 22:03:28 +00:00
chuck
90ddaed9b5 MNN is no longer optional, remove dead code 1999-01-16 20:43:21 +00:00
gwr
e7810fa812 Fix MACHINE_NEW_NONCONTIG support (UVM works now:)
thanks to Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
Closes PR#6540
1998-12-12 05:25:01 +00:00
thorpej
d47ea67c1f Define one page free list, and put all pages on it. 1998-07-08 04:43:18 +00:00
gwr
1b01ec0993 First cut at UVM support. Compiles, but not tested yet. 1998-06-09 20:47:17 +00:00
gwr
c714d95b83 First cut at MACHINE_NEW_NONCONTIG - not enabled yet. 1998-06-09 20:31:28 +00:00
thorpej
6626878e7b It is no longer necessary for pmap_pinit() and pmap_release() to be
pmap interface functions, as NetBSD no longer uses statically allocated
pmaps (except for the kernel pmap, which is special-cased anyhow).
1998-05-19 19:00:11 +00:00
jeremy
a1efa84a4d Modified the comments for the recentlty implemented pmap_map() function. 1998-02-09 19:56:37 +00:00
gwr
e387ffba22 Add pmap_map 1998-02-08 04:57:58 +00:00
gwr
eff2e270bd Merge arch/sun3x into arch/sun3 1998-02-05 04:56:24 +00:00
gwr
cc1b4e4724 In pmap_bootstrap_copyprom, copy only the last PTE from the PROM's
DVMA segment (for the page reserved by the PROM).  If we copy all
the mappings, pmap_enter_kernel may complain about finding valid
PTEs that are not recorded in our PV lists.  Make pmap_remove_pte
do something reasonable if it finds a PTE for a managed page that
has not been recorded in the PV lists.  (Plus other minor stuff).
1998-01-22 22:00:25 +00:00
gwr
58126a3b29 Separate pmap_activate() from _pmap_switch(), so the latter can remain
equivalent to what locore.s:cpu_switch does with in-line assembly when
PMAP_DEBUG is not defined.  Also do splimp/splx in pmap_activate.
1998-01-22 21:48:42 +00:00
thorpej
d14e18faa9 Make pmap_activate() take a proc *. 1998-01-02 20:10:26 +00:00