03 Nov, 2011

1 commit


11 Aug, 2010

1 commit

  • Architectures implement dma_is_consistent() in different ways (some
    misinterpret the definition of API in DMA-API.txt). So it hasn't been so
    useful for drivers. We have only one user of the API in tree. Unlikely
    out-of-tree drivers use the API.

    Even if we fix dma_is_consistent() in some architectures, it doesn't look
    useful at all. It was invented long ago for some old systems that can't
    allocate coherent memory at all. It's better to export only APIs that are
    definitely necessary for drivers.

    Let's remove this API.

    Signed-off-by: FUJITA Tomonori
    Cc: James Bottomley
    Reviewed-by: Konrad Rzeszutek Wilk
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     

13 Mar, 2010

7 commits

  • Signed-off-by: FUJITA Tomonori
    Cc: James Bottomley
    Cc: "David S. Miller"
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • - remove the PCI DMA API description in DMA-API.txt
    - remove the descriptions of dma_unmap macros since
    PCI-DMA-mapping.txt has the same description.

    Signed-off-by: FUJITA Tomonori
    Cc: James Bottomley
    Cc: "David S. Miller"
    Reviewed-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • dma_set_coherent_mask corresponds to pci_set_consistent_dma_mask. This is
    necessary to move to the generic device model DMA API from the PCI bus
    specific API in the long term.

    dma_set_coherent_mask works in the exact same way that
    pci_set_consistent_dma_mask does. So this patch also changes
    pci_set_consistent_dma_mask to call dma_set_coherent_mask.

    Signed-off-by: FUJITA Tomonori
    Cc: James Bottomley
    Cc: David S. Miller
    Cc: Jesse Barnes
    Cc: Benjamin Herrenschmidt
    Cc: Russell King
    Cc: Greg KH
    Cc: Kay Sievers
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • Adds the following macros:

    DECLARE_DMA_UNMAP_ADDR(ADDR_NAME)
    DECLARE_DMA_UNMAP_LEN(LEN_NAME)
    dma_unmap_addr(PTR, ADDR_NAME)
    dma_unmap_addr_set(PTR, ADDR_NAME, VAL)
    dma_unmap_len(PTR, LEN_NAME)
    dma_unmap_len_set(PTR, LEN_NAME, VAL)

    The API corresponds to the pci_unmap state API. We'll move to this new
    generic API from the PCI specific API in the long term. As
    include/asm-generic/pci-dma-compat.h does, the pci_unmap API simply calls
    the new generic API for some time.

    Signed-off-by: FUJITA Tomonori
    Cc: James Bottomley
    Cc: David S. Miller
    Cc: Jesse Barnes
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • dma_sync_single_for_cpu/for_device supports a partial sync so there is no
    point to have dma_sync_single_range (also dma_sync_single was obsoleted
    long ago, replaced with dma_sync_single_for_cpu/for_device).

    There is no user of dma_sync_single_range() in mainline and only Alpha
    architecture supports dma_sync_single_range(). So it's unlikely that
    someone out of the tree uses it.

    Signed-off-by: FUJITA Tomonori
    Acked-by: David Miller
    Acked-by: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • This adds the description of the following eight function:

    dma_sync_single_for_cpu
    pci_dma_sync_single_for_cpu
    dma_sync_single_for_device
    pci_dma_sync_single_for_device
    dma_sync_sg_for_cpu
    pci_dma_sync_sg_for_cpu
    dma_sync_sg_for_device
    pci_dma_sync_sg_for_device

    It was unclear that the API permits a partial sync (some network drivers
    already do though). I made it clear that the sync_single API can do a
    partial sync but the sync_sg API can't.

    We could do a partial sync with the sync_sg API too, however, it's
    difficult for driver writers to correctly use the sync_sg API for a
    partial sync since the scatterlists passed in to the mapping API can't be
    modified. It's unlikely that driver writers want to do a partial sync
    with the sync_sg API (because the sync_sg API are usually used for block
    drivers). So I think that it's better to forbid a partial sync with the
    sync_sg API.

    Signed-off-by: FUJITA Tomonori
    Acked-by: David Miller
    Acked-by: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • dma_sync_single(), pci_dma_sync_single(), dma_sync_sg(), and
    pci_dma_sync_sg() are deprecated. We should not advertise them.

    Signed-off-by: FUJITA Tomonori
    Acked-by: David S. Miller
    Acked-by: Joerg Roedel
    Cc: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     

13 Jun, 2009

1 commit


02 Jun, 2009

1 commit


17 Mar, 2009

1 commit


30 Jan, 2009

1 commit

  • Move DMA-mapping.txt to Documentation/PCI/.

    DMA-mapping.txt was supposed to be moved from Documentation/ to
    Documentation/PCI/. The 00-INDEX files in those two directories
    were updated, along with a few other text files, but the file
    itself somehow escaped being moved, so move it and update more
    text files and source files with its new location.

    Signed-off-by: Randy Dunlap
    Acked-by: Greg Kroah-Hartman
    cc: Jesse Barnes
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

16 Jan, 2009

1 commit

  • Create a platform specific version of dma_get_required_mask()
    for ia64 SN Altix. All SN Altix platforms support 64 bit DMA
    addressing regardless of the size of system memory.
    Create an ia64 machvec for dma_get_required_mask, with the
    SN version unconditionally returning DMA_64BIT_MASK.

    Signed-off-by: John Keller
    Signed-off-by: Tony Luck

    John Keller
     

02 Dec, 2008

