[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 仕事場