From: Vignesh R <vigneshr@ti.com>
To: Boris Brezillon <boris.brezillon@free-electrons.com>,
Mark Brown <broonie@kernel.org>
Cc: Frode Isaksen <fisaksen@baylibre.com>,
Cyrille Pitchen <cyrille.pitchen@atmel.com>,
Richard Weinberger <richard@nod.at>,
David Woodhouse <dwmw2@infradead.org>,
Brian Norris <computersforpeace@gmail.com>,
Marek Vasut <marek.vasut@gmail.com>,
"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
"linux-spi@vger.kernel.org" <linux-spi@vger.kernel.org>
Subject: Re: [RFC PATCH 2/2] mtd: devices: m25p80: Enable spi-nor bounce buffer support
Date: Tue, 14 Mar 2017 18:51:38 +0530 [thread overview]
Message-ID: <40a824c2-012c-df55-feb4-ded1fff543cb@ti.com> (raw)
In-Reply-To: <03b185f6-e70a-beda-5b7f-776a03fa14c0@ti.com>
On 3/6/2017 5:17 PM, Vignesh R wrote:
>
>
> On Thursday 02 March 2017 07:59 PM, Boris Brezillon wrote:
>> On Thu, 2 Mar 2017 19:24:43 +0530
>> Vignesh R <vigneshr@ti.com> wrote:
[...]
>>>
>>> If its at SPI level, then I guess each individual drivers which cannot
>>> handle vmalloc'd buffers will have to implement bounce buffer logic.
>>
>> Well, that's my opinion. The only one that can decide when to do
>> PIO, when to use DMA or when to use a bounce buffer+DMA is the SPI
>> controller.
>> If you move this logic to the SPI NOR layer, you'll have to guess what
>> is the best approach, and I fear the decision will be wrong on some
>> platforms (leading to perf degradation).
>>
>> You're mentioning code duplication in each SPI controller, I agree,
>> this is far from ideal, but what you're suggesting is not necessarily
>> better. What if another SPI user starts passing vmalloc-ed buffers to
>> the SPI controller? You'll have to duplicate the bounce-buffer logic in
>> this user as well.
>>
>
> Hmm... Yes, there are ways to by pass SPI core.
>
>>>
>>> Or SPI core can be extended in a way similar to this RFC. That is, SPI
>>> master driver will set a flag to request SPI core to use of bounce
>>> buffer for vmalloc'd buffers. And spi_map_buf() just uses bounce buffer
>>> in case buf does not belong to kmalloc region based on the flag.
>>
>> That's a better approach IMHO. Note that the decision should not only
>> be based on the buffer type, but also on the transfer length and/or
>> whether the controller supports transferring non physically contiguous
>> buffers.
>>
>> Maybe we should just extend ->can_dma() to let the core know if it
>> should use a bounce buffer.
>>
>
> Yes, this is definitely needed. ->can_dma() currently returns bool. We
> need a better interface that returns different error codes for
> restriction on buffer length vs buffer type (I dont see any appropriate
> error codes) or make ->can_dma() return flag asking for bounce buffer.
> SPI controller drivers may use cache_is_*() and virt_addr_valid() to
> decide whether or not request bounce buffer.
>
>> Regarding the bounce buffer allocation logic, I'm not sure how it
>> should be done. The SPI user should be able to determine a max transfer
>> len (at least this is the case for SPI NORs) and inform the SPI layer
>> about this boundary so that the SPI core can allocate a bounce buffer
>> of this size. But we also have limitations at the SPI master level
>> (->max_transfer_size(), ->max_message_size()).
>>
>
> Again, I guess only SPI controller can suggest the appropriate size of
> bounce buffer based on its internal constraints and use cases that its
> known to support.
>
I will work on a patch series implementing bounce buffer support in SPI
core and extend ->can_dma() to inform when bounce buffer needs to be
used. This will make sure that SPI controller drivers that are not
affected by cache aliasing problem or LPAE buffers don't have
performance impact. Any comments appreciated!
--
Regards
Vignesh
next prev parent reply other threads:[~2017-03-14 13:21 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-27 12:08 [RFC PATCH 0/2] mtd: spi-nor: Handle vmalloc'd buffers Vignesh R
2017-02-27 12:08 ` [RFC PATCH 1/2] mtd: spi-nor: Introduce bounce buffer to handle " Vignesh R
2017-02-28 21:39 ` Richard Weinberger
2017-03-01 5:13 ` Vignesh R
2017-03-01 10:09 ` Cyrille Pitchen
2017-03-01 10:18 ` Boris Brezillon
2017-03-01 11:18 ` Frode Isaksen
2017-03-01 12:12 ` Boris Brezillon
2017-03-01 11:50 ` Vignesh R
2017-02-27 12:08 ` [RFC PATCH 2/2] mtd: devices: m25p80: Enable spi-nor bounce buffer support Vignesh R
2017-02-28 21:41 ` Richard Weinberger
2017-03-01 4:54 ` Vignesh R
2017-03-01 10:43 ` Cyrille Pitchen
2017-03-01 11:14 ` Frode Isaksen
2017-03-01 11:46 ` Vignesh R
2017-03-01 12:23 ` Boris Brezillon
2017-03-01 14:21 ` Cyrille Pitchen
[not found] ` <8a2c9b3b-dd5f-fca7-fa5c-690e5bed949f-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
2017-03-01 14:28 ` Boris Brezillon
2017-03-01 14:30 ` Cyrille Pitchen
2017-03-01 15:52 ` Mark Brown
2017-03-01 16:04 ` Boris Brezillon
2017-03-01 16:55 ` Boris Brezillon
2017-03-02 9:06 ` Frode Isaksen
2017-03-02 13:54 ` Vignesh R
2017-03-02 14:29 ` Boris Brezillon
2017-03-02 15:03 ` Frode Isaksen
2017-03-02 15:25 ` Boris Brezillon
2017-03-03 9:02 ` Frode Isaksen
2017-03-02 16:45 ` Cyrille Pitchen
2017-03-02 17:00 ` Mark Brown
2017-03-02 19:49 ` Boris Brezillon
2017-03-03 12:50 ` Mark Brown
2017-03-06 11:47 ` Vignesh R
2017-03-14 13:21 ` Vignesh R [this message]
2017-02-27 14:03 ` [RFC PATCH 0/2] mtd: spi-nor: Handle vmalloc'd buffers Frode Isaksen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=40a824c2-012c-df55-feb4-ded1fff543cb@ti.com \
--to=vigneshr@ti.com \
--cc=boris.brezillon@free-electrons.com \
--cc=broonie@kernel.org \
--cc=computersforpeace@gmail.com \
--cc=cyrille.pitchen@atmel.com \
--cc=dwmw2@infradead.org \
--cc=fisaksen@baylibre.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=marek.vasut@gmail.com \
--cc=richard@nod.at \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).