Commit Graph

30405 Commits

Author SHA1 Message Date
thorpej
497248ca55 XXX Pass VM_PROT_NONE to uvm_vslock() as access_type. Why are we even
vslocking here?!  copyout() on its own seems to suffice just about everwhere
else, and it's not like the process is going to exit; it's in a system
call!
1999-05-26 01:07:06 +00:00
thorpej
b2e9c635ec Pass an access_type to uvm_vslock(). 1999-05-26 01:05:24 +00:00
thorpej
40aacb6eb5 No longer need to pmap_modified_emulation() in cpu_swapin(), since
uvm_fault_wire() does the right thing with access_type.

XXX Was there a bug here?  pmap_modified_emulation() *wasn't* done in
XXX cpu_fork()!!
1999-05-26 00:40:20 +00:00
thorpej
32de988d29 No longer need to pmap_emulate_reference() in cpu_fork() or cpu_swapin(),
since uvm_fault_wire() does the right thing with access_type.
1999-05-26 00:37:40 +00:00
thorpej
7b4db806b6 In uvm_map_pageable(), pass VM_PROT_NONE as access type to uvm_fault_wire()
for now.  XXX This needs to be reexamined.
1999-05-26 00:36:53 +00:00
thorpej
9d0ea0969e - uvm_fork()/uvm_swapin(): pass VM_PROT_READ|VM_PROT_WRITE access_type
to uvm_fault_wire(), to guarantee that the kernel stacks will not
  cause even a mod/ref emulation fault.
- uvm_vslock(): pass VM_PROT_NONE until this function is updated.
1999-05-26 00:33:52 +00:00
thorpej
195c1a2741 Pass an access_type to uvm_fault_wire(), which it forwards on to
uvm_fault().
1999-05-26 00:32:42 +00:00
thorpej
5b897f96c5 msgbuf doesn't need VM_PROT_EXEC. 1999-05-25 23:31:14 +00:00
thorpej
ed0aee1190 When mapping bus space, we can use pmap_kenter_pa(), since the pages
are never managed.
1999-05-25 23:30:27 +00:00
thorpej
774ceea703 msgbuf doesn't need VM_PROT_EXEC, biostramp does. 1999-05-25 23:19:00 +00:00
thorpej
5832084eaf bus_dmamem_map() maps DMA safe memory, which is usually one or more
managed pages, into KVA space.  Since the pages are managed, we should
use pmap_enter(), not pmap_kenter_pa().

Also, when entering the mappings, enter with an access_type of
VM_PROT_READ | VM_PROT_WRITE.  We do this for a couple of reasons:

	(1) On systems that have H/W mod/ref attributes, the hardware
	    may not be able to track mod/ref done by a bus master.

	(2) On systems that have to do mod/ref emulation, this prevents
	    a mod/ref page fault from potentially happening while in an
	    interrupt context, which can be problematic.

This latter change is fairly important if we ever want to be able to
transfer DMA-safe memory pages to anonymous memory objects; we will need
to know that the pages are modified, or else data could be lost!

Note that while the pages are unowned (i.e. "just DMA-safe memory pages"),
they won't consume any swap resources, as the mappings are wired, and
the pages aren't on the active or inactive queues.
1999-05-25 23:14:03 +00:00
thorpej
f197609d93 Add some DIAGNOSTIC checks for inconsistent use of pmap_enter/pmap_kremove. 1999-05-25 20:33:33 +00:00
thorpej
986c3eca39 Fix some major locking protocol issues related to pmap_kremove() having
to deal with PG_PVLIST mappings; it no longer has to.  Add some DIAGNOSTIC
checks for inconsistent use of pmap_enter/pmap_kremove.
1999-05-25 20:32:29 +00:00
thorpej
0ff8d3ac1a Define a new kernel object type, "intrsafe", which are used for objects
which can be used in an interrupt context.  Use pmap_kenter*() and
pmap_kremove() only for mappings owned by these objects.

Fixes some locking protocol issues related to MP support, and eliminates
all of the pmap_enter vs. pmap_kremove inconsistencies.
1999-05-25 20:30:08 +00:00
nisimura
fec53c08d6 - Use dev_name2blk[] array prepared by config(8) instead of handcrafting
local data.
1999-05-25 09:32:27 +00:00
nisimura
058f5a1517 - Continue to import a development branch.
- Minor formatting fix.
1999-05-25 07:37:08 +00:00
nisimura
014ba724c0 - Rework spl(9) implementation. Use _spl*() processor mask manipulating
routines now reside in locore.S.  No functional difference is expected.
- Replace abused splx() abuse with _splset() to change MIPS processor
interrupt mask bit.  'mips/trap.c' side will be fixed soon.
1999-05-25 04:17:57 +00:00
thorpej
789c9e7c48 Add a comment explaining why using pmap_kenter_pa() is safe here. 1999-05-25 01:34:13 +00:00
tron
bb5689beb3 Only attempt to remove symbol table from DDB's lists of symbol tables
if we really loaded one.
1999-05-25 00:16:08 +00:00
thorpej
85f8d1343c Macro'ize the test for "object is a kernel object". 1999-05-25 00:09:00 +00:00
thorpej
9b731fd45c Remove a comment in uvm_pager_dropcluster() about PMAP_NEW and mod/ref
attributes for the page; it no longer applies, since we don't use
pmap_kenter_pgs() anymore.
1999-05-24 23:36:23 +00:00
thorpej
7becac6b9a Don't use pmap_kenter_pgs() for entering pager_map mappings. The pages
are still owned by the object which is paging, and so the test for a kernel
object in uvm_unmap_remove() will cause pmap_remove() to be used instead
of pmap_kremove().

