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