WIP: ATA to CAM integration
mav at FreeBSD.org
Fri Jun 5 17:05:44 UTC 2009
Gary Corcoran wrote:
> suggests strongly that you many not send multiple commands out to a single
> port multiplier. However, I agree that it's not crystal clear, and may not
> be what was intended.
AHCI rev. 1.3:
9.3 FIS-based Switching
FIS-based switching requires the HBA to keep track of additional device
specific context within each HBA port. The HBA must be able to issue
commands to a device while there are still commands outstanding
to other devices that are connected to the same host port through the
Port Multiplier. The HBA must be able to switch DMA context on the fly;
e.g. a Data FIS is received from target X, followed by a Data FIS
from target X+1.
When FIS-based switching is enabled, the hardware shall maintain a
distinct BSY/DRQ bit for up to 16 devices. These bits are distinguished
in the state machine as the pBsy and pDrq arrays. Hardware shall fetch
commands in such a way as to try to ensure commands are issued to all
devices that have BSY/DRQ cleared to ‘0’ and have commands in the
command list. Instances of the BSY/DRQ bits are updated based on the
Port Multiplier port field in Device to Host FISes.
More information about the freebsd-arch