Re: MAX_DMA_ADDRESS in include/asm/asm-i386/dma.h (2.6.x and 2.4.x)

From: Deepak Saxena
Date: Fri Jul 16 2004 - 16:49:33 EST


On Jul 16 2004, at 14:37, Amit D. Chaudhary was caught saying:
> While writing some DMA page gathering code, I realize that
> __get_free_page or kmalloc does not return memory more than 16 MB
> (typically around 11-12 MB even if it done right after a reboot.)
>
> Since this is for a PCI device (A Fibre channel HBA), I remembered that
> the book Linux Device Driver, edition 2 mentions that the 16 MB limit is
> for DMA with ISA devices, while PCI DMA can access upto 950 MB or so,
> using 32 bit addresses.

Using __get_free_page() or kmalloc() for device DMA'ble descriptors (I am
guessing that's what you are doing) is wrong. See Documentation/DMA-API.txt
and Documentation/DMA-mapping.txt for the proper way to do this.

~Deepak

--
Deepak Saxena - dsaxena at plexity dot net - http://www.plexity.net/

"Unlike me, many of you have accepted the situation of your imprisonment and
will die here like rotten cabbages." - Number 6
-
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/