[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: fxp at pci on arm32 and bus_dmamap_sync()
In message <200007021225.e62CPrI14942@mirage.ceres.dti.ne.jp>
on Sun, 2 Jul 2000 21:25:53 +0900 (JST),
Izumi Tsutsui <tsutsui@ceres.dti.ne.jp> wrote:
> 今回の arm32 の場合、上記の dmamap_sync() 抜けのせいで
> 見かけ上受信バッファが不足するような状況が発生していて、
> dmamap_sync() の修正でそれが起きなくなっただけじゃないかな
> と思ってます。
むぅ、そうですか。私自身、コードの詳細を把握しているわけではありません
が、
...
> そんな状況が発生したとすればもはや受信データがどこに
> 転送されるかは保証できないんじゃないかなあ、
> と推測してるんですが全然確認できてません。
>
> #FXP_NRFABUFS を増やして起きる頻度が減るようなら正解?
試しに、FXP_NRFABUFSを64から256に増やしてみました。
ftpで90Mバイト程のファイルを連続して /dev/null へgetするということを連
続してさせると、
変更前: 1度ももたないでpanicする。
変更後: 1度は持つが、3度は持たない。
といった具合いで多少変化がありました。このとき、7.3MB/secから7.9MB/sec
程の転送レートは出ています。なお、テストしたのはDC-390Uの方ですが、
crash dumpでは、
fxp_intr()の dropitラベルの前の fxp_add_rfabuf() →
fxp_add_rfabuf()の最初のMCLGET() →
subr_pool.c: _pool_get()内、744行のところで引っ掛かってpanic()
となっている点ではいずれも同じでした。
> fxp が使える PCI の帯域が変わると受信パケットの処理能力も
> 変わると思うのでそのへん関係するのかなあという気はします。
> DC390 の場合も BIOS が PCI の設定を変にいじくってて
> 同じようなことが起こるのかなあという気はしてますが、
> PCI bus まわりの構造をよく知らないので分かってないです。
なるほど。PCI_CONFIG_DUMPで出力させると確かに変っていました。
こっちはDC-390の方ですが、BIOSが有効なときと無効なときでdiffを取ると、
pcscp0 at pci0 dev 17 function 0: PCI configuration registers:
Common header:
- 0x00: 0x20201022 0x02000087 0x01000010 0x00002000
+ 0x00: 0x20201022 0x02000085 0x01000010 0x00002000
Vendor Name: Advanced Micro Devices (0x1022)
Device Name: 53c974 PCscsi-PCI SCSI (0x2020)
- Command register: 0x0087
+ Command register: 0x0085
I/O space accesses: on
- Memory space accesses: on
+ Memory space accesses: off
Bus mastering: on
...
Type 0 ("normal" device) header:
0x10: 0x0000e801 0x00000000 0x00000000 0x00000000
0x20: 0x00000000 0x00000000 0x00000000 0x00000000
- 0x30: 0xec000000 0x00000000 0x00000000 0x2804010f
+ 0x30: 0x00000000 0x00000000 0x00000000 0x2804010f
...
Subsystem vendor ID: 0x0000
Subsystem ID: 0x0000
- Expansion ROM Base Address: 0xec000000
+ Expansion ROM Base Address: 0x00000000
Reserved @ 0x34: 0x00000000
...
Device-dependent header:
- 0x40: 0x00000000 0x00000000 0x00000000 0x008a0000
+ 0x40: 0x00000000 0x00020000 0x00800000 0x00006200
...
-Advanced Micro Devices 53c974 PCscsi-PCI SCSI (SCSI mass storage, revision 0x10) at ? dev 17 function 0 (tag 0x80008800, intrtag 0x80008800, intrswiz 0, intrpin 0x1, i/o on, mem on, no quirks)
+Advanced Micro Devices 53c974 PCscsi-PCI SCSI (SCSI mass storage, revision 0x10) at ? dev 17 function 0 (tag 0x80008800, intrtag 0x80008800, intrswiz 0, intrpin 0x1, i/o on, mem off, no quirks)
pcscp0: interrupting at irq 15
pcscp0: AM53C974, 40MHz, SCSI ID 7
といった具合いです。fxpの方は、
fxp0 at pci0 dev 19 function 0: PCI configuration registers:
Common header:
...
Type 0 ("normal" device) header:
- 0x10: 0xee101008 0x0000ec01 0xee000000 0x00000000
+ 0x10: 0xed101008 0x0000ec01 0xed000000 0x00000000
0x20: 0x00000000 0x00000000 0x00000000 0x00088086
- 0x30: 0xed000000 0x000000dc 0x00000000 0x3808010b
+ 0x30: 0xec000000 0x000000dc 0x00000000 0x3808010b
Base address register at 0x10
type: 32-bit prefetchable memory
- base: 0xee101000, size: 0x00001000
+ base: 0xed101000, size: 0x00001000
Base address register at 0x14
type: i/o
base: 0x0000ec00, size: 0x00000020
Base address register at 0x18
type: 32-bit nonprefetchable memory
- base: 0xee000000, size: 0x00100000
+ base: 0xed000000, size: 0x00100000
Base address register at 0x1c
...
Subsystem vendor ID: 0x8086
Subsystem ID: 0x0008
- Expansion ROM Base Address: 0xed000000
+ Expansion ROM Base Address: 0xec000000
Capability list pointer: 0xdc
...
ですが、ROMのマップされるところが変っただけ?
--
神戸 隆博(かんべ たかひろ) at 仕事場