25 Jun, 2009
1 commit
-
This patch does not change actual behaviour since dma_unmap_page is just
an alias of dma_unmap_single on MIPS.Signed-off-by: Atsushi Nemoto
Cc: Ralf Baechle
Acked-by: Dan Williams
Signed-off-by: Andrew Morton
Signed-off-by: Ralf Baechle
17 Jun, 2009
1 commit
-
This patch adds support for the integrated DMAC of the TXx9 family.
Signed-off-by: Atsushi Nemoto
Acked-by: Dan Williams
Signed-off-by: Ralf Baechle
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
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
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 differentSigned-off-by: Kumar Gala
Signed-off-by: Dan Williams
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 -
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 -
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 -
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 -
Fix the check of potential array overflow when using corrupted channel
device tree nodes.Signed-off-by: Roel Kluin
Signed-off-by: Li Yang
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 -
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
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
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
07 Apr, 2009
2 commits
-
Replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32)
Signed-off-by: Yang Hongyang
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Replace all DMA_64BIT_MASK macro with DMA_BIT_MASK(64)
Signed-off-by: Yang Hongyang
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
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
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
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
29 Mar, 2009
1 commit
-
Conflicts:
sound/soc/pxa/pxa2xx-i2s.c
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
26 Mar, 2009
8 commits
-
Use the callback infrastructure to report driver/hardware hangs or
missed interrupts. Since this makes the test threads much more
aggressive (from: explicit 1ms sleep to: wait_for_completion) we set the
nice value to 10 so as to not swamp legitimate tasks.Signed-off-by: Dan Williams
-
Extend dmatest to launch a thread per supported operation type and add
an xor test.Signed-off-by: Dan Williams
-
Provide a config option for blocking the allocation of dma channels to
the async_tx api.Signed-off-by: Dan Williams
-
Centralize this common initialization (and one case where ipu_idmac is
duplicating ->chan initialization).Signed-off-by: Dan Williams
-
Add DMA error handling to the ISR, move common code fragments to functions, fix
scatter-gather element queuing in the ISR, survive channel freeing and
re-allocation in a quick succession.Signed-off-by: Guennadi Liakhovetski
Signed-off-by: Dan Williams -
The i.MX31 IPU DMA driver is a platform driver, but doesn't need hotplug, so we
can use __init and __exit function attributes.Signed-off-by: Guennadi Liakhovetski
Signed-off-by: Dan Williams -
Remove superfluous semicolons, update comments.
Signed-off-by: Guennadi Liakhovetski
Signed-off-by: Dan Williams -
Atsushi points out:
"If alloc_percpu or kzalloc failed, chan_id does not match with its
position in device->channels list.And above "continue" looks buggy anyway. Keeping incomplete channels
in device->channels list looks very dangerous..."Also, fix up leakage of idr_ref in the idr_pre_get() and channel init
fail cases.Reported-by: Atsushi Nemoto
Signed-off-by: Dan Williams
25 Mar, 2009
1 commit
-
Cc: Dan Williams
Acked-by: Greg Kroah-Hartman
Signed-off-by: Kay Sievers
13 Mar, 2009
1 commit
-
This patch adds clkdev support for i.MX31. This is done in a
similar way done previously for i.MX27Signed-off-by: Sascha Hauer
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
05 Mar, 2009
8 commits
-
dmatest_cleanup_chanel will free dtc, so grab ->chan before it goes away
and use it to do the release.Reported-by: Thierry Reding
Signed-off-by: Dan Williams -
fix a probably accidently dropped reference operator while calling
spin_unlock_restore to an ipu lock.Signed-off-by: Luotao Fu
Cc: Guennadi Liakhovetski
Signed-off-by: Andrew Morton
Signed-off-by: Dan Williams -
iop_adma_zero_sum_self_test has the brackets in the wrong place for the
setup failure deallocation path. This error was duplicated in
mv_xor_xor_self_test.Signed-off-by: Roel Kluin
Signed-off-by: Dan Williams -
Prevent dev_err from firing even if we successfully detected 'dma-idle'
before the full 1ms timeout has elapsed.Acked-by: Roel Kluin
Signed-off-by: Dan Williams -
If we miss interrupts in the self test then fail registration of this
channel as it is unsuitable for use as a public channel.Signed-off-by: Maciej Sosnowski
Signed-off-by: Dan Williams -
Together with new fixes update driver version
and extend copyright dates ranges.Signed-off-by: Maciej Sosnowski
Signed-off-by: Shannon Nelson
Acked-by: Jeff Kirsher
Signed-off-by: Dan Williams -
Trivial cleanup, list_del(); list_add_tail() is equivalent
to list_move_tail(). Semantic patch for coccinelle can be
found at www.cccmz.de/~snakebyte/list_move_tail.spatchSigned-off-by: Eric Sesterhenn
Signed-off-by: Maciej Sosnowski
Signed-off-by: Shannon Nelson
Acked-by: Jeff Kirsher
Signed-off-by: Dan Williams -
Upcoming server platforms from Intel based on the Nehalem performance
have significantly improved CPU based copy performance.
However, the DMA engine can still be effective at higher I/O sizes
for TCP traffic and at this time copybreak
should be set to 256k for TCP traffic only.Signed-off-by: Maciej Sosnowski
Signed-off-by: Shannon Nelson
Acked-by: Jeff Kirsher
Signed-off-by: Dan Williams