This was a MAJOR source of pmap_remove() vs pmap_kremove() inconsistency
(which caused the busted kernel pmap statistics, and a cause of much
locking hair on MP systems).
1999-05-24 23:30:44 +00:00
tron
a602deb000 Silently ignore attributes modifications on directories. Fixes
PR kern/7630 by Markus Kurek.
1999-05-24 23:01:13 +00:00
thorpej
cba22525ce Fix some broken packet length checks. Really (no, I mean really) works now
after the ether_input() changes -- tested on my Quadra 650.
1999-05-24 21:53:42 +00:00
ragge
7fb0d17b38 First step towards MI Unibus/Q22 bus code. 1999-05-24 20:12:57 +00:00
tron
770a66b9a8 Fix kernel builds if ppp interface but no bpf filters are configured.
Patch supplied by Takahiro Kambe in PR kern/7639, also fixes PR kern/7632
by Bjoern Labitzke.
1999-05-24 20:12:10 +00:00
thorpej
5dec34efed The kernel pmap can be accessed (and locked!) while in an interrupt
context, so we must block interrupts which may cause memory allocation
before asserting the kernel pmap's lock.  Put this all in PMAP_LOCK()
and PMAP_UNLOCK() macros to make it easier.
1999-05-24 20:11:58 +00:00
ragge
ad1db202f7 bus.h'ify more of the vax code. 1999-05-24 20:10:30 +00:00
thorpej
6eb9ee7cd8 - Change uvm_{lock,unlock}_fpageq() to return/take the previous interrupt
level directly, instead of making the caller wrap the calls in
  splimp()/splx().
- Add a comment documenting that interrupts that cause memory allocation
  must be blocked while the free page queue is locked.

