S/390 通用 I/O 层¶
命令行参数、procfs 和 debugfs 条目¶
命令行参数¶
ccw_timeout_log
在 ccw 设备超时的情况下启用调试信息的记录。
cio_ignore = device[,device[,..]]
device := {all | [!]ipldev | [!]condev | [!]<devno> | [!]<devno>-<devno>}
给定的设备将被通用 I/O 层忽略;不会对这些设备进行任何检测和设备感知。连接有所述设备的子通道将被视为未连接任何设备。
被忽略的设备可以在稍后取消忽略;详见“/proc 条目”章节了解详情。
设备必须以总线 ID (0.x.abcd) 或十六进制设备号(0xabcd 或 abcd,用于 2.4 向后兼容)的形式给出。如果您给出设备号 0xabcd,它将被解释为 0.0.abcd。
您可以使用 ‘all’ 关键字来忽略所有设备。‘ipldev’ 和 ‘condev’ 关键字分别用于指代基于 CCW 的引导设备和 CCW 控制台设备(这些通常只有在与 ‘!’ 运算符结合使用时才有用)。‘!’ 运算符会使 I/O 层_不_忽略某个设备。命令行是从左到右进行解析的。
例如
cio_ignore=0.0.0023-0.0.0042,0.0.4711
将忽略从 0.0.0023 到 0.0.0042 范围内的所有设备以及设备 0.0.4711(如果检测到)。
作为另一个例子
cio_ignore=all,!0.0.4711,!0.0.fd00-0.0.fd02
将忽略除 0.0.4711、0.0.fd00、0.0.fd01、0.0.fd02 之外的所有设备。
默认情况下,不忽略任何设备。
/proc 条目¶
/proc/cio_ignore
列出被通用 I/O 忽略的设备范围(按总线 ID)。
您可以通过向 /proc/cio_ignore 写入内容来取消忽略某些或所有设备。“free all” 将取消忽略所有被忽略的设备,“free <设备范围>, <设备范围>, ...” 将取消忽略指定的设备。
例如,如果设备 0.0.0023 到 0.0.0042 以及 0.0.4711 被忽略,
echo free 0.0.0030-0.0.0032 > /proc/cio_ignore 将取消忽略设备 0.0.0030 至 0.0.0032,并使设备 0.0.0023 至 0.0.002f、0.0.0033 至 0.0.0042 以及 0.0.4711 继续保持忽略状态;
echo free 0.0.0041 > /proc/cio_ignore 还将进一步取消忽略设备 0.0.0041;
echo free all > /proc/cio_ignore 将取消忽略所有剩余的被忽略设备。
当取消忽略某个设备时,会执行设备识别和感知,并在可能的情况下通知设备驱动程序,从而使该设备对系统可用。注意,取消忽略操作是异步执行的。
您还可以通过向 /proc/cio_ignore 写入内容来添加要忽略的设备范围;“add <设备范围>, <设备范围>, ...” 将忽略指定的设备。
- 注意:虽然可以将已经识别的设备添加到要忽略的设备列表中,
但这不会对它们产生任何即时效果。不过,如果此类设备消失然后又重新出现,它就会被忽略。要让已知的设备彻底移除,您需要使用 “purge” 命令(见下文)。
例如
"echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore"
将把 0.0.a000-0.0.accc 和 0.0.af00-0.0.afff 添加到被忽略设备列表中。
您可以通过以下方式移除已经识别但现在被忽略的设备:
"echo purge > /proc/cio_ignore"
所有被忽略但仍已注册且处于离线状态(= 未在使用)的设备将被取消注册,从而从系统中移除。
设备可以通过总线 ID (0.x.abcd) 指定,或者为了 2.4 向后兼容,通过十六进制设备号(0xabcd 或 abcd)指定。以 0xabcd 形式给出的设备号将被解释为 0.0.abcd。
/proc/cio_settle
对该文件的写请求将被阻塞,直到所有排队的 cio 操作被处理完毕。这使得用户空间能够在更改 cio_ignore 或硬件配置后,等待影响设备可用性的未完成工作结束。
关于 2.4 中 /proc 文件系统里存在的一些信息(即 /proc/subchannels 和 /proc/chpids),请参阅 S/390 驱动模型接口。以前位于 /proc/irq_count 中的信息现在已移至 /proc/interrupts。
debugfs entries¶
/sys/kernel/debug/s390dbf/cio_*/ (S/390 调试特性)
由调试特性生成的一些视图,用于保存各种调试输出。
/sys/kernel/debug/s390dbf/cio_crw/sprintf 处理未完成通道报告字(机器检查处理)时的消息。
/sys/kernel/debug/s390dbf/cio_msg/sprintf 来自通用 I/O 层的各种调试消息。
/sys/kernel/debug/s390dbf/cio_trace/hex_ascii 记录通用 I/O 层中函数的调用情况,以及(如果适用)它们是为哪个子通道调用的,同时还记录某些数据结构的转储(例如错误情况下的 irb)。
可以通过向 /sys/kernel/debug/s390dbf/cio_*/level 写入 0 到 6 之间的数字来调整日志记录的详细程度;详见 S/390 调试特性文档 (S390 调试特性)。