DragonFly commits List (threaded) for 2009-06
DragonFly BSD
DragonFly commits List (threaded) for 2009-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

DragonFly-2.3.1.260.g4c339 master sys/dev/disk/ahci ahci.c ahci.h ahci_cam.c ahci_pm.c


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 13 Jun 2009 20:34:38 -0700 (PDT)

commit 4c339a5f388e695f1464ef583b1d0f20b03c5233
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date:   Sat Jun 13 20:27:59 2009 -0700

    AHCI - Implement better timeout semantics, fix bug in error handling, softreset
    
    * Stopping a port with ahci_port_stop() is problematic if the port has not
      already been stopped by the command processor (CR is inactive), because
      command completions can race our saved CI register, leading to
      double-issues.  This creates issues with both NCQ and FBSS support.
    
      Change the timeout code to idle the port by allowing commands to
      complete normally until the only commands remaining are expired.
      Then the port can be safely stopped.
    
      The timeout code also no longer performs a softreset.  It used to under
      certain conditions.
    
    * With the changes to the timeout code softreset is no longer being called
      from the timeout code, remove hacks from the softreset code that attempted
      to restore the command processing state on failure.
    
    * The CAM code was not properly generating dummy SENSE data for command
      timeouts, leading the kernel to believe that the command succeeded
      when it in fact failed.

Summary of changes:
 sys/dev/disk/ahci/ahci.c     |  452 +++++++++++++++++++++---------------------
 sys/dev/disk/ahci/ahci.h     |    1 +
 sys/dev/disk/ahci/ahci_cam.c |    4 +
 sys/dev/disk/ahci/ahci_pm.c  |    2 -
 4 files changed, 226 insertions(+), 233 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4c339a5f388e695f1464ef583b1d0f20b03c5233


-- 
DragonFly BSD source repository



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]