Commit Graph

3737 Commits

Author SHA1 Message Date
pk
217297d742 Remove a remnant instance of __P(). 2004-04-10 19:58:45 +00:00
pk
6d82d89741 Expose CPUSET_ALL to non-MULTIPROCESSOR source. 2004-04-10 19:55:57 +00:00
pk
667d14673b Group updatepte4m() and the MP & SP versions of setpgt4m_va() together,
which is just a bit more pleasing to the eyes.
2004-04-10 19:40:19 +00:00
pk
83037215bf Do not maintain the number of valid pages per segment (`sg_npte') anymore
for the kernel map on SRMMU machines. This allows pmap_kenter() and
pmap_kremove() to update mappings without needing to lock the pmap
or raising the interrupt level.
2004-04-10 19:22:59 +00:00
pk
2648b0d48c pmap_protect4m: skip PTE update for invalid pages in the specified range. 2004-04-10 18:48:35 +00:00
pk
f852e1c1e4 setpte4m: remove ineffective debug assertions. 2004-04-10 18:40:04 +00:00
fair
e2b036a2e4 Add comment to indicate that the SunSwift Sbus HME/FAS366 SCSI
combination board attaches esp* at sbus*; it's not just "older proms"
2004-04-10 04:02:29 +00:00
pk
f95fd4f56f compat mode: skip double map at VA 0 if the physical load address is 0.
This allows a much wider range of historic kernels to be booted (w/ `-C').
2004-04-08 07:35:34 +00:00
pk
12d5178857 For now, disable Hypersparc instruction cache on MP machines. 2004-04-04 18:54:01 +00:00
pk
8066aa3aa5 * Allow pv_link4_4c() to fail with ENOMEM on pool allocation failures
(catching up with pv_link4m()).
* Fix return code checking for pv_link4m() calls.
* Add low water setting to pv pool.
2004-04-04 18:34:35 +00:00
pk
486f4170eb Remove private declarations of maxdmap and maxsmap. 2004-04-04 18:24:22 +00:00
mrg
32a2d102bd redo previous slightly; move the "int unode;" decl inside the
if (CPU_ISSUN4D) code block, reducing #ifdef/#endif count by one.
2004-04-04 10:09:41 +00:00
gson
f92c1b091a Unused variable "unode" caused compiler warning when !defined(SUN4D). 2004-04-04 08:54:29 +00:00
pk
af0db768b1 Maintain pmap resident count as pages are mapped and unmapped instead
of traversing the page tables each time it's needed.
2004-04-03 23:11:14 +00:00
chs
ec48121fb7 add some SUN4D stuff.
zs and zstty no longer need "needs-count" or "needs-flag",
so get rid of those and wild-card the extra zs devices on SUN4D.
2004-04-03 17:43:50 +00:00
chs
89e7b5360f don't complain about mid == 0 on SUN4D, it's normal there. 2004-04-03 17:42:27 +00:00
chs
8e5882e190 add a bootbus (SUN4D) attachment. from Stephen Sukovich in PR 24199. 2004-04-03 17:42:07 +00:00
chs
81f3e5aec7 fix find_cpus() for SUN4D. from Stephen Sukovich in PR 24198. 2004-04-03 17:41:54 +00:00
pk
70e1de69c4 Max data size -> 512MB; default stack size -> 8MB. 2004-04-03 12:39:51 +00:00
pk
5957cb9b16 On sun4c, clip max data & stack size to avoid the MMU hole. 2004-04-03 12:38:14 +00:00
pk
7bbe926f59 iommu_dmamap_load: deal with pmap_extract() failing. 2004-03-28 19:35:13 +00:00
drochner
c83eb997b8 nothing cares about __HAVE_SIGINFO anymore, so nuke it 2004-03-26 21:39:57 +00:00
drochner
cf8b697c65 remove license clauses 3 and 4 from my cpoyright notices 2004-03-24 17:06:57 +00:00
pk
1fecae985a Remove my name from the old UCB copyright notice, thereby reducing its
reference count to 1.
2004-03-24 15:44:46 +00:00
atatat
19af35fd0d Tango on sysctl_createv() and flags. The flags have all been renamed,
and sysctl_createv() now uses more arguments.
2004-03-24 15:34:46 +00:00
pk
24bb95542f Add openfirmware() entry point. 2004-03-23 15:36:08 +00:00
pk
bfbcd7cff5 prom_pa_location: re-arrange code a bit; use u_long cast to make this compile on 64 bit systems; to do: openfirmware version of this. 2004-03-23 15:29:56 +00:00
martin
2a62a8f3dd The function prom_pa_location casts magic spells that probably won't
work on 64 bit kernels (and at least do not compile). Since this function
is not used there, #ifndef _LP64 it for now.
2004-03-23 11:40:29 +00:00
pk
b744961066 Leverage the PROM's ability to identify the on-board location of a
physical memory address.
2004-03-22 12:37:43 +00:00
nakayama
83f4b465c2 Truncate values to 32-bit, not 40-bit. 2004-03-22 12:28:02 +00:00
martin
fe91b9b277 Create a symlink for <sparc/...> include paths as well, the new openfirm.h
needs it.
2004-03-21 23:41:21 +00:00
pk
7446de9195 Add sparc64 cell_t definitions.
Change OF_interpret() prototype to the unabridged version.
2004-03-21 15:12:35 +00:00
pk
afe147460e Add openfirmware() entry point, since it's no longer defined as a macro
in openfirm.c.
2004-03-21 14:04:30 +00:00
pk
b5a947488b * Add OF_claim() for sparc64.
* Change OF_interpret() to the unabridged version.
* Sync OF_sym2val() and OF_val2sym() with the psarc64 versions.
2004-03-21 14:02:39 +00:00
pk
4b86fd8eed opf_getboot{path,file,args}: return static storage so these can be used
in the early boot phase.

Define prom_interpret() to be a simple form of the Openfirmware OF_interpret().

Re-arrange OLDMON code in prom_getidprom() to make it compile on sparc64.
2004-03-21 13:57:58 +00:00
pk
d7d8742ed3 Turn members of `struct memarr' into long ints, to help sparc64 integration. 2004-03-21 13:52:00 +00:00
pk
f72e36ac23 obp_v2_finddevice: bounds check on local char buffer.
prom_findnode: implement node name matching for device named containing
commas, cf. IEEE 1275, section 4.3.6.
2004-03-18 15:24:19 +00:00
pk
bb3bbfa647 Implement OPIOCFINDDEVICE. 2004-03-18 15:14:33 +00:00
pk
f52adf179f Remove unused `search_prom()' macro. 2004-03-18 15:13:59 +00:00
hannken
ac4d48d92e Rename PROM_getpropstring* => prom_getpropstring* 2004-03-18 12:26:51 +00:00
matt
f9730c006d Fix typo (pckbort -> pckbport) 2004-03-17 18:10:51 +00:00
pk
ea53363e84 Rename PROM_getprop*() => prom_getprop*(). 2004-03-17 17:04:58 +00:00
pk
da415e73f9 De-__P(); 2004-03-17 11:00:19 +00:00
pk
6446b225e5 prom_getprop(): Make the `element size' argument a size_t (like sparc64). 2004-03-17 10:48:21 +00:00
martin
c19b13c71b Adapt to pckbc -> pckbport changes 2004-03-17 08:48:58 +00:00
pk
d5ae67c446 Encapsulate retrieval of properties from the global `options' prom node. 2004-03-16 22:55:47 +00:00
pk
9166dfe50b Use prom_getoption() and drop home-grown string-to-integer conversion code. 2004-03-16 22:47:10 +00:00
pk
7489a68403 Encapsulate retrieval of properties from the global `options' prom node. 2004-03-16 22:45:18 +00:00
pk
0c91b926ac Replace myetheraddr() by prom_getether(). Convert the file descriptor to
deivce tree node (if possible) to support the "local-mac-address' property.
2004-03-15 23:57:27 +00:00
pk
967492ee53 Replace myetheraddr() by prom_getether(). 2004-03-15 23:51:11 +00:00
pk
058057533c prom_getether() now takes a `node' argument in order to support the
"local-mac-address" property.
2004-03-15 23:48:21 +00:00
pk
4bd9e9bb70 prom_getether: support the "local-mac-address" property on network nodes. 2004-03-15 23:46:40 +00:00
cl
ea5ec0212d add kernel part of concurrency support for SA on MP systems
- move per VP data into struct sadata_vp referenced from l->l_savp
  * VP id
  * lock on VP data
  * LWP on VP
  * recently blocked LWP on VP
  * queue of LWPs woken which ran on this VP before sleep
  * faultaddr
  * LWP cache for upcalls
  * upcall queue
- add current concurrency and requested concurrency variables
- make process exit run LWP on all VPs
- make signal delivery consider all VPs
- make timer events consider all VPs
- add sa_newsavp to allocate new sadata_vp structure
- add sa_increaseconcurrency to prepare new VP
- make sys_sa_setconcurrency request new VP or wakeup idle VP
- make sa_yield lower current concurrency
- set sa_cpu = VP id in upcalls
- maintain cached LWPs per VP
2004-03-14 01:08:47 +00:00
bjh21
dff5222d3a Abstract the interface between pckbc(4), and the pckbd(4) and pms(4)
drivers that attach to it.  This allows for other host interface chips
that use the same keyboards and mice, such as the ones in the ARM
IOMD20, ARM7500, and SA-1111.  The PC-compatible driver is still
called pckbc(4), and the new abstraction layer is "pckbport", so the
child devices have moved from sys/dev/pckbc to sys/dev/pckbport, which
also contains some code shared between all host controllers.  To avoid
incompatibility, pckbdreg.h is still installed in
/usr/include/dev/pckbc.

In theory, this shouldn't cause any behavioural changes in the drivers
concerned.  Thy just use rather more function pointers than before.  Tested
on i386 and (with a new host driver) acorn32.  Compiled on several other
affected architectures.
2004-03-13 17:31:33 +00:00
bjh21
5aca86918f Add a new MI attribute, pckbc_machdep_cnattach, and change pckbc_cnattach()
to only call pckbc_machdep_cnattach() if this is present.  This allows
pckbc_machdep_cnattach() to be omitted entirely on most ports, where it only
returns ENXIO anyway.

The devices with this attribute at the moment are pc(4) on i386 and bebox, and
pckbc on sparc, where pckbc_machdep_cnattach() mysteriously returns 0 rather
than ENXIO.
2004-02-14 14:33:28 +00:00
wiz
d20841bb64 Uppercase CPU, plural is CPUs. 2004-02-13 11:36:08 +00:00
bjh21
47df99b02a __HAVE_NWSCONS seems to mean, "If this port uses pckbc(4), it also uses
sys/dev/pckbc/files.pckbc."  This is true of sparc, so define __HAVE_NWSCONS,
and remove the code in pckbc_machdep_cnattach() that was conditional on its
not being defined and that is no longer needed (since with __HAVE_NWSCONS,
pckbc_cnattach() will call pckbd_cnattach() itself if necessary).
2004-02-10 01:11:45 +00:00
martin
966fcad67c How stupid can you borke a commit? I could *swear* I had tested the last
revision before commiting - but you ain't going to believe me anyway.
2004-01-19 19:27:46 +00:00
martin
1d4a6379f7 Only compare the trampoline version in SIGTRAMP_VALID as an unsigned value.
From Christos Zoulas.
2004-01-18 20:53:57 +00:00
martin
da4e67accc Do not export __HAVE_RAS to userland. Applications are supposed to try
rasctl() and detect failure with EOPNOTSUPP.
2004-01-18 18:23:19 +00:00
jdolecek
93cbc84a2f use P_ZOMBIE() macro instead of checking p_state direct 2004-01-11 19:18:41 +00:00
martin
b86d7b2c57 A __insn_barrier() is now available for all archs, remove the MD version
here. Suggested by Jason Thorpe.
2004-01-07 20:02:28 +00:00
martin
1cfee605ee Implement restartable atomic sequences (RAS) for sparc64. 2004-01-06 21:35:18 +00:00
jdolecek
089abdad44 Rearrange process exit path to avoid need to free resources from different
process context ('reaper').

From within the exiting process context:
* deactivate pmap and free vmspace while we can still block
* introduce MD cpu_lwp_free() - this cleans all MD-specific context (such
  as FPU state), and is the last potentially blocking operation;
  all of cpu_wait(), and most of cpu_exit(), is now folded into cpu_lwp_free()
* process is now immediatelly marked as zombie and made available for pickup
  by parent; the remaining last lwp continues the exit as fully detached
* MI (rather than MD) code bumps uvmexp.swtch, cpu_exit() is now same
  for both 'process' and 'lwp' exit

uvm_lwp_exit() is modified to never block; the u-area memory is now
always just linked to the list of available u-areas. Introduce (blocking)
uvm_uarea_drain(), which is called to release the excessive u-area memory;
this is called by parent within wait4(), or by pagedaemon on memory shortage.
uvm_uarea_free() is now private function within uvm_glue.c.

MD process/lwp exit code now always calls lwp_exit2() immediatelly after
switching away from the exiting lwp.

g/c now unneeded routines and variables, including the reaper kernel thread
2004-01-04 11:33:29 +00:00
cl
e7045955c7 kernel part of no-syscall upcall stack return: libpthread registers
an offset between ss_sp and struct sa_stackinfo_t (located in struct
__pthread_st) when calling sa_register.  The kernel increments the
sast_gen counter in struct sastack when an upcall stack is used.
libpthread increments the sasi_stackgen counter in struct
sa_stackinfo_t when an upcall stack is freed.  The kernel compares the
two counters to decide if a stack is free or in use.

- add struct sa_stackinfo_t with sasi_stackgen to count stack use in
  userland
- add sast_gen to struct sastack to count stack use in kernel
- add SA_FLAG_STACKINFO to enable the stackinfo_offset argument in the
  sa_register syscall
- add sa_stackinfo_offset to struct sadata for offset between ss_sp
  and struct sa_stackinfo_t
- add ssize_t stackinfo_offset argument to sa_register, initialize
  struct sadata's sa_stackinfo_offset from it if SA_FLAG_STACKINFO is
  set
- add sa_getstack, sa_getstack0, sa_stackused and sa_setstackfree
  functions to find/use/free upcall stacks and use these where
  appropriate
- don't record stack for upcall in sa_upcall0
- pass sau to sa_switchcall instead of l2 (l2 = curlwp in sa_switchcall)
- add sa_vp_blocker to struct sadata to pass recently blocked lwp to
  sa_switchcall
- delay finding a stack for blocked upcalls to sa_switchcall
- add sa_stacknext to struct sadata pointing to next most likely free
  upcall stack; also g/c sa_stackslist in struct sadata and sast_list
  in struct sastack
- add L_SA_WOKEN flag: LWP is on sa_woken queue
- add L_SA_RECYCLE flag: LWP should be recycled in sa_setwoken
- replace l_upcallstack with L_SA_WOKEN/L_SA_RECYCLE/L_SA_BLOCKING
  flags
- g/c now unused sast_blocker in struct sastack
- make sa_switchcall, sa_upcall0 and sa_upcall_getstate static in
  kern_sa.c
- call sa_upcall_userret only once in userret
- split sa_makeupcalls out of sa_upcall_userret and use to process
  the sa_upcalls queue
- on process exit: mark LWPs sleeping in saunblock interruptible; also
  there are no LWPs sleeping on l->l_upcallstack anymore; also clear
  sa_wokenq_head to prevent unblocked upcalls

additional changes:
- cleanup timerupcall sa_vp == curlwp check
- add check in sa_yield if we didn't block on our way here and we
  wouldn't any longer be the LWP on the VP
- invalidate sa_vp_ofaultaddr after resolving pagefault
2004-01-02 18:52:17 +00:00
pk
c6ac21f702 Enable reset of a process's alternative signal stack flag. 2004-01-01 15:02:31 +00:00
pk
90c49c51c7 When powering down, first ask the PROM to do it for us. 2003-12-30 14:29:30 +00:00
pk
70f20a1217 Replace the traditional buffer memory management -- based on fixed per buffer
virtual memory reservation and a private pool of memory pages -- by a scheme
based on memory pools.

This allows better utilization of memory because buffers can now be allocated
with a granularity finer than the system's native page size (useful for
filesystems with e.g. 1k or 2k fragment sizes).  It also avoids fragmentation
of virtual to physical memory mappings (due to the former fixed virtual
address reservation) resulting in better utilization of MMU resources on some
platforms.  Finally, the scheme is more flexible by allowing run-time decisions
on the amount of memory to be used for buffers.

