git: kernel - More AHCI work to help support broken AMD chipsets
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Nov 22 15:45:20 PST 2010
commit 493d3201ad53fca9e31c39c1480f9a6b38891cb4
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Mon Nov 22 15:34:56 2010 -0800
kernel - More AHCI work to help support broken AMD chipsets
This cleans up more of our AHCI support for AMD 880/890/SB850 chipsets.
This does NOT clean up hot-plug issues (fixing those might require actually
probing dead ports every few seconds).
* Better PCS/PRCS masking during low level reset sequences to prevent
the PCS/PRCS interrupt from poking ports while we are in a hard reset.
* Breakout the COMRESET sequence into its own procedure.
* Make sure SPM is disabled in addition to IPM when doing a hard reset
of a port. Also make sure that POD (Power Up Device) is set in
addition to SUD (Spin up Device) while we are in a hard reset.
* Wait one full second after aftering DET_INIT (sending COMINIT) before
testing the SSTS bits, to ensure the microcontroller has reinitialized
itself so we do not get bogus bits and to prevent bogus device detection
which some chipsets may have left unmasked.
This may also be needed in general when supporting SATA-III's longer
training times.
* Do not reinit the port after a PM probe fails as it could undo all of
the hard work we did initializing it.
* Reissue the COMRESET if a PM probe fails to ensure that any state left
over from the PM detection gets cleared and to deal with any devices
which brick when they receive a PM-related command.
Summary of changes:
sys/dev/disk/ahci/ahci.c | 158 ++++++++++++++++++++++++++++++-------------
sys/dev/disk/ahci/ahci_pm.c | 2 +-
2 files changed, 111 insertions(+), 49 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/493d3201ad53fca9e31c39c1480f9a6b38891cb4
--
DragonFly BSD source repository
More information about the Commits
mailing list