25 Jun, 2009

1 commit


17 Jun, 2009

1 commit


30 May, 2009

1 commit

  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
    ACPI, i915: build fix (v2)
    acpi-cpufreq: fix printk typo and indentation
    ACPI processor: remove spurious newline from warning message
    drm/i915: acpi/video.c fix section mismatch warning
    ACPI: video: DMI workaround broken Acer 5315 BIOS enabling display brightness
    ACPI: video: DMI workaround broken eMachines E510 BIOS enabling display brightness
    ACPI: sanity check _PSS frequency to prevent cpufreq crash
    i7300_idle: allow testing on i5000-series hardware w/o re-compile
    PCI/ACPI: fix wrong ref count handling in acpi_pci_bind()
    cpuidle: fix AMD C1E suspend hang
    cpuidle: makes AMD C1E work in acpi_idle

    Linus Torvalds
     

29 May, 2009

1 commit

  • Testing the i7300_idle driver on i5000-series hardware required
    an edit to i7300_idle.h to "#define SUPPORT_I5000 1" and a re-build
    of both i7300_idle and ioat_dma.

    Replace that build-time scheme with a load-time module parameter:
    "7300_idle.forceload=1" to make it easier to test the driver
    on hardware that while not officially validated, works fine
    and is much more commonly available.

    By default (no modparam) the driver will continue to load
    only on the i7300.

    Note that ioat_dma runs a copy of i7300_idle's probe routine
    to know to reserve an IOAT channel for i7300_idle.
    This change makes ioat_dma do that always on the i5000,
    just like it does on the i7300.

    Signed-off-by: Len Brown
    Acked-by: Andrew Henroid

    Len Brown
     

28 May, 2009

1 commit

  • We we build with dma_addr_t as a 64-bit quantity we get:

    drivers/dma/fsldma.c: In function 'fsl_chan_xfer_ld_queue':
    drivers/dma/fsldma.c:625: warning: cast to pointer from integer of different size
    drivers/dma/fsldma.c: In function 'fsl_dma_chan_do_interrupt':
    drivers/dma/fsldma.c:737: warning: cast to pointer from integer of different size
    drivers/dma/fsldma.c:737: warning: cast to pointer from integer of different size
    drivers/dma/fsldma.c: In function 'of_fsl_dma_probe':
    drivers/dma/fsldma.c:927: warning: cast to pointer from integer of different

    Signed-off-by: Kumar Gala
    Signed-off-by: Dan Williams

    Kumar Gala
     

22 May, 2009

5 commits

  • When preparing a memcpy operation, if the kernel fails to allocate memory
    for a link descriptor after the first link descriptor has already been
    allocated, then some memory will never be released. Fix the problem by
    walking the list of allocated descriptors backwards, and freeing the
    allocated descriptors back into the DMA pool.

    Signed-off-by: Ira W. Snyder
    Signed-off-by: Li Yang

    Ira Snyder
     
  • On the 83xx controller, snooping is necessary for the DMA controller to
    ensure cache coherence with the CPU when transferring to/from RAM.

    The last descriptor in a chain will always have the End-of-Chain interrupt
    bit set, so we can set the snoop bit while adding the End-of-Chain
    interrupt bit.

    Signed-off-by: Ira W. Snyder
    Signed-off-by: Li Yang

    Ira Snyder
     
  • When creating a DMA transaction with multiple descriptors, the async_tx
    cookie is set to 0 for each descriptor in the chain, excluding the last
    descriptor, whose cookie is set to -EBUSY.

    When fsl_dma_tx_submit() is run, it only assigns a cookie to the first
    descriptor. All of the remaining descriptors keep their original value,
    including the last descriptor, which is set to -EBUSY.

    After the DMA completes, the driver will update the last completed cookie
    to be -EBUSY, which is an error code instead of a valid cookie. This causes
    dma_async_is_complete() to always return DMA_IN_PROGRESS.

    This causes the fsldma driver to never cleanup the queue of link
    descriptors, and the driver will re-run the DMA transaction on the hardware
    each time it receives the End-of-Chain interrupt. This causes an infinite
    loop.

    With this patch, fsl_dma_tx_submit() is changed to assign a cookie to every
    descriptor in the chain. The rest of the code then works without problems.

    Signed-off-by: Ira W. Snyder
    Signed-off-by: Li Yang

    Ira Snyder
     
  • When using the DMA controller from multiple threads at the same time, it is
    possible to get lots of "DMA halt timeout!" errors printed to the kernel
    log.

    This occurs due to a race between fsl_dma_memcpy_issue_pending() and the
    interrupt handler, fsl_dma_chan_do_interrupt(). Both call the
    fsl_chan_xfer_ld_queue() function, which does not protect against
    concurrent accesses to dma_halt() and dma_start().

    The existing spinlock is moved to cover the dma_halt() and dma_start()
    functions. Testing shows that the "DMA halt timeout!" errors disappear.

    Signed-off-by: Ira W. Snyder
    Signed-off-by: Li Yang

    Ira Snyder
     
  • Fix the check of potential array overflow when using corrupted channel
    device tree nodes.

    Signed-off-by: Roel Kluin
    Signed-off-by: Li Yang

    Roel Kluin
     

13 May, 2009

