DragonFly-126.96.36.199.gf4553 master sys/dev/disk/ahci ahci.c ahci.h ahci_attach.c ahci_cam.c ahci_dragonfly.c ahci_dragonfly.h atascsi.h
dillon at crater.dragonflybsd.org
Fri Jun 12 14:51:40 PDT 2009
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Fri Jun 12 14:45:35 2009 -0700
AHCI - Implement parallel port scan and thread each port interrupt.
* Implement a thread helper for each port. The master interrupt will perform
all actions which can be done without blocking and will delegate any
remaining actions (typically error and timeout handling) to the
port's thread helper.
* The thread helper is responsible for the initial probe. Thus ALL AHCI
SATA PORTS WILL NOW PROBE IN PARALLEL! Instead of 6 ports each taking
2 seconds to probe we now have 6 ports probing in a total of 2 seconds.
* Multiple port multipliers will probe in parallel, but targets on each
one have to be iterated.
* The attach code waits for all ports to fully probe and then runs CAM
attachments serially. This step goes very quickly since the ports
have already probed.
* Stalls on one physical port will no longer stall the rest of the ports.
So, for example, stalls on the port connected to your port multiplier
will not effect operations on, say, your internal SATA ports.
Summary of changes:
sys/dev/disk/ahci/ahci.c | 273 +++++++++++++++++++++++++++---------
sys/dev/disk/ahci/ahci.h | 26 +++-
sys/dev/disk/ahci/ahci_attach.c | 56 +++++---
sys/dev/disk/ahci/ahci_cam.c | 100 +++++++-------
sys/dev/disk/ahci/ahci_dragonfly.c | 119 ++++++++++++++++
sys/dev/disk/ahci/ahci_dragonfly.h | 1 +
sys/dev/disk/ahci/atascsi.h | 1 +
7 files changed, 437 insertions(+), 139 deletions(-)
DragonFly BSD source repository
More information about the Commits