578 Commits

Author SHA1 Message Date
julian
869029d5d7 A set of changes to reduce the number of include files the kernel
takes from /usr/include. I cannot check them on alpha.. (will try beast)

Briefly looked at by: Warner Losh <imp@harmony.village.org>
2001-07-08 04:56:07 +00:00
mjacob
f71125025e Bracket call to vm_page_flag_set with required Giant lock/unlock. 2001-07-05 17:27:50 +00:00
mjacob
fcb893ccd5 You cannot require Giant to be locked when you haven't acquired it yet. 2001-07-05 16:55:50 +00:00
dillon
1cf218e40f Move vm_page_zero_idle() from machine-dependant sections to a
machine-independant source file, vm/vm_zeroidle.c.  It was exactly the
same for all platforms and updating them all was getting annoying.
2001-07-05 01:32:42 +00:00
dillon
93369f554a Reorg vm_page.c into vm_page.c, vm_pageq.c, and vm_contig.c (for contigmalloc).
Also removed some spl's and added some VM mutexes, but they are not actually
used yet, so this commit does not really make any operational changes
to the system.

vm_page.c relates to vm_page_t manipulation, including high level deactivation,
activation, etc...  vm_pageq.c relates to finding free pages and aquiring
exclusive access to a page queue (exclusivity part not yet implemented).
And the world still builds... :-)
2001-07-04 23:27:09 +00:00
dillon
e028603b7e With Alfred's permission, remove vm_mtx in favor of a fine-grained approach
(this commit is just the first stage).  Also add various GIANT_ macros to
formalize the removal of Giant, making it easy to test in a more piecemeal
fashion. These macros will allow us to test fine-grained locks to a degree
before removing Giant, and also after, and to remove Giant in a piecemeal
fashion via sysctl's on those subsystems which the authors believe can
operate without Giant.
2001-07-04 16:20:28 +00:00
jhb
f43dc7e223 Allow Giant to be recursed when a process terminates. 2001-07-03 05:09:48 +00:00
jhb
cbc88996c6 Move ast() and userret() to sys/kern/subr_trap.c now that they are MI. 2001-06-29 19:51:37 +00:00
jhb
d82893e676 Add a new MI pointer to the process' trapframe p_frame instead of using
various differently named pointers buried under p_md.

Reviewed by:	jake (in principle)
2001-06-29 11:10:41 +00:00
jhb
3c7ad73470 Grab Giant around fault handling at the top level for now. 2001-06-29 04:18:59 +00:00
jhb
979d655977 Allow the clock lock to recurse. 2001-06-25 23:56:56 +00:00
jhb
3eb27b376a - Grab the vm lock around all of pmap_emulate_reference() as it manipulates
vm_page_t's.
- Add a KTR_TRAP tracepoint to trap() on the alpha that displays the
  contents of a0, a1, and a2 to make debugging of nested traps that
  panic before displaying any useful output easier.
2001-06-25 23:52:25 +00:00
mjacob
368d4cfb27 fix oopslet for PROC_UNLOCK_NOSWITCH 2001-06-24 18:23:17 +00:00
jhb
e5e16e09ad - Grab the proc lock around CURSIG and postsig(). Don't release the proc
lock until after grabbing the sched_lock to avoid CURSIG racing with
  psignal.
- Don't grab Giant for addupc_task() as it isn't needed.

Reported by:	tegge (signal race), bde (addupc_task a while back)
2001-06-22 23:05:11 +00:00
jhb
b6786eca7f Doh, missed a printf -> db_printf in the previous commit. 2001-06-22 15:37:48 +00:00
peter
e3c015c7bb Clean up some junk. The bogus trapframe on the stack was removed from the
MI code in August 2000 elsewhere.
2001-06-16 22:07:32 +00:00
jhb
134649df9d I'm a dunce. Clean up some warnings by axeing some unused variables from
the previous commit.
2001-06-15 21:09:44 +00:00
jhb
fc8bd4c1c0 Updates and tweaks to the new trace functionality:
- Use db_printf() instead of printf().
- Clean up decode_syscall() to use regular if-then-else rather than goto's.
- Use the same method of parsing PID's for per-process traces as the x86
  code does: that is, if the address passed in is not a valid kernel
  address, treat it is a decimal pid.
- If the pid of the current process is specified, fall back to using the
  "default" parameters for the trace as curproc's pcb is not valid at this
  point.

