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