1. 11 Oct, 2018 39 commits
  2. 10 Oct, 2018 1 commit
    • David S. Miller's avatar
      Merge branch 'octeontx2-af-Add-RVU-Admin-Function-driver' · a6deaa99
      David S. Miller authored
      Sunil Goutham says:
      
      ====================
      octeontx2-af: Add RVU Admin Function driver
      
      Resource virtualization unit (RVU) on Marvell's OcteonTX2 SOC maps HW
      resources from the network, crypto and other functional blocks into
      PCI-compatible physical and virtual functions. Each functional block
      again has multiple local functions (LFs) for provisioning to PCI devices.
      RVU supports multiple PCIe SRIOV physical functions (PFs) and virtual
      functions (VFs). PF0 is called the administrative / admin function (AF)
      and has privileges to provision RVU functional block's LFs to each of the
      PF/VF.
      
      RVU managed networking functional blocks
       - Network pool allocator (NPA)
       - Network interface controller (NIX)
       - Network parser CAM (NPC)
       - Schedule/Synchronize/Order unit (SSO)
      
      RVU managed non-networking functional blocks
       - Crypto accelerator (CPT)
       - Scheduled timers unit (TIM)
       - Schedule/Synchronize/Order unit (SSO)
         Used for both networking and non networking usecases
       - Compression (upcoming in future variants of the silicons)
      
      Resource provisioning examples
       - A PF/VF with NIX-LF & NPA-LF resources works as a pure network device
       - A PF/VF with CPT-LF resource works as a pure cyrpto offload device.
      
      This admin function driver neither receives any data nor processes it i.e
      no I/O, a configuration only driver.
      
      PF/VFs communicates with AF via a shared memory region (mailbox). Upon
      receiving requests from PF/VF, AF does resource provisioning and other
      HW configuration. AF is always attached to host, but PF/VFs may be used
      by host kernel itself, or attached to VMs or to userspace applications
      like DPDK etc. So AF has to handle provisioning/configuration requests
      sent by any device from any domain.
      
      This patch series adds logic for the following
       - RVU AF driver with functional blocks provisioning support.
       - Mailbox infrastructure for communication between AF and PFs.
       - CGX (MAC controller) driver which communicates with firmware for
         managing  physical ethernet interfaces. AF collects info from this
         driver and forwards the same to the PF/VFs uaing these interfaces.
      
      This is the first set of patches out of 80+ patches.
      
      Changes from v8:
       1 Removed unnecessary typecasts in entire series
         - Suggested by David Miller
       2 Added COMPILE_TEST to AF driver
         - Suggested by Arnd Bergmann
       3 Changed udelay() to usleep_range() in rvu_poll_reg
         - Suggested by Arnd Bergmann
       4 MSIX vector base IOMMU mapping is done using dma_map_resource()
         API instead of dma_map_single() as it accepts physical address.
         - Issue pointed by Arnd Bergmann
      
      Changes from v7:
       1 Removed unnecessary typecasts in mbox infra code.
         - Suggested by David Miller
       2 Fixed MAINTAINERS patch
         - Suggested by Joe Perches
      
      Changes from v6:
       Fixed ordering of local variables from longest to shortest line.
         - Suggested by David Miller
      
      Changes from v5:
       Modified bitfield based command structures to bitmasks for communication
       with firmware, to address endianness issues.
         - Suggested by Arnd Bergmann
      
      Changes from v4:
       1 Removed module author/version/description from CGX driver as it's now
         merged with AF driver module.
         - Suggested by Arnd Bergmann
       2 Added big-endian bitfields for CGX's kernel <=> firmware communication
         command structures.
         - Suggested by Arnd Bergmann
      
      Changes from v3:
       Moved driver from drivers/soc to drivers/net/ethernet
         - Suggested by Arnd Bergmann
       https://patchwork.kernel.org/cover/10587635/
      
      Changes from v2:
       No changes, submitted again with netdev mailing list in loop.
         - Suggested by Arnd Bergmann and Andrew Lunn
      
      Changes from v1:
       1 Merged RVU admin function and CGX drivers into a single module
         - Suggested by Arnd Bergmann
       2 Pulled mbox communication APIs into a separate module to remove
         admin function driver dependency in a VM where AF is not attached.
         - Suggested by Arnd Bergmann
      ====================
      Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a6deaa99