On Wed, 6 Apr 2005, Catalin Marinas wrote:

Bas Vermeulen <[EMAIL PROTECTED]> wrote:
I am currently working on the bfinnommu linux port for the BlackFin 533.
I need to grab the top 1 MB of memory so I can give it out to drivers
that need non-cached memory for DMA operations.

I did this long time ago (on a 2.4 kernel), trying to avoid a hardware problem. I re-ordered the zones so that ZONE_DMA came after ZONE_NORMAL. Since the DMA memory was quite small (less than 1MB), I also put a "break" before "case ZONE_DMA" in the build_zonelists_node() functions to avoid the allocation fallback.

--
Catalin



1 Megabyte of DMA RAM should be available using conventional
means __get_dma_pages(GFP_KERNEL, 0x100) soon after boot.

Or just use mem= on the boot command line. This will tell
the kernel the extent of memory to use. Any RAM after that
is available. Your driver can access kernel variable, "num_physpages"
to find the last page it is supposed to use. Some kernel versions
actually touch the next page so, to be safe, your code can
use:
   mem = (num_physpages * PAGE_SIZE) + PAGE_SIZE;
... for the first available free RAM.

Note that there may be PCI BARS allocated in this address-space if
you have 4 Gb of RAM. You need to be carefull.


Cheers, Dick Johnson Penguin : Linux version 2.6.11 on an i686 machine (5537.79 BogoMips). Notice : All mail here is now cached for review by Dictator Bush. 98.36% of all statistics are fiction. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

Reply via email to