23 Sep, 2009

1 commit


22 Sep, 2009

2 commits

  • drivers/dma/ioat/dma_v3.c: In function 'ioat3_prep_memset_lock':
    drivers/dma/ioat/dma_v3.c:439: warning: 'fill' may be used uninitialized in this function
    drivers/dma/ioat/dma_v3.c:437: warning: 'desc' may be used uninitialized in this function
    drivers/dma/ioat/dma_v3.c: In function '__ioat3_prep_xor_lock':
    drivers/dma/ioat/dma_v3.c:489: warning: 'xor' may be used uninitialized in this function
    drivers/dma/ioat/dma_v3.c:486: warning: 'desc' may be used uninitialized in this function
    drivers/dma/ioat/dma_v3.c: In function '__ioat3_prep_pq_lock':
    drivers/dma/ioat/dma_v3.c:631: warning: 'pq' may be used uninitialized in this function
    drivers/dma/ioat/dma_v3.c:628: warning: 'desc' may be used uninitialized in this function

    gcc-4.0, unlike gcc-4.3, does not see that these variables are
    initialized before use. Convert the descriptor loops to do-while make
    this initialization apparent.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • drivers/dma/ioat/dma_v2.c: In function 'ioat2_dma_prep_memcpy_lock':
    drivers/dma/ioat/dma_v2.c:680: warning: 'hw' may be used uninitialized in this function
    drivers/dma/ioat/dma_v2.c:681: warning: 'desc' may be used uninitialized in this function

    Cc: Maciej Sosnowski
    Signed-off-by: Andrew Morton
    Signed-off-by: Dan Williams

    Andrew Morton
     

17 Sep, 2009

1 commit

  • With the addition of ioat_max_alloc_order it is not clear what the
    maximum allocation order is, so document that in the modinfo. Also take
    an opportunity to kill a stray semicolon.

    Signed-off-by: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Dan Williams
     

15 Sep, 2009

1 commit

  • This patch reworks platform driver power management code
    for at_hdmac from legacy late/early callbacks to dev_pm_ops.

    The callbacks are converted for CONFIG_SUSPEND like this:
    suspend_late() -> suspend_noirq()
    resume_early() -> resume_noirq()

    Signed-off-by: Dan Williams
    Signed-off-by: Rafael J. Wysocki

    Dan Williams
     

11 Sep, 2009

2 commits

  • A new ring implementation and the addition of raid functionality
    constitutes a bump in the driver major version number.

    Signed-off-by: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Dan Williams
     
  • This patch enables DCA support on multiple-IOH/multiple-IIO architectures.
    It modifies dca module by replacing single dca_providers list
    with dca_domains list, each domain containing separate list of providers.
    This approach lets dca driver manage multiple domains, i.e. sets of providers
    and requesters mapped back to the same PCI root complex device.
    The driver takes care to register each requester to a provider
    from the same domain.

    Signed-off-by: Dan Williams
    Signed-off-by: Maciej Sosnowski

    Maciej Sosnowski
     

09 Sep, 2009