On the other hand, the effectiveness of the LRU queue for buffer recycling
may be somewhat reduced compared to the traditional method since, due to the
nature of the pool based memory allocation, the actual least recently used
buffer may release its memory to a pool different from the one needed by a
newly allocated buffer. However, this effect will kick in only if the
system is under memory pressure.
2003-12-30 12:33:13 +00:00
mrg
490518af32 convert __ldstub() from a ({}) macro into a properly static inline function.
the latter is not valid for C++ so says GCC3.
2003-12-26 06:00:58 +00:00
martin
6c7d761c0e Fix commented out pcmcia entries: adjust comments, add FULL_SPARC_BUS_SPACE,
adapt wd* at pcmcia to new atabus attachment, and add wi* at pcmcia.
Noticed by Michael Wolfson.
2003-12-17 08:08:02 +00:00
jmc
d9948df6dd Clean up tmp files on exit. Fixes PR#23723 2003-12-15 20:07:39 +00:00
martin
b7019538c6 Add config files for Mr.Coffee JavaStatin 1 machines.
Unfortunately we need two slightly different ones for now (OBP vs. OF)
2003-12-15 19:33:01 +00:00
martin
170c19e9bf Rename the JavaStation network boot loader: bootjs.elf -> bootjs.net. 2003-12-15 17:34:36 +00:00
martin
9eead0293e Make this look more like GENERIC. 2003-12-14 17:26:58 +00:00
uwe
b9588a2c89 There's no such thing as "JavaStation-10". Krups official name is
"JavaStation-NC".  Pointed out by Pete Zaitcev (long ago).
2003-12-14 03:25:46 +00:00
martin
b4467b848f Don't touch the PROM VA on JavaStations. From Valeriy. 2003-12-13 10:26:13 +00:00
martin
d741bf72ed Remove a comment - this is no longer experimental and works with an
unpatched tree.
2003-12-13 09:31:20 +00:00
martin
ef9590543d Add support to build bootjs.elf - the secondary bootstrap used to netboot
JavaStations. Based on patches from Valeriy E. Ushakov.
2003-12-12 22:15:59 +00:00
martin
119a91826a If compiling for JavaStations, modify kernal VA layout to not conflict
with the PROM. From Valeriy E. Ushakov. This is a hack, but as long as
we don't have a way to arrange for a proper VA layout on this machines
(i.e. beyound the PROM) it is needed.
2003-12-12 14:51:48 +00:00
martin
808a75e1c5 Use the new split hard/softinterrupt handlers to avoid running mouse/keyboard
input functions to be run at IPL_SERIAL (instead of the intended IPL_TTY).
2003-12-12 14:31:39 +00:00
agc
7db1d33cba Modify the licences of code written by Theo De Raadt from a 4-clause
to a 2-clause licence (retaining UCB clauses (1) and (2)), per PR
22409 from Joel Baker, approved by Theo de Raadt, and ratified by
myself - the only discrepancy being the handling of the original
clause 3 in src/usr.sbin/yppoll/yppoll.c.
2003-12-10 12:06:25 +00:00
jmc
695a2a2f9f Change reference at bottom from sys/dev/majors to sys/conf/majors to match
reality
2003-12-10 02:04:00 +00:00
mrg
a777988c2a ofwboot.net is gone. from hannken@ 2003-12-07 23:16:03 +00:00
christos
5173151e16 add altq 2003-12-07 19:12:56 +00:00
christos
489763f22c whitespace fixes. 2003-12-07 19:12:31 +00:00
mrg
8ae92b7455 merge ultrasparc ofwboot / ofwboot.net. 2003-12-07 09:05:18 +00:00
atatat
13f8d2ce5f Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(),
vfs_sysctl(), etc, routines, along with sysctl_int() et al.  Now all
nodes are registered with the tree, and nodes can be added (or
removed) easily, and I/O to and from the tree is handled generically.

