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