Since interrupts must be blocked while this lock is asserted, tying them
together like this helps to prevent mistakes.
1999-05-24 19:10:57 +00:00
thorpej
e8beb9bbe8 Make this compile again. 1999-05-24 18:40:48 +00:00
christos
61d84403a8 Regen 1999-05-24 13:05:40 +00:00
christos
cf715aec57 Fix PR/7634 properly, by adding the card to pcmciadevs 1999-05-24 13:05:12 +00:00
augustss
8fb4b44439 SMC 8022 PCMCIA ethercard entry for if_ne_pcmcia.c
From Zdenek Salvet <salvet@ics.muni.cz> in PR 7634.
1999-05-24 10:17:49 +00:00
thorpej
8c2d5c6fd3 Let the caller decide what to do if pmap_physpage_alloc() fails. 1999-05-24 01:35:54 +00:00
mrg
1bd01d4677 pull struct strbuf + defines into iommureg.h. properly merge previous commit. 1999-05-24 00:25:31 +00:00
ragge
0354feab8e Make this file compile again. 1999-05-23 23:06:24 +00:00
ragge
373e7cc828 Rewrite the "emulate page reference bits" code to avoid a bunch of
pv_lists traversal and unneccessary page faults.
1999-05-23 23:03:44 +00:00
ragge
539f825799 Better and more understandable way to find out CPU type. 1999-05-23 22:56:53 +00:00
thorpej
c1eb28c237 Make the list of all pmaps LRU-ordered, and update a comment regarding
locking.
1999-05-23 22:37:02 +00:00
ragge
6c98e1bae7 Routine to figure out which system type is booted. 1999-05-23 22:00:43 +00:00
ragge
f1fc4934a3 Use common routines to identify cpu type.
Set up a SCB to be able to handle clock interrupts in the boot program.
Now timer countdown should work on all types of vaxen.
1999-05-23 21:58:19 +00:00
veego
e21201e114 Regen. 1999-05-23 21:28:03 +00:00
veego
a674692065 Add several entries. 1999-05-23 21:26:54 +00:00
ad
ccc7e59e1f Add new sysctl (net.inet.tcp.log_refused) that when set, causes refused TCP
connections to be logged.
1999-05-23 20:33:50 +00:00
ad
bdf1938edd For completeness sake, allow this to compile with no loopback interfaces
configured.
1999-05-23 20:21:51 +00:00
ad
080560c8c6 - Setting initial position of cursor is up to caller.
- Set cursor position properly for SPARC. From Juergen Hannken-Illjes.
1999-05-23 17:59:39 +00:00
thorpej
2102d5a17e Save ourselves some work in some pv list traversal functions; keep a pointer
to the PTE that maps the page in the pv_entry so that we don't have to
compute it from the pmap/va.
1999-05-23 17:49:07 +00:00
thorpej
5d48eed96a Implement pv_entry stealing for the case when a pool page cannot be
allocated for one.
1999-05-23 16:54:43 +00:00
augustss
eca0bbe20e Update doc URL. 1999-05-23 16:07:04 +00:00
mrg
09619f1942 KNF nit. 1999-05-23 11:41:39 +00:00
mrg
b2934b386d UVM is not an option these days. 1999-05-23 11:08:01 +00:00
mrg
ae1a84a61f place iommu definitions in iommureg.h 1999-05-23 07:24:02 +00:00
mrg
f1f95c374b implement madvice() for MADV_{NORMAL,RANDOM,SEQUENTIAL}, others are not yet done. 1999-05-23 06:27:13 +00:00
eeh
193cc31772 Separate out the generic console handling from zs.c 1999-05-23 02:46:35 +00:00
eeh
92ad9c4080 Start putting in hooks for non-zs console devices. 1999-05-23 02:45:19 +00:00
christos
544c14bcf6 KNF! 1999-05-23 00:48:46 +00:00
eeh
f1066c97ad If the zs has not yet attached use the PROM for console input. 1999-05-22 20:34:56 +00:00
eeh
60b89ebf96 Well, looks like the MI allocsys() broke the dvmamap, so instead of using a
single map move it to the bus controller driver so each bus can handle its own
IOMMU without conflicts.
1999-05-22 20:33:55 +00:00
eeh
bb0f8ef559 Fix OF_stdin() to return "stdin" not "stdout" so we really can get console input. 1999-05-22 20:30:54 +00:00
eeh
35d96171e7 Fix bus_type_t properly and enable ASI accesses for bus_space_{read,write}*() 1999-05-22 20:28:22 +00:00
eeh
56b080bed6 Fixup argument confusion to __asm() statements. long long is two registers
wide in 32-bit mode.  Doh!.
1999-05-22 20:25:49 +00:00
scw
7c6d40745a Double the value for NKMEMCLUSTERS, to allow more KVA for LFS et al. 1999-05-22 16:37:03 +00:00
nisimura
10d1acd4ea - Backout the last code change. I found it broke pmax kernel. It's
retained for future use of pmap.new.c, though.

