Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932704AbcLHPly (ORCPT ); Thu, 8 Dec 2016 10:41:54 -0500 Received: from mga11.intel.com ([192.55.52.93]:42650 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754078AbcLHPll (ORCPT ); Thu, 8 Dec 2016 10:41:41 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,320,1477983600"; d="scan'208";a="1069651782" Date: Thu, 8 Dec 2016 21:20:43 +0530 From: Vinod Koul To: =?iso-8859-1?Q?M=E5ns_Rullg=E5rd?= Cc: Geert Uytterhoeven , Mason , Russell King , dmaengine@vger.kernel.org, Linus Walleij , Dan Williams , LKML , Linux ARM , Jon Mason , Mark Brown , Lars-Peter Clausen , Lee Jones , Laurent Pinchart , Arnd Bergmann , Maxime Ripard , Dave Jiang , Peter Ujfalusi , Bartlomiej Zolnierkiewicz , Sebastian Frias , Thibaud Cornic Subject: Re: Tearing down DMA transfer setup after DMA client has finished Message-ID: <20161208155043.GE6408@localhost> References: <20fc9020-7278-bc2f-2a8d-43aff5cabff8@free.fr> <20161206051222.GQ6408@localhost> <5846B237.8060409@free.fr> <20161207164341.GX6408@localhost> <20161208103921.GC6408@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1630 Lines: 40 On Thu, Dec 08, 2016 at 12:20:30PM +0000, M?ns Rullg?rd wrote: > > > > I'm far from claiming that drivers/tty/serial/sh-sci.c is perfect, but > > it does request DMA channels at open time, not at probe time. > > In the part quoted above, I said most drivers request dma channels in > their probe or open functions. For the purposes of this discussion, > that distinction is irrelevant. In either case, the channel is held > indefinitely. And the answer was it is wrong and not _all_ do that!! > If this wasn't the correct way to use the dmaengine, > there would be no need for the virt-dma helpers which are specifically > designed for cases the one currently at hand. That is incorrect. virt-dma helps to have multiple request from various clients. For many controllers which implement a SW mux, they can transfer data for one client and then next transfer can be for some other one. This allows better utilization of dma channels and helps in case where we have fewer dma channels than users. This was _not_ developed to let people grab channels in probe. > The only problem we have is that nobody envisioned hardware where the > dma engine indicates completion slightly too soon. I suspect there's a > fifo or such somewhere, and the interrupt is triggered when the last > byte has been placed in the fifo rather than when it has been removed > which would have been more correct. That is pretty common hardware optimization but usually hardware shows up with flush commands to let in flight transactions be completed. One other example of this implementations has already been pointed in this thread -- ~Vinod