Kernel reflects unhandled faults to SCPs
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 13 Jul 2015 22:10:28 +0000 (18:10 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jul 2015 20:07:53 +0000 (16:07 -0400)
commit2b9d7984120d920864bf9ee433c86e2a781bb3a6
tree4f2b32d7b8e0819e1b163328fb91c1041a1a34c3
parent5b696b1fc6d4ff81812f54e4bd78d86b399e00d5
Kernel reflects unhandled faults to SCPs

The lack of verbosity from userspace can be a little difficult.  Just a
trapframe isn't always enough.  To fix this, you can turn on printx to
have the kernel spew whatever info it has for any malignant faults
(non-benign).  Benign faults are those that occur during normal
operation.

At this point, the kernel shouldn't care at all if an SCP uses a 2LS or
not.  Outside proc code, the major places that care about SCP vs MCP are
the scheduler, event code (just spam messages to VC 0), and the page
fault handler (helps out SCPs).

The latter point means that SCPs with 2LSs won't actually get their
VMR-backed page faults reflected - instead the kernel just blocks them.
Considering how there is no guarantee to SCPs that they retain their
core during blocking events, I'm okay with this for now.

The alternative is to have a more capable __scp_thread_refl_fault()
handler and slightly worse performance for all processes before they
turn into MCPs (more expensive PFs when they are initializing).
kern/include/process.h
kern/src/process.c
kern/src/trap.c
user/parlib/thread0_sched.c
user/pthread/pthread.c