> New codes always use current ASID holded in EntryHi register.
1999-05-22 02:35:35 +00:00
thorpej
66324de865 Use the pool allocator for pv_entry structures. Set a (patchable/config'able)
low water mark on the pool, so we have some chance of crawling along in
extreme memory shortages.
1999-05-21 23:07:59 +00:00
thorpej
ed4224c64e Fix a couple of problems from the ether_input() change:
- Make it compile again, with BPF.
- Don't subtract the Ethernet header length from the total packet length.
- Copy the alignment fix from sys/dev/ic/i82586.c (though the m68k shouldn't
  really be affected).
1999-05-21 21:48:28 +00:00
thorpej
a79a728c6c Copy alignment fix from dev/ic/i82586.c (Um, this extra copy should die,
too, but at least it's not as bad as the podulebus ie driver).
1999-05-21 21:33:59 +00:00
thorpej
87a9ee7804 Copy alignment fix from dev/ic/i82586.c (Um, this copy of the driver
needs to die, pretty please.)
1999-05-21 21:31:37 +00:00
minoura
f4316c1145 Tribial optimizations. 1999-05-21 15:32:38 +00:00
minoura
1567b0074d Sync GENERIC. 1999-05-21 15:15:33 +00:00
minoura
fcb74cccfa Remove experimental/buggy options. 1999-05-21 15:08:27 +00:00
pk
6f9ad5b61d Since we're now prepending the ethernet header to mbuf on incoming
packets, make sure to align the data after the ethernet header.
1999-05-21 13:08:50 +00:00
augustss
ac197c5354 Update documentation URLs. 1999-05-21 10:15:23 +00:00
nisimura
fd243bd393 - Redefine symbols and parameters to represent CPU design with MIPS
nomenclature, retaining the old heritage.
- Remove API-related definitions for now obsolete utiltity routines.
1999-05-21 06:37:39 +00:00
nisimura
e5ecc1bc87 - Typos, I made... 1999-05-21 06:36:37 +00:00
nisimura
28c74563b6 - Make sure ASID PARANOIADIAG work with MIPS3. 1999-05-21 06:19:55 +00:00
nisimura
1b332b28e2 - Now completing MIPS1 side change. Introduce MIPS_TBIS and MIPS_TBDATA
(correct name, vax?) replacing mips1_TLBFlushAddr and mips1_TLBUpdate,
respectively.  New codes always use current ASID holded in EntryHi
register.  In most occations, the register already contains a necessary
value before (re-)written, ugh.  'sva | asid' ops for their arguments are
now verbose, to be removed when MIPS3 side changes are done.
1999-05-21 06:01:14 +00:00
nisimura
634cb79411 - Rename '#ifdef DIAGNOSTIC' to '#ifdef PARANOIADIAG' to detect
catastrophic events to break VM machinary.  Add some more diags to
track ASID.
1999-05-21 05:28:31 +00:00
nisimura
9cfc8d7736 - Track filename changes. 1999-05-21 01:10:49 +00:00
nisimura
04aeaae250 - Rename file names;
dec_3max_subr.c -> memc_3max.c, dec_kn02_subr.c -> memc_3min.c
1999-05-21 01:09:48 +00:00
augustss
b1800a623c Make this file syntactically correct again. 1999-05-21 00:25:48 +00:00
thorpej
a07ba7d1c1 Update the calls to allocsys(). 1999-05-21 00:09:09 +00:00
thorpej
d7ffa508b1 Provide an mdallocsys() that clips bufpages if necessary (on the Sun4c).
This will be (and needs to be) done before nbuf is computed.
1999-05-21 00:08:14 +00:00
thorpej
ba2bc023f7 Call the mdcallback immediately after computing bufpages; bufpages may
need to be clipped, and this needs to be done before computing nbuf.
1999-05-21 00:05:12 +00:00
thorpej
96993ef749 Make a slight modification of pmap_growkernel() -- it now returns the
end of the mappable kernel virtual address space.  Previously, it would
get called more often than necessary, because the caller only new what
was requested.

Also, export uvm_maxkaddr so that uvm_pageboot_alloc() can grow the
kernel pmap if necessary, as well.  Note that pmap_growkernel() must
now be able to handle being called before pmap_init().
1999-05-20 23:25:42 +00:00
thorpej
f311a1c308 Make a slight modification of pmap_growkernel() -- it now returns the
end of the mappable kernel virtual address space.  Previously, it would
get called more often than necessary, because the caller only new what
was requested.

Also, export uvm_maxkaddr so that uvm_pageboot_alloc() can grow the
kernel pmap if necessary, as well.  Note that pmap_growkernel() must
now be able to handle being called before pmap_init().
1999-05-20 23:03:23 +00:00
ragge
b337d4d3c7 Don't detect glass tty if the machine is a workstation.
Hint from Thomas Seidmann.
1999-05-20 23:00:58 +00:00
ad
5bb340fef9 This file is superceded by rcons.h. 1999-05-20 21:16:57 +00:00
tsarna
25e3ee0ff2 Add a *bunch* of types (file went from ~4K to ~16K!) 1999-05-20 21:02:43 +00:00
thorpej
88c7cff619 Make this compile again. 1999-05-20 20:15:27 +00:00
thorpej
1d197b8e7b If we run out of virtual space in uvm_pageboot_alloc(), fail gracefully
rather than unpredictably.
1999-05-20 20:07:55 +00:00
thorpej
3aa41b1b36 Make this actually work if the BUFCACHE option is not specified, by falling
back on the traditional BSD formula of 10% of first 2MB and 5% of remaining.
1999-05-20 20:01:28 +00:00
thorpej
332dd60029 Fix broken prototype. 1999-05-20 19:56:49 +00:00
thorpej
3da4443954 Oops, commit here slipped through the cracks. 1999-05-20 18:07:27 +00:00
nisimura
c0c79283f3 Moved from dec_kn02_subr.c 1999-05-20 14:15:57 +00:00
nisimura
a5b668be64 Moved from dec_3max_subr.c 1999-05-20 14:14:39 +00:00
nisimura
90d9a14b01 - Avoid recomputations inside inner-most loop which produce identical
values evreytime.
1999-05-20 10:50:08 +00:00
pk
fea10fb499 Operate Hypersparc cache in write-back mode again.
Remove `hypersparc under construction' message.
1999-05-20 10:06:39 +00:00
pk
1040b9e209 If TLB entries need to be flushed, make sure to do this after any necessary
cache flushes, since on VIPT machines the cache flush may induce a TLB load.
1999-05-20 10:03:12 +00:00
augustss
4655ae1230 Keep track of vendor id and make sure the vendor string is NUL terminated. 1999-05-20 09:52:35 +00:00
augustss
3d6c3b5c03 Update for TI vendor id. 1999-05-20 09:51:13 +00:00