• Vadim Pasternak's avatar
    platform/x86: mlx-platform: Add initial support for new modular system · a5d8f57e
    Vadim Pasternak authored
    Add initial chassis management support for Nvidia modular Ethernet
    switch systems MSN4800, providing a high performance switching solution
    for Enterprise Data Centers (EDC) for building Ethernet based clusters,
    High-Performance Computing (HPC) and embedded environments.
    
    This system could be equipped with the different types of replaceable
    line cards and management board. The first system flavor will support
    the line card type MSN4800-C16 equipped with Lattice CPLD devices aimed
    for system and ASIC control, one Nvidia FPGA for gearboxes (PHYs)
    management, and four Nvidia gearboxes for the port control and with
    16x100GbE QSFP28 ports and also with various devices for electrical
    control.
    
    The system is equipped with eight slots for line cards, four slots for
    power supplies and six slots for fans. It could be configured as fully
    populated or with even only one line card. The line cards are
    hot-pluggable.
    In the future when more line card flavors are to be available (for
    example line cards with 8x200Gb Eth port, with 4x400 Eth ports, or with
    some kind of smart cards for offloading purpose), any type of line card
    could be inserted at any slot.
    
    The system is based on Nvidia Spectrum-3 ASIC. The switch height is
    4U and it fits standard rack size.
    
    System could be configured as fully populated or with even only one
    line card. The line cards are hot-pluggable.
    
    Line cards are connected to the chassis through I2C interface for the
    chassis management operations and through PCIe for the networking
    operations. Future line cards could be connected to the chassis through
    InfiniBand fabric, instead of PCIe.
    
    The first type of line card supports 16x100GbE QSFP28 Ethernet ports.
    Those line cards equipped with the programmable devices aimed for
    system control of Nvidia Ethernet switch ASIC control, Nvidia FPGA,
    Nvidia gearboxes (PHYs).
    The next coming  card generations are supposed to support:
    - Line cards with 8x200Gbe QSFP28 Ethernet ports.
    - Line cards with 4x400Gbe QSFP-DD Ethernet ports.
    - Smart cards equipped with Nvidia ARM CPU for offloading and for fast
      access to the storage (EBoF).
    - Fabric cards for inter-connection.
    
    The basic system initialization flow with input signals from the
    programmable device to kernel hotplug driver and with OS response
    to some of these signals is depicted below.
    
    lc#n_prsnt	*-> Input: line card presence in/out events.
    		    Informational event. Required action - 'udev' event
    		    generation for logging.
    lc#n_verified	*-> Input: line card verification status events coming
    		    after line card security signature validation by
    		    hardware. Required action - connect line card
    		    driver and initialized line card devices feeding
    		    from system auxiliary power domain.
    lc#n_pwr	<-* Output: line card power on / off from OS. Action
    		    should be performed by platform power management
    		    driver.
    lc#n_powered	*-> Input: line card power on/off events coming after
    		    line card "power good" on/off events, mean that
    		    line card power up sequence has been successfully
    		    completed or line card "power good" status has been
    		    dropped. Required action - connect line card
    		    devices feeding from system main power domain.
    lc#n_synced	*-> Input: line card synchronization events, coming
    		    after hardware-firmware synchronization handshake.
    		    Required action - to enable line card, in case
    		    lc#n_ready has been received before.
    lc#n_ready	*-> Input: line card ready events, indicating line card
    		    PHYs ready / unready states. Required action -
    		    enable line card, in case lc#n_synced has been
    		    received before.
    lc#n_enable	<-* Output: line card enable from OS - release FPGA and
    		    PHYs line card devices from reset state. Action
    		    should be performed by platform power management
    		    driver.
    lc#n_active	*-> Input: when line card "active event" is received
    		    for particular line card, its network, hardware
    		    monitoring and thermal interfaces should be
    		    configured according to the configuration obtained
    		    from the firmware. When opposite "inactive event"
    		    is received all the above interfaces should be
    		    teared down. Required action - connect / disconnect
    		    the above line card interfaces through ASIC I2C
    		    chassis management driver.
    
    For initial support:
    - Define new system type 'VMOD0011' to support new modular system.
    - Provide initial platform configuration for new system type.
    - Extend the registers definitions.
    - Add support for modular system registers related to line card
      specific events - insertion/removal, power on/off, verification
      and activation.
    - Add hotplug configuration for the above events.
    - Add configurations for hotplug actions for the modular system.
    Signed-off-by: default avatarVadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: default avatarMichael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20211002093238.3771419-3-vadimp@nvidia.comSigned-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    a5d8f57e
mlx-platform.c 130 KB