eeh_enable_pio カーネル・サービス

目的

このカーネル・サービスにより、EEH イベント後にアダプターに対するプログラム入出力 (PIO または MMIO) が可能になります。

構文

#include <sys/eeh.h>

long eeh_enable_pio(handle)
eeh_handle_t handle;

パラメーター

項目 説明
処理 eeh_init または eeh_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_ 消去(ハンドル) は、デバイス・ドライバーがこのサービスを呼び出すために提供されています。 このサービスは、EEH ハンドル内の関数ポインターを介して呼び出されます。

注: PIO を有効にすることは、スロットをリカバリーすることと同じではありません。 実際、これはリカバリー手順のオプション・ステップです。

実行環境

このカーネル・サービスは、プロセス環境または割り込み環境から呼び出すことができます。

戻り値

項目 説明
EEH SUCC (EEH_SUCC) PIO は正常に有効化されました。
EEH が失敗 呼び出しが無効であるか、PIO を有効にできませんでした。
EEH_NO_SUPPORT AIX®EEH の状態に従って呼び出しは有効ですが、現在のプラットフォームの状態では正常に完了しません。