public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Arnd Bergmann <arnd@arndb.de>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [PATCH] asm-generic: add dma-mapping-linear.h
Date: Thu, 4 Jun 2009 15:38:03 +0100	[thread overview]
Message-ID: <20090604143803.GD24491@flint.arm.linux.org.uk> (raw)
In-Reply-To: <200906041442.53170.arnd@arndb.de>

On Thu, Jun 04, 2009 at 02:42:52PM +0100, Arnd Bergmann wrote:
> On Thursday 04 June 2009, Russell King wrote:
> > And here we go promoting dma-mask-is-not-a-mask-but-a-limit (which I
> > brought up in the KS thread on linux-arch.)
> > 
> > It's fine if your DMA-able memory starts at physical address 0 and ends
> > somewhere else, but this is no longer the case with embedded platforms.
> > As pointed out in the other thread, there are platforms which have two
> > separate banks of memory, the one at the lower physical address is not
> > DMA capable.
> 
> The dma-mapping-linear.h only cares about the platforms that have a
> linear contigous mapping between DMA and phys addresses. Other
> platforms will have to do something more fancy in their dma mapping
> implementation.

I'm not talking about anything fancy here.  There's still a 1:1
relationship between DMA and phys addresses.

> The device sets a mask (really a limit) of the address ranges it can
> handle. Basically every user in the kernel currently passes DMA_BIT_MASK()
> limit into {dma,pci}_set_mask,  and I am not aware of any driver
> that needs something more fancy. If you know one, please tell us.

Hmm, this opens yet another one of my bugbears.  The range of addressible
memory has doesn't really have much to do with drivers, yet in Linux we
_do_ tie it closely to the driver.

The range of addressible memory does have something to do with the device,
and we do carry that information in the driver.  However, there's another
element to it which is the hardware path from the device through to the
system memory.

There are cases on ARM (eg) where there's a restriction of 64MB.

There's also the case which I mentioned where we have two banks of memory,
and only the _second_ bank is DMA-capable.  Currently, in Linux, the only
way to use such a setup is basically to say "sorry, Linux can't use the
first bank, sorry vendor, Linux sucks."

> The DMA-capable addresses of the platform are a completely different
> issue and these should not be confused. Some architecture solve this
> by bus-specific mapping operations, which sounds like what you would
> need here as well. The bus is the only instance in the system that knows
> how the device-visible DMA space maps into the physical memory space,
> and it needs to be the instance checking the mask.

Yes, and then you end up triggering the OOM killer (see open unresolved
bug in the kernel bugzilla for IXP4xx)...

I hardly call that a solution.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

  reply	other threads:[~2009-06-04 14:38 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-28 20:04 [PATCH] asm-generic: add dma-mapping-linear.h Arnd Bergmann
2009-06-01  4:02 ` FUJITA Tomonori
2009-06-01  7:51   ` Russell King
2009-06-01  8:08     ` FUJITA Tomonori
2009-06-01  8:29       ` Russell King
2009-06-01  8:29         ` Russell King
2009-06-01  9:16         ` FUJITA Tomonori
2009-06-01  9:22           ` Russell King
2009-06-01  9:32             ` FUJITA Tomonori
2009-06-01 10:14               ` Russell King
2009-06-01 10:41                 ` Arnd Bergmann
2009-06-01 10:58                   ` Russell King
2009-06-01 11:42                     ` Arnd Bergmann
2009-06-01 10:28         ` Arnd Bergmann
2009-06-01 10:43           ` Russell King
2009-06-01 10:48             ` Arnd Bergmann
2009-06-01 10:11   ` Arnd Bergmann
2009-06-01 13:08     ` Michal Simek
2009-06-01 16:45       ` Arnd Bergmann
2009-06-02 11:11         ` Michal Simek
2009-06-04  7:57     ` FUJITA Tomonori
2009-06-04 12:35       ` Arnd Bergmann
2009-06-04 12:51         ` Russell King
2009-06-04 13:42           ` Arnd Bergmann
2009-06-04 14:38             ` Russell King [this message]
2009-06-04 14:49               ` Russell King
2009-06-04 16:29                 ` Arnd Bergmann
2009-06-04 15:05         ` FUJITA Tomonori
2009-06-04 16:47           ` Arnd Bergmann
2009-06-04 20:11             ` Geert Uytterhoeven
2009-06-08  5:49             ` FUJITA Tomonori
2009-06-08  8:03               ` Arnd Bergmann
2009-06-08  8:23                 ` FUJITA Tomonori
2009-06-08  8:49                   ` Arnd Bergmann
2009-06-08  8:49                     ` Arnd Bergmann
2009-06-04 12:45       ` Russell King

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=20090604143803.GD24491@flint.arm.linux.org.uk \
    --to=rmk+lkml@arm.linux.org.uk \
    --cc=arnd@arndb.de \
    --cc=fujita.tomonori@lab.ntt.co.jp \
    --cc=linux-arch@vger.kernel.org \
    --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