Re: wrong usage of MAX_DMA_ADDRESS in bootmem.h
- From: Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx>
- Date: Tue, 30 Sep 2008 21:12:24 +0100
On Tue, Sep 30, 2008 at 02:56:26PM -0500, Christoph Lameter wrote:
Nicolas Pitre wrote:
I have implemented highmem for ARM. To catch wrong usage of __pa() and
One issue is that bootmem.h uses __pa(MAX_DMA_ADDRESS). However
MAX_DMA_ADDRESS on ARM is defined as 0xffffffff because there is usually
no restriction on the maximum DMA-able address.
RMK suggested that those places should be using ISA_DMA_THRESHOLD
instead -- here's an excert of our conversation on this topic:
ok so do
#define MAX_DMA_ADDRESS ISA_DMA_THRESHOLD
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.
>> I suspect all those places which are doing __pa(MAX_DMA_ADDRESS) really
want to be using ISA_DMA_THRESHOLD - that's something to raise on LKML
if it's causing problems.
MAX_DMA_ADDRESS is the highest address used for ZONE_DMA / GFP_DMA
Incorrect. MAX_DMA_ADDRESS is the highest possible virtual DMA address:
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.
Does ISA_DMA_THRESHOLD have any meaning on ARM? If you use old ISA stuff then
you need CONFIG_ZONE_DMA and therefore also MAX_DMA_ADDRESS.
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.
And besides, this has nothing to do with that issue.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: wrong usage of MAX_DMA_ADDRESS in bootmem.h
- From: Nicolas Pitre
- Re: wrong usage of MAX_DMA_ADDRESS in bootmem.h
- References:
- wrong usage of MAX_DMA_ADDRESS in bootmem.h
- From: Nicolas Pitre
- Re: wrong usage of MAX_DMA_ADDRESS in bootmem.h
- From: Christoph Lameter
- wrong usage of MAX_DMA_ADDRESS in bootmem.h
- Prev by Date: Re: [patch 2/2] PNP: don't check disabled PCI BARs for conflicts in quirk_system_pci_resources()
- Next by Date: Re: [PATCH 03/14] Security: Add hook to calculate context based on a negative dentry.
- Previous by thread: Re: wrong usage of MAX_DMA_ADDRESS in bootmem.h
- Next by thread: Re: wrong usage of MAX_DMA_ADDRESS in bootmem.h
- Index(es):
Relevant Pages
|