33 commits

  • This restriction prevented ASYNC_TX_DMA from being enabled on platform
    configurations where DMA address conversion could not be performed in
    place on the stack. Since commit 04ce9ab3 ("async_xor: permit callers
    to pass in a 'dma/page scribble' region") the async_tx api now either
    uses a caller provided 'scribble' buffer, or performs the conversion in
    place when sizeof(dma_addr_t)

    Dan Williams
     
  • This supported all DMA channels, and it was tested in SH7722,
    SH7780, SH7785 and SH7763.
    This can not use with SH DMA API.

    Signed-off-by: Nobuhiro Iwamatsu
    Reviewed-by: Matt Fleming
    Acked-by: Maciej Sosnowski
    Acked-by: Paul Mundt
    Signed-off-by: Dan Williams

    Nobuhiro Iwamatsu
     
  • Conflicts:
    crypto/async_tx/async_xor.c
    drivers/dma/ioat/dma_v2.h
    drivers/dma/ioat/pci.c
    drivers/md/raid5.c

    Dan Williams
     
  • Dan Williams
     
  • Dan Williams wrote:
    ... DMA-slave clients request specific channels and know the hardware
    details at a low level, so it should not be too high an expectation to
    push dma mapping responsibility to the client.

    Also this patch includes DMA_COMPL_{SRC,DEST}_UNMAP_SINGLE support for
    dw_dmac driver.

    Acked-by: Maciej Sosnowski
    Acked-by: Nicolas Ferre
    Signed-off-by: Atsushi Nemoto
    Signed-off-by: Dan Williams

    Atsushi Nemoto
     
  • Use the DMA_SLAVE capability of the DMAEngine API to copy/from a
    scatterlist into an arbitrary list of hardware address/length pairs.

    This allows a single DMA transaction to copy data from several different
    devices into a scatterlist at the same time.

    This also adds support to enable some controller-specific features such as
    external start and external pause for a DMA transaction.

    [dan.j.williams@intel.com: rebased on tx_list movement]
    Signed-off-by: Ira W. Snyder
    Acked-by: Li Yang
    Acked-by: Kumar Gala
    Signed-off-by: Dan Williams

    Ira Snyder
     
  • When using the Freescale DMA controller in external control mode, both the
    request count and external pause bits need to be setup correctly. This was
    being done with the same function.

    The 83xx controller lacks the external pause feature, but has a similar
    feature called external start. This feature requires that the request count
    bits be setup correctly.

    Split the function into two parts, to make it possible to use the external
    start feature on the 83xx controller.

    Signed-off-by: Ira W. Snyder
    Signed-off-by: Dan Williams

    Ira Snyder
     
  • All the necessary fields for handling an ioat2,3 ring entry can fit into
    one cacheline. Move ->len prior to ->txd in struct ioat_ring_ent, and
    move allocation of these entries to a hw-cache-aligned kmem cache to
    reduce the number of cachelines dirtied for descriptor management.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • The tx_list attribute of struct dma_async_tx_descriptor is common to
    most, but not all dma driver implementations. None of the upper level
    code (dmaengine/async_tx) uses it, so allow drivers to implement it
    locally if they need it. This saves sizeof(struct list_head) bytes for
    drivers that do not manage descriptors with a linked list (e.g.: ioatdma
    v2,3).

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Drop txx9dmac's use of tx_list from struct dma_async_tx_descriptor in
    preparation for removal of this field.

    Cc: Atsushi Nemoto
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Drop at_hdmac's use of tx_list from struct dma_async_tx_descriptor in
    preparation for removal of this field.

    Cc: Nicolas Ferre
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Drop mv_xor's use of tx_list from struct dma_async_tx_descriptor in
    preparation for removal of this field.

    Cc: Saeed Bishara
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Drop ioatdma's use of tx_list from struct dma_async_tx_descriptor in
    preparation for removal of this field.

    Cc: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Drop iop-adma's use of tx_list from struct dma_async_tx_descriptor in
    preparation for removal of this field.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Drop fsldma's use of tx_list from struct dma_async_tx_descriptor in
    preparation for removal of this field.

    Cc: Li Yang
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Drop dw_dmac's use of tx_list from struct dma_async_tx_descriptor in
    preparation for removal of this field.

    Cc: Haavard Skinnemoen
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Dan Williams
     
  • Trivial cleanup to make the PCI ID table easier to read.

    [dan.j.williams@intel.com: extended to v3.2 devices]
    Signed-off-by: Roland Dreier
    Signed-off-by: Dan Williams

    Roland Dreier
     
  • The ioatdma module is missing aliases for the PCI devices it supports,
    so it is not autoloaded on boot. Add a MODULE_DEVICE_TABLE() to get
    these aliases.

    Signed-off-by: Roland Dreier
    Signed-off-by: Dan Williams

    Roland Dreier
     
  • The cleanup routine for the raid cases imposes extra checks for handling
    raid descriptors and extended descriptors. If the channel does not
    support raid it can avoid this extra overhead by using the ioat2 cleanup
    path.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Jasper Forest introduces raid offload support via ioat3.2 support. When
    raid offload is enabled two (out of 8 channels) will report raid5/raid6
    offload capabilities. The remaining channels will only report ioat3.0
    capabilities (memcpy).

    Signed-off-by: Tom Picard
    Signed-off-by: Dan Williams

    Tom Picard
     
  • The async_tx api uses the DMA_INTERRUPT operation type to terminate a
    chain of issued operations with a callback routine.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • If a platform advertises pq capabilities, but not xor, then use
    ioat3_prep_pqxor and ioat3_prep_pqxor_val to simulate xor support.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • ioat3.2 adds support for raid6 syndrome generation (xor sum of galois
    field multiplication products) using up to 8 sources. It can also
    perform an pq-zero-sum operation to validate whether the syndrome for a
    given set of sources matches a previously computed syndrome.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • This adds a hardware specific self test to be called from ioat_probe.
    In the ioat3 case we will have tests for all the different raid
    operations, while ioat1 and ioat2 will continue to just test memcpy.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • ioat3.2 adds xor offload support for up to 8 sources. It can also
    perform an xor-zero-sum operation to validate whether all given sources
    sum to zero, without writing to a destination. Xor descriptors differ
    from memcpy in that one operation may require multiple descriptors
    depending on the number of sources. When the number of sources exceeds
    5 an extended descriptor is needed. These descriptors need to be
    accounted for when updating the DMA_COUNT register.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Tag completion writes for direct cache access to reduce the latency of
    checking for descriptor completions.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Export driver attributes for diagnostic purposes:
    'ring_size': total number of descriptors available to the engine
    'ring_active': number of descriptors in-flight
    'capabilities': supported operation types for this channel
    'version': Intel(R) QuickData specfication revision

    This also allows some chattiness to be removed from the driver startup
    as this information is now available via sysfs.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Up until this point the driver for Intel(R) QuickData Technology
    engines, specification versions 2 and 3, were mostly identical save for
    a few quirks. Version 3.2 hardware adds many new capabilities (like
    raid offload support) requiring some infrastructure that is not relevant
    for v2. For better code organization of the new funcionality move v3
    and v3.2 support to its own file dma_v3.c, and export some routines from
    the base files (dma.c and dma_v2.c) that can be reused directly.

    The first new capability included in this code reorganization is support
    for v3.2 memset operations.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • ioat3.2 adds raid5 and raid6 offload capabilities.

    Signed-off-by: Tom Picard
    Signed-off-by: Dan Williams

    Dan Williams
     
  • In preparation for adding more operation types to the ioat3 path the
    driver needs to honor the DMA_PREP_FENCE flag. For example the async_tx api
    will hand xor->memcpy->xor chains to the driver with the 'fence' flag set on
    the first xor and the memcpy operation. This flag in turn sets the 'fence'
    flag in the descriptor control field telling the hardware that future
    descriptors in the chain depend on the result of the current descriptor, so
    wait for all writes to complete before starting the next operation.

    Note that ioat1 does not prefetch the descriptor chain, so does not
    require/support fenced operations.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Some engines have transfer size and address alignment restrictions. Add
    a per-operation alignment property to struct dma_device that the async
    routines and dmatest can use to check alignment capabilities.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • No drivers currently implement these operation types, so they can be
    deleted.

    Signed-off-by: Dan Williams

    Dan Williams