From: David Brownell <david-b@pacbell.net>
To: "David S. Miller" <davem@redhat.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: PCI DMA to small buffers on cache-incoherent arch
Date: Mon, 10 Jun 2002 22:31:45 -0700 [thread overview]
Message-ID: <3D058B41.6010601@pacbell.net> (raw)
> From: Roland Dreier <roland@topspin.com>
> Date: 10 Jun 2002 21:39:27 -0700
>
> David> How about allocating struct something using pci_pool?
>
> The problem is the driver can't safely touch field1 or field2 near the
> DMA (it might pull the cache line back in too soon, or dirty the cache
> line and have it written back on top of DMA'ed data)
>
> Oh duh, I see, then go to making the thing a pointer to the
> dma area.
If it's going to be a pointer, it might as well be normal kmalloc data,
avoiding obfuscation of the memory model used by USB device drivers.
(They don't have to worry about DMA addresses, which IMO is a feature.)
Seems like there are two basic options for how to handle all this.
(a) Expose the dma/cache interaction to device drivers, so
they can manage (and prevent) bad ones like the cacheline
sharing scenarios.
(b) Require drivers to provide I/O buffers that are slab/page/...
pointers from some API that prevents such problems.
I think (a) is more or less a variant of the existing alignment
requirements that get embedded in ABIs, but which still show up
in code that's very close to the hardware. Many device driver
folk are familiar with them, or performance tuners, but not so
many folk doing USB device drivers would be. (They are thankfully
far from host controller hardware and its quirks!)
Personally I'd avoid (b) since I like to allocate memory all at
once in most cases ... lots fewer error cases to cope with (or,
more typically _not_ cope with :).
One question is whether to support only one of them, or allow both.
In either case the DMA-mapping.txt will need to touch on the issue.
- Dave
next reply other threads:[~2002-06-11 5:30 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-11 5:31 David Brownell [this message]
2002-06-11 5:44 ` PCI DMA to small buffers on cache-incoherent arch David S. Miller
2002-06-11 15:12 ` David Brownell
2002-06-11 15:44 ` Oliver Neukum
2002-06-12 3:25 ` David S. Miller
2002-06-11 17:33 ` Benjamin Herrenschmidt
2002-06-12 9:42 ` David S. Miller
2002-06-12 14:14 ` David Brownell
2002-06-12 15:00 ` Benjamin Herrenschmidt
2002-06-12 18:44 ` Roland Dreier
2002-06-12 19:13 ` David Brownell
2002-06-12 19:58 ` Oliver Neukum
2002-06-12 22:51 ` David S. Miller
2002-06-12 23:17 ` Oliver Neukum
2002-06-13 4:57 ` David Brownell
2002-06-12 22:46 ` David S. Miller
2002-06-13 5:13 ` David Brownell
2002-06-13 9:38 ` David S. Miller
2002-06-12 22:50 ` David S. Miller
2002-06-13 0:23 ` [PATCH] 2.4 add __dma_buffer alignment macro Roland Dreier
2002-06-13 1:07 ` David S. Miller
2002-06-13 1:19 ` Roland Dreier
2002-06-12 6:25 ` PCI DMA to small buffers on cache-incoherent arch David Brownell
2002-06-12 6:24 ` David S. Miller
2002-06-12 7:06 ` David Brownell
2002-06-12 9:22 ` David S. Miller
-- strict thread matches above, loose matches on Subject: below --
2002-06-08 20:38 Roland Dreier
2002-06-08 13:58 ` Anton Blanchard
2002-06-09 0:52 ` Roland Dreier
2002-06-08 23:03 ` David S. Miller
2002-06-09 0:40 ` Roland Dreier
2002-06-09 0:53 ` David S. Miller
2002-06-09 1:26 ` Roland Dreier
2002-06-09 5:29 ` David S. Miller
2002-06-09 6:16 ` Roland Dreier
2002-06-10 16:03 ` Roland Dreier
2002-06-11 14:04 ` David Woodhouse
2002-06-09 6:45 ` Oliver Neukum
2002-06-10 4:24 ` David S. Miller
2002-06-10 10:00 ` Oliver Neukum
2002-06-10 10:24 ` David S. Miller
2002-06-09 9:51 ` Paul Mackerras
2002-06-09 10:54 ` Benjamin Herrenschmidt
2002-06-10 4:27 ` David S. Miller
2002-06-10 15:59 ` Roland Dreier
2002-06-10 17:03 ` Tom Rini
2002-06-10 17:22 ` Oliver Neukum
2002-06-10 17:29 ` Tom Rini
2002-06-10 17:39 ` Oliver Neukum
2002-06-10 19:03 ` Roland Dreier
2002-06-10 19:14 ` Tom Rini
2002-06-10 19:21 ` Roland Dreier
2002-06-10 19:26 ` Tom Rini
2002-06-10 17:57 ` Russell King
2002-06-10 17:28 ` Roland Dreier
2002-06-10 18:07 ` William Jhun
2002-06-10 18:29 ` William Jhun
2002-06-10 18:33 ` Mark Zealey
2002-06-10 18:44 ` Oliver Neukum
2002-06-11 3:10 ` David S. Miller
2002-06-11 4:04 ` Roland Dreier
2002-06-11 4:16 ` Brad Hards
2002-06-11 4:24 ` Roland Dreier
2002-06-11 4:24 ` David S. Miller
2002-06-11 4:21 ` David S. Miller
2002-06-11 4:39 ` Roland Dreier
2002-06-11 4:38 ` David S. Miller
2002-06-11 6:23 ` Oliver Neukum
2002-06-11 6:38 ` David S. Miller
2002-06-11 7:38 ` Oliver Neukum
2002-06-11 7:36 ` David S. Miller
2002-06-11 7:43 ` David S. Miller
2002-06-11 8:07 ` Oliver Neukum
2002-06-11 8:15 ` David S. Miller
2002-06-11 12:06 ` Oliver Neukum
2002-06-11 12:04 ` David S. Miller
2002-06-11 14:23 ` Oliver Neukum
2002-06-14 4:14 ` David S. Miller
2002-06-11 18:26 ` Roland Dreier
2002-06-11 17:29 ` Benjamin Herrenschmidt
2002-06-12 12:02 ` Oliver Neukum
2002-06-11 20:06 ` Benjamin Herrenschmidt
2002-06-12 12:02 ` David S. Miller
2002-06-11 23:00 ` Thunder from the hill
2002-06-11 23:56 ` Roland Dreier
2002-06-12 0:09 ` Thunder from the hill
2002-06-11 15:57 ` William Jhun
2002-06-12 9:06 ` Pavel Machek
2002-06-12 20:16 ` David S. Miller
2002-06-12 11:47 ` David S. Miller
2002-06-12 12:08 ` Oliver Neukum
2002-06-14 4:41 ` David S. Miller
2002-06-12 16:09 ` William Jhun
2002-06-09 1:30 ` Albert D. Cahalan
2002-06-09 5:29 ` David S. Miller
2002-06-09 6:33 ` Albert D. Cahalan
2002-06-09 6:50 ` Oliver Neukum
2002-06-09 6:57 ` Albert D. Cahalan
2002-06-09 7:15 ` Oliver Neukum
2002-06-09 8:48 ` Russell King
2002-06-09 15:42 ` Albert D. Cahalan
2002-06-09 23:26 ` Oliver Neukum
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=3D058B41.6010601@pacbell.net \
--to=david-b@pacbell.net \
--cc=davem@redhat.com \
--cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox