• Max Gurtovoy's avatar
    IB/mlx5: Implement VHCA tunnel mechanism in DEVX · b6142608
    Max Gurtovoy authored
    This mechanism will allow function-A to perform operations "on behalf" of
    function-B via tunnel object. Function-A will have privileges for creating
    and using this tunnel object.
    
    For example, in the device emulation feature presented in Bluefield-1 SoC,
    using device emulation capability, one can present NVMe function to the
    host OS.
    
    Since the NVMe function doesn't have a normal command interface to the HCA
    HW, here is a need to create a channel that will be able to issue commands
    "on behalf" of this function.
    
    This channel is the VHCA_TUNNEL general object. The emulation software
    will create this tunnel for every managed function and issue commands via
    devx general cmd interface using the appropriate tunnel ID. When devX
    context will receive a command with non-zero vhca_tunnel_id, it will pass
    the command as-is down to the HCA.
    
    All the validation, security and resource tracking of the commands and the
    created tunneled objects is in the responsibility of the HCA FW. When a
    VHCA_TUNNEL object destroyed, the device will issue an internal
    FLR (function level reset) to the emulated function associated with this
    tunnel. This will destroy all the created resources using the tunnel
    mechanism.
    Signed-off-by: default avatarMax Gurtovoy <maxg@mellanox.com>
    Reviewed-by: default avatarYishai Hadas <yishaih@mellanox.com>
    Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    b6142608
devx.c 55.6 KB