(57)【要約】      （修正有）【課題】計算機を停止せずに稼動状態のまま交換することができる計算機および計算機システムにおけるＩ／Ｏアダプタの障害処理方法を提供する。【解決手段】障害監視エージェント１１４によりドライバ検出障害発生後にドライバ１１２が採取するＯＳ１１３上のログを監視することで、ドライバ検出障害の発生を検出し、さらにＢＩＯＳ１１１を起動し障害発生部位を閉塞処理させることで、ドライバ検出障害後のＰＣＩｅデバイスを無応答とする。【選択図】図１
2013222360.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ／Ｏアダプタで発生する障害の識別子と前記Ｉ／Ｏアダプタの交換要否とを対応づけるＩ／Ｏアダプタ交換要否判定情報を格納するメモリと、
前記Ｉ／Ｏアダプタで発生する障害を検出し、前記発生した障害の識別子と前記Ｉ／Ｏアダプタが接続するバスの識別子とをログファイルに記録するドライバを実行するＣＰＵと、
前記記録されたログファイルを参照して前記発生した障害の識別子と前記バスの識別子とを取得し、前記Ｉ／Ｏアダプタ交換要否判定情報を参照して前記ログファイルから取得した障害の識別子に対応する前記Ｉ／Ｏアダプタの交換要否を取得し、前記ログファイルから取得した障害の識別子が前記Ｉ／Ｏアダプタの交換が必要な障害の識別子であると、前記ログファイルから取得したバスの識別子を前記計算機が有するレジスタに格納して、前記ＣＰＵに割込みを送信する障害監視エージェントと、
前記割込みにより起動し、前記レジスタを参照して前記格納したバスの識別子を取得し、前記レジスタから取得したバスの識別子に対応するバスを閉塞するＢＩＯＳと、を備えることを特徴とする計算機。
【請求項２】
前記Ｉ／ＯアダプタはＰＣＩエクスプレスアダプタであることを特徴とする請求項１記載の計算機。
【請求項３】
前記ドライバで検出した障害は、前記Ｉ／Ｏアダプタ上のＩ／Ｏデバイスの障害、前記Ｉ／Ｏデバイスに接続されたＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の障害、前記Ｉ／Ｏデバイスに接続されたＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）の障害のうち、何れかの障害であることを特徴とする請求項２記載の計算機。
【請求項４】
前記障害監視エージェントは、前記ログファイルから取得したバスの識別子とフラグとを対応づけて前記レジスタに格納し、
前記ＢＩＯＳは、前記レジスタを参照して前記フラグと対応づけられた前記バスの識別子を取得して、前記レジスタから取得したバスの識別子に対応するバスをリセットし、前記リセットしたバスの識別子に対応づけられたフラグを前記レジスタから削除することを特徴とする請求項３記載の計算機。
【請求項５】
前記割込みはＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）であることを特徴とする請求項３記載の計算機。
【請求項６】
前記ＢＩＯＳにより前記レジスタから取得したバスの識別子に対応するバスを閉塞すると、前記計算機を稼動させた状態で、前記障害の発生したＩ／Ｏアダプタを他のＩ／Ｏアダプタと交換することを特徴とする請求項３記載の計算機。
【請求項７】
ＣＰＵと、前記ＣＰＵで実行するドライバとＢＩＯＳとを格納するメモリと、前記ドライバで制御するＩ／Ｏアダプタと、を有する計算機システムにおける障害処理方法であって、
前記計算機システムは、前記Ｉ／Ｏアダプタで発生する障害の識別子と前記Ｉ／Ｏアダプタの交換要否とを対応づけるＩ／Ｏアダプタ交換要否判定情報を有し、
前記Ｉ／Ｏアダプタに障害が発生すると、前記ドライバは、前記発生した障害を検出し、前記発生した障害の識別子と前記Ｉ／Ｏアダプタが接続するバスの識別子とをログファイルに記録し、
前記メモリに格納され、前記ＣＰＵで実行される障害監視エージェントは、前記記録されたログファイルを参照して前記発生した障害の識別子と前記バスの識別子とを取得し、前記Ｉ／Ｏアダプタ交換要否判定情報を参照して前記ログファイルから取得した障害の識別子に対応する前記Ｉ／Ｏアダプタの交換要否を取得し、
前記ログファイルから取得した障害の識別子が前記Ｉ／Ｏアダプタの交換が必要な障害の識別子であると、前記ログファイルから取得したバスの識別子を前記計算機システムが有するレジスタに格納して、前記ＣＰＵに前記ＢＩＯＳを起動する割込みを送信し、
前記ＣＰＵは、前記割込みにより前記ＢＩＯＳを実行し、
前記ＢＩＯＳは、前記レジスタを参照して前記格納したバスの識別子を取得し、前記レジスタから取得したバスの識別子に対応するバスを閉塞することを特徴とする障害処理方法。
【請求項８】
前記障害が発生したＩ／ＯアダプタはＰＣＩエクスプレスアダプタであることを特徴とする請求項７記載の障害処理方法。
【請求項９】
前記発生した障害は、前記Ｉ／Ｏアダプタ上のＩ／Ｏデバイスの障害、前記Ｉ／Ｏデバイスに接続されたＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の障害、前記Ｉ／Ｏデバイスに接続されたＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）の障害のうち、何れかの障害であることを特徴とする請求項８記載の障害処理方法。
【請求項１０】
前記障害監視エージェントは、前記ログファイルから取得したバスの識別子とフラグとを対応づけて前記レジスタに格納し、
前記ＢＩＯＳは、前記レジスタを参照して前記フラグと対応づけられた前記バスの識別子を取得し、前記レジスタから取得したバスの識別子に対応するバスをリセットすることを特徴とする請求項９記載の障害処理方法。
【請求項１１】
前記割込みはＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）であることを特徴とする請求項９記載の障害処理方法。
【請求項１２】
前記ＢＩＯＳにより前記レジスタから取得したバスの識別子に対応するバスを閉塞すると、前記計算機システムを稼動させた状態で、前記障害の発生したＩ／Ｏアダプタを他のＩ／Ｏアダプタと交換することを特徴とする請求項９記載の障害処理方法。
【請求項１３】
前記ＢＩＯＳは、前記バスをリセットすると、前記レジスタに格納されたバスの識別子の削除と、前記バスの識別子に対応づけられたフラグの削除の、少なくともいずれかを実行することを特徴とする請求項１０記載の障害処理方法。
【請求項１４】
前記Ｉ／Ｏアダプタ交換要否判定情報は、前記Ｉ／Ｏアダプタの種類と、前記Ｉ／Ｏアダプタで発生する障害の識別子と、前記Ｉ／Ｏアダプタの交換要否と、を対応づける情報であって、
前記障害監視エージェントは、前記Ｉ／Ｏアダプタ交換要否判定情報を参照して、前記障害が発生したＩ／Ｏアダプタの種類と前記取得した障害の識別子とに対応する前記Ｉ／Ｏアダプタの交換要否を取得することを特徴とする請求項９記載の障害処理方法。
【請求項１５】
前記計算機システムは、前記ドライバを識別するドライバの識別子と前記Ｉ／Ｏアダプタの種類とを対応づけるＩ／Ｏアダプタ特定情報を有し、
前記ドライバは、前記ドライバを識別するドライバの識別子をログファイルに記録し、
前記障害監視エージェントは、前記記録されたログファイルを参照して前記ドライバの識別子を取得し、前記ログファイルから取得したドライバの識別子に対応する前記Ｉ／Ｏアダプタの種類を前記Ｉ／Ｏアダプタ特定情報から取得することを特徴とする請求項１４記載の障害処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機および計算機システムにおけるＩ／Ｏアダプタの障害処理方法に関する。
【背景技術】
【０００２】
Ｉ／ＯインターフェースとしてＰＣＩエクスプレス（以下ＰＣＩｅと略記する)が計算機システムに広く使用されている。ＰＣＩｅアダプタにおける障害は、ファームウェアで検出される障害（以降、ＰＣＩe障害と記載する）と、ファームウェアで検出されない障害（以降、ドライバ検出障害と記載する）とに分けられる。
【０００３】
非特許文献１のＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎで規定されているＳｕｒｐｒｉｓｅ  ＤｏｗｎやＵｎｓｕｐｐｏｒｔｅｄ  Ｒｅｑｕｅｓｔ等のＰＣＩｅ障害については、一般的にＢＩＯＳ等のファームウェア（Ｆ／Ｗ）がエラーハンドリングを行う。例えば、ファームウェアによる障害情報のロギングや、特許文献１のように、ＢＩＯＳによりＰＣＩｅ障害時に閉塞処理を行い、障害の発生したＰＣＩｅデバイスがＩ／Ｏアクセスに対する応答を無応答にする。
【０００４】
一方、ドライバ検出障害は、オペレーティングシステム（ＯＳ）上のデバイスドライバで検出される障害であり、ＰＣＩｅインターフェース上の障害でないため、ファームウェアでは検出されない。ドライバ検出障害は、例えばＰＣＩｅアダプタ上のＰＣＩｅデバイスの障害や、ＰＣＩｅデバイスより先のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）の障害である。このドライバ検出障害は、ＯＳ上のデバイスドライバがエラーハンドリングを行い、ロギングを行う。また、マルチパスＩ／Ｏ構成とし、デバイスドライバなどによりパス切り替えを行うことによりドライバ検出障害後のシステム稼動を継続させることが一般的に行われている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２３１３４０号公報
【非特許文献】
【０００６】
【非特許文献１】「ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  ２．１」、ＰＣＩ−ＳＩＧ、２００９年、p.379-384
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＰＣＩｅアダプタにおける障害のエラー処理方法として、特許文献１のようにＢＩＯＳによるエラー処理方法と、ＯＳによるＡＥＲ（Ａｄａｖａｎｃｅｄ  Ｅｒｒｏｒ  Ｒｅｐｏｒｔｉｎｇ）などのエラー処理方法とがある。一般的にＢＩＯＳは、ＯＳやＯＳ上のアプリケーションと比べてハードウェアをより直接的に制御できるので、エラー処理をより高信頼に行うことができる。
【０００８】
前述の特許文献1のＢＩＯＳは、ＰＣＩe障害の発生したＰＣＩeデバイスを閉塞できる。しかし、ドライバ検出障害については、ＢＩＯＳで検出されない障害であるため、従来はＢＩＯＳにより障害の発生したＰＣＩeデバイスを閉塞できなかった。そのため、ドライバ検出障害後のＰＣＩｅデバイスが、Ｉ／Ｏアクセスに対する応答を無応答にすることを保障できなかった。
【課題を解決するための手段】
【０００９】
上記課題を解決するための本発明の一例は以下のとおりである。Ｉ／Ｏアダプタで発生する障害の識別子と前記Ｉ／Ｏアダプタの交換要否とを対応づけるＩ／Ｏアダプタ交換要否判定情報を格納するメモリと、前記Ｉ／Ｏアダプタで発生する障害を検出し、前記発生した障害の識別子と前記Ｉ／Ｏアダプタが接続するバスの識別子とをログファイルに記録するドライバを実行するＣＰＵと、前記記録されたログファイルを参照して前記発生した障害の識別子と前記バスの識別子とを取得し、前記Ｉ／Ｏアダプタ交換要否判定情報を参照して前記ログファイルから取得した障害の識別子に対応する前記Ｉ／Ｏアダプタの交換要否を取得し、前記ログファイルから取得した障害の識別子が前記Ｉ／Ｏアダプタの交換が必要な障害の識別子であると、前記ログファイルから取得したバスの識別子を前記計算機が有するレジスタに格納して、前記ＣＰＵに割込みを送信する障害監視エージェントと、前記割込みにより起動し、前記レジスタを参照して前記格納したバスの識別子を取得し、前記レジスタから取得したバスの識別子に対応するバスを閉塞するＢＩＯＳと、を備えることを特徴とする計算機である。
【発明の効果】
【００１０】
本発明によれば、ドライバ検出障害後のＰＣＩｅデバイスのＩ／Ｏアクセスに対する応答に対し無応答にすることができる。
【図面の簡単な説明】
【００１１】
【図１】実施例における計算機の構成図の例である。
【図２】ドライバ検出障害発生時の閉塞処理を説明するフローチャートの例である。
【図３】ドライバ検出障害発生時にドライバが採取するログの例である。
【図４】障害監視エージェントの構成図の例である。
【図５】ＰＣＩｅデバイス特定テーブルの構成図の例である。
【図６】ＰＣＩｅアダプタ交換要否判定テーブルの構成図の例である。
【図７】ドライバ検出障害検出処理のフローチャートの例である。
【図８】レジスタの構成図の例である。
【図９】ＢＩＯＳによる閉塞処理のフローチャートの例である。
【発明を実施するための形態】
【００１２】
以下、図面を用いて、実施例を説明する。
【００１３】
図1は、本実施形態の計算機の構成図である。計算機１００はＣＰＵ１０１、メモリ１０２、Ｉ／Ｏハブ１０３、ＰＣＩｅスロット＃１に搭載されたＰＣＩｅアダプタ１０４、ＰＣＩｅスロット＃２に搭載されたＰＣＩｅアダプタ１０５から構成される。ＰＣＩeアダプタ１０４、１０５は、Ｉ／Ｏアダプタであれば良い。ここで、計算機１００は、他の計算機と連動させた計算機システムであっても良い。
【００１４】
ＰＣＩｅアダプタ１０４、１０５上には、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）やＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）など、アダプタの種類に応じたコントローラ１１６，１１７が搭載される。ＯＳ１１３は、それらのコントローラ１１６，１１７をＰＣＩｅデバイスとして認識する。
【００１５】
Ｉ／Ｏハブ１０３には、Ｉ／Ｏコントローラハブ１０９が接続される。Ｉ／Ｏコントローラハブ１０９には、ハードディスクドライブ（ＨＤＤ）１１０が接続される。また、Ｉ／Ｏハブ１０３は、ＢＩＯＳ１１１、障害監視エージェント１１４からアクセス可能なレジスタ１０８を持つ。例えば、レジスタ１０８としてスクラッチレジスタを用いても良い。
【００１６】
ＰＣＩeアダプタ１０４と１０５は、それぞれＰＣＩe１０６、１０７のバスを介して、Ｉ／Ｏハブ１０３に接続されている。
【００１７】
メモリ１０２にはＣＰＵ１０１で実行される、ＢＩＯＳ１１１、ドライバ（デバイスドライバ）１１２、ＯＳ１１３、障害監視エージェント１１４が格納される。また、ドライバ１１２は、障害を検出した際にログファイル１１５にログを記録する。ログファイル１１５は、ＨＤＤ１１０に格納される。ここで、ＨＤＤ１１０はログファイルを格納する記憶部であれば良く、いわゆるメモリであっても良い。
【００１８】
また、障害監視エージェント１１４は、計算機１００の内部になくてもよい。その場合、例えば、障害監視エージェント１１４は、計算機１００と接続された管理サーバやＳＶＰ（Ｓｅｒｖｉｃｅ  Ｐｒｏｃｅｓｓｏｒ）内部の記憶部に格納され、管理サーバやＳＶＰが有するＣＰＵで実行されてもよい。
【００１９】
一般に、ＰＣＩｅアダプタの交換は、計算機を停止せずに稼動状態のまま交換することが望まれている。ＰＣＩｅは、稼動状態のままＰＣＩｅアダプタを交換するＨｏｔＰｌｕｇをサポートしている。
【００２０】
ＰＣＩｅアダプタ１０４、１０５のＨｏｔＰｌｕｇを高信頼に行うためには、ＰＣＩｅアダプタ１０４、１０５によるＩ／Ｏアクセスに対する応答を無応答とする必要がある。ここで、無応答とは、ＰＣＩｅアダプタ１０４、１０５がＩ／Ｏアクセスに対する応答を一定の状態とすることである。例えば、register readに対し常にall “f“を返す。
【００２１】
しかし、ドライバ検出障害のうちＰＣＩｅデバイスに障害が発生している場合、ＰＣＩｅデバイスが正常な応答を返すことができない可能性がある。ドライバ検出障害発生後にＨｏｔＰｌｕｇによるＰＣＩｅアダプタ１０４、１０５の交換を行う場合、障害発生後のＩ／Ｏアクセスに対するＰＣＩｅアダプタ１０４、１０５の応答を無応答に保障することが困難であるため、ＨｏｔＰｌｕｇが正常に処理されることを保障できない。
【００２２】
本実施例では、ＨｏｔＰｌｕｇによるＰＣＩｅアダプタ１０４、１０５の交換が正常に処理されるために、ＢＩＯＳ１１１によってドライバ検出障害が発生した部位を閉塞し、ＰＣＩeアダプタ１０４、１０５が応答しないようにする。
【００２３】
以下にＰＣＩｅアダプタ１０４でドライバ検出障害が発生した場合の閉塞処理の流れを図２のフローチャートを用いて説明する。
【００２４】
ＰＣＩｅアダプタ１０４でドライバ検出障害が発生すると、ＰＣＩｅアダプタ１０４を制御するドライバ１１２は障害を検出し障害内容等の情報をログとしてＯＳ１１３上のログファイル１１５に記録する（２０１）。
【００２５】
ドライバ検出障害は、例えばＰＣＩｅアダプタ１０４，１０５上のＰＣＩｅデバイスの障害や、ＰＣＩｅデバイスより先のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）の障害である。ドライバ検出障害の例として、コントローラ１１６、１１７の内部障害やＰＣＩeアダプタ１０４、１０５に接続されているＬＡＮインターフェースのリンクダウンがある。
【００２６】
また、ドライバ１１２で検出できる障害には範囲があり、ＰＣＩe障害のうちドライバで検出されない障害についてはファームウェアがエラーハンドリングを行う。また、ＰＣＩe障害のうちドライバでも検出される障害については、ファームウェアがエラーを検出しエラーハンドリングを行っても、ドライバがエラーを検出しエラーハンドリングを行っても良い。一般的にファームウェアは、ＯＳやＯＳ上のアプリケーションと比べてハードウェアをより直接的に制御でき、エラー処理をより高信頼に行うことができるので、ファームウェアがエラーハンドリングをするほうが良い。本実施例では、ＢＩＯＳ１１１が、障害の発生したＰＣＩeデバイスを閉塞処理する。
【００２７】
ドライバ検出障害のログがログファイル１１５に記録されると、ログファイル１１５を監視している障害監視エージェント１１４がドライバ検出障害の発生を検出する（２０２）。ここで、障害監視エージェント１１４はログファイル１１５を、例えば３０秒間隔等、定期的に監視する。
【００２８】
障害監視エージェント１１４は、ＰＣＩｅアダプタ交換が必要と判断した場合、Ｉ／Ｏハブ１０３のレジスタ１０８に、ＢＩＯＳ１１１に閉塞処理させるための情報を記録する。レジスタ１０８への記録後、障害監視エージェント１１４は、ＢＩＯＳ１１１を起動するためにＳＭＩ発行部４０５によりＣＰＵ１０１にＢＩＯＳ１１１を起動する割込みを送信する。ＢＩＯＳ１１１を起動する割込みは、例えばＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）である。
【００２９】
ＣＰＵ１０１はＳＭＩによりＢＩＯＳ１１１を起動する。ＢＩＯＳ１１１はレジスタ１０８を読み出し、ＰＣＩｅアダプタ１０４を閉塞する。閉塞処理方法として、ＢＩＯＳ１１１がＰＣＩｅ１０６をリセットすることにより、ドライバ検出障害が発生したＰＣＩｅアダプタ１０４を閉塞してもよい（２０３）。
【００３０】
図３にドライバ１１２が記録するログの例を示す。ログとして、当該ＰＣＩｅデバイスの種類を示すドライバ識別子３０１、障害の内容を示す障害ＩＤ３０２、当該ＰＣＩｅデバイスが接続されているバスの識別子であるＢｕｓ番号３０３が記録される。例えばＰＣＩｅアダプタ１０４でドライバ検出障害が発生した場合、Ｂｕｓ番号３０３はＰＣＩｅ１０６に割り当てられているＢｕｓ番号となる。障害ＩＤ３０２は、障害の識別子であれば良い。
【００３１】
障害監視エージェント１１４の構成図を図４に示す。障害監視エージェント１１４はログファイル１１５を定期的に監視する障害監視部４０１と、ログファイル１１５にドライバ検出障害時のログが記録されていた場合に、障害が発生したＰＣＩｅアダプタを特定し、ＰＣＩｅアダプタ交換が必要かどうかを判断するドライバ検出障害解析部４０２と、ＰＣＩｅデバイス特定テーブル４０３と、ＰＣＩｅアダプタ交換要否判定テーブル４０４と、ＢＩＯＳ１１１を起動するためにＣＰＵ１０１にＢＩＯＳ１１１を起動する割込みを送信するＳＭＩ発行部４０５とで構成される。
【００３２】
ＰＣＩｅデバイス特定テーブル４０３の構成図を図５に示す。ＰＣＩｅデバイス特定テーブル４０３は、ドライバ１１２が記録したログから、当該ドライバ１１２が制御するＰＣＩｅデバイスを特定するためのテーブルである。
【００３３】
ＰＣＩｅデバイス特定テーブル４０３は、計算機１００がサポートするＰＣＩｅアダプタ１０４、１０５のドライバ１１２がログファイル１１５内にログを記録する際に出力するドライバ識別子５０１と、ログを記録したドライバ１１２が制御するＰＣＩｅデバイスの種類５０２の列を持つ。ここで、ＰＣＩｅデバイス特定テーブル４０３は、ドライバ１１２が制御するＩ／Ｏアダプタを特定するための情報であるＩ／Ｏアダプタ特定情報であれば良い。
【００３４】
ＰＣＩｅアダプタ交換要否判定テーブル４０４の構成図を図６に示す。ＰＣＩｅアダプタ交換要否判定テーブル４０４は、ログファイル１１５内に記録されたドライバ検出障害のログから、障害が発生したＰＣＩｅアダプタの交換の要否を決定するためのテーブルである。ここで、ＰＣＩｅアダプタ交換要否判定テーブル４０４は、障害が発生したＩ／Ｏアダプタの交換の要否を決定するための情報であるＩ／Ｏアダプタ交換要否判定情報であれば良い。
【００３５】
ＰＣＩｅアダプタ交換要否判定テーブル４０４は、ＰＣＩｅデバイスの種類６０１、障害ＩＤ６０２、ＰＣＩｅアダプタ交換要否６０３の列を持つ。ＰＣＩｅアダプタ交換要否６０３には、計算機１００がサポートするＰＣＩｅアダプタ１０４、１０５のドライバ１１２が採取する全ての障害ＩＤのログにおいて、ＰＣＩｅアダプタ交換が必要な障害の内容を示す障害ＩＤである場合には“１”を、ＰＣＩｅアダプタ交換が不要な障害の内容を示す障害ＩＤである場合には“０”を記録しておく。
【００３６】
すなわち、図６のＰＣＩｅアダプタ交換要否判定テーブル４０４は、発生したドライバ検出障害が、ＰＣＩｅアダプタ１０４、１０５の交換が必要な障害か不要な障害かを規定するテーブルである。
【００３７】
障害ＩＤ６０２が“a”で識別される障害は、ＰＣＩeアダプタ交換要否６０３の“０”と対応しており、ＰＣＩｅアダプタ交換が不要な障害である。ＰＣＩｅアダプタ交換が不要な障害とは、例えばＰＣＩeアダプタ１０４、１０５のハードウェアの障害でないものである。ＰＣＩｅアダプタ交換が不要な障害の例として、ＰＣＩeアダプタ１０４、１０５に接続されているＬＡＮインターフェースのリンクダウンがある。
【００３８】
障害ＩＤ６０２が“ｂ”で識別される障害は、ＰＣＩeアダプタ交換要否６０３の“１”と対応しており、ＰＣＩｅアダプタ交換が必要な障害である。ＰＣＩｅアダプタ交換が必要な障害とは、例えばＰＣＩeアダプタ１０４、１０５のハードウェアの障害である。ＰＣＩeアダプタ１０４、１０５のハードウェアの障害の例として、コントローラ１１６、１１７の内部障害がある。
【００３９】
障害ＩＤ６０２が“c”で識別される障害は、ＰＣＩeデバイスの種類６０１によってＰＣＩeアダプタ交換要否６０３が異なる。ＰＣＩeアダプタ交換が必要な障害と不要な障害は、ＰＣＩeアダプタ１０４、１０５の構成によって異なる場合がある。
【００４０】
図５、図６のテーブルは、計算機１００がサポートするＰＣＩｅアダプタ１０４、１０５に関する情報であり、あらかじめ設計者により設計時に障害監視エージェント１１４に組み込まれ、障害処理中には更新・変更されない。
【００４１】
図７に障害監視エージェント１１４によるドライバ検出障害検出処理２０２のフローチャートを示す。
【００４２】
まず、障害監視エージェント１１４は障害監視部４０１により、ログファイル１１５を読み出し(７０１)、ログファイル１１５が更新されたかどうかを判定する(７０２)。
【００４３】
判定の結果、ログファイル１１５に更新があった場合、ドライバ検出障害解析部４０２により、ログファイル１１５において更新された箇所に記録されたログのドライバ識別子３０１と障害ＩＤ３０２とＢｕｓ番号３０３を取得する。
【００４４】
障害監視エージェント１１４は、取得したドライバ識別子３０１から、ＰＣＩｅデバイス特定テーブル４０３のドライバ識別子の列５０１を検索する。検索により、取得したドライバ識別子３０１と一致した場合、障害監視エージェント１１４は、ドライバ検出障害のログが存在することを認識し(７０３)、一致した行のＰＣＩｅデバイスの種類５０２の列から、ログを記録したＰＣＩｅデバイスの種類を特定する(７０４)。
【００４５】
続いて、ドライバ検出障害解析部４０２はＰＣＩｅアダプタ交換要否判定テーブル４０４において、（７０４）で特定したＰＣＩｅデバイスの種類と、ログに記録された障害ＩＤ３０２を用いて検索し、一致した行のＰＣＩｅアダプタ交換要否６０３が“１”であればＰＣＩｅアダプタ交換が必要と判断し、“０”であればＰＣＩｅアダプタ交換は不要と判断する(７０５)。
【００４６】
ＰＣＩｅアダプタ交換が必要と判断した場合、ドライバ検出障害解析部４０２はＩ／Ｏハブ１０３のレジスタ１０８に、ＢＩＯＳ１１１に閉塞処理させるための情報を書き込む。
【００４７】
図８にレジスタ１０８の構成図を示す。レジスタ１０８の各エントリにはフラグであるＶａｌｉｄ８０１とＢｕｓ番号８０２のフィールドがあり、初期状態は全て０となっている。
【００４８】
ドライバ検出障害解析部４０２は、ＰＣＩｅアダプタ交換が必要と判断した後に、レジスタ１０８のエントリ＃０からＶａｌｉｄ８０１が“０”のエントリを検索し、最初に“０”のエントリのＶａｌｉｄ８０１を“１”に書き換え、対応するＢｕｓ番号８０２に、ドライバ１１２が記録したログのＢｕｓ番号３０３の値を書き込む。
【００４９】
ドライバ検出障害が同時に複数発生し、ドライバ検出障害解析部４０２が同時に複数のＰＣＩｅアダプタ交換が必要と判断した場合は、上記の動作を繰り返すことにより、複数エントリのＶａｌｉｄ８０１とＢｕｓ番号８０２が更新される（７０６）。
【００５０】
レジスタ１０８への記録後、障害監視エージェント１１４は、ＢＩＯＳ１１１を起動するためにＳＭＩ発行部４０５によりＣＰＵ１０１にＢＩＯＳ１１１を起動する割込みを送信する。ＢＩＯＳ１１１を起動する割込みは、例えばＳＭＩである（７０７）。
【００５１】
ＳＭＩ発行後、障害監視エージェント１１４は一定時間で定期的にログファイル１１５を監視するループに戻る（７０８）。
【００５２】
（７０２）においてログファイル１１５に更新がなかった場合や、（７０３）においてログファイル１１５にドライバ検出障害がなかった場合、及び（７０５）においてＰＣＩｅアダプタ交換が必要なドライバ検出障害がなかった場合も同様に、ログファイル１１５を定期的に監視するループに戻る。なお、障害監視エージェント１１４によるログファイル１１５の監視は、定期的でなくても良い。
【００５３】
図９に、ＢＩＯＳ１１１による閉塞処理２０３のフローチャートを示す。ＳＭＩによりＣＰＵ１０１がＢＩＯＳ１１１を起動すると、ＢＩＯＳ１１１はレジスタ１０８をエントリ＃０から読み出し（９０１、９０２）、Ｖａｌｉｄ８０１が“１”かどうかを判定する（９０３）。
【００５４】
判定の結果、Ｖａｌｉｄ８０１が“１”の場合は、Ｂｕｓ番号８０２のフィールドに記録されたＢｕｓ番号に対応するバス（ＰＣＩｅ）をリセットし（９０４）、当該エントリをクリアする（９０５）。すなわち、エントリ＃０におけるＶａｌｉｄ８０１とＢｕｓ番号８０２のフィールドを“０”に書き換える。Ｖａｌｉｄ８０１のフラグは削除される。
【００５５】
ここで、ＰＣＩｅ１０６、１０７のリセットには、ＰＣＩｅの仕様で規定されているＳｅｃｏｎｄａｒｙ  Ｂｕｓ  Ｒｅｓｅｔを用いる。ＢＩＯＳ１１１が当該Ｂｕｓ番号８０２のＲｏｏｔ  ＰｏｒｔもしくはＤｏｗｎｓｔｒｅａｍ  ＰｏｒｔにあるＢｒｉｄｇｅ  Ｃｏｎｔｒｏｌ  ＲｅｇｉｓｔｅｒのＳｅｃｏｎｄａｒｙ  Ｂｕｓ  Ｒｅｓｅｔビットを書き換えることで行う。
【００５６】
上記の処理を全てのエントリ（エントリ＃０からｎまで）に対し行う（９０６、９０７）。
【００５７】
以上の処理により、レジスタ１０８の複数エントリのＶａｉｌｄ８０１とＢｕｓ番号８０２を更新することにより、複数のＰＣＩｅデバイスで同時にＰＣＩｅアダプタ交換が必要なドライバ検出障害が発生した場合でも、それぞれのＢｕｓ番号８０２で識別されるバス（ＰＣＩｅ１０６，１０７）に対し閉塞が可能である。
【００５８】
ＰＣＩｅアダプタ１０４でドライバ検出障害が発生した場合、障害監視エージェント１１４によりＰＣＩｅアダプタ交換の要否を判定する。判定の結果、ＰＣＩｅアダプタ交換が必要な場合は、ＳＭＩによりＢＩＯＳ１１１を起動するので、ＢＩＯＳ１１１による障害発生部位の閉塞処理が可能となる。ＢＩＯＳ１１１は、ＰＣＩｅ１０６をリセットし、ドライバ検出障害が発生したＰＣＩｅアダプタ１０４を閉塞する。
【００５９】
本閉塞処理によりＰＣＩｅアダプタ１０４を無応答とすることが可能となる。閉塞後、通常のＨｏｔＰｌｕｇの操作を行うことで、ＰＣＩｅアダプタ１０４の交換が可能となる。
【００６０】
ＢＩＯＳ１１１によりレジスタ１０８から取得したＢｕｓ番号（バスの識別子）８０２に対応するバス（ＰＣＩe）１０４を閉塞すると、前記計算機１００を稼動させた状態で、前記障害の発生したＰＣＩeアダプタ１０４を他のＰＣＩeアダプタと交換する。
【００６１】
上記より、ＰＣＩｅアダプタ交換が必要なドライバ検出障害が発生したＰＣＩｅアダプタを閉塞し、閉塞によりＰＣＩｅデバイスのＩＯアクセスに対する応答を無応答に保障できる。そのため、ドライバ検出障害後に、計算機１００を停止せず、ＨｏｔＰｌｕｇによる障害発生部位のＰＣＩｅアダプタの交換を高信頼に行うことができる。
【００６２】
また、本発明では、既存の計算機のハードウェア構成やＯＳを変更せずに、ＰＣＩｅアダプタ交換が必要なドライバ検出障害が発生したＰＣＩｅアダプタに対してＢＩＯＳ１１１による閉塞処理を実行できる。
【符号の説明】
【００６３】
１００  計算機
１０１  ＣＰＵ
１０２  メモリ
１０３  Ｉ／Ｏハブ
１０４  ＰＣＩｅアダプタ
１０５  ＰＣＩｅアダプタ
１０６  ＰＣＩｅ
１０７  ＰＣＩｅ
１０８  レジスタ
１０９  Ｉ／Ｏコントローラハブ
１１０  ＨＤＤ
１１１  ＢＩＯＳ
１１２  ドライバ
１１３  ＯＳ
１１４  障害監視エージェント
１１５  ログファイル
【図１】
2013222360.tif 000003
【図２】
2013222360.tif 000004
【図３】
2013222360.tif 000005
【図４】
2013222360.tif 000006
【図５】
2013222360.tif 000007
【図６】
2013222360.tif 000008
【図７】
2013222360.tif 000009
【図８】
2013222360.tif 000010
【図９】
2013222360.tif 000011