MFC after:	1 week
2001-06-15 20:27:44 +00:00
peter
490a3f634c oops. prepare_usermode() died in August 2000 in the MI and x86 code.
Issue raised by:	scottl
2001-06-15 09:59:27 +00:00
peter
17e3eb1d7f As per comments in sys/linker_set.h:
BANG! BANG! BANG! BANG! BANG! BANG! CLICK! CLICK! CLICK! CLICK! CLICK!
<reload>
BANG! BANG! BANG! BANG! BANG! BANG! CLICK! CLICK! CLICK! CLICK! CLICK!
2001-06-14 01:28:56 +00:00
gallatin
7a5df26ad4 initialize mp_ncpus in cpu_mp_probe() so that if the probe fails and
cpu_mp_start() is never called, mp_ncpus will have a non-zero value.
This prevents systat from dying with an arithmatic exception caused
by a divide-by-zero error on UP alphas running a GENERIC kernel.
2001-06-13 20:40:24 +00:00
gallatin
c107f3268b Sync up to v 1.9 of NetBSD's db_trace.c to get access to the
greatly improved traceback code from Ross Harvey.  This code
requires the use of more traceback friendly temporary labels
at kernel entry points, hence the changes to exception.s and
asm.h

Reviewed by: jhb, dfr
Obtained from: NetBSD
MFC after: 1 week
2001-06-08 13:38:02 +00:00
jhb
7a4f835060 Don't hold sched_lock across addupc_task().
Reported by:	David Taylor <davidt@yadt.co.uk>
Submitted by:	bde
2001-06-06 00:57:24 +00:00
mjacob
7a95ffd839 Use correct flag in test whether this interrupt handler is fast or not.
PR:		27866
Submitted by:	Peter Jeremy <peter.jeremy@alcatel.com.au>
2001-06-04 00:52:09 +00:00
gallatin
97157b4d0e Resurrect platform.pci_intr_map() and essentially undo the effects of
the interface conversion to platform.pci_intr_route().  I've left the
platform.pci_intr_route() function pointer in place, as well as
alpha_pci_route_interrupt(), but no platform currently implements it.

To work around the removal of alpha_platform_assign_pciintr(cfg);
from the pci probe code, I've hooked in calls to platform.pci_intr_map()
in pcib_read_config (similar to the x86 APIC_IO ifdef in pci_cfgregread)
for every chipset that has a platform which needs it.

While here, I've removed the interupt mapping/routing code from the
AS2x00 platform because its not required (it has never been present in
-stable).

