parisc: DMA API: return error instead of BUG_ON for dma ops on non dma devs
Enabling parport pc driver on a B2600 (and probably other 64bit PARISC
systems) produced following BUG:
CPU: 0 PID: 1 Comm: swapper Not tainted
4.12.0-rc5-30198-g1132d5e #156
task:
000000009e050000 task.stack:
000000009e04c000
YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
PSW:
00001000000001101111111100001111 Not tainted
r00-03
000000ff0806ff0f 000000009e04c990 0000000040871b78 000000009e04cac0
r04-07
0000000040c14de0 ffffffffffffffff 000000009e07f098 000000009d82d200
r08-11
000000009d82d210 0000000000000378 0000000000000000 0000000040c345e0
r12-15
0000000000000005 0000000040c345e0 0000000000000000 0000000040c9d5e0
r16-19
0000000040c345e0 00000000f00001c4 00000000f00001bc 0000000000000061
r20-23
000000009e04ce28 0000000000000010 0000000000000010 0000000040b89e40
r24-27
0000000000000003 0000000000ffffff 000000009d82d210 0000000040c14de0
r28-31
0000000000000000 000000009e04ca90 000000009e04cb40 0000000000000000
sr00-03
0000000000000000 0000000000000000 0000000000000000 0000000000000000
sr04-07
0000000000000000 0000000000000000 0000000000000000 0000000000000000
IASQ:
0000000000000000 0000000000000000 IAOQ:
00000000404aece0 00000000404aece4
IIR:
03ffe01f ISR:
0000000010340000 IOR:
000001781304cac8
CPU: 0 CR30:
000000009e04c000 CR31:
00000000e2976de2
ORIG_R28:
0000000000000200
IAOQ[0]: sba_dma_supported+0x80/0xd0
IAOQ[1]: sba_dma_supported+0x84/0xd0
RP(r2): parport_pc_probe_port+0x178/0x1200
Cause is a call to dma_coerce_mask_and_coherenet in parport_pc_probe_port,
which PARISC DMA API doesn't handle very nicely. This commit gives back
DMA_ERROR_CODE for DMA API calls, if device isn't capable of DMA
transaction.
Cc: <stable@vger.kernel.org> # v3.13+
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Helge Deller <deller@gmx.de>