AHCI - Add Port Multiplier HOTPLUG support
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 12 Jun 2009 06:10:06 +0000 (23:10 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 12 Jun 2009 06:10:06 +0000 (23:10 -0700)
commit3209f581df87eb2723810cc4f0dcb8be697198e9
tree40956bf194d06198ff4fa48568bb80fbdb9b83bc
parent87993e5a511ecd0480e5e1381ad4fbf572ed73f8
AHCI - Add Port Multiplier HOTPLUG support

* Add a ton of infrastructure to the port multiplier module.  We now probe
  the PM capabilities and turn on asynchronous notification if it supports
  it.

  Upon reception of an async notification event we access the PM to
  determine which targets may have changed state, then rescan those
  targets.

* Add code to handle transient IFS failures when issuing a PM softreset
  command.

* Significantly rework the CAM infrastructure such that most of the hard
  work now occurs from a main context instead of from an interrupt context.

* Replace all DELAY()'s with ahci_os_sleep(), and use tsleep().

* Use milliseconds as a universal time-base.

* Do not initiate a timeout until a CCB is actually sent to the
  chip.

* Improve the device probe and state machine (it still needs work though).
sys/dev/disk/ahci/TODO
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_dragonfly.h
sys/dev/disk/ahci/ahci_pm.c
sys/dev/disk/ahci/atascsi.h