linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: David Miller <davem@davemloft.net>
Cc: fujita.tomonori@lab.ntt.co.jp, tsbogend@alpha.franken.de,
	linux-scsi@vger.kernel.org, linux-ide@vger.kernel.org,
	jens.axboe@oracle.com, bzolnier@gmail.com, jeff@garzik.org,
	akpm@linux-foundation.org
Subject: Re: [PATCH 0/4] revert the commit 22a9189f (cdrom: use kmalloced buffers instead of buffers on stack)
Date: Thu, 22 May 2008 09:43:12 +0100	[thread overview]
Message-ID: <1211445792.3956.14.camel@localhost.localdomain> (raw)
In-Reply-To: <20080521.181847.157652663.davem@davemloft.net>

On Wed, 2008-05-21 at 18:18 -0700, David Miller wrote:
> From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> Date: Thu, 22 May 2008 10:13:31 +0900
> 
> > DMA on stack is forbidden because of non coherent architecutes and
> > architectures can't uses stack addresses for DMA? What architectures
> > can't uses stack addresses for DMA? Would it be better to just forbid
> > using stack addresses for DMA on all the architectures at all times?
> 
> Rather, the real problem is that some architectures map the kernel
> stack virtually, and as a result virt_to_page() and things like that
> will not work.
> 
> It really is fully not working to put DMA buffers on the stack
> in these cases.

Actually, for SCSI only, that problem is fixed.  Our decision to
re-route all I/O, including kernel internal I/O through the block
mapping algorithms (really so we don't have to worry about GFP_DMA any
more since we can now use the block bounce buffers) means that all SCSI
submission routines will accept vmalloc'd and even stack buffers
perfectly correctly.

However (before anyone gets any ideas), the stack is incredibly
dangerous to do DMA on because it's packed with current data.  If you
don't get the alignment requirements right on a non-coherent platform,
you'll end up corrupting data because of cache line interference issues.
For this reason, DMA to stack is still technically illegal.

James



  reply	other threads:[~2008-05-22  8:43 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-20  4:58 [PATCH 0/4] revert the commit 22a9189f (cdrom: use kmalloced buffers instead of buffers on stack) FUJITA Tomonori
2008-05-20  4:58 ` [PATCH 1/4] block: use ARCH_KMALLOC_MINALIGN as the default dma pad mask FUJITA Tomonori
2008-05-20  4:58   ` [PATCH 2/4] block: add blk_queue_update_dma_pad FUJITA Tomonori
2008-05-20  4:58     ` [PATCH 3/4] ide: use the dma safe check for REQ_TYPE_ATA_PC FUJITA Tomonori
2008-05-20  4:58       ` [PATCH 4/4] cdrom: revert commit 22a9189 (cdrom: use kmalloced buffers instead of buffers on stack) FUJITA Tomonori
2008-05-20  7:33         ` Elias Oltmanns
2008-05-20  7:42           ` Jim Paris
2008-05-20  8:14             ` Elias Oltmanns
2008-05-28  6:43       ` [PATCH 3/4] ide: use the dma safe check for REQ_TYPE_ATA_PC Borislav Petkov
2008-05-20  9:31   ` [PATCH 1/4] block: use ARCH_KMALLOC_MINALIGN as the default dma pad mask Andrew Morton
2008-05-20  9:38     ` Herbert Xu
2008-05-20  9:52       ` Andrew Morton
2008-05-20  9:58         ` FUJITA Tomonori
2008-05-20 11:32         ` Herbert Xu
2008-05-20 13:25       ` FUJITA Tomonori
2008-05-20 15:34         ` Herbert Xu
2008-05-20 15:53           ` Plans for libsas and SAS-2? Marushak, Nathan
2008-05-20 16:09           ` [PATCH 1/4] block: use ARCH_KMALLOC_MINALIGN as the default dma pad mask FUJITA Tomonori
2008-05-21  1:26             ` Herbert Xu
2008-05-21  1:36               ` FUJITA Tomonori
2008-05-21  3:16                 ` Herbert Xu
2008-05-21  6:54                   ` FUJITA Tomonori
2008-05-21  8:47                     ` Herbert Xu
2008-05-21  9:34                       ` FUJITA Tomonori
2008-05-21 10:05                         ` Herbert Xu
2008-05-21 11:01                           ` FUJITA Tomonori
2008-05-21 11:25                             ` Herbert Xu
2008-05-21 12:09                               ` FUJITA Tomonori
2008-05-21 12:22                                 ` Herbert Xu
2008-05-21 12:46                                   ` FUJITA Tomonori
2008-05-21 12:55                                     ` FUJITA Tomonori
2008-05-21 13:19                                       ` Herbert Xu
2008-05-21 13:18                                     ` Herbert Xu
2008-05-22  1:14                                       ` FUJITA Tomonori
2008-05-22  1:19                                         ` David Miller
2008-05-22  1:21                                           ` Herbert Xu
2008-05-22  1:32                                           ` FUJITA Tomonori
2008-05-22  1:56                                             ` Herbert Xu
2008-05-20  9:55     ` Paul Mundt
2008-05-21 22:11 ` [PATCH 0/4] revert the commit 22a9189f (cdrom: use kmalloced buffers instead of buffers on stack) Thomas Bogendoerfer
2008-05-22  1:13   ` FUJITA Tomonori
2008-05-22  1:18     ` David Miller
2008-05-22  8:43       ` James Bottomley [this message]
2008-05-26  9:17         ` FUJITA Tomonori
2008-05-27 18:58 ` Bartlomiej Zolnierkiewicz

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=1211445792.3956.14.camel@localhost.localdomain \
    --to=james.bottomley@hansenpartnership.com \
    --cc=akpm@linux-foundation.org \
    --cc=bzolnier@gmail.com \
    --cc=davem@davemloft.net \
    --cc=fujita.tomonori@lab.ntt.co.jp \
    --cc=jeff@garzik.org \
    --cc=jens.axboe@oracle.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=tsbogend@alpha.franken.de \
    /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).