[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: fxp at pci on arm32 and bus_dmamap_sync()
> > ftp://download.intel.com/design/network/datashts/644346.htm
> おぉ、まさにそうでした。これから読みます。
こちらは神戸さんと先日 fxp 購入済の曽田さんにおまかせして、 ;-p
> また改めて pci まわりのコード眺めてみます。
こちらを先に調べてみました。
i386 だと bus_space_map() は i386/include/bus.h で
i386_memio_map() に define されてます。そこで
i386/i386/bus_machdep.c の i386_memio_map() を調べると
if_fxp_pci.c でいじっている flags の BUS_SPACE_MAP_PREFETCHABLE
は全然参照されてません。これではダメですね。
BUS_SPACE_MAP_CACHEABLE のほうはちゃんと non-cacheable で
mapping するのに使われているので、 if_fxp_pci.c の呼び出し側で
--- if_fxp_pci.c.orig Wed Jul 12 13:01:31 2000
+++ if_fxp_pci.c Wed Jul 12 13:01:31 2000
@@ -284,7 +284,8 @@
pci_mapreg_info(pa->pa_pc, pa->pa_tag, FXP_PCI_MMBA,
PCI_MAPREG_TYPE_MEM|PCI_MAPREG_MEM_TYPE_32BIT,
&addr, &size, &flags) == 0) {
- flags &= ~BUS_SPACE_MAP_PREFETCHABLE;
+ flags &= ~(BUS_SPACE_MAP_PREFETCHABLE |
+ BUS_SPACE_MAP_CACHEABLE);
if (bus_space_map(memt, addr, size, flags, &memh) == 0)
memh_valid = 1;
}
とかして CACHEABLE のほうもクリアしておけば(少なくとも i386 では)
まともに動くようになる? CACHEABLE と PREFETCHABLE の定義の違いと
その対応については(例によって)よくわかってませんが。
ちなみに arm32 の arm32/footbridge/footbridge_io.c の
footbridge_mem_bs_map() では flags はまったく使われてません……
---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp