[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AP-bus SONIC and bus_dma



<10107280121.AA01351@lachesis.sm.sony.co.jp>の記事において
shin@sm.sony.co.jpさんは書きました。

> > AP-bus の SONIC は newsmips/apbus/if_sn_ap.c からすると
> > AP-bus board 上の memory にしか DMA 転送できないように
> > 見えるんですが、実際どうなんでしょうか?
> 
> そのとおりです。SONICはon-boardのSRAMとの間でしかDMAできません。

情報ありがとうございます。 MI sonic driver 使おうと思ったら
やっぱり bounce buffer の code を自前で用意しないといけないんですね。
#bus_dmamem_alloc() と bus_dmamap_sync() を用意すればいいのかな。

> APbusとのインタフェースや、SRAMのアクセスの調停などを司っているASICには、
> on-boardのSRAMとメインメモリとの間でDMAを行なう機能はあるのですが。

SRAM - main memory 間の DMA を真面目にやるなら bus_dmamap_sync()
でごそごそするんでしょうが、 10baseT の速度ではそこまでやらなくても
十分性能は出る気がします。

ところで Sonic のような受信バッファのアドレスが 32bit align で
ないといけない chip では、受信の際に etherheader の alignment
合わせのために mbuf を copy してるんですが、 bus_dma interface で
bounce buffer をさせようとすると都合 copy が 2回になってしまうのが
なんか気に入りません。この辺うまいこと処理する方法ってありませんかね。

> APbusはいわゆるバスマスタのDMAはサポートしています。tulipを使った
> Ethernet I/Fでは、PCI <-> APbusブリッジのASICがあり、これがPCI上のtulip
> のバストランザクションをAPbusのトランザクションに変換する機能があるわけ
> です。

そういえば APbus tulip には高そうな FPGA(?) が載ってましたねえ…
---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp