AdvanSys 驱动程序说明¶
AdvanSys (Advanced System Products, Inc.) 制造以下基于 RISC 的总线主控、快速(10 MHz)和超速(20 MHz)窄带(8 位传输)SCSI 主机适配器,适用于 ISA、EISA、VL 和 PCI 总线,以及基于 RISC 的总线主控超速(20 MHz)宽带(16 位传输)SCSI 主机适配器,适用于 PCI 总线。
下面的 CDB 计数表示可以存储在 RISC 芯片缓存和板载 LRAM 中的 SCSI CDB(命令描述符块)请求的数量。CDB 是单个 SCSI 命令。驱动程序检测例程将显示检测到的每个适配器可用的 CDB 数量。驱动程序使用的 CDB 数量可以通过在 BIOS 中更改“主机队列大小”适配器设置来减少。
- 笔记本电脑产品
ABP-480 - 总线主控 CardBus (16 CDB)
- 连接产品
ABP510/5150 - 总线主控 ISA (240 CDB)
ABP5140 - 总线主控 ISA PnP (16 CDB)
ABP5142 - 带软驱的总线主控 ISA PnP (16 CDB)
ABP902/3902 - 总线主控 PCI (16 CDB)
ABP3905 - 总线主控 PCI (16 CDB)
ABP915 - 总线主控 PCI (16 CDB)
ABP920 - 总线主控 PCI (16 CDB)
ABP3922 - 总线主控 PCI (16 CDB)
ABP3925 - 总线主控 PCI (16 CDB)
ABP930 - 总线主控 PCI (16 CDB)
ABP930U - 总线主控 PCI Ultra (16 CDB)
ABP930UA - 总线主控 PCI Ultra (16 CDB)
ABP960 - 总线主控 PCI MAC/PC (16 CDB)
ABP960U - 总线主控 PCI MAC/PC Ultra (16 CDB)
- 单通道产品
ABP542 - 带软驱的总线主控 ISA (240 CDB)
ABP742 - 总线主控 EISA (240 CDB)
ABP842 - 总线主控 VL (240 CDB)
ABP940 - 总线主控 PCI (240 CDB)
ABP940U - 总线主控 PCI Ultra (240 CDB)
ABP940UA/3940UA - 总线主控 PCI Ultra (240 CDB)
ABP970 - 总线主控 PCI MAC/PC (240 CDB)
ABP970U - 总线主控 PCI MAC/PC Ultra (240 CDB)
ABP3960UA - 总线主控 PCI MAC/PC Ultra (240 CDB)
ABP940UW/3940UW - 总线主控 PCI Ultra-Wide (253 CDB)
ABP970UW - 总线主控 PCI MAC/PC Ultra-Wide (253 CDB)
ABP3940U2W - 总线主控 PCI LVD/Ultra2-Wide (253 CDB)
- 多通道产品
ABP752 - 双通道总线主控 EISA (每个通道 240 CDB)
ABP852 - 双通道总线主控 VL (每个通道 240 CDB)
ABP950 - 双通道总线主控 PCI (每个通道 240 CDB)
ABP950UW - 双通道总线主控 PCI Ultra-Wide (每个通道 253 CDB)
ABP980 - 四通道总线主控 PCI (每个通道 240 CDB)
ABP980U - 四通道总线主控 PCI Ultra (每个通道 240 CDB)
ABP980UA/3980UA - 四通道总线主控 PCI Ultra (每个通道 16 CDB)
ABP3950U2W - 总线主控 PCI LVD/Ultra2-Wide 和 Ultra-Wide (253 CDB)
ABP3950U3W - 总线主控 PCI 双 LVD2/Ultra3-Wide (253 CDB)
驱动程序编译时选项和调试¶
以下常量可以在源文件中定义。
ADVANSYS_ASSERT - 启用驱动程序断言(默认:启用)
启用此选项会将断言逻辑语句添加到驱动程序。如果断言失败,将向控制台显示一条消息,但系统将继续运行。遇到的任何断言都应报告给负责驱动程序的人员。断言语句可以主动检测驱动程序的问题并有助于解决这些问题。启用断言会增加驱动程序执行的少量开销。
ADVANSYS_DEBUG - 启用驱动程序调试(默认:禁用)
启用此选项会向驱动程序添加跟踪功能,并能够在启动时设置驱动程序跟踪级别。此选项对于调试驱动程序非常有用,但它会增加驱动程序执行映像的大小并增加驱动程序执行的开销。
调试输出的数量可以使用全局变量 'asc_dbglvl' 来控制。数字越高,输出越多。默认情况下,调试级别为 0。
如果驱动程序在启动时加载,并且系统中包含 LILO 驱动程序选项,则可以通过指定第 5 个 (ASC_NUM_IOPORT_PROBE + 1) I/O 端口来更改调试级别。伪 I/O 端口的前三个十六进制数字必须设置为 'deb',第四个十六进制数字指定调试级别:0 - F。以下命令行将在 0x330 处查找适配器并将调试级别设置为 2
linux advansys=0x330,0,0,0,0xdeb2
如果驱动程序构建为可加载模块,则可以在加载驱动程序时定义此变量。以下 insmod 命令将调试级别设置为 1
insmod advansys.o asc_dbglvl=1
调试消息级别
0
仅错误
1
高级跟踪
2-N
详细跟踪
要启用控制台调试输出,请确保
系统和内核日志已启用(syslogd,klogd 正在运行)。
内核消息已路由到控制台输出。在 /etc/syslog.conf 中检查是否有类似如下的条目
kern.* /dev/console
klogd 以适当的 -c 参数启动(例如 klogd -c 8)
这将导致
printk()
消息显示在当前控制台上。有关详细信息,请参阅 klogd(8) 和 syslogd(8) 手册页。或者,您可以使用此程序启用
printk()
到控制台。但是,这不是“官方”方法。调试输出记录在 /var/log/messages 中。
main() { syscall(103, 7, 0, 0); }
将 kernel/printk.c 中的 LOG_BUF_LEN 增加到类似 40960 的值,可以允许在内核中缓冲更多调试消息并将其写入控制台或日志文件。
ADVANSYS_STATS - 启用统计信息(默认:启用)
启用此选项会将统计信息收集和通过 /proc 显示添加到驱动程序。该信息对于监视驱动程序和设备性能非常有用。它会增加驱动程序执行映像的大小并增加驱动程序执行的少量开销。
统计信息是按每个适配器维护的。维护驱动程序入口点调用计数和传输大小计数。统计信息仅适用于配置了 CONFIG_PROC_FS (/proc) 文件系统的 v1.3.0 或更高版本的内核。
AdvanSys SCSI 适配器文件具有以下路径名格式
/proc/scsi/advansys/{0,1,2,3,...}
可以使用 cat 显示此信息。例如
cat /proc/scsi/advansys/0
当未定义 ADVANSYS_STATS 时,AdvanSys /proc 文件仅包含适配器和设备配置信息。
驱动程序 LILO 选项¶
如果按照上面“将 AdvanSys 驱动程序添加到 Linux 的说明”部分(B.4)所述修改了 init/main.c,则驱动程序将识别 'advansys' LILO 命令行和 /etc/lilo.conf 选项。此选项可用于禁用 I/O 端口扫描或将扫描限制为 1 - 4 个 I/O 端口。无论选项设置如何,仍将搜索并检测 EISA 和 PCI 板。此选项仅影响搜索 ISA 和 VL 板。
- 示例
消除 I/O 端口扫描
boot
linux advansys=
或
boot: linux advansys=0x0
将 I/O 端口扫描限制为一个 I/O 端口
boot
linux advansys=0x110
将 I/O 端口扫描限制为四个 I/O 端口
boot
linux advansys=0x110,0x210,0x230,0x330
对于可加载模块,可以通过在加载驱动程序时设置 'asc_iopflag' 变量和 'asc_ioport' 数组来实现相同的效果,例如
insmod advansys.o asc_iopflag=1 asc_ioport=0x110,0x330
如果定义了 ADVANSYS_DEBUG,则可以添加第 5 个 (ASC_NUM_IOPORT_PROBE + 1) I/O 端口来指定驱动程序调试级别。有关详细信息,请参阅上面的“驱动程序编译时选项和调试”部分。
鸣谢(按时间顺序)¶
Bob Frey <bfrey@turbolinux.com.cn> 编写了 AdvanSys SCSI 驱动程序,并将其维护到 3.3F。他继续回答问题并帮助维护驱动程序。
Nathan Hartwell <mage@cdc3.cdc.net> 为 Linux v1.3.X 的更改提供了方向和基础,这些更改包含在 1.2 版本中。
Thomas E Zerucha <zerucha@shell.portal.com> 指出了 advansys_biosparam() 中的一个错误,该错误在 1.3 版本中得到修复。
Erik Ratcliffe <erik@caldera.com> 在 Caldera 版本中对 AdvanSys 驱动程序进行了测试。
Rik van Riel <H.H.vanRiel@fys.ruu.nl> 提供了一个针对 AscWaitTixISRDone() 的补丁,他认为这是使驱动程序与 SCSI-1 磁盘一起工作所必需的。
Mark Moran <mmoran@mmoran.com> 帮助测试了 3.1A 驱动程序中的超宽支持。
Doug Gilbert <dgilbert@interlog.com> 对驱动程序进行了更改和建议以进行改进,并进行了大量测试。
Ken Mort <ken@mort.net> 报告了在 3.2K 中修复的 DEBUG 编译错误。
Tom Rini <trini@kernel.crashing.org> 提供了 CONFIG_ISA 补丁,并帮助支持 PowerPC 的宽板和窄板。
Philip Blundell <philb@gnu.org> 提供了一个 advansys_interrupts_enabled 补丁。
Dave Jones <dave@denial.force9.co.uk> 报告了在 3.2M 驱动程序中未定义 CONFIG_PROC_FS 时生成的编译器警告。
Jerry Quinn <jlquinn@us.ibm.com> 修复了宽卡 PowerPC 支持(字节序问题)。
Bryan Henderson <bryanh@giraffe-data.com> 帮助调试了窄卡错误处理。
Manuel Veloso <veloso@pobox.com> 在 PowerPC 窄板支持方面付出了很多努力,并修复了 AscGetEEPConfig() 中的一个错误。
Arnaldo Carvalho de Melo <acme@conectiva.com.br> 进行了 save_flags/restore_flags 更改。
Andy Kellner <AKellner@connectcom.net> 继续为 ConnectCom 开发 Advansys SCSI 驱动程序(版本 > 3.3F)。
Ken Witherow 在 3.4 版本开发期间进行了广泛的测试。