kernel - 48-core MP work
authorMatthew Dillon <dillon@apollo.backplane.com>
Sat, 11 Dec 2010 23:47:01 +0000 (15:47 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sat, 11 Dec 2010 23:47:01 +0000 (15:47 -0800)
commitcbdd23b1e5d007ed3aa4b7b24b111f3f3e0561cb
treeb4de3815d0e58e1bed627cc5b66dc7ecf4ab3214
parent877e14ee88b4cc0886dd7f2c4f8cc75b9e35178b
kernel - 48-core MP work

* Replace the cpu_contention_mask global with a per-token contention mask.

* Fold the lwkt.user_pri_sched feature into the scheduler and remove the
  sysctl.  The feature is now alwayws on.  The feature allows a lower
  priority non-contending thread to be scheduled in the face of a
  high-priority contending thread that would normally spin in the scheduler.

* A reschedule IPI is now performed when a high-priority contending thread
  might possibly resolve, which will kick the user process back into the
  kernel and allow rescheduling of the higher priority thread.

* Change the idle-cpu check semantics.  When a cpu's scheduler finds only
  contending threads it used to loop in the scheduler and the idle thread
  would be flagged to not halt.  We now allow the idle thread to halt in
  this case and expect to receive an IPI when any of the contending threads
  might possibly resolve.

  As a fringe benefit this should also benefit vkernels.

* lwkt_schedule() has been significantly simplified.  Or as I would say,
  decomplexified.
sys/dev/acpica5/acpi_cpu_cstate.c
sys/kern/lwkt_thread.c
sys/kern/lwkt_token.c
sys/platform/pc32/i386/machdep.c
sys/platform/pc64/x86_64/machdep.c
sys/platform/vkernel/i386/cpu_regs.c
sys/platform/vkernel64/x86_64/cpu_regs.c
sys/sys/globaldata.h
sys/sys/mplock2.h
sys/sys/thread.h