[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 メーリングリストの案内