Tested on: UP1000, Miata(GL), XP1000, AS2100, AS500
2001-06-01 17:39:11 +00:00
gallatin
5eae83e2d8 remove unneeded #include <vm/vm_map.h> 2001-05-31 23:31:34 +00:00
jhb
9a95925dcf GC #if 0'd calls to releasing and acquiring the old style giant kernel
lock.
2001-05-29 23:35:48 +00:00
obrien
01707e0035 One needs to introduce things with a `.file' directive before trying to
do a .loc on it.  BTW, the .loc needs to be in a .text section.
gas 2.11.0 catches these oversights where previous versions did not.
2001-05-28 09:52:21 +00:00
gallatin
a079453922 catch up to i386: Don't acquire Giant just to print the trap and panic 2001-05-25 21:03:40 +00:00
gallatin
8ae035b51b catch up to i386:
- remove Giant for vm related traps
- don't hold Giant for MP safe syscalls

Reviewed-by: jhb
2001-05-23 16:34:07 +00:00
ru
35437d86aa - FDESC, FIFO, NULL, PORTAL, PROC, UMAP and UNION file
systems were repo-copied from sys/miscfs to sys/fs.

- Renamed the following file systems and their modules:
  fdesc -> fdescfs, portal -> portalfs, union -> unionfs.

- Renamed corresponding kernel options:
  FDESC -> FDESCFS, PORTAL -> PORTALFS, UNION -> UNIONFS.

- Install header files for the above file systems.

- Removed bogus -I${.CURDIR}/../../sys CFLAGS from userland
  Makefiles.
2001-05-23 09:42:29 +00:00
gallatin
8a5413bcc8 Change pmap_emulate_reference() so that it only touches the vm_page
flags if it is safe to do so, otherwise it will just alter the pmap state
(eg, clear the appropriate PG_FOx bits).

This gets alpha booting in the face of the vm_mtx introduction.

Reviewed by: dfr
2001-05-21 16:09:29 +00:00
gallatin
1c57c3b027 catch these files up to their i386 neighbors to make alpha boot
prior to the vm_mtx
2001-05-21 16:04:24 +00:00
gallatin
97d9e6d553 fix alpha-MD compile errors after the vm_mtx commit 2001-05-20 16:22:46 +00:00
jhb
59ffccfbd6 - Move the setting of bootverbose to a MI SI_SUB_TUNABLES SYSINIT.
- Attach a writable sysctl to bootverbose (debug.bootverbose) so it can be
  toggled after boot.
- Move the printf of the version string to a SI_SUB_COPYRIGHT SYSINIT just
  afer the display of the copyright message instead of doing it by hand in
  three MD places.
2001-05-17 22:28:46 +00:00
jhb
c87fc95350 Lock the procfs functions for doing a single step and reading/writing
registers better.  Hold sched_lock not only for checking the flag but
also while performing the actual operation to ensure the process doesn't
get swapped out by another CPU while we the operation is being performed.
2001-05-16 00:47:27 +00:00
jhb
3fbeaa9056 Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
jhb
a3d99e2097 Simply the vm fault trap handling code a bit by using if-else instead of
duplicating code in the then case and then using a goto to jump around
the else case.
2001-05-11 23:17:54 +00:00
jhb
465be778a8 Allow sendsig() to hand the proc lock off to osendsig() rather than having
sendsig() release the lock just so it can call osendsig() and have
osendsig() acquire the lock.
2001-05-11 23:17:05 +00:00
jhb
41fc4419f3 - Split out the support for per-CPU data from the SMP code. UP kernels
have per-CPU data and gdb on the i386 at least needs access to it.
- Clean up includes in kern_idle.c and subr_smp.c.

Reviewed by:	jake
2001-05-10 17:45:49 +00:00
mjacob
4626a44bc4 Quick hack to reintroduce the notion that there might be alpha platforms
without an i8254 timer/counter. This really needs to be cleaned up.
2001-05-10 05:23:58 +00:00
jhb
f72ad1a4e5 Include sys/lock.h for witness_list_locks() and axe unneeded sys/mutex.h
include.
2001-05-09 22:08:28 +00:00
markm
bcca5847d5 Undo part of the tangle of having sys/lock.h and sys/mutex.h included in
other "system" header files.

Also help the deprecation of lockmgr.h by making it a sub-include of
sys/lock.h and removing sys/lockmgr.h form kernel .c files.

Sort sys/*.h includes where possible in affected files.

OK'ed by:	bde (with reservations)
2001-05-01 08:13:21 +00:00
jhb
559e5f8890 Turn on preemption by default on the alpha arch. This also removes the
PREEMPTION kernel option.

Not objected to by:	-alpha
2001-05-01 00:19:24 +00:00
jhb
8bfdafc934 Overhaul of the SMP code. Several portions of the SMP kernel support have
been made machine independent and various other adjustments have been made
to support Alpha SMP.

- It splits the per-process portions of hardclock() and statclock() off
  into hardclock_process() and statclock_process() respectively.  hardclock()
  and statclock() call the *_process() functions for the current process so
  that UP systems will run as before.  For SMP systems, it is simply necessary
  to ensure that all other processors execute the *_process() functions when the
  main clock functions are triggered on one CPU by an interrupt.  For the alpha
  4100, clock interrupts are delievered in a staggered broadcast fashion, so
  we simply call hardclock/statclock on the boot CPU and call the *_process()
  functions on the secondaries.  For x86, we call statclock and hardclock as
  usual and then call forward_hardclock/statclock in the MD code to send an IPI
  to cause the AP's to execute forwared_hardclock/statclock which then call the
  *_process() functions.
- forward_signal() and forward_roundrobin() have been reworked to be MI and to
  involve less hackery.  Now the cpu doing the forward sets any flags, etc. and
  sends a very simple IPI_AST to the other cpu(s).  AST IPIs now just basically
  return so that they can execute ast() and don't bother with setting the
  astpending or needresched flags themselves.  This also removes the loop in
  forward_signal() as sched_lock closes the race condition that the loop worked
  around.
- need_resched(), resched_wanted() and clear_resched() have been changed to take
  a process to act on rather than assuming curproc so that they can be used to
  implement forward_roundrobin() as described above.
- Various other SMP variables have been moved to a MI subr_smp.c and a new
  header sys/smp.h declares MI SMP variables and API's.   The IPI API's from
  machine/ipl.h have moved to machine/smp.h which is included by sys/smp.h.
- The globaldata_register() and globaldata_find() functions as well as the
  SLIST of globaldata structures has become MI and moved into subr_smp.c.
  Also, the globaldata list is only available if SMP support is compiled in.

Reviewed by:	jake, peter
Looked over by:	eivind
2001-04-27 19:28:25 +00:00
gallatin
95c1741160 Make stathz match reality on platforms like the 4100 where hz!=1024
It might be more correct to make stathz as close as possible to 128,
but that would involve adding complexity to the clock intr path, which
I don't want to do.
2001-04-27 18:21:25 +00:00
jhb
8ffc16e891 Initialize p_md.md_kernnest to 1 for newly fork'd processes since they
start off in the kernel.
2001-04-26 23:52:40 +00:00
obrien
b65aa4182e Fix SCM ID's and remove tailing blanks. 2001-04-25 20:40:57 +00:00
jhb
82f8beb7b0 - Make the dumping of console messages from the secondary CPU's to the
kernel console be #ifdef DIAGNOSTIC.
- Don't set ktr_mask in release_aps().
2001-04-25 17:24:57 +00:00
gallatin
06672ba7f1 alpha_fpstate_save is fairly expensive (critical enter/exit, possibly
saves 32 registers) to do on every context switch.  This is only required
for SMP, so only do it there.

We should also look at moving the critical enter/exit out to the callers
2001-04-25 13:57:33 +00:00