[Suzaku:00324] Re: io_block_mapping と ioremap について

Yasushi SHOJI email@hidden
2005年 6月 17日 (金) 12:44:27 JST


At Fri, 17 Jun 2005 01:26:20 +0900,
Ryos Suzuki wrote:
> 
> 今日、この ML に入りました。
> まだ、LinuxPPC のソースを読んで日がたたないのでここで勉強できれ
> ばと考えています。

よろしくお願いします。私も一緒に勉強させてください。m(__)m

> > > 大きな空間を割り当てる時や初期から割り当ている時は
> > > io_block_mappingなどがされているのでしょうか?
> > io_block_mappingは ppc固有のものなので、driverなどではお勧めではありま
> > せん。
> 405 の Core はブロック変換を持たないのでおかしいなと、、、思って
> ソースを見たら、io_block_mapping の中で map_page と言う関数を読
> んで BATS がない CPU でもブロック変換が出来たように振舞っている
> ようですね。

ppc固有かつBATを持つ chipも使うのであれば io_block_mapping()の方が良い
かもしれません。ss/sv両方で使う driverなら、ioremap_nocache()が良いか
と。

> > > モジュール作成する時はioremapを使ってwritelなどで出力するのでしょうか?
> > そうですね。ioremapで mapしてから readlや writelなどを使います。
> キャッシュを効かせたくない場合は (多分 GPIO をお使いになるとの事
> で、キャッシュされない方がいいと推測しています)ioremap_nocache 
> という関数があるようです。ただ、PPC の実装では ioremap に define
>  されていて、その上、ioremap は _PAGE_NO_CACHE でマップするよう
> です。(Linux 2.4.22 のソースを読んでます)

2.6系でもppcは nocacheの振舞いをさせているようです。(x86はあまり知らな
いのですが) armの場合だと、ioremap()は _nocache挙動をします。cache挙動
のときに ioremap_cached()を使うみたいですね。

統一されてないのかな?

> i386 のソースを読むと、ioremap ではキャッシュがきくようなので、
> 将来 kernel がちゃんと対応したときに動くようにするためには 
> ioremap_nocache を使ったほうが良い気がします。

あ、そうですね。ppcは ioremapで nocacheと同じ挙動なので忘れてました。
ありがとうございます。
--
        yashi




suzaku メーリングリストの案内