git: kernel - Change AcpiOs*Lock() operation to reduce freezes

Matthew Dillon dillon at crater.dragonflybsd.org
Sat Apr 7 18:10:16 PDT 2018


commit d5ae73e731c4ba72c78a11582918079fd3b18a30
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Apr 7 18:06:08 2018 -0700

    kernel - Change AcpiOs*Lock() operation to reduce freezes
    
    * Rework the AcpiOs*Lock() functions to use a lockmgr lock + critical
      section instead of a spin lock.  There are situations where the
      ACPI contrib code is holding one of these locks and then issues
      high level calls that might block.
    
    * When called from the idle thread, AcpiOs*Lock() uses a separate
      spin-lock as before.  The idle thread of course is not allowed to
      block (except for HLT related activities).  This lock will be
      independent of the lockmgr lock, so we are assuming that cpu->idle
      operation is independent from ACPI execution on other cpu threads.
    
    * Fixes at least one panic, and also possibly lockups here and
      there.

Summary of changes:
 sys/dev/acpica/Osd/OsdSynch.c | 38 +++++++++++++++++++++++++++++++++-----
 1 file changed, 33 insertions(+), 5 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d5ae73e731c4ba72c78a11582918079fd3b18a30


-- 
DragonFly BSD source repository



More information about the Commits mailing list