2 commits

  • This also fixes the case of a single queued buffer, for example, when taking a
    single frame snapshot with the mx3_camera driver.

    Reported-by: Agustin Ferrin Pozuelo
    Tested-by: Agustin Ferrin Pozuelo
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Dan Williams

    Guennadi Liakhovetski
     
  • as reported by Alexander Beregalov

    ioatdma 0000:00:08.0: DMA-API: device driver frees DMA memory with
    wrong function [device address=0x000000007f76f800] [size=2000 bytes]
    [map
    ped as single] [unmapped as page]

    The ioatdma driver was unmapping all regions
    (either allocated as page or single) using unmap_page.
    This patch lets dma driver recognize if unmap_single or unmap_page should be used.
    It introduces two new dma control flags:
    DMA_COMPL_SRC_UNMAP_SINGLE and DMA_COMPL_DEST_UNMAP_SINGLE.
    They should be set to indicate dma driver to do dma-unmapping as single
    (first one for the source, tha latter for the destination).
    If respective flag is not set, the driver assumes dma-unmapping as page.

    Signed-off-by: Maciej Sosnowski
    Reported-by: Alexander Beregalov
    Tested-by: Alexander Beregalov
    Signed-off-by: Dan Williams

    Maciej Sosnowski
     

06 May, 2009

1 commit

  • disable_irq() should wait for all running handlers to complete
    before returning. As such, if it's used to disable an interrupt
    from that interrupt's handler it will deadlock. This replaces
    the dangerous instances with the _nosync() variant which doesn't
    have this problem.

    Note the 2 handlers in question are only used #ifdef DEBUG so
    I imagine these code paths don't get hit often.

    Signed-off-by: Ben Nizette
    Acked-by: Guennadi Liakhovetski
    Signed-off-by: Dan Williams

    Ben Nizette
     

09 Apr, 2009

1 commit

  • The check for reaching max_channels is short circuited by 'continuing'
    after successfully adding a channel.

    [ Impact: make the 'max_channels' module parameter actually have an effect ]

    Cc:
    Reported-by: Dan Carpenter
    Signed-off-by: Dan Williams

    Dan Williams
     

07 Apr, 2009

2 commits


04 Apr, 2009

1 commit

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
    dma: Add SoF and EoF debugging to ipu_idmac.c, minor cleanup
    dw_dmac: add cyclic API to DW DMA driver
    dmaengine: Add privatecnt to revert DMA_PRIVATE property
    dmatest: add dma interrupts and callbacks
    dmatest: add xor test
    dmaengine: allow dma support for async_tx to be toggled
    async_tx: provide __async_inline for HAS_DMA=n archs
    dmaengine: kill some unused headers
    dmaengine: initialize tx_list in dma_async_tx_descriptor_init
    dma: i.MX31 IPU DMA robustness improvements
    dma: improve section assignment in i.MX31 IPU DMA driver
    dma: ipu_idmac driver cosmetic clean-up
    dmaengine: fail device registration if channel registration fails

    Linus Torvalds
     

03 Apr, 2009

1 commit

  • Add Start-of-Frame and End-of-Frame debugging to ipu_idmac.c, in the
    future it might also be needed for the actual video processing in
    mx3-camera, at which point, the ISRs will have to be transferred to
    mx3_camera.c, for which ipu_irq_map() and ipu_irq_unmap() functions will
    have to be exported.

    Also simplify a couple of pointer-dereferences.

    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Dan Williams

    Guennadi Liakhovetski
     

02 Apr, 2009

1 commit

  • This patch adds a cyclic DMA interface to the DW DMA driver. This is
    very useful if you want to use the DMA controller in combination with a
    sound device which uses cyclic buffers.

    Using a DMA channel for cyclic DMA will disable the possibility to use
    it as a normal DMA engine until the user calls the cyclic free function
    on the DMA channel. Also a cyclic DMA list can not be prepared if the
    channel is already active.

    Signed-off-by: Hans-Christian Egtvedt
    Acked-by: Haavard Skinnemoen
    Acked-by: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Hans-Christian Egtvedt
     

29 Mar, 2009

1 commit


27 Mar, 2009

1 commit

  • Currently dma_request_channel() set DMA_PRIVATE capability but never
    clear it. So if a public channel was once grabbed by
    dma_request_channel(), the device stay PRIVATE forever. Add
    privatecnt member to dma_device to correctly revert it.

    [lg@denx.de: fix bad usage of 'chan' in dma_async_device_register]
    Signed-off-by: Atsushi Nemoto
    Acked-by: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Atsushi Nemoto
     

26 Mar, 2009

8 commits


25 Mar, 2009

1 commit


13 Mar, 2009

1 commit


09 Mar, 2009

1 commit

  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
    dmatest: fix use after free in dmatest_exit
    ipu_idmac: fix spinlock type
    iop-adma, mv_xor: fix mem leak on self-test setup failure
    fsldma: fix off by one in dma_halt
    I/OAT: fail self-test if callback test reaches timeout
    I/OAT: update driver version and copyright dates
    I/OAT: list usage cleanup
    I/OAT: set tcp_dma_copybreak to 256k for I/OAT ver.3
    I/OAT: cancel watchdog before dma remove
    I/OAT: fail initialization on zero channels detection
    I/OAT: do not set DCACTRL_CMPL_WRITE_ENABLE for I/OAT ver.3
    I/OAT: add verification for proper APICID_TAG_MAP setting by BIOS
    dmaengine: update kerneldoc

    Linus Torvalds
     

05 Mar, 2009

8 commits