git: kernel - Fix excessive ipiq recursion
Matthew Dillon
dillon at crater.dragonflybsd.org
Wed Jul 20 00:00:43 PDT 2016
commit ddec9f484d4ca98343162d53318a07db41f7c43a
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Jul 19 23:56:15 2016 -0700
kernel - Fix excessive ipiq recursion
* Fix a situation where excessive IPIQ recursion can occur. The problem
was revealed by the previous commit when the passive signalling mechanism
was changed.
* Passive IPI sends now signal at 1/4 full.
* Active IPI sends wait for the FIFO to be < 1/2 full only when the nesting
level is 0, otherwise they allow it to become almost completely full.
This effectively gives IPI callbacks a buffer of roughly 1/2 the FIFO in
which they can issue IPI sends without triggering the wait-process loop
(which is the cause of the nesting).
IPI callbacks do not usually send more than one or two IPI sends to any
given cpu target which should theoretically guarantee that excessive
stacking will not occur.
Reported-by: marino
Summary of changes:
sys/kern/lwkt_ipiq.c | 57 ++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 46 insertions(+), 11 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/ddec9f484d4ca98343162d53318a07db41f7c43a
--
DragonFly BSD source repository
More information about the Commits
mailing list