Since the nodes are registered with the tree, the mapping from name to
number (and back again) can now be discovered, instead of having to be
hard coded.  Adding new nodes to the tree is likewise much simpler --
the new infrastructure handles almost all the work for simple types,
and just about anything else can be done with a small helper function.

All existing nodes are where they were before (numerically speaking),
so all existing consumers of sysctl information should notice no
difference.

PS - I'm sorry, but there's a distinct lack of documentation at the
moment.  I'm working on sysctl(3/8/9) right now, and I promise to
watch out for buses.
2003-12-04 19:38:21 +00:00
keihan
29c72c57f0 netbsd.org -> NetBSD.org
All "netbsd.org" is now gone from src/sys/arch.
2003-12-04 13:05:15 +00:00
keihan
8476e6755a NetBSD.ORG -> NetBSD.org
Now all "NetBSD.ORG" are gone from src/sys.
2003-12-04 12:42:54 +00:00
christos
a21fdf3b43 bye, bye _MCONTEXT_TO_SIGCONTEXT and vice versa. 2003-11-25 23:11:52 +00:00
pk
dbaf4e4ad1 Drop the old cpu_switch() code. 2003-11-16 14:56:05 +00:00
pk
95ad31d40c __cpu_simple_unlock: use __insn_barrier() instead of a "memory" clobber. 2003-11-16 11:22:30 +00:00
pk
fdd5b03782 Use __insn_barrier() in all bus_space read/write operations. 2003-11-16 11:09:07 +00:00
pk
97bb6a9d59 Introduce __insn_barrier(), designed to prevent instruction re-ordering
with minimal side-effects across its location in the source code.
2003-11-16 11:07:57 +00:00
bouyer
6fb817f5dd Commit changes proposed on tech-kern Thu, 6 Nov 2003
- factor out disksubr.c between sun3, sparc and sparc64. Keep the sun3
  groveling code to find a NetBSD disklabel in the first sector (so that it
  can find a label at the old sun3 LABELOFFSET) as a fallback is not
  label at LABELOFFSET, or sun label is present.
