Commit Graph

23 Commits

Author SHA1 Message Date
aymeric
0c43568c58 pmap_pinit(): improve the hash function in the case of collisions, the
previous version would easily make the low order bits oscillate between 0
and some other value.

Together with the previous change, this should make those
pmap_pinit: out of segments
panics even less likely.

We should really attempt a systematic search before panic()ing at the end.
2004-03-21 10:34:56 +00:00
aymeric
560cb79c0e . don't call VSID_TO_HASH() on a pmap.pm_vsid. It already holds the hash value.
This should fix PR #24754, as well as many of the hangs and process
  aborts reported on port-macppc@ in the last weeks.
  This error would cause the pmap's vsid never to be freed, and would
  occasionnally free a valid vsid used by another pmap, sometimes the kernel's.
. add a related KASSERT() to avoid regression
2004-03-21 10:25:59 +00:00
aymeric
3ddd2de94c defparam PMAP_MEMLIMIT 2004-03-17 14:14:02 +00:00
wiz
d20841bb64 Uppercase CPU, plural is CPUs. 2004-02-13 11:36:08 +00:00
mjl
df0cb86d0d Add some casts to printf() args to make it compile w/ DEBUG set. 2003-12-27 13:35:52 +00:00
matt
99f7a6b7db More PPC64 changes. (latent for now). 2003-11-21 22:57:14 +00:00
matt
d765841d3e Restore ci_curpm since it re-enables 603 to working state. 2003-11-21 18:07:29 +00:00
kleink
39dd1b6e20 pmap_print_mmuregs(): move initialization of addr before its first use;
reported by David Young.
2003-10-27 23:35:41 +00:00
dyoung
9dbaa63583 Stop false uninitialized variable warning. 2003-10-27 23:08:12 +00:00
chs
939df36e55 add support for non-executable mappings (where the hardware allows this)
and make the stack and heap non-executable by default.  the changes
fall into two basic catagories:

 - pmap and trap-handler changes.  these are all MD:
   = alpha: we already track per-page execute permission with the (software)
	PG_EXEC bit, so just have the trap handler pay attention to it.
   = i386: use a new GDT segment for %cs for processes that have no
	executable mappings above a certain threshold (currently the
	bottom of the stack).  track per-page execute permission with
	the last unused PTE bit.
   = powerpc/ibm4xx: just use the hardware exec bit.
   = powerpc/oea: we already track per-page exec bits, but the hardware only
	implements non-exec mappings at the segment level.  so track the
	number of executable mappings in each segment and turn on the no-exec
	segment bit iff the count is 0.  adjust the trap handler to deal.
   = sparc (sun4m): fix our use of the hardware protection bits.
	fix the trap handler to recognize text faults.
   = sparc64: split the existing unified TSB into data and instruction TSBs,
	and only load TTEs into the appropriate TSB(s) for the permissions.
	fix the trap handler to check for execute permission.
   = not yet implemented: amd64, hppa, sh5

 - changes in all the emulations that put a signal trampoline on the stack.
   instead, we now put the trampoline into a uvm_aobj and map that into
   the process separately.

originally from openbsd, adapted for netbsd by me.
2003-08-24 17:52:28 +00:00
matt
c0d6cb285d Nuke ci_curpm and curpm. Nuke pcb_pmreal. Those were use for spill stacks
and those no longer exist.  for few uses that need CURPM, use CURPCB/PCB_PM
2003-08-12 05:06:53 +00:00
matt
330dc2e202 Allow only user-mappings to be evicted (spillage). This prevents the
dreaded eviction of a kernel stack page.
2003-08-08 06:06:48 +00:00
lukem
ed51729135 __KERNEL_RCSID() 2003-07-15 02:54:31 +00:00
thorpej
36da248c07 Back out the following chagne:
http://mail-index.netbsd.org/source-changes/2003/05/08/0068.html

There were some side-effects that I didn't anticipate, and fixing them
is proving to be more difficult than I thought, do just eject for now.
Maybe one day we can look at this again.

Fixes PR kern/21517.
2003-05-10 21:10:23 +00:00
thorpej
b77900c3c2 Simplify the way the bounds of the managed kernel virtual address
space is advertised to UVM by making virtual_avail and virtual_end
first-class exported variables by UVM.  Machine-dependent code is
responsible for initializing them before main() is called.  Anything
that steals KVA must adjust these variables accordingly.

This reduces the number of instances of this info from 3 to 1, and
simplifies the pmap(9) interface by removing the pmap_virtual_space()
function call, and removing two arguments from pmap_steal_memory().

This also eliminates some kludges such as having to burn kernel_map
entries on space used by the kernel and stolen KVA.

This also eliminates use of VM_{MIN,MAX}_KERNEL_ADDRESS from MI code,
this giving MD code greater flexibility over the bounds of the managed
kernel virtual address space if a given port's specific platforms can
vary in this regard (this is especially true of the evb* ports).
2003-05-08 18:13:12 +00:00
matt
021b37ca56 Add a KASSERT to pmap_extract so that vtophys is never attempted on a
mapped user address.
2003-04-07 21:42:14 +00:00
matt
2f9404413f If extracting an address from the kernel pmap, see if the address is outside
the mapped address range.  If so, try to look it up via the BAT table.  If
successful, translate and return the BAT'ed pa.
2003-04-04 22:38:05 +00:00
thorpej
86f35f803c Use PAGE_SIZE rather than NBPG. 2003-04-02 02:45:36 +00:00
matt
bff46769b9 fix typo in comment. 2003-03-17 23:15:33 +00:00
matt
8524a72241 Honor PMAP_NC for pmap_kenter_pa. Fix goof in pmap_pte_to_va. 2003-03-16 06:54:46 +00:00
matt
e0242aaebc Remove Debugger call. 2003-03-14 06:25:58 +00:00
matt
3cdbb8ccfe Make things a bit more LP64 friendly. 2003-02-05 07:05:19 +00:00
matt
2b0e97a561 Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea). 2003-02-03 17:09:53 +00:00