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