Skip to content
Snippets Groups Projects
  1. May 27, 2009
    • Benjamin Herrenschmidt's avatar
      powerpc: Fix up dma_alloc_coherent() on platforms without cache coherency. · 8b31e49d
      Benjamin Herrenschmidt authored
      
      The implementation we just revived has issues, such as using a
      Kconfig-defined virtual address area in kernel space that nothing
      actually carves out (and thus will overlap whatever is there),
      or having some dependencies on being self contained in a single
      PTE page which adds unnecessary constraints on the kernel virtual
      address space.
      
      This fixes it by using more classic PTE accessors and automatically
      locating the area for consistent memory, carving an appropriate hole
      in the kernel virtual address space, leaving only the size of that
      area as a Kconfig option. It also brings some dma-mask related fixes
      from the ARM implementation which was almost identical initially but
      grew its own fixes.
      
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      8b31e49d
  2. Mar 24, 2009
  3. Dec 16, 2008
  4. Dec 03, 2008
    • Becky Bruce's avatar
      powerpc: Add sync_*_for_* to dma_ops · 15e09c0e
      Becky Bruce authored
      
      We need to swap these out once we start using swiotlb, so add
      them to dma_ops.  Create CONFIG_PPC_NEED_DMA_SYNC_OPS Kconfig
      option; this is currently enabled automatically if we're
      CONFIG_NOT_COHERENT_CACHE.  In the future, this will also
      be enabled for builds that need swiotlb.  If PPC_NEED_DMA_SYNC_OPS
      is not defined, the dma_sync_*_for_* ops compile to nothing.
      Otherwise, they access the dma_ops pointers for the sync ops.
      
      This patch also changes dma_sync_single_range_* to actually
      sync the range - previously it was using a generous
      dma_sync_single.  dma_sync_single_* is now implemented
      as a dma_sync_single_range with an offset of 0.
      
      Signed-off-by: default avatarBecky Bruce <becky.bruce@freescale.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      15e09c0e
  5. Nov 05, 2008
  6. Sep 24, 2008
    • Becky Bruce's avatar
      powerpc: Merge 32 and 64-bit dma code · 4fc665b8
      Becky Bruce authored
      
      We essentially adopt the 64-bit dma code, with some changes to support
      32-bit systems, including HIGHMEM.  dma functions on 32-bit are now
      invoked via accessor functions which call the correct op for a device based
      on archdata dma_ops.  If there is no archdata dma_ops, this defaults
      to dma_direct_ops.
      
      In addition, the dma_map/unmap_page functions are added to dma_ops
      because we can't just fall back on map/unmap_single when HIGHMEM is
      enabled. In the case of dma_direct_*, we stop using map/unmap_single
      and just use the page version - this saves a lot of ugly
      ifdeffing.  We leave map/unmap_single in the dma_ops definition,
      though, because they are needed by the iommu code, which does not
      implement map/unmap_page.  Ideally, going forward, we will completely
      eliminate map/unmap_single and just have map/unmap_page, if it's
      workable for 64-bit.
      
      Signed-off-by: default avatarBecky Bruce <becky.bruce@freescale.com>
      Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
      4fc665b8
  7. Aug 04, 2008
  8. Jul 26, 2008
    • FUJITA Tomonori's avatar
      dma-mapping: add the device argument to dma_mapping_error() · 8d8bb39b
      FUJITA Tomonori authored
      Add per-device dma_mapping_ops support for CONFIG_X86_64 as POWER
      architecture does:
      
      This enables us to cleanly fix the Calgary IOMMU issue that some devices
      are not behind the IOMMU (http://lkml.org/lkml/2008/5/8/423
      
      ).
      
      I think that per-device dma_mapping_ops support would be also helpful for
      KVM people to support PCI passthrough but Andi thinks that this makes it
      difficult to support the PCI passthrough (see the above thread).  So I
      CC'ed this to KVM camp.  Comments are appreciated.
      
      A pointer to dma_mapping_ops to struct dev_archdata is added.  If the
      pointer is non NULL, DMA operations in asm/dma-mapping.h use it.  If it's
      NULL, the system-wide dma_ops pointer is used as before.
      
      If it's useful for KVM people, I plan to implement a mechanism to register
      a hook called when a new pci (or dma capable) device is created (it works
      with hot plugging).  It enables IOMMUs to set up an appropriate
      dma_mapping_ops per device.
      
      The major obstacle is that dma_mapping_error doesn't take a pointer to the
      device unlike other DMA operations.  So x86 can't have dma_mapping_ops per
      device.  Note all the POWER IOMMUs use the same dma_mapping_error function
      so this is not a problem for POWER but x86 IOMMUs use different
      dma_mapping_error functions.
      
      The first patch adds the device argument to dma_mapping_error.  The patch
      is trivial but large since it touches lots of drivers and dma-mapping.h in
      all the architecture.
      
      This patch:
      
      dma_mapping_error() doesn't take a pointer to the device unlike other DMA
      operations.  So we can't have dma_mapping_ops per device.
      
      Note that POWER already has dma_mapping_ops per device but all the POWER
      IOMMUs use the same dma_mapping_error function.  x86 IOMMUs use device
      argument.
      
      [akpm@linux-foundation.org: fix sge]
      [akpm@linux-foundation.org: fix svc_rdma]
      [akpm@linux-foundation.org: build fix]
      [akpm@linux-foundation.org: fix bnx2x]
      [akpm@linux-foundation.org: fix s2io]
      [akpm@linux-foundation.org: fix pasemi_mac]
      [akpm@linux-foundation.org: fix sdhci]
      [akpm@linux-foundation.org: build fix]
      [akpm@linux-foundation.org: fix sparc]
      [akpm@linux-foundation.org: fix ibmvscsi]
      Signed-off-by: default avatarFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Cc: Muli Ben-Yehuda <muli@il.ibm.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Avi Kivity <avi@qumranet.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8d8bb39b
  9. Jul 09, 2008
  10. Jan 31, 2008
  11. Jan 25, 2008
  12. Dec 20, 2007
    • Michael Ellerman's avatar
      [POWERPC] Implement pci_set_dma_mask() in terms of the dma_ops · 84631f37
      Michael Ellerman authored
      
      PowerPC currently doesn't implement pci_set_dma_mask(), which means drivers
      calling it will get the generic version in drivers/pci/pci.c.
      
      The powerpc dma mapping ops include a dma_set_mask() hook, which luckily is
      not implemented by anyone - so there is no bug in the fact that the hook
      is currently never called.
      
      However in future we'll add implementation(s) of dma_set_mask(), and so we
      need pci_set_dma_mask() to call the hook.
      
      To save adding a hook to the dma mapping ops, pci-set_consistent_dma_mask()
      simply calls the dma_set_mask() hook and then copies the new mask into
      dev.coherenet_dma_mask.
      
      Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      84631f37
  13. Oct 23, 2007
    • Olof Johansson's avatar
      powerpc: Fix fallout from sg_page() changes · 5edadbd0
      Olof Johansson authored
      
      Fix fallout from 18dabf47:
      
      In file included from include/linux/dma-mapping.h:52,
                       from drivers/base/dma-mapping.c:10:
      include/asm/dma-mapping.h: In function 'dma_map_sg':
      include/asm/dma-mapping.h:288: error: 'struct scatterlist' has no member named 'page'
      include/asm/dma-mapping.h:288: error: 'struct scatterlist' has no member named 'page'
      include/asm/dma-mapping.h:288: error: 'struct scatterlist' has no member named 'page'
      include/asm/dma-mapping.h:289: error: 'struct scatterlist' has no member named 'page'
      include/asm/dma-mapping.h:290: error: 'struct scatterlist' has no member named 'page'
      include/asm/dma-mapping.h: In function 'dma_sync_sg_for_cpu':
      include/asm/dma-mapping.h:331: error: 'struct scatterlist' has no member named 'page'
      
      drivers/scsi/ps3rom.c: In function 'fetch_to_dev_buffer':
      drivers/scsi/ps3rom.c:150: error: 'struct scatterlist' has no member named 'page'
      
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      5edadbd0
  14. Oct 16, 2007
  15. Aug 17, 2007
  16. Aug 10, 2007
  17. Jul 11, 2007
  18. Jan 30, 2007
  19. Dec 07, 2006
  20. Dec 04, 2006
  21. Apr 26, 2006
  22. Feb 08, 2006
  23. Jan 09, 2006
  24. Nov 18, 2005
  25. Oct 28, 2005
  26. Oct 08, 2005
  27. Sep 05, 2005
  28. Jul 27, 2005
  29. Apr 16, 2005
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4
Loading