]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
- Currently, sched_balance_pair() may cause a CPU to send an IPI_PREEMPT to
authormarius <marius@FreeBSD.org>
Thu, 6 Oct 2011 11:48:13 +0000 (11:48 +0000)
committermarius <marius@FreeBSD.org>
Thu, 6 Oct 2011 11:48:13 +0000 (11:48 +0000)
commit1b1d84970aeb66200a907417b3a575737ae64db2
tree62e61902376a6238af699856b2becd8def1a7f01
parent8cb5f6fec8bffb90f27a43c9046239a7b9cf70c5
- Currently, sched_balance_pair() may cause a CPU to send an IPI_PREEMPT to
  itself, which sparc64 hardware doesn't support. One way to solve this
  would be to directly call sched_preempt() instead of issuing a self-IPI.
  However, quoting jhb@:
  "On the other hand, you can probably just skip the IPI entirely if we are
  going to send it to the current CPU.  Presumably, once this routine
  finishes, the current CPU will exit softlock (or will do so "soon") and
  will then pick the next thread to run based on the adjustments made in
  this routine, so there's no need to IPI the CPU running this routine
  anyway.  I think this is the better solution.  Right now what is probably
  happening on other platforms is as soon as this routine finishes the CPU
  processes its self-IPI and causes mi_switch() which will just switch back
  to the softclock thread it is already running."
- With r226054 and the the above change in place, sparc64 now no longer is
  incompatible with ULE and vice versa. However, powerpc/E500 still is.

Submitted by: jhb
Reviewed by: jeff
sys/kern/sched_ule.c