https://github.com/torvalds/linux
Revision 0ec9ebc706fbd394bc233d87ac7aaad1c4f3ab54 authored by Thomas Petazzoni on 08 July 2015, 14:28:14 UTC, committed by Vinod Koul on 31 July 2015, 15:03:43 UTC
Commit 6f166312c6ea2 ("dmaengine: mv_xor: add support for a38x command in descriptor mode") introduced the support for a feature that appeared in Armada 38x: specifying the operation to be performed in a per-descriptor basis rather than globally per channel. However, when doing so, it changed the function mv_chan_set_mode() to use: if (IS_ENABLED(__BIG_ENDIAN)) instead of: #if defined(__BIG_ENDIAN) While IS_ENABLED() is perfectly fine for CONFIG_* symbols, it is not for other symbols such as __BIG_ENDIAN that is provided directly by the compiler. Consequently, the commit broke support for big-endian, as the XOR_DESCRIPTOR_SWAP flag was not set in the XOR channel configuration register. The primarily visible effect was some nasty warnings and failures appearing during the self-test of the XOR unit: [ 1.197368] mv_xor d0060900.xor: error on chan 0. intr cause 0x00000082 [ 1.197393] mv_xor d0060900.xor: config 0x00008440 [ 1.197410] mv_xor d0060900.xor: activation 0x00000000 [ 1.197427] mv_xor d0060900.xor: intr cause 0x00000082 [ 1.197443] mv_xor d0060900.xor: intr mask 0x000003f7 [ 1.197460] mv_xor d0060900.xor: error cause 0x00000000 [ 1.197477] mv_xor d0060900.xor: error addr 0x00000000 [ 1.197491] ------------[ cut here ]------------ [ 1.197513] WARNING: CPU: 0 PID: 1 at ../drivers/dma/mv_xor.c:664 mv_xor_interrupt_handler+0x14c/0x170() See also: http://storage.kernelci.org/next/next-20150617/arm-mvebu_v7_defconfig+CONFIG_CPU_BIG_ENDIAN=y/lab-khilman/boot-armada-xp-openblocks-ax3-4.txt Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Fixes: 6f166312c6ea2 ("dmaengine: mv_xor: add support for a38x command in descriptor mode") Reviewed-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
1 parent cda8e93
Tip revision: 0ec9ebc706fbd394bc233d87ac7aaad1c4f3ab54 authored by Thomas Petazzoni on 08 July 2015, 14:28:14 UTC
dmaengine: mv_xor: fix big endian operation in register mode
dmaengine: mv_xor: fix big endian operation in register mode
Tip revision: 0ec9ebc
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 9.6 KB |
Makefile | -rw-r--r-- | 702 bytes |
acorn.c | -rw-r--r-- | 12.3 KB |
acorn.h | -rw-r--r-- | 488 bytes |
aix.c | -rw-r--r-- | 6.2 KB |
aix.h | -rw-r--r-- | 59 bytes |
amiga.c | -rw-r--r-- | 3.7 KB |
amiga.h | -rw-r--r-- | 89 bytes |
atari.c | -rw-r--r-- | 3.9 KB |
atari.h | -rw-r--r-- | 1.0 KB |
check.c | -rw-r--r-- | 4.2 KB |
check.h | -rw-r--r-- | 1.1 KB |
cmdline.c | -rw-r--r-- | 2.2 KB |
cmdline.h | -rw-r--r-- | 57 bytes |
efi.c | -rw-r--r-- | 22.7 KB |
efi.h | -rw-r--r-- | 4.4 KB |
ibm.c | -rw-r--r-- | 9.3 KB |
ibm.h | -rw-r--r-- | 47 bytes |
karma.c | -rw-r--r-- | 1.1 KB |
karma.h | -rw-r--r-- | 124 bytes |
ldm.c | -rw-r--r-- | 44.1 KB |
ldm.h | -rw-r--r-- | 5.4 KB |
mac.c | -rw-r--r-- | 3.4 KB |
mac.h | -rw-r--r-- | 1.2 KB |
msdos.c | -rw-r--r-- | 15.8 KB |
msdos.h | -rw-r--r-- | 124 bytes |
osf.c | -rw-r--r-- | 1.9 KB |
osf.h | -rw-r--r-- | 123 bytes |
sgi.c | -rw-r--r-- | 2.2 KB |
sgi.h | -rw-r--r-- | 128 bytes |
sun.c | -rw-r--r-- | 3.7 KB |
sun.h | -rw-r--r-- | 169 bytes |
sysv68.c | -rw-r--r-- | 1.9 KB |
sysv68.h | -rw-r--r-- | 62 bytes |
ultrix.c | -rw-r--r-- | 1.2 KB |
ultrix.h | -rw-r--r-- | 90 bytes |
Computing file changes ...