1. 02 11月, 2010 1 次提交
  2. 05 8月, 2010 1 次提交
    • D
      MIPS: PowerTV: Use O(1) algorthm for phys_to_dma/dma_to_phys · ca36c36b
      David VomLehn 提交于
      Replace phys_to_dma()/dma_to_phys() looping algorithm with an O(1) algorithm
      The approach taken is inspired by the sparse memory implementation: take a
      certain number of high-order bits off the address them, use this as an
      index into a table containing an offset to the desired address and add
      it to the original value. There is a table for mapping physical addresses
      to DMA addresses and another one for the reverse mapping. The table sizes
      depend on how fine-grained the mappings need to be; Coarser granularity
      less to smaller tables.  On a processor with 32-bit physical and DMA
      addresses, with 4 MIB granularity, memory usage is two 2048-byte arrays.
      Each 32-byte cache line thus covers 64 MiB of address space.
      
      Also, renames phys_to_bus() to phys_to_dma() and bus_to_phys() to
      dma_to_phys() to align with kernel usage.
      
      [Ralf: Fixed silly build breakage due to stackoverflow warning caused by
      huge array on stack.]
      Signed-off-by: NDavid VomLehn <dvomlehn@cisco.com>
      To: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/1257/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      ca36c36b
  3. 17 12月, 2009 1 次提交