On 12/19/2015 3:07 PM, Måns Rullgård wrote: > Julian Margetson writes: > >> On 12/19/2015 1:19 PM, Måns Rullgård wrote: >>> Julian Margetson writes: >>> >>>> On 12/19/2015 1:05 PM, Måns Rullgård wrote: >>>>> Andy Shevchenko writes: >>>>> >>>>>> On Sat, Dec 19, 2015 at 5:40 PM, Måns Rullgård wrote: >>>>>> >>>>>>> OK, I've found something. The dma setup errors are benign, caused by >>>>>>> the driver calling dmaengine_prep_slave_sg() even for non-dma >>>>>>> operations. >>>>>> I suppose the following is a quick fix to avoid preparing descriptor >>>>>> for non-DMA operations (not tested anyhow) >>>>>> >>>>>> a/drivers/ata/sata_dwc_460ex.c >>>>>> +++ b/drivers/ata/sata_dwc_460ex.c >>>>>> @@ -1041,6 +1041,9 @@ static void sata_dwc_qc_prep_by_tag(struct >>>>>> ata_queued_cmd *qc, u8 tag) >>>>>> __func__, ap->port_no, get_dma_dir_descript(qc->dma_dir), >>>>>> qc->n_elem); >>>>>> >>>>>> + if (!is_slave_direction(qc->dma_dir)) >>>>>> + return; >>>>>> + >>>>>> desc = dma_dwc_xfer_setup(qc); >>>>>> if (!desc) { >>>>>> dev_err(ap->dev, "%s: dma_dwc_xfer_setup returns NULL\n", >>>>> I already have a better patch sitting here. >>>>> >>>>>>> The real error is the lock recursion that's reported >>>>>>> later. I wasn't seeing it since I was running a UP non-preempt kernel. >>>>>>> With lock debugging enabled, I get the same error. This patch should >>>>>>> fix it. >>>>>>> - spin_lock_irqsave(&ap->host->lock, flags); >>>>>>> hsdevp->cmd_issued[tag] = cmd_issued; >>>>>>> - spin_unlock_irqrestore(&ap->host->lock, flags); >>>>>>> + >>>>>> This will create a second empty line, though I don't care it is so minor. >>>>> The patch leaves one blank line before the following block comment. I >>>>> think it looks better that way. >>>>> >>>> Still can't get the patch applied . >>> Sorry, didn't realise it conflicted with an intervening patch I had in >>> my tree. Try this one. >>> >> >> =~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2015.12.19 14:44:52 =~=~=~=~=~=~=~=~=~=~=~= >> >> U-Boot 2015.a (May 16 2015 - 14:20:11) >> >> CPU: AMCC PowerPC 460EX Rev. B at 1155 MHz (PLB=231 OPB=115 EBC=115) >> No Security/Kasumi support >> Bootstrap Option H - Boot ROM Location I2C (Addr 0x52) >> Internal PCI arbiter enabled >> 32 kB I-Cache 32 kB D-Cache >> Board: Sam460ex/cr, PCIe 4x + SATA-2 >> I2C: ready >> DRAM: 2 GiB (ECC not enabled, 462 MHz, CL4) >> PCI: Bus Dev VenId DevId Class Int >> 00 04 1095 3512 0104 00 >> 00 06 126f 0501 0380 00 >> PCIE1: successfully set as root-complex >> 02 00 1002 683f 0300 ff >> Net: ppc_4xx_eth0 >> FPGA: Revision 03 (2010-10-07) >> SM502: found >> PERMD2:not found >> VGA: 1 >> VESA: OK >> [ 0.000000] Using Canyonlands machine description >> [ 0.000000] Initializing cgroup subsys cpu >> [ 0.000000] Linux version 4.4.0-rc5-Sam460ex (root@julian-VirtualBox) (gcc version 4.8.2 (Ubuntu 4.8.2-16ubuntu3) ) #1 PREEMPT Sat Dec 19 14:25:55 AST 2015 >> [ 0.000000] Zone ranges: >> [ 0.000000] DMA [mem 0x0000000000000000-0x000000002fffffff] >> [ 0.000000] Normal empty >> [ 0.000000] HighMem [mem 0x0000000030000000-0x000000007fffffff] >> [ 0.000000] Movable zone start for each node >> [ 0.000000] Early memory node ranges >> [ 0.000000] node 0: [mem 0x0000000000000000-0x000000007fffffff] >> [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000007fffffff] >> [ 0.000000] MMU: Allocated 1088 bytes of context maps for 255 contexts >> [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 522752 >> [ 0.000000] Kernel command line: root=/dev/sda8 console=ttyS0,115200 console=tty1 dw_dmac_core.dyndbg dw_dmac.dyndbg > Please add ignore_log_level. > Had to truncate the kernel command line to add it.