From: Christoph Lameter <cl@linux-foundation.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Nicolas Pitre <nico@cam.org>, lkml <linux-kernel@vger.kernel.org>
Subject: Re: wrong usage of MAX_DMA_ADDRESS in bootmem.h
Date: Wed, 01 Oct 2008 07:07:42 -0500 [thread overview]
Message-ID: <48E3680E.6040703@linux-foundation.org> (raw)
In-Reply-To: <20080930201224.GL15911@flint.arm.linux.org.uk>
Russell King - ARM Linux wrote:
> Not correct. MAX_DMA_ADDRESS is a virtual address. ISA_DMA_THRESHOLD
> is the last byte of _physical_ memory which ISA DMA can transfer:
> include/asm-x86/scatterlist.h:#define ISA_DMA_THRESHOLD (0x00ffffff)
>
> So what you've just suggested is completely insane.
Someone screwed around with the basics here. MAX_DMA_ADDRESS is no longer
related to MAX_DMA_PFN for the x86_32 case. What is the point of relating
MAX_DMA_ADDRESS to PAGE_OFFSET? Looks like we are creating more confusion
about the strange DMA zone.
The best would be to rename these variables to make the semantics clearer
ZONE_DMA related variables:
MAX_DMA_PFN -> MAX_ZONE_DMA_PFN
MAX_DMA_ADDRESS -> MAX_ZONE_DMA_ADDRESS
MAX_DMA32_PFN -> MAX_ZONE_DMA32_PFN
MAX_DMA32_ADDRESS -> MAX_ZONE_DMA32_ADDRESS
Then the general DMAability
MAX_DMA_ADDRESS -> DMA_LIMIT
> Incorrect. MAX_DMA_ADDRESS is the highest possible virtual DMA address:
MAX_DMA_ADDRESS is the highest possible address for the DMA zone. Not the
highest possible address that any DMA controller can use. And now we have
special casing that makes the semantics different between 32 bit and 64 bit
x86? Insane! Please clean up the fuzzy semantics.
> include/asm-x86/dma.h:#define MAX_DMA_ADDRESS (PAGE_OFFSET + 0x1000000)
>
> Think about what that means on an x86 machine with less than 16MB of RAM.
> As we have already covered in the past, CONFIG_ZONE_DMA has to always
> be enabled on ARM because ARM always puts all memory in the first zone.
> To do otherwise introduces lots of special cases, and I steadfastly
> refuse to make the memory initialisation any more complicated than it
> already is.
I believe we have been over this. If you just have one zone then the core code
would expect you to disable CONFIG_ZONE_DMA and have all memory treated equal
in ZONE_NORMAL.
The naming seems to be the problem here. Maybe renaming ZONE_DMA to
ZONE_RESTRICTED_DMA or something would help. We are currently creating two
different paradigms of using these constants.
next prev parent reply other threads:[~2008-10-01 12:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1222230419-15661-21-git-send-email-nico@cam.org>
[not found] ` <1222230592-15868-1-git-send-email-nico@cam.org>
[not found] ` <20080930162809.GD15911@flint.arm.linux.org.uk>
[not found] ` <alpine.LFD.2.00.0809301409230.3635@xanadu.home>
[not found] ` <20080930184411.GJ15911@flint.arm.linux.org.uk>
2008-09-30 19:35 ` wrong usage of MAX_DMA_ADDRESS in bootmem.h Nicolas Pitre
2008-09-30 19:56 ` Christoph Lameter
2008-09-30 20:12 ` Russell King - ARM Linux
2008-09-30 21:09 ` Nicolas Pitre
2008-10-01 12:07 ` Christoph Lameter [this message]
2008-10-01 14:06 ` Russell King - ARM Linux
2008-10-01 14:50 ` Christoph Lameter
2008-10-01 15:02 ` Russell King - ARM Linux
2008-10-02 16:49 ` Christoph Lameter
2008-10-02 19:06 ` Russell King - ARM Linux
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=48E3680E.6040703@linux-foundation.org \
--to=cl@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=nico@cam.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