Re: [PATCH v2] dmaengine: hisilicon: Add Kunpeng DMA engine support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2019/12/12 0:54, Vinod Koul wrote:
> On 11-12-19, 19:43, Zhou Wang wrote:
>> On 2019/12/11 18:52, Vinod Koul wrote:
>>> On 10-12-19, 10:13, Zhou Wang wrote:
> 
>>>> +static int hisi_dma_terminate_all(struct dma_chan *c)
>>>> +{
>>>> +	struct hisi_dma_chan *chan = to_hisi_dma_chan(c);
>>>> +	unsigned long flags;
>>>> +	LIST_HEAD(head);
>>>> +
>>>> +	spin_lock_irqsave(&chan->vc.lock, flags);
>>>> +
>>>> +	hisi_dma_pause_dma(chan->hdma_dev, chan->qp_num, true);
>>>> +	if (chan->desc) {
>>>> +		vchan_terminate_vdesc(&chan->desc->vd);
>>>> +		chan->desc = NULL;
>>>> +	}
>>>> +
>>>> +	vchan_get_all_descriptors(&chan->vc, &head);
>>>> +
>>>> +	spin_unlock_irqrestore(&chan->vc.lock, flags);
>>>> +
>>>> +	vchan_dma_desc_free_list(&chan->vc, &head);
>>>> +	hisi_dma_pause_dma(chan->hdma_dev, chan->qp_num, false);
>>>
>>> pause on terminate? Not DISABLE?
>>
>> here this function just aborts transfers on specific channel.
> 
> yeah and I would expect the channel to go into disable state right!
> 
>>>> +static struct pci_driver hisi_dma_pci_driver = {
>>>> +	.name		= "hisi_dma",
>>>> +	.id_table	= hisi_dma_pci_tbl,
>>>> +	.probe		= hisi_dma_probe,
>>>
>>> no .remove and kconfig has a tristate option!
>>
>> Use devres APIs in probe, so seems nothing should be done in remove :)
> 
> who will de-register from dmaengine, you have dangiling chan_tasklet
> which needs to be killed and you have isr which is still enabled, yeah
> what could go wrong!

I missed to do tasklet_kill when disabling qps. And also missed to do
pci_free_irq_vectors, which seems can be done by adding a devres callback
by devm_add_action_or_reset.

Here we use devres API to register to dmaengine, so no need to de-register
from it.

Thanks!
Zhou

> 
> Please, deregister from dmaengine, kill the vchan tasklet and make sur
> irq is disabled and tasklets killed
> 




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux