EN JA
AHC(4)
AHC(4) FreeBSD Kernel Interfaces Manual AHC(4)

名称

ahcAdaptec VL/EISA/PCI SCSI ホストアダプタドライバ

書式

このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:

device scbus
device ahc

1 つ以上の VL/EISA カードのために:
device eisa

1 つ以上の PCI カードのために:
device pci

有効なら、PCI アダプタがメモリマップド I/O を使用することを許可するために:
options AHC_ALLOW_MEMIO

ターゲットの役割を担うために 1 つ以上のコントローラを設定するために:
options AHC_TMODE_ENABLE <bitmask of units>

もう一つの方法として、ブート時にモジュールとしてドライバをロードするためには、次の行を loader.conf(5) に置きます:

ahc_load="YES" 
ahc_eisa_load="YES" 
ahc_isa_load="YES" 
ahc_pci_load="YES"

解説

このドライバは、Adaptec AIC77xx と AIC78xx ホストアダプタチップに接続された SCSI バスへのアクセスを提供します。

ドライバの特徴として、twin と wide バス、コントローラタイプに依存した fast、ultra または ultra2 同期転送、タグ付きキュー、SCB ページングとターゲットモードのサポートを含んでいます。

PCI デバイスのための“ AHC_ALLOW_MEMIO”設定オプションでメモリマップド I/O を有効にすることができます。メモリマップド I/O は、代わりのプログラムされた I/O より効率的です。ほとんどの PCI BIOS は、カードと通信するいずれかの技術が利用できるように、デバイスにマップします。ある場合には、普通 PCI デバイスが PCI->PCI ブリッジの後ろにあるとき、 BIOS は、メモリマップド I/O のためのチップを適切に初期化しないかもしれません。この問題の典型的な症状は、メモリマップド I/O が試みられる場合、システムハングアップすることです。ほとんどの最新のマザーボードは、正しく初期化を実行して、このオプションが有効にされた状態できちんと動作します。

個々のコントローラは、“ AHC_TMODE_ENABLE”設定オプションのためにターゲットの役割で動作するために設定されるかもしれません。このオプションで割り当てられた値は、ターゲットモードが望まれているところですべてのユニットのビットマップであるべきです。例えば、0x25 の値は、ユニット 0、2 と 5 のターゲットモードを有効にするでしょう。 0x8a の値は、ユニット 1、3 と 7 を有効にします。

SCSI-選択メニューで、非-EISA モデルでブート時にアクセス可能な、または EISA モデルのための EISA 設定ユーティリティを通して実行されるターゲット毎の設定は、このドライバによって引き受けられます。これは、同期/非同期転送、最大の同期ネゴシエーション速度、ワイド転送、接続の切断、ホストアダプタの SCSI ID と EISA Twin Channel コントローラの場合におけるプライマリチャネル選択を含んでいます。直接 aic7xxx コントローラに接続されたシリアル eeprom よりむしろシステム指定方法で非揮発性の設定を格納するシステムにおいて、 BIOS は、ドライバがこの情報にアクセスするのを有効にしなければなりません。この制限は、すべての EISA と多くのマザーボードの設定に適用されます。

I/O (入出力) アドレスは、プローブ (検出) ルーチンによって自動的に決定されますが、 EISA システムで 284x (VESA ローカルバスコントローラ) を使用するとき、気を付けるべきであることに注意してください。 284x のための入出力 (I/O) 領域を設定するジャンパは、カードが他の EISA カードとの競合を防ぐために挿入される EISA スロットに適合すべきです。

性能と機能の組み合わせは、aic7xxx の製品種目においてさまざまです。次のテーブルは、 ahc ドライバによってサポートされるいろいろなチップの比較です。ワイドとツインチャネル機能は、常に特定のチップによってサポートされますが、特定のマザーボードまたはカードの設計で無効にされているかもしれないことに注意してください。

チップ MIPS バス MaxSync MaxWidth SCBs 機能
aic7770 10 EISA/VL 10MHz 16Bit 4 1
aic7850 10 PCI/32 10MHz 8Bit 3
aic7860 10 PCI/32 20MHz 8Bit 3
aic7870 10 PCI/32 10MHz 16Bit 16
aic7880 10 PCI/32 20MHz 16Bit 16
aic7890 20 PCI/32 40MHz 16Bit 16 3 4 5 6 7 8
aic7891 20 PCI/64 40MHz 16Bit 16 3 4 5 6 7 8
aic7892 20 PCI/64 80MHz 16Bit 16 3 4 5 6 7 8
aic7895 15 PCI/32 20MHz 16Bit 16 2 3 4 5
aic7895C 15 PCI/32 20MHz 16Bit 16 2 3 4 5 8
aic7896 20 PCI/32 40MHz 16Bit 16 2 3 4 5 6 7 8
aic7897 20 PCI/64 40MHz 16Bit 16 2 3 4 5 6 7 8
aic7899 20 PCI/64 80MHz 16Bit 16 2 3 4 5 6 7 8

  1. 多重ツインチャネルデバイス - 1 つのコントローラは、2 つのバスを支援します。
  2. 多機能ツインチャネルデバイス - 1 つのチップで 2 つのコントローラ。
  3. コマンドチャネルのセカンダリ DMA エンジン - スキャッタギャザリスト (scatter gather list) と SCB のプリフェッチを許します。
  4. 64 バイト SCB サポート - SCSI CDB は、余分な DMA を排除するために SCB に組み込まれています。
  5. ブロック移動命令サポート - 特定のシーケンサ操作の速度を倍にします。
  6. ‘Bayonet’スタイルのスキャッタギャザエンジン - S/G プリフェッチの性能を向上させます。
  7. キューイングレジスタ - シーケンサを停止しないで、新しいトランザクションのキューイングを可能にします。
  8. 複数のターゲット ID - コントローラは、複数の SCSI ID でのターゲットとして選択して応答することを可能にします。

