All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleksij Rempel <linux@rempel-privat.de>
To: 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: Tue, 07 Oct 2014 11:37:45 +0200	[thread overview]
Message-ID: <5433B469.4060807@rempel-privat.de> (raw)
In-Reply-To: <543027BD.5090009@kernel.dk>

[-- Attachment #1: Type: text/plain, Size: 1806 bytes --]

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?

-- 
Regards,
Oleksij


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 213 bytes --]

       reply	other threads:[~2014-10-07  9:37 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   ` Oleksij Rempel [this message]
2014-10-07 15:25     ` question about block layer and dma alignment issue Jens Axboe
2014-10-08  6:50       ` Oleksij Rempel
2014-10-16 14:31         ` Adrian Hunter

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=5433B469.4060807@rempel-privat.de \
    --to=linux@rempel-privat.de \
    --cc=axboe@kernel.dk \
    --cc=linux-mmc@vger.kernel.org \
    --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.