DragonFly-2.3.1.209.g17eab master sys/dev/disk/ahci ahci.c ahci.h ahci_cam.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue Jun 9 01:59:25 PDT 2009
commit 17eab71eccd5f3dda84b5d70ba6e7156732915c1
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Jun 9 01:50:36 2009 -0700
AHCI bug fixes & enhancements. port_init, port_stop, port_start, etc.
* When initializing the AHCI device do an unconditional reset instead of
a conditional reset. The previous conditional reset did not cover
all the bases and could result in an unusable device.
* Remove the second (unused) argument from ahci_port_start().
* ahci_port_init() - init/reinit common code. If the hard reset
fails try a second time before giving up. Devices can get into
weird states and two attempts seems to clear it up.
* ahci_port_start() - FRE must be turned on before ST. Wait for FR
to come up before turning on ST. The spec does not require this but
it saves us from a race in ahci_port_stop() so do it anyway.
* ahci_port_stop() - When turning off ST we must wait for CR to go
inactive before we can turn off FRE.
* ahci_port_free() - Properly sequence stopping of the port by calling
ahci_port_stop().
* Create a consolidated ahci_port_reset() call to clean up some of the
code paths.
Summary of changes:
sys/dev/disk/ahci/ahci.c | 214 +++++++++++++++++++++++++++---------------
sys/dev/disk/ahci/ahci.h | 3 +-
sys/dev/disk/ahci/ahci_cam.c | 5 +-
3 files changed, 141 insertions(+), 81 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/17eab71eccd5f3dda84b5d70ba6e7156732915c1
--
DragonFly BSD source repository
More information about the Commits
mailing list