thorpej
b1e15c2005
Add some robustness to pmap_alloc_physpage(): Instead of panic'ing if
...
we can't get a page, find an inactive pmap and pmap_collect() it,
freeing up a few pages. Go ahead and die if we can't allocate a page
after 5 tries.
1998-03-27 00:52:43 +00:00
thorpej
b86884a71a
Give pmap_collect() some substance: when called, a process is being
...
swapped out, so remove all of the physical mappings the process has
in order to free up the page table pages.
Since the pmap module is allowed to "forget" mappings, pmap_collect()
may be called in other situations where the memory situation is desperate,
although it's more likely that the pages will simply be needed again the
next time a process runs.
1998-03-26 22:18:36 +00:00
thorpej
531db9e0d3
Sanity check the virtual addresses in the kernel and non-kernel cases
...
of pmap_enter() (and pmap_kenter_*()). Remove diagnostic check for
kernel pmap in pmap_alloc_asn().
1998-03-26 19:06:28 +00:00
thorpej
040f7cbc70
Remove references to pmap.old.h - It should have just been pmap.h, but
...
that isn't necessary, either, since <vm/vm.h> is already included.
1998-03-26 18:17:13 +00:00
thorpej
c4ba627afc
Kernel config file for bishop.nas.nasa.gov and ripley.nas.nasa.gov,
...
AlphaStation 500 and AlphaStation 600, respectively.
1998-03-26 03:00:36 +00:00
thorpej
9234f2450b
Enable DDB history, netbsd.gdb.
1998-03-26 02:58:48 +00:00
thorpej
6111783e61
if NEW_SCC_DRIVER, 3000/300 and 3000/500 aren't PROM console candidates.
1998-03-26 02:53:21 +00:00
thorpej
a9e071bef5
defopt NEW_SCC_DRIVER
1998-03-26 02:52:43 +00:00
thorpej
1282aca230
Add options UVM, PMAP_NEW, and NEW_SCC_DRIVER.
1998-03-26 02:51:46 +00:00
thorpej
73f1a02583
If NEW_SCC_DRIVER is defined, the 3000/300 and 3000/500 are not
...
PROM console candidates.
1998-03-26 02:45:34 +00:00
thorpej
7b4da708cc
Add support for attaching a zstty as the console, conditional on
...
NEW_SCC_DRIVER.
1998-03-26 02:43:22 +00:00
thorpej
4a4bccc923
Remove references to NEW_PMAP.
1998-03-26 02:21:46 +00:00
thorpej
76ba34c797
Remove references to "new_pmap".
1998-03-26 02:19:02 +00:00
thorpej
456b3df281
Remove the Mach 3 pmap from the tree, replacing it with the contents of
...
pmap.old.<whatever>. To see the history, look at the corresponding
pmap.old.<whatever> file.
1998-03-26 02:18:03 +00:00
thorpej
3ac5a77c70
Make pmap_kremove() deal with mappings entered with pmap_enter() as well.
...
Prevents stale PV entries from lingering around. Fixes a nagging
"kernel stack not valid halt" I was seeing with PMAP_NEW.
Idea from Chuck Cranor.
1998-03-25 22:52:28 +00:00
mjacob
db6aafad0b
With new pmap stuff, the need for MSS3 goes away.
1998-03-25 18:33:41 +00:00
ross
3786a63843
1. Always link at the high address, now that we can use free ram below
...
the kernel on most platforms, including all of the entry-level platforms.
2. Kill the comments and options for load address selection.
3. Kill the default -g.
1998-03-25 02:16:41 +00:00
thorpej
e6cf334f5c
Keep a few things that reference kernel variables out of the namespace.
...
Add a check to see if libkvm is using this file.
1998-03-25 00:44:34 +00:00
thorpej
49408401a3
In pmap_destroy_lev1map(), fix a problem where the pmap's ASN wouldn't
...
be invalidated if the pmap is not active. A rare thing (in fact, I'm
having trouble thinking of a scenario where it would happen), but it was
incorrect, nonetheless.
1998-03-24 22:02:44 +00:00
thorpej
ea074f229a
cdev_decl the "zs" device (which is really zstty).
1998-03-24 05:17:14 +00:00
thorpej
0105ff6f53
Update my DEC 3000/400 kernel config to reflect usage of the MI SCC driver.
...
Do not try this at home. Caution: hot coffee is hot.
1998-03-24 05:16:30 +00:00
thorpej
db00f6f709
Define attachments for the MI SCC driver - only hooks up to ioasic
...
for now.
1998-03-24 05:15:07 +00:00
thorpej
a26a53fbbc
Slight hack to allow the MI SCC driver to be used at cdev major 15
...
for testing purposes. Normal kernels still get the Alpha-specific
SCC driver.
1998-03-24 05:13:59 +00:00
thorpej
ee83014c4d
Initial mostly-working ioasic attachment for the MI 8530 SCC driver. It is
...
enough to use as a console on my DEC 3000/400 (connected to a VT-520
terminal).
XXX The MI SCC driver needs serious changes to handle platforms which
have muliple SCC attachments (e.g. the Alpha port, which has an ioasic
attachment for TurboChannel systems and a gbus attachment for TurboLaser
systems).
XXX The MI SCC driver also needs changes to deal with the wacky (to put
it mildly) way the chips are wired up on the ioasic (on both TC Alphas
and DECstations). These are going to come along later.
1998-03-24 05:12:00 +00:00
mjacob
4ccb969d0b
Okay, handle the ALLOCNOW case by doing the appropriate adjustments
...
up front. Do the spacing arithmetic slightly differently.
1998-03-23 07:51:25 +00:00
mjacob
8e5970917e
Redo it slightly so that S/G now appears to work a bit better. This
...
version has 2GB direct map starting at 2GB, and either 256MB or 1GB
S/G starting at 1MB. I've done *some* testing on this, but I'm not
quite happy with it yet.
1998-03-23 07:42:40 +00:00
mjacob
88c34f6f5f
Spaicing for 32 bit ptes (dwlpx only, really) is 0x20, not 1
1998-03-23 07:09:12 +00:00
mjacob
66194d05bc
Do a more complete job of figuring out what kind of DWLP? we have- figure
...
out how much s/g ram is available. Can't really use the 128K entry S/G
ram yet- but I'll fix that later. More importantly, add in a dwlpx_iointr
handler that will try and figure out what the DWLPX error is and at
least print out what is happening- I actually found it useful in S/G
entry debugging as it could tell me that I had some bad S/G entries.
1998-03-23 06:38:10 +00:00
mjacob
51ba315ba2
Slightly restructure interrupt handling to accomodate the addition
...
of a dwlpx_iointr vector.
1998-03-23 06:32:39 +00:00
mjacob
7c83bc0da6
Prepare for handling multisized S/G maps. Specify dwlpx_iointr function.
1998-03-23 06:31:54 +00:00
jonathan
d3d99a28c9
Update #ifdef'ed-out changes from pmax :
...
* Add more #ifdef pmax/#endif, #ifdef alpha/#endif where appropriate.
Config and heade files need more work (or replacement)
change TK_NOTYET to HAVE_RCONS
change commented-out /* && cn_tab.cn_screen */ to && raster_console()
* Add DDB hooks.
* Note where Alpha console ignores carrier on consoles.
* Add pmax-derived console tty-size code inside HAVE_RCONS
* Fold in gross pmax rcons-input hooks, inside HAVE_RCONS
Untested, but whitespace/ifdef only, cross-compiles OK,
preprocessing shows no significat differences (famous last words)
1998-03-22 08:24:52 +00:00
thorpej
a5260cbda0
Use atomic set/clear bits in pmap_activate()/pmap_deactivate().
1998-03-22 07:27:54 +00:00
thorpej
fcfe2f1539
Implement a set of `atomic' (using load-locked and store-conditional)
...
operations. Initial set includes:
alpha_atomic_setbits_q() set bits in a quad
alpha_atomic_clearbits_q() clear bits in a quad
1998-03-22 07:26:32 +00:00
thorpej
9db8ae93c8
- The pmap now includes support for ASNs. We no longer need to flush
...
the TLB and I-cache in the SWITCH_CONTEXT macro.
- Right after switching to proc0's newly-created context at startup time,
flush the TLB and I-cache; this is the only place where it's not done
automatically.
- Fix a nasty bug in a critical section of cpu_switch(); change the
pmap_activate -> SWITCH_CONTEXT -> pmap_deactivate sequence to
pmap_deactivate -> pmap_activate -> SWITCH_CONTEXT. This prevents
erroneously marking a pmap inactive if switching to a process that
shares it's address space (and thus its pmap) with the oldproc! Noticed
by Chris Demetriou.
1998-03-22 05:46:02 +00:00
thorpej
c0cc1ed476
Implement support for Address Space Numbers, greatly reducing the number
...
of TLB and I-cache flushes, significantly speeding up context switches.
Once again, many thanks to Chris Demetriou and Ross Harvey for code
review and debugging assistance!
1998-03-22 05:41:37 +00:00
thorpej
a8d86e5a7c
Replace PMAP_ASNGEN_INVALID with PMAP_ASN_RESERVED.
1998-03-22 05:39:50 +00:00
mjacob
86b6520e41
more TS_WOPEN to tp->t_wopen changes
1998-03-21 23:36:19 +00:00
mycroft
0dae91d9af
Eliminate uses of TS_WOPEN in hard-wired devices.
1998-03-21 22:52:59 +00:00
mjacob
34f87569b9
add some error defintions
1998-03-21 22:02:42 +00:00
thorpej
66d8f5b544
sync systypes w/ <machine/rpb.h>
1998-03-20 21:48:21 +00:00
thorpej
63c73f94e3
Add a few more systypes.
1998-03-20 21:48:03 +00:00
thorpej
0f95ffdc1d
Nuke swpctxt(); it's only used by the Mach pmap, which we will only ever
...
use for reference.
1998-03-19 06:44:25 +00:00
thorpej
003c50d1d5
Add a macro to invalidate the TLB for a given pmap/va pair. TLB
...
invalidation algorithm:
if (old mapping had PG_ASM set || pmap is active) {
TIBS(va);
if (also sync I-stream)
imb();
}
The check for "old mapping had PG_ASM" will get all kernel mappings (since
kernel mappings always have PG_ASM set).
This allows us to remove the bogus check for the kernel pmap in
active_pmap() - do so.
Use the new TLB invalidation macro whenever such action is needed.
1998-03-18 23:55:25 +00:00
thorpej
15adb17803
Eliminate the last argument from pmap_remove_mapping(); it makes its own
...
decisions about TLB invalidation.
1998-03-18 23:11:44 +00:00
thorpej
7ee4af11a7
Change active_pmap() to use the CPU mask (XXX and check for kernel pmap
...
as well, until some other changes are made). Nuke active_user_pmap(),
and change the places that used it to use active_pmap() instead (as well
as make some DIAGNOSTIC consistency checks).
1998-03-18 22:50:50 +00:00
thorpej
605472f676
Optimize out a TLB invalidation in a common case of pmap_enter(): if
...
the PTE was previously invalid, no TLB invalidation is necessary because:
(1) when a PTE is invalidated, its entry is flushed from the
TLB
(2) the PALcode won't install an invalid PTE into the TLB.
1998-03-18 22:13:58 +00:00
thorpej
cfdf9a95ad
Keep track of which CPUs are using a pmap by setting/clearing bits
...
in the pmap's CPU mask in pmap_activate()/pmap_deactivate().
1998-03-18 21:57:03 +00:00
thorpej
43614761e3
In cpu_exit() deactivate the address space before freeing the vmspace
...
structure. We will continue to run on this context (which is the
global Lev1map at this point) right up until we switch to proc0's
context in switch_exit().
1998-03-18 20:38:07 +00:00
thorpej
87eb2cfded
Don't call pmap_deactivate() if we jumped into the middle of cpu_switch()
...
from switch_exit(), since by this time, the vmspace will have already
been deactivated and freed.
1998-03-18 20:36:13 +00:00
thorpej
b637a998f4
Add ASN housekeeping and a CPU mask to the pmap.
1998-03-18 19:39:23 +00:00
thorpej
961a955498
Move the "are we active" macros out of the header file.
1998-03-18 19:27:46 +00:00
thorpej
d37acae24c
Add a DIAGNOSTIC checks for the kernel pmap in pmap_create_lev1map()
...
and pmap_destroy_lev1map(). Correct a comment in another DIAGNOSTIC
panic.
1998-03-18 19:21:50 +00:00
thorpej
06b49b8f3e
Change a couple of assert()s to DIAGNOSTIC panics.
1998-03-18 19:12:57 +00:00
thorpej
438599b408
Correct a comment in pmap_bootstrap().
1998-03-18 19:04:42 +00:00
thorpej
56e004c995
Pass the max ASN from the HWRPB to pmap_boostrap().
1998-03-18 19:02:49 +00:00
thorpej
426d2953f5
Add a macro to test if PG_ASM (Address Space Match) is set in a PTE.
1998-03-18 19:00:15 +00:00
bouyer
9f50fca1fd
Add commented out "options FFS_EI"
1998-03-18 16:34:41 +00:00
thorpej
9c1e8fc2ed
Implement the PMAP_NEW interface for UVM.
1998-03-17 05:15:24 +00:00
thorpej
1477f77353
Properly depend on the PMAP_NEW option.
1998-03-17 05:00:18 +00:00
thorpej
6bbfd3e9ff
Use pmap_kenter_pa() in _bus_dmamem_map() if PMAP_NEW.
1998-03-17 04:59:36 +00:00
thorpej
f8cff5ab23
Add a software PTE bit that indicates that a va -> pa mapping was entered
...
in the physical->virtual list.
1998-03-17 04:53:43 +00:00
thorpej
00452b441f
Move PTE-related constants here, and make them not depend on a hard-coded
...
page size (i.e. use the one initialized from the HWRPB at boot time).
Do a bit of cleanup while here, rendering old inherited constants obsolete.
1998-03-12 07:29:21 +00:00
thorpej
4d8723232d
Garbage-collect a bunch of constants that were inherited, but are no
...
longer necessary or make sense.
1998-03-12 07:28:07 +00:00
thorpej
bd3c0e36cf
Garbage-collect this a bit.
1998-03-12 06:47:11 +00:00
thorpej
00a597fe92
Use vm_page_alloc1() and vm_page_free1() as appropriate.
1998-03-12 06:27:36 +00:00
thorpej
1f8d640c4b
Bump maxusers to 64.
1998-03-12 06:04:47 +00:00
thorpej
6e6e2d7ebf
Dump maxusers to 32.
1998-03-12 06:04:31 +00:00
thorpej
d9a1f8ba36
Adjust the default and low-bound maxusers, now that the pmap can deal.
1998-03-12 06:04:14 +00:00
thorpej
dfe0937a7e
If not DEBUG, use the Virtual Page Table to get the PTE for kernel mappings
...
in pmap_enter() and pmap_emulate_reference().
1998-03-12 02:59:22 +00:00
thorpej
30766180a3
Nuke these; they are long-since obsolete.
1998-03-12 01:28:01 +00:00
thorpej
152a4bfa60
Increase the maximum userspace address to 4TB. Leave the stack at 8G
...
for now, but make a note that we might want to move it down to 4G later.
1998-03-12 01:25:52 +00:00
thorpej
e046925c3a
Massive cleanup and partial rewrite of the NetBSD/alpha pmap module.
...
Major change is that page table page management has been completely
rewritten. Page tables are now accessed via K0SEG (no more KVA space
wasted on user page tables), and a much larger user address space is
supported.
Many thanks to Chris Demetriou and Ross Harvey for helpful insight and
debugging assistance.
1998-03-12 01:24:52 +00:00
thorpej
900e1c90bd
Nuke ALPHA_STSIZE and ALPHA_MAX_PTSIZE. Add macros to compute and operate
...
on segments mapped by L1 and L2 PTEs.
1998-03-12 01:21:21 +00:00
thorpej
7225aae835
Move check for user-pmap-still-using-Lev1map from pmap_enter_ptpage()
...
to pmap_enter().
1998-03-09 22:31:23 +00:00
thorpej
daa9cfae50
Don't do the Segtabzero-for-dev-zero hack.
1998-03-09 20:43:28 +00:00
thorpej
e456fc0538
Simplify/speed up pagemove() somewhat by using the Virtual Page Table.
1998-03-09 20:17:03 +00:00
thorpej
78a173bada
Define VPT_INDEX(), which computes the index into the Virtual Page Table
...
of the PTE that maps the specified virtual address.
Thanks to Chris Demetriou and Ross Harvey for clarifying the VPT.
1998-03-09 19:57:57 +00:00
thorpej
b3d7fd8f3f
Just use vtophys() to get the PCB phys addr.
1998-03-07 04:20:45 +00:00
thorpej
9c236919e9
Rewrite pmap_extract(), and use it as appropriate in vtophys() rather
...
than (almost) duplicating the code.
1998-03-07 03:37:02 +00:00
thorpej
cd7d081d02
Export a pointer to the Virtual Page Table.
1998-03-07 03:15:43 +00:00
thorpej
f7d64ef778
Clean up a comment.
1998-03-07 03:15:06 +00:00
thorpej
f55b280ffc
Clean this up a bit.
1998-03-07 01:44:08 +00:00
thorpej
dcbc04e7af
Rename Sysptmap and Sysmap to Lev2map and Lev3map, respectively, and
...
add some comments describing in better detail what they are and how they
are used.
1998-03-07 01:43:54 +00:00
thorpej
60e6d2e48f
Update a comment in pagemove().
1998-03-07 01:26:04 +00:00
thorpej
ff155df72a
Nuke kvtopte(). Also, change pagemove() to lookup the from and to PTEs
...
in each iteration of the loop, since PT pages may not necessarily be
contiguous.
1998-03-07 01:11:39 +00:00
thorpej
60d30d3838
Nuke kvtopte() and ptetokv().
1998-03-07 01:10:05 +00:00
thorpej
58a7bd9288
Nuke the vatopa() macro.
1998-03-07 00:42:07 +00:00
thorpej
059d0c72de
pmap_ste() -> pmap_l2pte(), pmap_pte() -> pmap_l3pte()
1998-03-06 23:41:01 +00:00
thorpej
8081bd3017
Move pmap_pte*() macros into the header file, nuke pmap_ste_v(), add
...
pmap_lev1pte().
1998-03-06 23:19:26 +00:00
thorpej
53e3bf87b9
Fix think'o in last kcopy() change.
1998-03-05 02:10:57 +00:00
thorpej
a2db880e8c
In kcopy(), make sure we save and restore the old fault handler; kcopy()
...
is called from uiomove(), which may be in the code path of servicing
a non-fatal page fault caused by a copyin() or copyout().
1998-03-04 02:11:58 +00:00
cgd
09dbd9234d
fix typo in last commit (noticed on inspection)
1998-03-02 21:36:55 +00:00
cgd
7ff7b02fac
allow LDSTATIC definition to be overridden by bsd.own.mk/mk.conf
1998-03-02 20:01:05 +00:00
cgd
9da165424c
allow LDSTATIC definition to be overridden by bsd.own.mk/mk.conf
1998-03-02 19:57:00 +00:00
ross
03169f0089
Second part of cdev_decl() migration. Declare cputype variable.
...
Add config info for a12 switch driver and console driver.
1998-03-02 08:04:04 +00:00
ross
41a61f7c9e
Update interrupt name table for a12 crossbar.
1998-03-02 07:47:52 +00:00
ross
b8d5ca6c78
Centralize cdev_decl() for these MI drivers + a12dc in machine/conf.h (cgd)
...
(This does not introduce any config or option dependencies.)
1998-03-02 07:44:18 +00:00
ross
ff94450f84
Use the more consistent register field names & add ctags(1) keys.
1998-03-02 07:07:41 +00:00
ross
6e6f663204
Rewrite of interrupt dispatch logic. Add ctags(1) keys for *a12*.h files.
1998-03-02 07:03:20 +00:00
ross
13aeff8570
Fix attachment message.
1998-03-02 06:59:38 +00:00