All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Oleksij Rempel <linux@rempel-privat.de>,
	Jens Axboe <axboe@kernel.dk>,
	"ulf.hansson@linaro.org >> Ulf Hansson" <ulf.hansson@linaro.org>,
	"linux-mmc@vger.kernel.org >> linux-mmc"
	<linux-mmc@vger.kernel.org>
Subject: Re: question about block layer and dma alignment issue.
Date: Thu, 16 Oct 2014 17:31:54 +0300	[thread overview]
Message-ID: <543FD6DA.3090703@intel.com> (raw)
In-Reply-To: <5434DE9A.1030009@rempel-privat.de>

On 8/10/2014 9:50 a.m., Oleksij Rempel wrote:
> Am 07.10.2014 um 17:25 schrieb Jens Axboe:
>> On 10/07/2014 03:37 AM, Oleksij Rempel wrote:
>>> Am 04.10.2014 um 19:00 schrieb Jens Axboe:
>>>> On 2014-10-04 00:59, Oleksij Rempel wrote:
>>>>> Hello Jens,
>>>>>
>>>>> i hope it is OK to ask you directly, i didn't found better way to do
>>>>> this.
>>>>> I'm writing MMC driver based on reverse engineering for au6601 mmc
>>>>> controller. This driver uses MMC API, and last one trying to use BLK API
>>>>> as directly as possible. So far so gut, but i have a problem by using SG
>>>>> requests with DMA without conversation. This controller accepts only
>>>>> addresses with this mask 0xffff.f000 - also page aligned.
>>>>> Till now i tried different QUEUE_FLAG_ flags and blk_queue settings, but
>>>>> i never had absolute aligned quarantine.
>>>>> Please tell me if i do some thing wrong or go in the wrong direction.
>>>> Unless you can accept a 4kb hardware block size (and I'm assuming you
>>>> cannot, since you need to support 512b file systems?), then you'd have
>>>> to bounce the requests that don't align properly. You can fix some of
>>>> them by setting blk_queue_dma_alignment(q, 4095).
>>> I needed to include MMC list with Ulf Hansson at the beginning, so here
>>> we are.
>>>
>>> Hi Ulf,
>>>
>>> here is the list of drivers which do care about dma alignment . Some of
>>> them use bounce_buffer, some will use PIO instead of DMA, for not
>>> aligned requests:
>>>
>>> dw_mmc.c: dw_mci_pre_dma_transfer
>>> wbsd.c
>>> usdhi6rol0.c
>>> tmio_mmc_dma.c
>>> sunxi-mmc.c
>>> sdhci.c
>>> pxamci.c
>>> mvsdio.c
>>> au6601.c(not upstream jet)
>>>
>>> The problem of all this driver is that each of them use own solution. I
>>> think this code can be moved to some common place. For example, it can
>>> be done in drivers/mmc/card/queue.c and enabled by
>>> mmc_host_dma_alignment variable. Or provide a mmc_sg_align() function,
>>> which should be called explicatively by driver.
>>>
>>> Which option is preferable?
>> I would roll a block version that they all can use, you can look at
>> block/bounce.c for inspiration. That file deals with bouncing higher
>> pages to lower memory, so it's not exactly what you want. But the metod
>> of allocating a new bio that meets criteria and copying data over, that
>> is the same that you need.

Not all cards are block devices e.g. SDIO wifi.  And there is also mmc_test.

> Ok,
>
> i will need to setup testing board for this kind of work. It will take
> some time.
>


      reply	other threads:[~2014-10-16 14:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <542F9AD9.7020104@rempel-privat.de>
     [not found] ` <543027BD.5090009@kernel.dk>
2014-10-07  9:37   ` question about block layer and dma alignment issue Oleksij Rempel
2014-10-07 15:25     ` Jens Axboe
2014-10-08  6:50       ` Oleksij Rempel
2014-10-16 14:31         ` Adrian Hunter [this message]

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=543FD6DA.3090703@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=axboe@kernel.dk \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux@rempel-privat.de \
    --cc=ulf.hansson@linaro.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.