WIP: ATA to CAM integration

Matthew Dillon dillon at apollo.backplane.com
Fri Jun 5 17:28:16 UTC 2009

:Latest AHCI specifications define feature named FIS Based Switching. It 
:allows controller independently track state of every device beyond port 
:multiplier. It should be quite easy to use it, but actually none of my 
:controllers have that capability.

    Damn.  The FBSS capability bit is not set on my (AMD) MCP77 based AHCI
    SATA controller.  That sucks.

    ahci0: <NVidia-MCP77-SATA>...
    ahci0: AHCI 1.2 capabilities 0xe3229f05<S64A,NCQ,SSNTF,SAL,SCLO,SPM,PMD>,
	   6 port

    Do you know of any host controllers which support FBS ?  Any of the
    Intel parts or machines per-chance?

:As I have said, without controller FIS Based Switching capability it is 
:impossible. FBS defines separate memory areas for controller, to track 
:there state of each drive behind PM. Without it, only one drive can be 
:active at a time, as controller will not be able to track when each 
:drive is able to receive next command..

    Now it makes sense... the 1.0 spec only had one RFIS per port.  With
    only one RFIS area per port it is impossible to track multiple ports
    behind the PM simultaniously.

    The 1.3 specification (along with FBSS being set) has 16 RFIS areas
    per port, plus BSY bits for each, thus fixing the problem.

    This is really annoying.  It effectively serializes access to multiple
    disks behind a port multiplier on non-FBSS controllers.  That makes
    non-FBSS port-multiplied disk enclosures almost worthless from a
    performance standpoint.

					Matthew Dillon 
					<dillon at backplane.com>

More information about the freebsd-current mailing list