[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: fxp at pci on arm32 and bus_dmamap_sync()
In message <200007110548.e6B5mLn08500@edge.sky.yamashina.kyoto.jp>
on Tue, 11 Jul 2000 14:48:21 +0900,
Takahiro Kambe <taca@sky.yamashina.kyoto.jp> wrote:
> > do_transmit:
> > if (statack & FXP_SCB_STATACK_RNR) {
> > rxmap = M_GETCTX(sc->sc_rxq.ifq_head, bus_dmamap_t);
> /* 3 */
> > fxp_scb_wait(sc);
> > /* 2 */
> > CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL,
> > rxmap->dm_segs[0].ds_addr +
> > RFA_ALIGNMENT_FUDGE);
> > CSR_WRITE_1(sc, FXP_CSR_SCB_COMMAND,
> > FXP_SCB_COMMAND_RU_START);
> > /* 1 */ printf("fxp0: no resouce ready\n");
> > }
> ...
> > ば、いきなり落ちるときもあるようです。また、2 のところに、
> >
> > CSR_WRITE_1(sc, FXP_CSR_SCB_COMMAND, FXP_SCB_COMMAND_RU_ABORT);
> >
> > を入れてみましたが、目立った変化はありませんでした。:-(
> ABORTするんだから、fxp_scb_wait()する前の3のところに入れてしまうという
> 乱暴な(?)ことをしていみたところ、落ちない様です。:-D
FreeBSD 2.2.8ベースでのfxpドライバでも、同様にfxb_scb_wait()の前で
ABORTをすると落ちなくなることが確認できました。あとは、本当にこの修正
が正しいのか、たまたま何かfxpの処理を中断してしまっているためか評価が
必要なんでしょうね。
--
神戸 隆博(かんべ たかひろ) at 仕事場