• Logan Gunthorpe's avatar
    ntb_hw_switchtec: Add initialization code for crosslink · 01752501
    Logan Gunthorpe authored
    Crosslink is a feature of the Switchtec switches that is similar to
    the B2B mode of other NTB devices. It allows a system to be designed
    that is perfectly symmetric with two identical switches that link
    two hosts together.
    
    In order for the system to be symmetric, there is an empty host-less
    partition between the two switches which the host must enumerate and
    assign BAR addresses to. The firmware in the switch manages this
    specially so that the BAR addresses on both sides of the empty
    partition will be identical despite being in the same partition with
    the same address space.
    
    The driver determines whether crosslink is enabled by a flag set in
    the NTB partition info registers which are set by the switch's
    configuration file.
    
    When crosslink is enabled, a reserved LUT window is setup to point to
    the peer's switch's NTB registers and the local MWs are set to forward
    to the host-less partition's BARs. (Yes, this hurts my brain too.)
    Once this is setup, largely the same NTB infrastructure is used to
    communicate between the two hosts.
    Signed-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
    Signed-off-by: default avatarJon Mason <jdmason@kudzu.us>
    01752501
ntb_hw_switchtec.c 35.4 KB