IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ NECプラットフォームズ株式会社の特許一覧

特許7298950情報処理装置、リカバリ方法及びプログラム
<>
  • 特許-情報処理装置、リカバリ方法及びプログラム 図1
  • 特許-情報処理装置、リカバリ方法及びプログラム 図2
  • 特許-情報処理装置、リカバリ方法及びプログラム 図3
  • 特許-情報処理装置、リカバリ方法及びプログラム 図4
  • 特許-情報処理装置、リカバリ方法及びプログラム 図5
  • 特許-情報処理装置、リカバリ方法及びプログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-06-19
(45)【発行日】2023-06-27
(54)【発明の名称】情報処理装置、リカバリ方法及びプログラム
(51)【国際特許分類】
   G06F 11/14 20060101AFI20230620BHJP
   G06F 11/07 20060101ALI20230620BHJP
   G06F 13/10 20060101ALI20230620BHJP
【FI】
G06F11/14 638
G06F11/07 140T
G06F11/07 193
G06F13/10 330Z
【請求項の数】 10
(21)【出願番号】P 2022017878
(22)【出願日】2022-02-08
【審査請求日】2022-02-08
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【弁理士】
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【弁理士】
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】藤田 裕士
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2005-215809(JP,A)
【文献】特開2007-226653(JP,A)
【文献】特開2009-116642(JP,A)
【文献】特開2011-128795(JP,A)
【文献】米国特許出願公開第2014/0297999(US,A1)
【文献】米国特許出願公開第2016/0210163(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/14
G06F 11/07
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムと、
前記コンピュータシステムとバスで接続されるデバイスとを備え、
前記コンピュータシステムのOS上で動作するソフトウェアの実行により実現される監視手段は、
前記バスの閉塞を検出する検出手段と、
前記バスの閉塞が検出された場合に、前記OSに前記デバイスの切り離しを指示する処理と、前記バスの閉塞を解除する処理と、前記指示を受けた前記OSにより前記コンピュータシステムから切り離された前記デバイスをリセットする処理と、前記デバイスのリセット後に前記OSに前記デバイスを接続するよう指示する処理とを含む閉塞解除処理を行う閉塞解除手段とを備える、
情報処理装置。
【請求項2】
前記監視手段は、
前記バスの閉塞が検出された場合に、前記バスの閉塞回数に基づいて前記デバイスの閉塞を解除するか維持するかを判断する判断手段と、
前記判断手段が前記デバイスの閉塞を維持すると判断した場合に、前記バスの閉塞を解除した後に前記デバイスをリセットする処理と、前記デバイスのリセット後に前記バスを閉塞する処理と、前記バスの閉塞後に前記OSに前記デバイスを切り離すよう指示する処理とを含む閉塞維持処理を行う閉塞維持手段とをさらに備え、
前記閉塞解除手段は、前記判断手段が前記デバイスの閉塞を解除すると判断した場合に前記閉塞解除処理を行う、
請求項1に記載の情報処理装置。
【請求項3】
前記コンピュータシステムが記憶するACPI(Advanced Configuration and Power Interface)テーブルは、前記OSへの前記デバイスの切り離し又は接続の指示を発行する指示発行処理が設定され
前記閉塞解除手段は、前記OSに前記デバイスの切り離しを指示する前記処理及び前記OSに前記コンピュータシステムから切り離された前記デバイスを接続するよう指示する前記処理を、前記ACPIテーブルに設定されている前記指示発行処理をコールすることにより実行し、
前記閉塞維持手段は、前記OSに前記デバイスを切り離すよう指示する前記処理を前記ACPIテーブルに設定されている前記指示発行処理をコールすることにより実行する、
請求項2に記載の情報処理装置。
【請求項4】
前記コンピュータシステムのBIOS(Basic Input/Output System)が生成した前記ACPIテーブルに前記指示発行処理を書き込む書込手段をさらに有する、
請求項3に記載の情報処理装置。
【請求項5】
前記監視手段は、前記書込手段を前記情報処理装置に実装する実装手段をさらに備える、
請求項4に記載の情報処理装置。
【請求項6】
前記書込手段を実現するために実行されるアプリケーションが、前記コンピュータシステムのEFI(Extensible Firmware Interface)パーティションに配置される、
請求項5に記載の情報処理装置。
【請求項7】
前記コンピュータシステムは、前記デバイスのドライバをさらに実行し
前記OSは、前記ドライバを停止することにより前記デバイスを論理的に切り離し、前記ドライバを動作させることにより前記デバイスを論理的に接続する、
請求項1から請求項6のいずれか一項に記載の情報処理装置。
【請求項8】
コンピュータシステムのOS上で動作するソフトウェアの実行により実現される監視手段が行う方法であって
前記コンピュータシステムとデバイスとを接続するバスの閉塞を検出する検出ステップと、
前記バスの閉塞が検出された場合に、前記OSに前記デバイスの切り離しを指示する切り離し指示ステップと、
前記バスの閉塞を解除する閉塞解除ステップと、
前記指示を受けた前記OSにより前記コンピュータシステムから切り離された前記デバイスをリセットするリセットステップと、
前記デバイスのリセット後に前記OSに前記デバイスを接続するよう指示する接続指示ステップと、
を有するリカバリ方法。
【請求項9】
コンピュータシステムが行う方法であって、
前記コンピュータシステムOS上で動作するソフトウェアの実行により実現される監視手段が、前記コンピュータシステムとデバイスとを接続するバスの閉塞を検出する検出ステップと、
前記監視手段が、前記バスの閉塞が検出された場合に、前記OSに前記デバイスの切り離しを指示する切り離し指示ステップと、
前記監視手段が、前記バスの閉塞を解除する閉塞解除ステップと、
記切り離し指示ステップにおける前記指示を受けた前記OSにより前記コンピュータシステムから前記デバイスを切り離す切り離しステップと、
前記監視手段が、前記コンピュータシステムから切り離された前記デバイスをリセットするリセットステップと、
前記監視手段が、前記デバイスのリセット後に前記OSに前記デバイスを接続するよう指示する接続指示ステップと、
記接続指示ステップにおける前記指示を受けた前記OSにより前記デバイスを前記コンピュータシステムに接続する接続ステップと、
を有するリカバリ方法。
【請求項10】
前記コンピュータシステムに、
請求項8に記載のリカバリ方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、リカバリ方法及びプログラムに関する。
【背景技術】
【0002】
PCI(Peripheral Component Interconnect)バスを利用したコンピュータシステムは、PCIバス障害が発生した場合、その障害が発生したPCIバスを閉塞する。この閉塞によって、コンピュータシステムは、PCIバスにより接続されたPCIデバイスを利用できなくなる。PCIバス障害の多くは、間欠障害である。間欠障害の場合、閉塞されたPCIバスをリカバリすることによって、コンピュータシステムはPCIデバイスを再び利用可能になる(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2009-116642号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1の技術では、BIOSへの作り込みが必要となる。しかしながら、汎用サーバなどのコンピュータシステムでは、BIOSの改造が困難な場合がある。
【0005】
そこでこの発明は、上述の課題を解決することができる情報処理装置、リカバリ方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、情報処理装置は、コンピュータシステムと、前記コンピュータシステムとバスで接続されるデバイスとを備え、前記コンピュータシステムのOS上で動作するソフトウェアの実行により実現される監視手段は、前記バスの閉塞を検出する検出手段と、前記バスの閉塞が検出された場合に、前記OSに前記デバイスの切り離しを指示する処理と、前記バスの閉塞を解除する処理と、前記指示を受けた前記OSにより前記コンピュータシステムから切り離された前記デバイスをリセットする処理と、前記デバイスのリセット後に前記OSに前記デバイスを接続するよう指示する処理とを含む閉塞解除処理を行う閉塞解除手段とを備える。
【0007】
本発明の第2の態様によれば、リカバリ方法は、コンピュータシステムのOS上で動作するソフトウェアの実行により実現される監視手段が行う方法であって、前記コンピュータシステムとデバイスとを接続するバスの閉塞を検出する検出ステップと、前記バスの閉塞が検出された場合に、前記OSに前記デバイスの切り離しを指示する切り離し指示ステップと、前記バスの閉塞を解除する閉塞解除ステップと、前記指示を受けた前記OSにより前記コンピュータシステムから切り離された前記デバイスをリセットするリセットステップと、前記デバイスのリセット後に前記OSに前記デバイスを接続するよう指示する接続指示ステップと、を有する。
【0008】
本発明の第3の態様によれば、リカバリ方法は、コンピュータシステムが行う方法であって、前記コンピュータシステムOS上で動作するソフトウェアの実行により実現される監視手段が、前記コンピュータシステムとデバイスとを接続するバスの閉塞を検出する検出ステップと、前記監視手段が、前記バスの閉塞が検出された場合に、前記OSに前記デバイスの切り離しを指示する切り離し指示ステップと、前記監視手段が、前記バスの閉塞を解除する閉塞解除ステップと、記切り離し指示ステップにおける前記指示を受けた前記OSにより前記コンピュータシステムから前記デバイスを切り離す切り離しステップと、前記監視手段が、前記コンピュータシステムから切り離された前記デバイスをリセットするリセットステップと、前記監視手段が、前記デバイスのリセット後に前記OSに前記デバイスを接続するよう指示する接続指示ステップと、記接続指示ステップにおける前記指示を受けた前記OSにより前記デバイスを前記コンピュータシステムに接続する接続ステップと、を有する。
【0009】
本発明の第4の態様によれば、プログラムは、コンピュータシステムに上記のリカバリ方法を実行させるためのプログラムである。
【発明の効果】
【0010】
本発明によれば、汎用的なコンピュータシステムとデバイスとの間のバスを、閉塞された状態からリカバリすることが可能となる。
【図面の簡単な説明】
【0011】
図1】本発明の一実施形態による情報処理装置の機能ブロック図である。
図2】同実施形態による情報処理装置の準備フェーズにおける処理を示すフロー図である。
図3】同実施形態による情報処理装置の監視フェーズにおける処理を示すフロー図である。
図4】同実施形態による情報処理装置のPCIバス閉塞解除処理を示すフロー図である。
図5】同実施形態による情報処理装置のPCIバス閉塞継続処理を示すフロー図である。
図6】同実施形態による情報処理装置の機能ブロック図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0013】
図1は、本発明の一実施形態による情報処理装置100の構成を示す機能ブロック図である。図1では、本実施形態と関係する機能ブロックのみを抽出して示している。なお、図1における機能ブロック間の矢印は、機能ブロック間における処理等を端的に表すものであり、各機能ブロック間の双方向性を排除するものではない。情報処理装置100は、例えば、サーバコンピュータなどの装置である。情報処理装置100は、HW(ハードウェア)レイヤL10とSW(ソフトウェア)レイヤL11とを含んで構成される。
【0014】
HWレイヤL10は、情報処理装置100を構成するハードウェアの装置を示す。HWレイヤL10は、コンピュータシステム1と、PCIデバイス2と、PCIバス3とを有する。コンピュータシステム1は、PCIデバイス2とPCIバス3により接続される。コンピュータシステム1は、プロセッサや各種メモリなどを含む。コンピュータシステム1は、PCIバス閉塞レジスタ4を有する。PCIバス閉塞レジスタ4は、PCIバス閉塞フラグの値を記憶するレジスタである。本実施形態において、PCIバス閉塞フラグ「0」はPCIバス3が閉塞されていないことを示し、PCIバス閉塞フラグ「1」は、PCIバス3が閉塞されていることを示す。
【0015】
SWレイヤL11は、コンピュータシステム1がプログラムを実行することにより、HWレイヤL10を用いて実現される機能及びその機能に用いられるデータを示す。SWレイヤL11は、BIOS(Basic Input/Output System)11と、ACPI(Advanced Configuration and Power Interface)テーブル12と、EFI(Extensible Firmware Interface)パーティション13と、OS(Operation System)17と、監視部18と、PCIデバイスドライバ19とを有する。
【0016】
BIOS11は、コンピュータシステム1がUEFI(Unified Extensible Firmware Interface)仕様で規定されたBIOSのプログラムを実行することにより実現される。BIOS11として、一般的な汎用サーバ等に搭載されているものを利用可能である。ACPIテーブル12は、ACPI仕様で規定されたデータ構造のデータである。ACPIテーブル12は、コンピュータシステム1の起動時にBIOS11によって作成される。ACPIテーブル12には、システムの初期化に必要なデータが格納される。OS17は、ACPIテーブル12を参照可能である。
【0017】
EFIパーティション13は、BIOS11及びOS17からアクセス可能なデータ記憶領域である。一般的に、EFIパーティション13には、OSブートローダ16が配置される。さらに、本実施形態のEFIパーティション13には、PCIバス閉塞向けEFIアプリ14とACPI SSDT DATA15とが配置される。以下では、PCIバス閉塞向けEFIアプリ14を「EFIアプリ14」と記載する。
【0018】
EFIアプリ14は、BIOS11上で動作するEFIアプリケーションである。EFIアプリケーションは、UEFI仕様で規定されるBIOS上で動作するアプリケーションである。EFIアプリ14は、ACPI SSDT DATA15を含んでいる。EFIアプリ14は、BIOS11の起動後に、ACPI SSDT DATA15をACPIテーブル12に追加するようにBIOS11に指示する。具体的には、EFIアプリ14は、UEFI仕様で用意されているAPI(Application Program Interface)を用いて、ACPI SSDT DATA15をACPIテーブル12に追加する。EFIアプリ14は、この追加後にOSブートローダ16を起動する。なお、EFIアプリ14から読み出し可能であれば、ACPI SSDT DATA15は、EFIアプリ14の外部に記憶されてもよい。
【0019】
ACPI SSDT DATA15は、Bus Check Notifyを発行するACPI Methodが記述されたデータである。Bus Check Notifyは、ACPI仕様で規定されている。Bus Check Notifyは、OS17がPCIデバイス2を再認識するための通知である。OS17は、Bus Check Notifyを受けたときに、PCIデバイス2が見つからなければ、PCIデバイスドライバ19を停止する。これにより、PCIデバイス2を、論理的に切り離された状態とする。OS17は、PCIデバイス2が見つかれば、PCIデバイスドライバ19を開始して、PCIデバイス2が論理的に接続された状態とする。これにより、OS17は、PCIデバイス2を利用可能となる。Bus Check Notifyを利用することにより、一般的なOSに改造を行うことなくPCIデバイス2の論理的な切り離し及び接続を実行させることができる。
【0020】
OSブートローダ16は、OS17を起動するEFIアプリケーションである。OSブートローダ16は、BIOS11上で動作する。
【0021】
OS17は、例えば、汎用サーバで動作する一般的なオペレーションシステムである。OS17は、コンピュータシステム1においてプロセッサがOSのソフトウェアをメモリから読み出して実行することにより実現される。プロセッサは、例えば、CPU(central processing unit)である。OS17は、UEFI仕様により規定されたインターフェース及びACPI仕様により規定されたインターフェースを持つ。
【0022】
監視部18は、コンピュータシステム1においてプロセッサが監視ソフトウェアをメモリから読み出して実行することにより実現される。監視ソフトウェアは、OS17上で動作するソフトウェアである。監視部18は、アプリ実装部181と、履歴保持部182と、検出部183と、判断部184と、閉塞解除部185と、閉塞維持部186とを有する。
【0023】
アプリ実装部181は、EFIアプリ14をEFIパーティション13に配置する処理と、EFIアプリ14をBIOS11のBoot Entryに登録する処理と、コンピュータシステム1を再起動する処理とを実行する。
【0024】
履歴保持部182は、PCIバス3の障害履歴の情報を記憶する。検出部183は、PCIバス閉塞レジスタ4が記憶するPCIバス閉塞フラグを監視する。検出部183は、PCIバス閉塞フラグの値に基づいてPCIバス3の閉塞を検出する。検出部183は、PCIバス3の閉塞の履歴を履歴保持部182に書き込む。
【0025】
判断部184は、検出部183がPCIバス3の閉塞を検出した場合、PCIバス閉塞解除判断処理を行う。判断部184は、PCIバス閉塞解除判断処理において、履歴保持部182が記憶している障害履歴の情報を参照し、PCIバス3の閉塞の発生回数を取得する。判断部184は、閉塞の発生回数が所定回数未満である場合、間欠障害が原因でPCIバス3が閉塞されたと判断する。この場合、閉塞解除部185は、PCIバス3の閉塞を解除するPCIバス閉塞解除処理を実行する。判断部184は、閉塞の発生回数が所定回数以上である場合、固定障害が原因でPCIバス3が閉塞されたと判断する。この場合、閉塞維持部186は、PCIバス3の閉塞を継続するPCIバス閉塞維持処理を実行する。
【0026】
PCIデバイスドライバ19は、コンピュータシステム1においてプロセッサがデバイスドライバをメモリから読み出して実行することにより実現される。デバイスドライバは、OS17がPCIデバイス2を利用するためのプログラムである。PCIデバイスドライバ19は、OS17上で動作する。
【0027】
続いて、情報処理装置100の動作を説明する。情報処理装置100は、「準備フェーズ」と、「監視・リカバリフェーズ」との二つのフェーズによって、PCIバス閉塞リカバリ処理を実現する。
【0028】
図2は、情報処理装置100の準備フェーズにおける処理を示すフロー図である。準備フェーズは、コンピュータシステム1においてOS17が起動している状態で開始する。まず、監視部18のアプリ実装部181は、EFIアプリ14をEFIパーティション13に配置する(ステップS11)。例えば、アプリ実装部181は、監視ソフトウェア内や監視ソフトウェア内に記述されている保存場所などからEFIアプリ14のプログラムをコピーしてEFIパーティション13に書き込む。さらに、アプリ実装部181は、EFIアプリ14をBIOS11のBoot Entryに登録する(ステップS12)。Boot Entryは、BIOS11の起動完了後に、BIOS11が実行するプログラムを記述したエントリである。一般的には、Boot Entryに、OSブートローダ16が指定される。そのため、BIOS11の起動完了後に、OSブートローダ16が実行され、OS17が起動する。
【0029】
アプリ実装部181は、コンピュータシステム1を再起動する(ステップS13)。コンピュータシステム1の再起動によって、BIOS11が起動する。BIOS11は起動中に、ACPIテーブル12を作成する(ステップS14)。BIOS11は、作成したACPIテーブル12を、コンピュータシステム1のメモリに書き込む。BIOS11は、起動が完了すると、Boot Entryに登録されたEFIアプリ14を起動する(ステップS15)。
【0030】
EFIアプリ14は、BIOS11が作成したACPIテーブル12へACPI SSDT DATA15を追加する(ステップS16)。EFIアプリ14は、この追加を、UEFI仕様で規定されたACPI追加インターフェース(EFI_ACPI_TABLE_PROTOCOL.InstallAcpiTable)により行う。通常、BIOS11のみがACPIテーブル12の作成や変更が可能である。しかし、標準で用意されたAPI(Application Program Interface)であるACPI追加インターフェースを使用することにより、ACPIテーブル12にデータ追加を行うことができる。
【0031】
続いて、EFIアプリ14は、OSブートローダ16を起動する(ステップS17)。OSブートローダ16は、起動完了後、OS17を起動する(ステップS18)。起動されたOS17は、作成されたACPIテーブル12を参照可能である。OS17の起動完了後、コンピュータシステム1がOS17上で動作する監視ソフトウェアを実行する。これにより、監視部18が起動する。監視部18の起動後、情報処理装置100は、監視フェーズに移行する(ステップS19)。
【0032】
図3は、情報処理装置100の監視フェーズにおける処理を示すフロー図である。監視部18の検出部183は、PCIバス閉塞レジスタ4が記憶するPCIバス閉塞フラグを監視する(ステップS21)。コンピュータシステム1は、PCIバス閉塞が発生した場合に、PCIバス閉塞フラグを「0」から「1」に書替える(ステップS22)。
【0033】
検出部183は、PCIバス閉塞フラグが「0」から「1」へ変化したことを検出する(ステップS23)。判断部184は、PCIバス閉塞解除を行うか否かを判断する(ステップS24)。そこで、判断部184は、履歴保持部182が記憶している障害履歴からPCIバス閉塞の発生回数の情報を取得する。
【0034】
判断部184は、PCIバス閉塞の発生回数が所定回数未満である場合、PCIバス閉塞解除を行うと判断する(ステップS24:YES)。情報処理装置100は、後述の図4に示すPCIバス閉塞解除処理を実行する(ステップS25)。一方、判断部184は、発生回数が所定回数以上である場合、PCIバス閉塞解除を行わないと判断する(ステップS24:NO)。情報処理装置100は、後述の図5に示すPCIバス閉塞継続処理を実行する(ステップS26)。ステップS25又はステップS26の処理の後、情報処理装置100は、ステップS21のPCIバス閉塞フラグ監視処理に戻る(ステップS27)。
【0035】
図4は、情報処理装置100のPCIバス閉塞解除処理を示すフロー図である。図4は、図3のステップS25における詳細な処理を示す。監視部18の閉塞解除部185は、ACPIテーブル12に登録されているBus Check Notifyを行うACPI Methodをコールする。これにより、OS17へのBus Check Notifyが発行される(ステップS31)。Bus Check Notifyが発行されたOS17は、PCIデバイス2の再認識を行う。OS17は、PCIバス3が閉塞されているためにPCIデバイス2を見つけることができない。よって、OS17は、PCIデバイスドライバ19を停止する(ステップS32)。PCIデバイスドライバ19の停止により、PCIデバイス2は、コンピュータシステム1から論理的に切り離された状態となる。
【0036】
閉塞解除部185は、PCIバス閉塞フラグを「0」に書替える(ステップS33)。さらに、閉塞解除部185は、PCIバス閉塞解除を行って、閉塞中のPCIバス3の閉塞を解除する(ステップS34)。これにより、コンピュータシステム1からPCIデバイス2の制御が可能となる。閉塞解除部185は、Secondary Bus Resetを行って、PCIデバイス2をハードウェア的にリセットする(ステップS35)。Secondary Bus Resetの機能は、コンピュータシステム1に搭載されている。閉塞解除部185は、リセットされたPCIデバイス2の初期化処理を行う(ステップS36)。
【0037】
続いて、閉塞解除部185は、ACPIテーブル12に登録されているBus Check Notifyを行うACPI Methodをコールし、OS17にBus Check Notifyを発行する(ステップS37)。Bus Check Notifyが発行されたOS17は、PCIデバイス2の再認識を行う。OS17は、PCIデバイス2を見つけると、PCIデバイス2を論理的に接続された状態とするためPCIデバイスドライバ19を開始する(ステップS38)。PCIデバイスドライバ19の開始により、PCIデバイス2が利用可能となる。情報処理装置100は、図3のステップS27の処理を行って、ステップS21の処理に戻る。
【0038】
図5は、情報処理装置100のPCIバス閉塞継続処理を示すフロー図である。図5は、図3のステップS26における詳細な処理を示す。監視部18の閉塞維持部186は、ステップS41-1~ステップS41-6のPCIデバイスリセット処理を実行する(ステップS41)。PCIデバイスリセット処理において、まず、閉塞維持部186は、コンピュータシステム1からのPCIデバイス2に対する処理を停止する(ステップS41-1)。具体的には、閉塞維持部186は、Bus Master Disableを行って、ハードウェア的にPCIデバイス2に対する読み書きの処理を停止する。Bus Master Disableの機能は、コンピュータシステム1に搭載されている。
【0039】
続いて、閉塞維持部186は、PCIバス閉塞フラグを「0」に書替える(ステップS41-2)。閉塞維持部186は、閉塞されているPCIバス3の閉塞を解除するPCIバス閉塞解除を行う(ステップS41-3)。これにより、コンピュータシステム1からPCIデバイス2へ制御のための信号を出力できるようになる。閉塞維持部186は、Secondary Bus Resetを行って、PCIデバイス2をハードウェア的にリセットする(ステップS41-5)。PCIデバイス2のリセット後、監視部18は、PCIバス閉塞フラグを「1」に書替える(ステップS41-6)。監視部18は、PCIバス3を閉塞する(ステップS41-5)。
【0040】
ステップS41のPCIデバイスリセット処理の後、閉塞維持部186は、ACPIテーブル12に登録されているBus Check Notifyを行うACPI Methodをコールする。これにより、OS17にBus Check Notifyが発行される(ステップS42)。Bus Check Notifyが発行されたOS17は、PCIデバイス2の再認識を行う。OS17は、PCIバス3の閉塞のためPCIデバイス2を見つけることができない。よって、OS17は、PCIデバイスドライバ19を停止する(ステップS43)。PCIデバイス2は、コンピュータシステム1から論理的に切り離された状態になる。情報処理装置100は、図3のステップS27の処理を行って、ステップS21の処理に戻る。
【0041】
PCIバスを利用したコンピュータシステムは、PCIバス障害が発生すると、障害が発生したそのPCIバスを閉塞する。PCIバス障害が間欠障害である場合、PCIバス閉塞のリカバリを行うことにより、コンピュータは起動したままで再びPCIバス及びPCIデバイスを利用可能である。しかしながら、汎用サーバの場合、BIOSに、PCIバスをリカバリする機能を実装するための改造を行うことは難しい。
【0042】
BIOSを改造せずにPCIバス閉塞リカバリを実現するためには、主に次の二つの課題がある。一つめの課題は、閉塞されたPCIバスに接続されたPCIデバイスを、BIOSを使用せずにOSから論理的に切り離さなければならないことである。具体的には、BIOSが作成するACPIテーブルに、BIOSを改造することなく、Bus Check Notifyを発行するACPI Methodを組み込む必要がある。二つ目の課題は、閉塞したPCIバスに接続されたPCIデバイスが外部装置に影響を与えないように、BIOSを使用することなくPCIデバイスの電源を落さなければならないことである。
【0043】
本実施形態では、BIOS11の起動後に、EFIアプリ14が、Bus Check Notifyを発行するACPI Methodを組み込んだACPI SSDT DATA15をACPIテーブル12へ追加する。EFIアプリ14は、その追加後にOSブートローダ16を起動する。OSブートローダ16によって起動されたOS17は、ACPI SSDT DATA15が設定されたACPIテーブル12を参照可能である。そして、OS17上で実行されるソフトウェアの監視部18が、ACPIテーブル12のACPI Methodをコールする。これにより、BIOSを改造することなく、上記の一つ目の課題を解決することができる。
【0044】
また、本実施形態では、OS17上で実行されるソフトウェアの監視部18が、PCIデバイス2のリセット処理を行う。リセット処理においては、監視部18は、コンピュータシステム1に予め組み込まれているBus Master Disableを実行してPCIデバイス2への読み書きの処理を停止する。その後、監視部18は、PCIバス3の閉塞を解除し、コンピュータシステム1に予め組み込まれているSecondary Bus Resetを実行してPCIデバイス2をリセットする。監視部18は、リセット後に再度PCIバス3を閉塞する。よって、BIOSがPCIデバイスの電源を落とす必要がない。従って、BIOSを改造することなく、二つ目の課題を解決することができる。
【0045】
上述の本実施形態によれば、BIOSの改造を行うことができない汎用サーバなどのコンピュータシステムにおいても、PCIバス閉塞のリカバリが実現可能である。加えて、OSの改造を行わなくてもよい。
【0046】
図6は、本発明の実施形態による情報処理装置101の最小構成を示す機能ブロック図である。同図に示す情報処理装置101は、HWレイヤと、SWレイヤとを含んで構成される。HWレイヤは、コンピュータシステム51と、デバイス52とを有する。コンピュータシステム51は、バス53によりデバイス52と接続される。SWレイヤは、コンピュータシステム51がプログラムを実行することにより、HWレイヤを用いて実現される機能を示す。SWレイヤは、OS61と、監視部62とを有する。監視部62は、コンピュータシステム51のOS61上で動作する。監視部62は、検出部621と、閉塞解除部622とを備える。検出部621は、バス53の閉塞を検出する。閉塞解除部622は、検出部621がバス53の閉塞を検出した場合に閉塞解除処理を行う。閉塞解除処理は、デバイス52の切り離しをOS61に指示する処理と、バス53の閉塞を解除する処理と、指示を受けたOS61がコンピュータシステム51から論理的に切り離したデバイス52をリセットする処理と、デバイス52のリセット後にOS61にデバイス52を接続するよう指示する処理とを含む。情報処理装置101は、BIOSを改造することなく、コンピュータシステム51とデバイス52との間のバス53を、閉塞された状態からリカバリ可能である。
【0047】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0048】
(付記1)コンピュータシステムと、
前記コンピュータシステムとバスで接続されるデバイスとを備え、
前記コンピュータシステムのオペレーションシステム上で動作する監視手段は、
前記バスの閉塞を検出する検出手段と、
前記バスの閉塞が検出された場合に、前記オペレーションシステムに前記デバイスの切り離しを指示する処理と、前記バスの閉塞を解除する処理と、前記指示を受けた前記オペレーションシステムにより前記コンピュータシステムから切り離された前記デバイスをリセットする処理と、前記デバイスのリセット後に前記オペレーションシステムに前記デバイスを接続するよう指示する処理とを含む閉塞解除処理を行う閉塞解除手段とを備える、
情報処理装置。
【0049】
(付記2)前記監視手段は、
前記バスの閉塞が検出された場合に、前記バスの閉塞回数に基づいて前記デバイスの閉塞を解除するか維持するかを判断する判断手段と、
前記判断手段が前記デバイスの閉塞を維持すると判断した場合に、前記バスの閉塞を解除した後に前記デバイスをリセットする処理と、前記デバイスのリセット後に前記バスを閉塞する処理と、前記バスの閉塞後に前記オペレーションシステムに前記デバイスを切り離すよう指示する処理とを含む閉塞維持処理を行う閉塞維持手段とをさらに備え、
前記閉塞解除手段は、前記判断手段が前記デバイスの閉塞を解除すると判断した場合に前記閉塞解除処理を行う、
付記1に記載の情報処理装置。
【0050】
(付記3)前記コンピュータシステムが記憶するACPI(Advanced Configuration and Power Interface)テーブルは、前記オペレーションシステムへの前記デバイスの切り離し又は接続の指示を発行する指示発行処理を含み、
前記閉塞解除手段は、前記オペレーションシステムに前記デバイスの切り離へ指示する前記処理及び前記オペレーションシステムに前記コンピュータシステムから切り離された前記デバイスを接続するよう指示する前記処理を、前記ACPIテーブルに設定されている前記指示発行処理をコールすることにより実行し、
前記閉塞維持手段は、前記オペレーションシステムに前記デバイスを切り離すよう指示する前記処理を前記ACPIテーブルに設定されている前記指示発行処理をコールすることにより実行する、
付記2に記載の情報処理装置。
【0051】
(付記4)前記コンピュータシステムのBIOS(Basic Input/Output System)が生成した前記ACPIテーブルに前記指示発行処理を書き込む書込手段をさらに有する、
付記3に記載の情報処理装置。
【0052】
(付記5)前記監視手段は、前記書込手段を前記情報処理装置に実装する実装手段をさらに備える、
付記4に記載の情報処理装置。
【0053】
(付記6)前記書込手段は、前記コンピュータシステムのEFI(Extensible Firmware Interface)パーティションに実装される、
付記5に記載の情報処理装置。
【0054】
(付記7)前記情報処理装置は、前記デバイスのドライバをさらに備え、
前記オペレーションシステムは、前記ドライバを停止することにより前記デバイスを論理的に切り離し、前記ドライバを動作させることにより前記デバイスを論理的に接続する、
付記1から付記6のいずれかに記載の情報処理装置。
【0055】
(付記8)前記閉塞維持手段は、前記コンピュータシステムから前記デバイスへの処理を停止した後に、前記デバイスをリセットする前記処理を行う、
付記2に記載の情報処理装置。
【0056】
(付記9)前記指示発行処理は、前記オペレーションシステムが前記デバイスを再認識するための通知を発行する処理であり、
前記オペレーションシステムは、前記通知を受けたときに前記デバイスが認識できない場合に前記コンピュータシステムから前記デバイスを切り離した状態とし、前記デバイスが認識できた場合に前記コンピュータシステムに前記デバイスが接続された状態とする、
付記3から付記6のいずれかに記載の情報処理装置。
【0057】
(付記10)前記オペレーションシステムを起動するオペレーションシステム起動手段を有し、
前記書込手段は、前記コンピュータシステムの起動の際に前記BIOSが生成した前記ACPIテーブルへ前記指示発行処理を書き込んだ後、前記オペレーションシステム起動手段を起動する、
付記4から付記6のいずれかに記載の情報処理装置。
【0058】
(付記11)前記バスは、PCI(Peripheral Component Interconnect)バスである、
付記1から付記10のいずれかに記載の情報処理装置。
【0059】
(付記12)前記コンピュータシステムは、前記バスの閉塞の有無を表す値を記憶手段に書き込み、
前記判断手段は、前記記憶手段に記憶されている前記値を参照して前記バスの閉塞を検出する、
付記2に記載の情報処理装置。
【0060】
(付記13)コンピュータシステムのオペレーションシステム上で動作する監視手段が、
前記コンピュータシステムとデバイスとを接続するバスの閉塞を検出する検出ステップと、
前記バスの閉塞が検出された場合に、オペレーションシステムに前記デバイスの切り離しを指示する切り離し指示ステップと、
前記バスの閉塞を解除する閉塞解除ステップと、
前記指示を受けた前記オペレーションシステムにより前記コンピュータシステムから切り離された前記デバイスをリセットするリセットステップと、
前記デバイスのリセット後に前記オペレーションシステムに前記デバイスを接続するよう指示する接続指示ステップと、
を有するリカバリ方法。
【0061】
(付記14)コンピュータシステムのオペレーションシステム上で動作する監視手段が、前記コンピュータシステムとデバイスとを接続するバスの閉塞を検出する検出ステップと、
前記監視手段が、前記バスの閉塞が検出された場合に、前記オペレーションシステムに前記デバイスの切り離しを指示する切り離し指示ステップと、
前記監視手段が、前記バスの閉塞を解除する閉塞解除ステップと、
前記オペレーションシステムが、前記切り離し指示ステップにおける前記指示を受けて前記コンピュータシステムから前記デバイスを切り離す切り離しステップと、
前記監視手段が、前記コンピュータシステムから切り離された前記デバイスをリセットするリセットステップと、
前記監視手段が、前記デバイスのリセット後に前記オペレーションシステムに前記デバイスを接続するよう指示する接続指示ステップと、
前記オペレーションシステムが、前記接続指示ステップにおける前記指示を受けて前記デバイスを前記コンピュータシステムに接続する接続ステップと、
を有するリカバリ方法。
【0062】
(付記15)コンピュータに、
付記13に記載のリカバリ方法を実行させるためのプログラム。
【0063】
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。
【符号の説明】
【0064】
1…コンピュータシステム、2…PCIデバイス、3…PCIバス、4…PCIバス閉塞レジスタ、11…BIOS、12…ACPIテーブル、13…EFIパーティション、14…PCIバス閉塞向けEFIアプリ、15…ACPI SSDT DATA、16…OSブートローダ、17…OS、18…監視部、19…PCIデバイスドライバ、51…コンピュータシステム、52…デバイス、53…バス、61…OS、62…監視部、100…情報処理装置、101…情報処理装置、181…アプリ実装部、182…履歴保持部、183…検出部、184…判断部、185…閉塞解除部、186…閉塞維持部、621…検出部、622…閉塞解除部
【要約】
【課題】汎用的なコンピュータシステムとデバイスとの間のバスを、閉塞された状態からリカバリする。
【解決手段】情報処理装置は、コンピュータシステムと、デバイスとを備える。コンピュータシステムとデバイスとはバスで接続される。コンピュータシステムのオペレーションシステム上で動作する監視手段は、検出手段と、閉塞解除手段とを備える。検出手段は、バスの閉塞を検出する。閉塞解除手段は、バスの閉塞が検出された場合に、閉塞解除処理を行う。閉塞解除処理は、オペレーションシステムにデバイスの切り離しを指示する処理と、バスの閉塞を解除する処理と、指示を受けたオペレーションシステムによりコンピュータシステムから切り離されたデバイスをリセットする処理と、デバイスのリセット後にオペレーションシステムにデバイスを接続するよう指示する処理とを含む。
【選択図】図1
図1
図2
図3
図4
図5
図6