[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20200522121023.GF5801@sirena.org.uk>
Date: Fri, 22 May 2020 13:10:23 +0100
From: Mark Brown <broonie@...nel.org>
To: Serge Semin <Sergey.Semin@...kalelectronics.ru>
Cc: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Serge Semin <fancer.lancer@...il.com>,
Linus Walleij <linus.walleij@...ricsson.com>,
Vinod Koul <vkoul@...nel.org>, Feng Tang <feng.tang@...el.com>,
Grant Likely <grant.likely@...retlab.ca>,
Alan Cox <alan@...ux.intel.com>,
Georgy Vlasov <Georgy.Vlasov@...kalelectronics.ru>,
Ramil Zaripov <Ramil.Zaripov@...kalelectronics.ru>,
Alexey Malahov <Alexey.Malahov@...kalelectronics.ru>,
Thomas Bogendoerfer <tsbogend@...ha.franken.de>,
Paul Burton <paulburton@...nel.org>,
Ralf Baechle <ralf@...ux-mips.org>,
Arnd Bergmann <arnd@...db.de>,
Rob Herring <robh+dt@...nel.org>, linux-mips@...r.kernel.org,
devicetree@...r.kernel.org,
Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@...el.com>,
Thomas Gleixner <tglx@...utronix.de>,
Jarkko Nikula <jarkko.nikula@...ux.intel.com>,
"wuxu.wu" <wuxu.wu@...wei.com>, Clement Leger <cleger@...ray.eu>,
Linus Walleij <linus.walleij@...aro.org>,
linux-spi@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v4 01/16] spi: dw: Add Tx/Rx finish wait methods to the
MID DMA
On Fri, May 22, 2020 at 02:52:35PM +0300, Serge Semin wrote:
> On Fri, May 22, 2020 at 02:13:40PM +0300, Andy Shevchenko wrote:
> > > Changelog v4:
> > > - Get back ndelay() method to wait for an SPI transfer completion.
> > > spi_delay_exec() isn't suitable for the atomic context.
> > OTOH we may teach spi_delay_exec() to perform atomic sleeps.
> Please, see it's implementation. It does atomic delay when the delay value
> is less than 10us. But selectively gets to the usleep_range() if value is
> greater than that.
Yes, I hadn't realised this was in atomic context - _delay_exec() is
just not safe to use there, it'll swich to a sleeping delay if the time
is long enough.
> > > + while (dw_spi_dma_tx_busy(dws) && retry--)
> > > + ndelay(ns);
> > I might be mistaken, but I think I told that this one misses to keep power
> > management in mind.
> Here we already in nearly atomic context due to the callback executed in the
> tasklet. What power management could be during a tasklet execution? Again we
> can't call sleeping methods in here. What do you suggest in substitution?
You'd typically have a cpu_relax() in there as well as the ndelay().
Download attachment "signature.asc" of type "application/pgp-signature" (489 bytes)
Powered by blists - more mailing lists