適用於 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 個選項中選擇
指定所有內容(舊)
aha152x=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS
第一個控制器的配置覆蓋
aha152x1=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS第二個控制器的配置覆蓋
僅指定您需要的內容(需要 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 免費 (!) 提供了有關該晶片的文件。