1. 03 10月, 2012 1 次提交
  2. 12 7月, 2012 1 次提交
    • C
      arch/tile: introduce GXIO IORPC framework for tilegx · 37b82b5d
      Chris Metcalf 提交于
      The GXIO I/O RPC subsystem handles exporting I/O hardware resources to
      Linux and to applications running under Linux.
      
      For instance, memory which is made available for I/O DMA must be mapped
      by an I/O TLB; that means that such memory must be locked down by Linux,
      so that it is not swapped or otherwise reused, as long as those I/O
      TLB entries are active. Similarly, configuring direct hardware access
      introduces new validation requirements. If a user application registers
      memory, Linux must ensure that the supplied virtual addresses are valid,
      and turn them into client physical addresses. Similarly, when Linux then
      supplies those client physical addresses to the Tilera hypervisor, it
      must in turn validate those before turning them into the real physical
      addresses which are required by the hardware.
      
      To the extent that these sorts of activities were required on previous
      TILE architecture processors, they were implemented in a device-specific
      fashion. This meant that every I/O device had its own Tilera hypervisor
      driver, its own Linux driver, and in some cases its own user-level
      library support. There was a large amount of more-or-less functionally
      identical code in different places, particularly in the different Linux
      drivers. For TILE-Gx, this support has been generalized into a common
      framework, known as the I/O RPC framework or just IORPC.
      
      The two "gxio" directories (one for headers, one for sources) start
      with just a few files in each with this infrastructure commit, but
      after adding support for the on-board I/O shims for networking, PCI,
      USB, crypto, compression, I2CS, etc., there end up being about 20 files
      in each directory.
      
      More information on the IORPC framework is in the <hv/iorpc.h> header,
      included in this commit.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      37b82b5d