1. 12 Dec, 2015 1 commit
    • Arnd Bergmann's avatar
      netcp: try to reduce type confusion in descriptors · 89907779
      Arnd Bergmann authored
      The netcp driver produces tons of warnings when CONFIG_LPAE is enabled
      on ARM:
      
      drivers/net/ethernet/ti/netcp_core.c: In function 'netcp_tx_map_skb':
      drivers/net/ethernet/ti/netcp_core.c:1084:13: warning: passing argument 1 of 'set_words' from incompatible pointer type [-Wincompatible-pointer-types]
      
      This is the result of trying to pass a pointer to a dma_addr_t to
      a function that expects a u32 pointer to copy that into a DMA descriptor.
      
      Looking at that code in more detail to fix the warnings, I see multiple
      related problems:
      
      * The conversion functions are not endian-safe, as the DMA descriptors
        are almost certainly fixed-endian, but the CPU is not.
      
      * On 64-bit machines, passing a pointer through a u32 variable is a
        bug, accessing an indirect pointer as a u32 pointer even more so.
      
      * The handling of epib and psdata mixes native-endian and device-endian
        data.
      
      In this patch, I try to sort out the types for most accesses here,
      adding le32_to_cpu/cpu_to_le32 where appropriate, and passing pointers
      through two 32-bit words in the descriptor padding, to make it plausible
      that the driver does the right thing if compiled for big-endian or
      64-bit systems.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      89907779
  2. 09 Dec, 2015 24 commits
  3. 08 Dec, 2015 2 commits
  4. 07 Dec, 2015 13 commits