AHCI - Intel fixes, error processing fixes.
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 19 Jun 2009 06:49:07 +0000 (23:49 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 19 Jun 2009 06:49:07 +0000 (23:49 -0700)
commit12feb9045df619d387b9ba31534687037610fe73
tree59fc68d2ebea0c0e76c5661beafcd45dc61c6e42
parentba926c3d5d93b6c5e2b9b10541a80d3b1113090c
AHCI - Intel fixes, error processing fixes.

* Allocate separate scratch space to enforce a reasonable alignment
  for the READ LOG page.

* Fix numerous issues with READ LOG / NCQ error processing.  READ LOG
  wasn't working at all before.

* Intel fixes.  Move the SDBE interrupt from the AsyncNotify-only
  code to the general code.  Intel parts seem to use this interrupt
  (and not DPE) to signal completion for NCQ commands, so we get
  timeouts if we don't use it generally.

* Rearrange a great deal of code in a manner similar to how the
  Sili driver was arranged.  Primarily: ATA_F_AUTOSENSE to
  acquire D2H rfis's more reliably, and ATA_F_EXCLUSIVE.  More work
  needs to be done.  Also move the PM probe code to the PM source
  module.

* Add code to deal with D2H ERR fises.  These generate a DHRS
  interrupt but only those which post an ERR in the task file
  stop command processing.  This is not well documented in the
  AHCI specs.
sys/dev/disk/ahci/ahci.c
sys/dev/disk/ahci/ahci.h
sys/dev/disk/ahci/ahci_attach.c
sys/dev/disk/ahci/ahci_cam.c
sys/dev/disk/ahci/ahci_dragonfly.c
sys/dev/disk/ahci/ahci_pm.c
sys/dev/disk/ahci/atascsi.h