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 ハンドル内の関数ポインターを介して呼び出されます。
実行環境
このカーネル・サービスは、プロセス環境または割り込み環境から呼び出すことができます。
戻り値
| 項目 | 説明 |
|---|---|
| EEH SUCC (EEH_SUCC) | PIO は正常に有効化されました。 |
| EEH が失敗 | 呼び出しが無効であるか、PIO を有効にできませんでした。 |
| EEH_NO_SUPPORT | AIX®EEH の状態に従って呼び出しは有効ですが、現在のプラットフォームの状態では正常に完了しません。 |