[Suzaku:01568] Re: SZ410で32MBのDMAバッファ確保
Hiroki Sugano
email@hidden
2009年 8月 6日 (木) 22:34:27 JST
京都大学の菅野といいます.
実際試したことはないので,使えるかどうかは分かりませんが,
Linux Device Drivers, Third Edition (http://lwn.net/Kernel/LDD3/)
に大きなメモリ領域の確保の仕方が載っています.
Chapter 15, Memory Mapping and DMA, Allocating the DMA Buffer,
Do-it-yourself allocation, page 443 によると,
カーネル起動時に mem= オプションを付けると,カーネルは先頭アドレスから
そのサイズのメモリのみを使用し,残りのメモリを残しておいてくれるようです.
つまり mem=32M を起動時に指定し,
dmabuf = ioremap(0x2000000 /* 32MB */, 0x2000000 /* 32MB */);
とすれば,物理アドレス 0x2000000 以降の 32 MB を DMA 転送用の領域として
使用できそうです.
ただし,セクションの最後には,大きなメモリ領域を使うよりも,
代替案を考えたほうが良いと書かれています (よく知りませんが Scatter/Gather IO
とやらがあるようです).
suzaku メーリングリストの案内