git: DragonFly_RELEASE_3_0 kernel - Fix three AHCI bugs
dillon at crater.dragonflybsd.org
Thu Mar 29 16:07:33 PDT 2012
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
* 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(-)
DragonFly BSD source repository
More information about the Commits