git: DragonFly_RELEASE_3_0 kernel - Fix three AHCI bugs

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Mar 29 16:07:33 PDT 2012


commit 5ec6adbc2e9fbe864a4eb1f2756d85ecb7880b94
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu Mar 22 21:31:31 2012 -0700

    kernel - Fix three AHCI bugs
    
    * This fixes spurious timeouts which occur on SMP boxes with faster devices
      (such as SSDs or more recent hard drives)
    
    * The global interrupt status register appears to be latched on some parts
      rather than wire-or.  Clearing it after signaling the port threads or
      processing the interrupt can cause interrupts to be lost.
    
    * In cases where it is actually wire-or we may get a double-interrupt,
      but stability is more important here.
    
    * Fix the port signaling code.  The mask was being cleared with the
      port interlock released.  It has to be cleared when the interlock is
      held.
    
    * Reorder the per-port interrupt status register clearing code in two
      places to execute before processing the operation rather than after,
      which may fix another source of lost interrupts.

Summary of changes:
 sys/dev/disk/ahci/ahci.c           |   24 ++++++++++++++++--------
 sys/dev/disk/ahci/ahci_dragonfly.c |    8 ++++----
 2 files changed, 20 insertions(+), 12 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/5ec6adbc2e9fbe864a4eb1f2756d85ecb7880b94


-- 
DragonFly BSD source repository





More information about the Commits mailing list