Re: [PATCH 1/3] ata: sata_dwc_460ex: use "dmas" DT property to find dma channel

From: Måns Rullgård
Date: Sat Dec 19 2015 - 14:08:13 EST


Julian Margetson <runaway@xxxxxxxx> writes:

> On 12/19/2015 1:19 PM, Måns Rullgård wrote:
>> Julian Margetson <runaway@xxxxxxxx> writes:
>>
>>> On 12/19/2015 1:05 PM, Måns Rullgård wrote:
>>>> Andy Shevchenko <andy.shevchenko@xxxxxxxxx> writes:
>>>>
>>>>> On Sat, Dec 19, 2015 at 5:40 PM, Måns Rullgård <mans@xxxxxxxxx> 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.

--
Måns Rullgård
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/