1 commit

  • - pci_map_sg/dma_map_sg are used with a scatter gather list that doesn't
    come from the block layer (e.g. some network drivers do).

    - how IOMMUs merge adjacent elements of the scatter/gather list is
    independent of how the block layer determines sees elements.

    Signed-off-by: FUJITA Tomonori
    Cc: James Bottomley
    Cc: Tejun Heo
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     

09 Oct, 2008

1 commit


27 Jul, 2008

1 commit

  • 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: FUJITA Tomonori
    Cc: Muli Ben-Yehuda
    Cc: Andi Kleen
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: Avi Kivity
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     

29 Apr, 2008

2 commits

  • Fix kernel bugzilla #10388.

    DMA-API.txt has wrong argument type for some functions. It uses struct device
    but should use struct pci_dev.

    Signed-off-by: Randy Dunlap
    Acked-by: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • Document the new dma_*map*_attrs() functions.

    [markn@au1.ibm.com: fix up for dma-add-dma_map_attrs-interfaces and update docs]
    Signed-off-by: Arthur Kepner
    Acked-by: David S. Miller
    Cc: Tony Luck
    Cc: Jesse Barnes
    Cc: Jes Sorensen
    Cc: Randy Dunlap
    Cc: Roland Dreier
    Cc: James Bottomley
    Cc: Benjamin Herrenschmidt
    Cc: Grant Grundler
    Cc: Michael Ellerman
    Signed-off-by: Mark Nelson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arthur Kepner
     

13 Oct, 2007

1 commit

  • On at least ARM (and I'm told MIPS too) dma_free_coherent() has a newish
    call context requirement: unlike its dma_alloc_coherent() sibling, it may
    not be called with IRQs disabled. (This was new behavior on ARM as of late
    2005, caused by ARM SMP updates.) This little surprise can be annoyingly
    driver-visible.

    Since it looks like that restriction won't be removed, this patch changes
    the definition of the API to include that requirement. Also, to help catch
    nonportable drivers, it updates the x86 and swiotlb versions to include the
    relevant warnings. (I already observed that it trips on the
    bus_reset_tasklet of the new firewire_ohci driver.)

    Signed-off-by: David Brownell
    Cc: David Miller
    Acked-by: Russell King
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    David Brownell
     

01 Aug, 2007

1 commit

  • Fix typos and update function parameters.

    Signed-off-by: Randy Dunlap
    Acked-by: Muli Ben-Yehuda
    Cc: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

08 Dec, 2006

3 commits

  • Pass struct dev pointer to dma_cache_sync()

    dma_cache_sync() is ill-designed in that it does not have a struct device
    pointer argument which makes proper support for systems that consist of a
    mix of coherent and non-coherent DMA devices hard. Change dma_cache_sync
    to take a struct device pointer as first argument and fix all its callers
    to pass it.

    Signed-off-by: Ralf Baechle
    Cc: James Bottomley
    Cc: "David S. Miller"
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     
  • dma_is_consistent() is ill-designed in that it does not have a struct
    device pointer argument which makes proper support for systems that consist
    of a mix of coherent and non-coherent DMA devices hard. Change
    dma_is_consistent to take a struct device pointer as first argument and fix
    the sole caller to pass it.

    Signed-off-by: Ralf Baechle
    Cc: James Bottomley
    Cc: "David S. Miller"
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     
  • Replace all uses of kmem_cache_t with struct kmem_cache.

    The patch was generated using the following script:

    #!/bin/sh
    #
    # Replace one string by another in all the kernel sources.
    #

    set -e

    for file in `find * -name "*.c" -o -name "*.h"|xargs grep -l $1`; do
    quilt add $file
    sed -e "1,\$s/$1/$2/g" $file >/tmp/$$
    mv /tmp/$$ $file
    quilt refresh
    done

    The script was run like this

    sh replace kmem_cache_t "struct kmem_cache"

    Signed-off-by: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

30 Nov, 2006

1 commit

  • This patch fixes typos in various Documentation txts. The patch addresses some
    +words starting with the letters 'U-Z'.

    Looks like I made it through the alphabet...just in time to start over again
    +too! Maybe I can fit more profound fixes into the next round...? Time will
    +tell. :)

    Signed-off-by: Matt LaPlante
    Acked-by: Randy Dunlap
    Signed-off-by: Adrian Bunk

    Matt LaPlante
     

15 Apr, 2006

1 commit

  • This updates the DMA API documentation to address a few issues:

    - The dma_map_sg() call results are used like pci_map_sg() results:
    using sg_dma_address() and sg_dma_len(). That's not wholly obvious
    to folk reading _only_ the "new" DMA-API.txt writeup.

    - Buffers allocated by dma_alloc_coherent() may not be completely
    free of coherency concerns ... some CPUs also have write buffers
    that may need to be flushed.

    - Cacheline coherence issues are now mentioned as being among issues
    which affect dma buffers, and complicate/prevent using of static and
    (especially) stack based buffers with the DMA calls.

    I don't think many drivers currently need to worry about flushing write
    buffers, but I did hit it with one SOC using external SDRAM for DMA
    descriptors: without explicit writebuffer flushing, the on-chip DMA
    controller accessed descriptors before the CPU completed the writes.

    Signed-off-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    David Brownell
     

11 Sep, 2005

1 commit

  • The attached patch fixes the following spelling errors in Documentation/
    - double "the"
    - Several misspellings of function/functionality
    - infomation
    - memeory
    - Recieved
    - wether
    and possibly others which I forgot ;-)
    Trailing whitespaces on the same line as the typo are also deleted.

    Signed-off-by: Tobias Klauser
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tobias Klauser
     

17 Apr, 2005

1 commit

  • 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!

    Linus Torvalds