eeh_enable_pio 内核服务

用途

此内核服务支持在 EEH 事件后对适配器进行编程 I/O (PIO 或 MMIO)。

语法

#include <sys/eeh.h>

long eeh_enable_pio(handle)
eeh_handle_t handle;

参数

描述
句柄 (handle) eeh_initeeh_init_multifunc 内核服务获取的 EEH 句柄

描述

在插槽上发生 EEH 事件时,将禁止所有装入和存储操作 (例如, PIO)。 应该调用此内核服务以在发生 EEH 事件后重新启用 PIO。

单功能驱动程序: 此内核服务在插槽上启用装入和存储操作。 如果此调用因 EEH_FAIL 而失败,那么内核将记录错误。

多功能驱动程序: 在多功能适配器上,将检查插槽的状态以进行 SUSPEND 或 DEBUG。 调用者必须是 EEH_MASTER。 如果状态为 SUSPEND ,那么将执行一系列设备驱动程序回调例程,并将命令选项 EEH_DD_DEBUG 和标志设置为 EEH_DD_PIO_ENABLED。 回调通知设备驱动程序已启用 PIO ,并且可以执行进一步的调试过程 (例如,读取命令和状态寄存器)。 此服务可作为 EEH_DD_SUSPEND 或 EEH_DD_DEBUG 回调消息的结果进行调用 (根据 EEH_MASTER 的需要进行多次调用)。 对该服务的其他调用将触发一组新的回调。 如果此服务失败,那么将返回 EEH_FAIL。 如果故障是由于硬件或固件导致的,那么将记录错误。

在某些情况下,由于平台状态限制,此内核服务无法成功。 在这种情况下,如果驱动程序对其进行调用,那么内核服务将返回 EEH_FAIL ,后跟 EEH_DD_DEAD 消息。 这会导致插槽被标记为永久不可用,这是不正确的,因为可以恢复插槽。 为避免从此服务接收 EEH_FAIL ,驱动程序应在 eeh_init_multifunc () 时提供 EEH_ENABLE_NO_SUPPORT_RC 标志。 如果提供了 EEH_ENABLE_NO_SUPPORT_RC 标志,那么 eeh_enable_pio () 会返回 EEH_NO_SUPPORT ,指示驱动程序无法收集调试数据,但必须继续执行下一步以进行恢复。

为设备驱动程序提供了宏 EEH_CLEAR(处理) 以调用此服务。 通过 EEH 句柄中的函数指针来调用此服务。

注: 启用 PIO 与恢复插槽不一样。 实际上,这是恢复过程中的一个可选步骤。

执行环境

可以从进程或中断环境中调用此内核服务。

返回值

描述
EEH_SUCC 已成功启用 PIO。
EHEH_FAIL 调用无效或无法启用 PIO。
EEH_NO_SUPPORT 根据AIX®EEH 状态,调用有效,但当前平台状态不允许正常完成。