ハードウェア

ahc ドライバは、次の SCSI ホストアダプタチップと SCSI コントローラカードをサポートします:

  • Adaptec AIC7770 ホストアダプタチップ
  • Adaptec AIC7850 ホストアダプタチップ
  • Adaptec AIC7860 ホストアダプタチップ
  • Adaptec AIC7870 ホストアダプタチップ
  • Adaptec AIC7880 ホストアダプタチップ
  • Adaptec AIC7890 ホストアダプタチップ
  • Adaptec AIC7891 ホストアダプタチップ
  • Adaptec AIC7892 ホストアダプタチップ
  • Adaptec AIC7895 ホストアダプタチップ
  • Adaptec AIC7896 ホストアダプタチップ
  • Adaptec AIC7897 ホストアダプタチップ
  • Adaptec AIC7899 ホストアダプタチップ
  • Adaptec 274X(W)
  • Adaptec 274X(T)
  • Adaptec 284X
  • Adaptec 2910
  • Adaptec 2915
  • Adaptec 2920C
  • Adaptec 2930C
  • Adaptec 2930U2
  • Adaptec 2940
  • Adaptec 2940J
  • Adaptec 2940N
  • Adaptec 2940U
  • Adaptec 2940AU
  • Adaptec 2940UW
  • Adaptec 2940UW Dual
  • Adaptec 2940UW Pro
  • Adaptec 2940U2W
  • Adaptec 2940U2B
  • Adaptec 2950U2W
  • Adaptec 2950U2B
  • Adaptec 19160B
  • Adaptec 29160B
  • Adaptec 29160N
  • Adaptec 3940
  • Adaptec 3940U
  • Adaptec 3940AU
  • Adaptec 3940UW
  • Adaptec 3940AUW
  • Adaptec 3940U2W
  • Adaptec 3950U2
  • Adaptec 3960
  • Adaptec 39160
  • Adaptec 3985
  • Adaptec 4944UW
  • NEC PC-9821Xt13 (PC-98)
  • NEC RvII26 (PC-98)
  • NEC PC-9821X-B02L/B09 (PC-98)
  • NEC SV-98/2-B03 (PC-98)
  • 搭載 SCSI サポートがある多くのマザーボード

SCSI コントロールブロック (SCB)

SCSI バス上のデバイスに送られるあらゆるトランザクションは、1 つの‘SCSI コントロールブロック’ (SCB) に割り当てられます。 SCB は、トランザクションを処理するためにコントローラによって必要とされる情報のすべてを含んでいます。チップ機能テーブルは、チップ上のメモリに格納することができる SCB の数をリストしています。 7870 以上の型番のすべてのチップは、チップ上の SCB スペースを外部 SRAM で最大 255 SCB まで増大できます。 Adaptec コントローラ構成には、外部 SRAM は、ほどんどありません。

外部 SRAM が利用できないなら、SCB は、限られたリソースです。率直に SCB を使用すれば、ドライバは、物理的な SCB があるのと同じくらい多くの同時トランザクションを処理できるでしょう。それでは、SCSI バスとデバイスを完全に利用するのに、より多くの並行処理を必要とします。この問題の解決法は、 SCB ページング で、メモリページングと同様の考え方です。 SCB ページングは、通常デバイスが長時間コントローラと対話せずに SCSI バスから切り離されるいう事実を利用します。接続を切られたトランザクションのための SCB は、転送が再開されるときにだけコントローラの役に立ちます。ホストが実行するコントローラのための別のトランザクションをキューに入れるとき、コントローラファームウェアは、空きの SCB が利用可能であるなら、それを使用します。そうでなければ、最も最近接続を切られた (そのため、たぶん接続を切られたままであるために) SCB の状態は、dma を経由して、ホストメモリに保存され、ローカル SCB は、新しいトランザクションを始めるために再利用されます。これによりコントローラは、SCB 空間の大きさにかかわらず最大 255 のトランザクションをキューに入れることができます。ローカル SCB 空間は、接続が切られたトランザクションのためのキャッシュとして役立ちますので、より多くの SCB 空間が利用可能で、 SCB データを保存して復元することに使われるホストのバスのトラフィックをより少なくします。

関連項目

aha(4), ahb(4), cd(4), da(4), sa(4), scsi(4)

歴史

ahc ドライバは、 FreeBSD 2.0 で登場しました。

作者

ahc ドライバ、 AIC7xxx シーケンサコードアセンブラと aic7xxx チップで動作するファームウェアは、 Justin T. Gibbs によって書かれました。

バグ

いくつかの Quantum ドライブ (少なくとも Empire 2100 と 1080s) は、 10MHz 同期モードの AIC7870 Rev B で動作しません。この問題があるコントローラは、 42MHz のクロック水晶があり、 10MHz よりわずかに高い周波数で動作します。これは、ドライブを混乱させて、バスをハングアップします。 SCSI-選択ユーティリティで最大 8MHz の同期ネゴシエーション速度を設定すると、通常の操作が可能です。

Ultra2 と Ultra160 製品は、イニシエータ (開始プログラム) とターゲットの役割の両方を同時にサポートするための十分な命令 ram 空間がありますが、この構成は、ターゲットの役割が複数のターゲット id で応答することを可能にすることを支持して無効にされます。二重の役割モードを構成するための方法を提供するべきです。

タグ付きキューは、ターゲットモードをサポートしません。

ターゲットモードによる再選択は、Adaptec によって出荷されるようなすべての高電圧の異なったボードで正しく機能しません。ターゲットモードで正しく働く HVD ボードをどのように変更するかに関する情報は、 Adaptec から利用可能です。

July 13, 2008 FreeBSD