git: DragonFly_RELEASE_4_6 kernel - Deal with lost IPIs (VM related)
    Matthew Dillon 
    dillon at crater.dragonflybsd.org
       
    Sun Sep 11 18:12:11 PDT 2016
    
    
  
commit 46b5c9082ad5c4c7de03a86e8cda85240effe576
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Mon Sep 5 17:11:05 2016 -0700
    kernel - Deal with lost IPIs (VM related)
    
    * Some (all?) VMs appear to be able to lose IPIs.  Hopefully the same can't
      be said for device interrupts!  Add some recovery code for lost Xinvltlb
      IPIs for now.
    
      For synchronizing invalidations we use the TSC and run a recovery attempt
      after 1/16 second, and every 1 second there-after, if an Xinvltlb is not
      responded to (smp_invltlb() and smp_invlpg()).  The IPI will be re-issued.
    
    * Some basic testing shows that a VM can stall out a cpu thread for an
      indefinite period of time, potentially causing the above watchdog to
      trigger.  Even so it should not have required re-issuing the IPI, but
      it seems it does, so the VM appears to be losing the IPI(!) when a cpu
      thread stalls out on the host!  At least with the VM we tested under,
      type unknown.
    
    * IPIQ IPIs currently do not have any specific recovery but I think each
      cpu will poll for IPIQs slowly in the idle thread, so they might
      automatically recover anyway.
    
    Reported-by: zach
Summary of changes:
 sys/platform/pc64/x86_64/mp_machdep.c |  24 +++++---
 sys/platform/pc64/x86_64/pmap_inval.c | 113 ++++++++++++++++++++--------------
 2 files changed, 85 insertions(+), 52 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/46b5c9082ad5c4c7de03a86e8cda85240effe576
-- 
DragonFly BSD source repository
    
    
More information about the Commits
mailing list