Commit Graph

1623 Commits

Author SHA1 Message Date
pk
b13e5d1469 Quote "AS IS" as in the majority of Carnegy Mellon notices. 1999-04-12 20:38:17 +00:00
chs
f455dd6596 add a `flags' argument to uvm_pagealloc_strat().
define a flag UVM_PGA_USERESERVE to allow non-kernel object
allocations to use pages from the reserve.
use the new flag for allocations in pmap modules.
1999-04-11 04:04:04 +00:00
hubertf
bbb1c4b60f Actually, we're in sync with GENERIC V1.55 1999-04-09 00:22:43 +00:00
pk
c40eb1cd97 Fix a pasto in copyright text which has been procreating like rabbits.. 1999-04-06 20:09:18 +00:00
mark
46b87f5da5 Changed the way in which virtual address space is reserved for the SA110
fast cache clean area as the recent pmap changes mean that the existing
approach no longer works. Fixes PR7272.
1999-04-06 06:57:00 +00:00
mark
c05b9ed27a When handling a page fault, panic if the map is NULL so that we don't
dereference it when doing handled or modified emulation. This can happen
if fault are taken during early parts of the bootstrap, resulting in
recursive faulting.
1999-04-06 06:35:03 +00:00
mark
9ea7a42377 Added installation configuration for CATS kernels. 1999-04-05 07:30:43 +00:00
mark
e9dc39c682 Fix this so that it compiles when IRQSTATS is not defined. 1999-04-05 07:04:17 +00:00
mark
f187f77f1e Update for change to isapnp_devmatch().
Fixes PR7303.
1999-04-03 23:53:48 +00:00
thorpej
967b8c433c Don't call configure() from cpu_startup(). 1999-04-01 00:17:45 +00:00
mycroft
9d0dcbced4 Prefault the u-area pages at swapin time. 1999-03-30 21:01:42 +00:00
mycroft
dcdd0d6124 Map the system page with access_type=READ. 1999-03-30 20:59:52 +00:00
mycroft
a3346d4ca8 Page 0 should never get R/M emulation. 1999-03-30 15:13:42 +00:00
mycroft
8cab76a0ec Make the kernel silent by default when running crashme. 1999-03-30 10:10:57 +00:00
mycroft
f317021d2c Some of the DIAGNOSTIC checks were too strict and could be tripped by crashme. 1999-03-30 10:10:22 +00:00
mrg
c17a4018cb pull in new (?) BUS_SPACE_BARRIER_{READ,WRITE} definitions. 1999-03-29 12:42:51 +00:00
mycroft
665b05efd4 GC physical_memoryblock. 1999-03-29 10:02:19 +00:00
mycroft
e89e34c04a Nuke the contents of pmap_pageable(). It accomplishes nothing on this port,
and it's potentially a serious bug.
1999-03-29 07:15:06 +00:00
mycroft
460d63062a Do the previously slightly differently; we want to count by pages anyway.
Also fixes a problem with not flushing TLB entries in vmapbuf().
1999-03-29 06:24:31 +00:00
mycroft
12f5abbcee A few things:
* Count page table pages in the RSS.
* Rather than patching it up, panic if access_type has bits not in prot, as
  this should now be impossible.
* Add page table reference counting, but currently disabled as it still has
  some issues.
1999-03-28 22:01:06 +00:00
sommerfe
ee7bbe5b2f Fix bug in previous change which resulted in kernel VA space leak.
We need an accurate len after we clear the PTE's in vunmapbuf.
1999-03-28 20:21:51 +00:00
mycroft
ea8db6d88d Fix the vunmapbuf() problem, by zeroing out the PTEs before freeing the VA
range.  This is reasonable given that we inserted the PTEs manually in the
first place.
Also try to use specific cache/TLB purges.
1999-03-28 06:35:38 +00:00
nathanw
95b075be1e Remove commented-out uaudio declaration;
we don't actually have support for it.
1999-03-27 23:27:57 +00:00
mycroft
237c992085 Fix a possible glitch (not mine) in the wired page accounting. 1999-03-27 14:13:42 +00:00
mycroft
15217d40e3 More DIAGNOSTIC checks... 1999-03-27 11:45:07 +00:00
mycroft
a1784400cd GC PT_Us, add more DIAGNOSTIC checks. 1999-03-27 09:41:03 +00:00
explorer
02db718d0f enable pseudo-device rnd on GENERIC-type, and remove EXPERIMENTAL from rest. 1999-03-27 07:11:35 +00:00
mycroft
93768384ee Fix a bug in pmap_collect_pv(), even though nobody currently uses it:
When we put a page on the collection list, we must subtract NPVPPG from the
total free count: one for each pv_entry that's free in that page, and one for
each free pv_entry in other pages that we're going to eat by moving the ones
in the page being collected.
1999-03-27 05:57:02 +00:00
mycroft
32295b2dac Further cleanup:
pmap_find_pv(), pmap_clean_page() and pmap_remove_all() are only called on
managed pages, after VM initialization.  Panic if this invariant is violated.
Also, panic if we try to enter a PT page through pmap_enter(), rather than
silently patching it up.
pmap_initialized is now #ifdef DIAGNOSTIC.
1999-03-27 05:12:21 +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
mycroft
e84fe91c51 Take advantage of the new `access_type' for pmap_enter(), and always do R/M
emulation of managed pages.  This required the following `interesting' changes:
* File system buffers must be entered with an access type of
  VM_PROT_READ|VM_PROT_WRITE, so that the pages will be accessible immediately.
  Otherwise we would have to teach pagemove() to update the R/M information.
  Since they're never eligible for paging, the latter is overkill.
* We must insure that pages allocated before the pmap is completely set up
  (that is, pages allocated early by the VM system) are not eligible for R/M
  emulation, since the memory needed for this isn't available.  We do this by
  allocating the pmap's internal memory with uvm_pageboot_alloc().  This also
  fixes an absolutely horrible hack where the pmap only worked because page 0
  happened to be mapped.
  to be mapped.
Also:
* Push the wired page counting into the p->v list maintenance functions.  This
  avoids code duplication, and fixes some cases where we were confused about
  which pages to do it with.
* Fix lots of problems associated with pmap_nightmare() (and rename it to
  pmap_vac_me_harder()).
* Since the early pages are no longer considered `managed', just make
  pmap_*_pv() panic if !pmap_initialized.