- Fix the sun3 LABELOFFSET (was 64, but the kernel wrote the NetBSD label at
  128)
- Make next68k disksubr.c always write a next-compatible disklabel.
- remove #ifdef __sparc__ hack from disklabel(8), and change it to issue
  a DIOCWDINFO after writing the disklabel to the raw partition in the
  -r/-I case (so that the kernel can convert the label if needed).
2003-11-15 17:52:30 +00:00
chs
e07f0b9362 eliminate uvm_useracc() in favor of checking the return value of
copyin() or copyout().

uvm_useracc() tells us whether the mapping permissions allow access to
the desired part of an address space, and many callers assume that
this is the same as knowing whether an attempt to access that part of
the address space will succeed.  however, access to user space can
fail for reasons other than insufficient permission, most notably that
paging in any non-resident data can fail due to i/o errors.  most of
the callers of uvm_useracc() make the above incorrect assumption.  the
rest are all misguided optimizations, which optimize for the case
where an operation will fail.  we'd rather optimize for operations
succeeding, in which case we should just attempt the access and handle
failures due to insufficient permissions the same way we handle i/o
errors.  since there appear to be no good uses of uvm_useracc(), we'll
just remove it.
2003-11-13 03:09:28 +00:00
pk
bb69a241e8 Remove ancient DDB-dependent `hide/integrate'.
Simplify lewrcsr/lerdcsr; read-back after write doesn't hurt on sun4 so
skip the cpu type test in generic kernels.
2003-11-11 15:01:05 +00:00
wiz
ee1b406595 Spell address with two d's. Inspired by similar changes in OpenBSD,
originating from Jonathon Gray and forwarded by jmc@openbsd.
2003-11-10 08:51:51 +00:00
pk
72c519a615 __cpu_simple_unlock: avoid instruction re-ordering by the compiler. 2003-11-09 21:04:44 +00:00
tsutsui
addcf5d254 #if defined(_KERNEL_OPT) is enough, #if !defined(_LKM) isn't needed
in that case. Pointed out by mrg.
2003-11-08 15:19:20 +00:00