適用於 Linux 的 Adaptec AHA-1520/1522 SCSI 驅動程式 (aha152x)

版權所有 © 1993-1999 Jürgen Fischer <fischer@norbit.de>

TC1550 補丁由 Luuk van Dijk (ldz@xs4all.nl) 提供

在修訂版 2 中,驅動程式進行了大量修改(特別是下半部分處理程式 complete())。

現在驅動程式更簡潔了,支援 2.3 版本中新的錯誤處理程式碼,降低了 CPU 負載(大大減少了輪詢迴圈),吞吐量略有提高(至少在我的老舊測試機上是這樣;一臺 i486/33Mhz/20MB 電腦)。

配置引數

IOPORT

基本 IO 地址

(0x340/0x140)

IRQ

中斷級別

(9-12;預設 11)

SCSI_ID

控制器的 SCSI ID

(0-7;預設 7)

RECONNECT

允許目標裝置與匯流排斷開連線

(0/1;預設 1 [開啟])

PARITY

啟用奇偶校驗

(0/1;預設 1 [開啟])

SYNCHRONOUS

啟用同步傳輸

(0/1;預設 1 [開啟])

DELAY

匯流排復位延遲

(預設 100)

EXT_TRANS

啟用擴充套件轉換(參見 NOTES)

(0/1:預設 0 [關閉])

編譯時配置

(進入 drivers/scsi/Makefile 中的 AHA152X)

  • DAUTOCONF

    使用控制器報告的配置(僅適用於 AHA-152x)

  • DSKIP_BIOSTEST

    不測試 BIOS 簽名(AHA-1510 或已停用 BIOS)

  • DSETUP0=”{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }”

    第一個控制器的覆蓋設定

  • DSETUP1=”{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }”

    第二個控制器的覆蓋設定

  • DAHA152X_DEBUG

    啟用除錯輸出

  • DAHA152X_STAT

    啟用一些統計資訊

LILO 命令列選項

aha152x=<IOPORT>[,<IRQ>[,<SCSI-ID>[,<RECONNECT>[,<PARITY>[,<SYNCHRONOUS>[,<DELAY> [,<EXT_TRANS]]]]]]]

正常配置可以透過指定命令列來覆蓋。這樣做時,BIOS 測試將被跳過。輸入的值必須有效(已知)。不要使用在正常操作下不支援的值。如果您認為需要其他值:請聯絡我。對於兩個控制器,請使用 aha152x 語句兩次。

模組配置符號

從 2 個選項中選擇

  1. 指定所有內容(舊)

    aha152x=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS
    

第一個控制器的配置覆蓋

aha152x1=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS

第二個控制器的配置覆蓋

  1. 僅指定您需要的內容(需要 irq 或 io;新)

io=IOPORT0[,IOPORT1]

第一個和第二個控制器的 IOPORT

irq=IRQ0[,IRQ1]

第一個和第二個控制器的 IRQ

scsiid=SCSIID0[,SCSIID1]

第一個和第二個控制器的 SCSI ID

reconnect=RECONNECT0[,RECONNECT1]

允許第一個和第二個目標裝置斷開連線

parity=PAR0[PAR1]

為第一個和第二個控制器使用奇偶校驗

sync=SYNCHRONOUS0[,SYNCHRONOUS1]

為第一個和第二個控制器啟用同步傳輸

delay=DELAY0[,DELAY1]

第一個和第二個控制器的復位延遲

exttrans=EXTTRANS0[,EXTTRANS1]

為第一個和第二個控制器啟用擴充套件轉換

如果您同時使用這兩種替代方案,則將採用第一種。

關於 EXT_TRANS 的注意事項

SCSI 使用塊號來定址裝置上的塊/扇區。BIOS 則使用柱面/磁頭/扇區定址方案 (C/H/S)。DOS 需要理解這種 C/H/S 定址方式的 BIOS 或驅動程式。

柱面/磁頭/扇區的數量稱為幾何引數 (geometry),是 C/H/S 定址請求的基礎。SCSI 只知道以塊(扇區)為單位的磁碟總容量。

因此,SCSI BIOS/DOS 驅動程式必須計算一個邏輯/虛擬幾何引數,才能支援該定址方案。SCSI BIOS 返回的幾何引數純粹是計算得出的,與磁碟的真實/物理幾何引數無關(通常無論如何都不相關)。

基本上,這完全不影響 Linux,因為它也使用塊定址而不是 C/H/S 定址。不幸的是,C/H/S 定址也用於分割槽表,因此每個作業系統都必須知道正確的幾何引數才能解釋它。

此外,C/H/S 定址方案存在一定的限制,即地址空間最多為 255 個磁頭、63 個扇區和最大 1023 個柱面。

AHA-1522 BIOS 透過將磁頭數固定為 64、扇區數固定為 32,並用磁碟報告的容量除以 64*32(1 MB)來計算柱面數,從而計算幾何引數。這被認為是預設轉換。

考慮到 C/H/S 定址 1023 個柱面的限制,您在分割槽表中只能定址磁碟的第一個 GB。因此,一些基於 AIC-6260/6360 的較新控制器的 BIOS 支援擴充套件轉換。這意味著當 BIOS 檢測到大於 1 GB 的磁碟時,它會使用 255 作為磁頭數,63 作為扇區數,然後用磁碟容量除以 255*63(大約 8 MB)。這導致分割槽表中可定址的最大磁碟空間約為 8 GB(但現在已有更大的磁碟)。

更復雜的是,轉換模式在某些 BIOS 設定中可能可配置,也可能不可配置。

該驅動程式會進行或多或少安全的猜測,以在大多數情況下獲取正確的幾何引數

  • 對於 <1GB 的磁碟:使用預設轉換 (C/32/64)

  • 對於 >1GB 的磁碟

    • 從分割槽表中獲取當前幾何引數(使用 scsicam_bios_param 並只接受“有效”幾何引數,即 (C/32/64) 或 (C/63/255))。即使驅動程式中未啟用,這也可以是擴充套件轉換。

    • 如果失敗,則在透過覆蓋、核心或模組引數啟用時採用擴充套件轉換,否則採用預設轉換並要求使用者驗證。這可能發生在尚未分割槽的磁碟上。

參考文獻

《AIC-6260 SCSI 晶片規範》,Adaptec 公司。

《SCSI 計算機系統介面 - 2 (SCSI-2)》,X3T9.2/86-109 修訂版 10h

《為 Linux 編寫 SCSI 裝置驅動程式》,Rik Faith (faith@cs.unc.edu)

《核心駭客指南》,Michael K. Johnson (johnsonm@sunsite.unc.edu)

《Adaptec 1520/1522 使用者指南》,Adaptec 公司。

Michael K. Johnson (johnsonm@sunsite.unc.edu)

Drew Eckhardt (drew@cs.colorado.edu)

Eric Youngdale (eric@andante.org)

特別感謝 Eric Youngdale 免費 (!) 提供了有關該晶片的文件。