1999-03-26 22:00:24 +00:00
hubertf
b97ebf9749 Sync some options from GENERIC 1999-03-26 02:48:18 +00:00
hubertf
b3acf3a4e4 s/internally/internal/ 1999-03-26 02:46:14 +00:00
thorpej
587eda7c3f Use ETHER_*_LEN constants from <net/if_ether.h> instead of defining them
ourselves.
1999-03-25 23:11:51 +00:00
tron
732f052e13 Don't include "opt_uvm.h" any more. 1999-03-24 12:41:27 +00:00
tron
4cdff58b76 Don't include "opt_uvm.h" any more. 1999-03-24 12:16:50 +00:00
tron
75377e1815 Don't include "opt_uvm.h" any more. 1999-03-24 11:35:30 +00:00
mrg
ca5f9685bb clean up kernel/config files files for machVM lossage. 1999-03-24 06:06:09 +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
mycroft
006ee23e99 Fix another problem is the modified bit emulation that caused double faults.
We need to set the L2 type preemptively, as it may still be L2_INVAL if the
page had not been previously accessed.
1999-03-24 02:45:27 +00:00
mycroft
11d7efb7ba Forgot a return instruction in the error case. 1999-03-24 01:51:56 +00:00
drochner
76fa1751fe Add a macro to check for sufficient pointer alignment in bus.h context,
"BUS_SPACE_ALIGNED_POINTER()".
Equal to the param.h "ALIGNED_POINTER()" normally, but obeys additional
requirements of the bus_space_xxx_n() macros. (BUS_SPACE_DEBUG)
1999-03-23 21:29:03 +00:00
mycroft
1bb64b0636 __SWAP_BROKEN is no longer useful here. 1999-03-23 19:16:03 +00:00
mycroft
6bb727e736 Nuke some more code that was fetching PT_M and PT_H from pv_flags. 1999-03-23 18:39:38 +00:00
mycroft
5f63cab877 The page and section fault handling paths are essentially identical, so
combine them.  This also fixes a performance issue, in that we always
faulted pages twice in order to write them.
1999-03-23 18:02:02 +00:00
mycroft
79e56d3237 The ARM has the same copy-on-write bug as the i386 -- the write enable bit in
PTEs is ignored when in kernel mode.  Hack around this just like we do on the
i386, by adding a prepass to copyout() to check for write permission on the
destination pages.
1999-03-23 17:14:34 +00:00
mycroft
8f3d31a32b More cleanup...
* Don't bother pulling PT_M and PT_H bits from pv_flags; they can't ever be
  set there!
* Actually make pmap_clear_reference() do something useful.
* Also set the referenced bit (PT_H) when emulating a write fault.
1999-03-23 13:52:48 +00:00
mycroft
da99fe308e Repeat after me:
If we're doing modified bit emulation, we must revoke write permission in
pmap_clear_modify().  This is non-negotiable.  I will revoke write permission
in pmap_clear_modify(), or suffer the wrath of a thousand bricks.
1999-03-23 13:27:48 +00:00
mycroft
3c8512dbb5 We could not possibly have been updating the pv attributed correctly in
pmap_enter(), so... make the obvious change.
1999-03-23 12:30:45 +00:00
mark
f88d8c6a35 In the light of PRs 7122 & 7123 temporarily define __SWAP_BROKEN until
the problem these bug reports described is fixed and they are closed.
1999-03-22 10:24:04 +00:00