処理部と記憶部と、物理ブリッジとデバイスとからなる物理デバイスツリーを備えた計算機システムであって、前記記憶部上に、複数の独立に動作可能な仮想計算機と、当該仮想計算機を管理するハイパバイザが記憶され、前記物理ブリッジは前記デバイスを特定する情報を記録する記憶領域を備え、前記仮想計算機は、仮想処理部、仮想記憶部、及び仮想ブリッジと仮想デバイスからなる仮想デバイスツリーを有し、前記仮想ブリッジは前記仮想デバイスを特定する情報を記録する仮想記憶領域を備え、前記仮想デバイス各々に対応する前記デバイスが少なくとも一つ存在し、前記ハイパバイザ上に前記仮想ブリッジ内の情報を変更する仮想ブリッジ変更プログラムを備える、ことを特徴とする計算機システム。請求項1に記載の計算機システムであって、前記仮想デバイス各々と、前記デバイス各々は互いに対応している、ことを特徴とする計算機システム。請求項1に記載の計算機システムであって、前記ハイパバイザは、前記デバイスから割り込みがあがった際に、前記仮想ブリッジ変更プログラムを起動することにより、前記割り込みの発信元のデバイスを特定し、特定した前記発信元のデバイスが対応する前記仮想計算機の前記仮想ブリッジに情報を記録し、前記仮想計算機に対して仮想的な割り込みを上げ、当該仮想計算機が割り込み処理を行う、ことを特徴とする計算機システム。請求項2に記載の計算機システムであって、前記ハイパバイザは、前記デバイスから割り込みがあがった際に、前記仮想ブリッジ変更プログラムを起動することにより、前記割り込みの発信元のデバイスを特定し、特定した前記発信元のデバイスが対応する前記仮想計算機の前記仮想ブリッジに情報を記録し、前記仮想計算機に対して仮想的な割り込みを上げ、当該仮想計算機が割り込み処理を行う、ことを特徴とする計算機システム。請求項3に記載の計算機システムであって、前記仮想ブリッジの前記仮想記憶領域に記録される前記仮想デバイスを特定する情報は、障害の発生した前記仮想デバイスを特定する情報である、ことを特徴とする計算機システム。請求項5に記載の計算機システムであって、前記仮想計算機は前記割り込み処理として、障害の発生した前記仮想デバイスの障害理由を特定し、特定した前記障害に対処するための処理を行う、ことを特徴とする計算機システム。請求項1に記載の計算機システムであって、前記ハイパバイザは、前記デバイスを特定する情報と、前記仮想デバイスを特定する情報を対応付けるテーブルを備える、ことを特徴とする計算機システム。請求項1に記載の計算機システムであって、前記ハイパバイザは、前記仮想計算機を特定する情報と、前記仮想ブリッジを特定する情報と、直上仮想ブリッジを特定する情報を対応付けるテーブルを備える、ことを特徴とする計算機システム。請求項1に記載の計算機システムであって、前記物理デバイスツリーは、前記処理部と前記物理ブリッジの間に設置されるルートポートを更に有し、前記仮想デバイスツリーは、前記ルートポートに対応する仮想ルートポートを更に有し、前記ルートポート、および前記仮想ルートポートは、それぞれ前記デバイスの情報を記録する記憶領域、および前記仮想デバイスを特定する情報を記録する仮想記憶領域を有する、ことを特徴とする計算機システム。処理部と、記憶部と、物理ブリッジとデバイスからなる物理デバイスツリーを備えた計算機システムの制御方法であって、前記記憶部上に、複数の独立に動作可能な仮想計算機と、当該仮想計算機を管理するためのハイパバイザを記憶し、前記仮想計算機は、仮想処理部、仮想記憶部、及び仮想ブリッジと仮想デバイスからなる仮想デバイスツリーを有し、前記物理ブリッジに、前記デバイスを特定する情報を記録するための記憶領域を設け、前記仮想ブリッジに、前記仮想デバイスを特定する情報を記録する領域である仮想記憶領域を設け、前記仮想デバイス各々に、前記デバイスの少なくとも一つを対応させ、前記ハイパバイザ上に、前記仮想ブリッジの前記仮想記憶領域内の情報を変更する仮想ブリッジ変更プログラムを備えておき、前記デバイスの一つから前記ハイパバイザに割り込みがあがった際に、前記ハイパバイザは前記仮想ブリッジ変更プログラムを起動する、ことを特徴とする計算機システムの制御方法。請求項10に記載の計算機システムの制御方法であって、前記仮想デバイス各々と前記デバイス各々は互いに対応している、ことを特徴とする計算機システムの制御方法。請求項10に記載の計算機システムの制御方法であって、前記ハイパバイザは、前記仮想ブリッジ変更プログラムを起動することにより、前記割り込みの発信元のデバイスを特定し、特定した前記発信元のデバイスが対応する前記仮想計算機の前記仮想ブリッジに情報を記録し、前記仮想計算機に対して仮想的な割り込みを上げ、当該仮想計算機が前記仮想的な割り込みに対応した割り込み処理を行う、ことを特徴とする計算機システムの制御方法。請求項11に記載の計算機システムの制御方法であって、前記ハイパバイザは、前記仮想ブリッジ変更プログラムを起動することにより、前記割り込みの発信元のデバイスを特定し、特定した前記発信元のデバイスが対応する前記仮想計算機の前記仮想ブリッジに情報を記録し、前記仮想計算機に対して仮想的な割り込みを上げ、当該仮想計算機が前記仮想的な割り込みに対応した割り込み処理を行う、ことを特徴とする計算機システムの制御方法。請求項12に記載の計算機システムの制御方法であって、前記仮想ブリッジの前記仮想記憶領域に記録される前記仮想デバイスを特定する情報は、障害の発生した前記仮想デバイスを特定する情報である、ことを特徴とする計算機システムの制御方法。請求項14に記載の計算機システムの制御方法であって、前記仮想計算機は、前記割り込み処理として、障害の発生した前記仮想デバイスの障害理由を特定し、特定した前記障害に対処するための処理を行う、ことを特徴とする計算機システムの制御方法。仮想化環境では上述のAERに対応した仮想計算機にPCIPassthroughを用いてIOデバイスを使用させ、仮想計算機がIOデバイスの回復を行う仕組みが求められる。この仕組みでは、IOデバイスに障害が発生した場合に仮想計算機がIOデバイスを特定し、また仮想計算機上のデバイスドライバによってリセットによる回復を行う。前述したようにAERにおいては、IOデバイスに障害が発生すると、途中にある複数のPCIブリッジにも同時に障害情報が残る。逆に、IOデバイスに障害が発生していない状態では、PCIブリッジに障害情報は存在しない。すなわち仮想計算機から見た場合に、デバイスと途中のPCIブリッジが共に障害情報を持っているか、共に障害情報を持っていないか、どちらかの状態にあることが求められる。つまり仮想計算機から見て、デバイスのみが障害情報を持っている、もしくはPCIブリッジのみが障害情報を持っている状態があってはならない。本発明の目的は、上記の課題を解決し、仮想計算機から見えるデバイスの障害情報において、不整合が発生しない計算機システム、及びその制御方法を提供することにある。上記目的を達成するため、本発明においては、処理部、記憶部、及び物理ブリッジとデバイスを有する物理デバイスツリーを備えた計算機システムであって、記憶部に、複数の独立に動作可能な仮想計算機と、これら仮想計算機を管理するためのハイパバイザがあり、物理ブリッジはデバイスを特定する情報を記録するための記憶領域を備え、仮想計算機は、仮想処理部、仮想記憶部、及び仮想ブリッジと仮想デバイスを有する仮想デバイスツリーを備え、仮想ブリッジはデバイスを特定する情報を記録するための仮想記憶領域を持ち、ハイパバイザは仮想ブリッジ内に記録された情報を変更する仮想ブリッジ変更プログラムを備える仮想計算機システムを提供する。また、上記の目的を達成するため、本発明においては、処理部と、記憶部と、物理ブリッジとデバイスからなる物理デバイスツリーを備えた計算機システムの制御方法であって、記憶部上に、複数の独立に動作可能な仮想計算機と、当該仮想計算機を管理するためのハイパバイザを記憶し、仮想計算機は、仮想処理部、仮想記憶部、及び仮想ブリッジと仮想デバイスからなる仮想デバイスツリーを有し、物理ブリッジに、デバイスを特定する情報を記録するための記憶領域を設け、仮想ブリッジに、仮想デバイスを特定する情報を記録する領域である仮想記憶領域を設け、仮想デバイス各々に、デバイスが少なくとも一つを対応させ、ハイパバイザ上に、仮想ブリッジの仮想記憶領域内の情報を変更する仮想ブリッジ変更プログラムを備えておき、デバイスの一つからハイパバイザに割り込みがあがった際に、ハイパバイザは仮想ブリッジ変更プログラムを起動する仮想計算機システムの制御方法を提供する。本発明により、仮想PCIツリー内で、仮想ブリッジと仮想デバイスの保持している情報に整合性がとることが可能な計算機システムを提供することができる。以下、本発明の各種の実施例を図面に従い説明する。本実施例では、図1~図11に従い、仮想環境下でAERAdvancedErrorReportingに対応する計算機システムの一構成例を説明する。図1は、本実施例の計算機システムを構築する際の典型的な物理サーバ構成の例を示している。物理サーバb1上には、処理部として機能する1つまたは複数の中央処理部b20と、記憶部メモリである主記憶b30と、物理デバイスツリーであるPCIツリーb40がある。物理PCIツリーb40は、ルートポートb41、ブリッジb42、デバイスb43からなっており、デバイスb43はディスプレイb50、ネットワークb51、外部記憶b52の機器と接続されている。デバイスb43が接続されている機器は、ディスプレイb50、ネットワークb51、外部記憶b52に限らなくても良く、接続されていない機器があっても良く、また同一の機器を複数接続していても良い。例えば、複数のデバイスb43がネットワークb51に接続しており、ディスプレイb50に接続しているIOデバイスが存在しない構成があっても良い。デバイスb43は、一つのブリッジb42もしくはRootPortb41と接続されており、複数のブリッジb42に接続されていたり、ブリッジb42とRootPortb41の両方に接続されていることは無い。また、RootPortb41から各デバイスb43に対して接続されている経路は、高々一つしかない。また、RootPortb41と各ブリッジb42、デバイスb43はそれぞれ、データを読み書きすることができる領域であるレジスタb45を持つ。レジスタb45には、後述するように障害記録領域がある。レジスタb45の全ての領域に対して読み書きできる必要はなく、例えば読むことはできるが書き込むことができない領域があってもよい。各ブリッジb42、RootPortb41、デバイスb43は、それぞれ異なる値である物理BDFを持つ。逆に、異なる物理BDFの値を持つものであれば、異なるブリッジb42、RootPortb41、デバイスb43とみなす。例えば、RootPortb41と複数のブリッジb42が物理的に分断できない形式で実装されたPCIツリーの機器がありうるが、その場合はRootPortb41とブリッジb42は異なるものとみなす。また物理的に分断できないが複数のBDF値を持ったデバイスb43がありうるが、その場合は複数のデバイスとみなすものとする。便宜的に以下では全て、RootPortb41、ブリッジb42、デバイスb43をBDFで区別をするが、それぞれを特定できるものであれば、別の区別方法があってもよい。その場合、以下BDFの部分を特定できる値として読みかえる。また、以下では各デバイスb43や各ブリッジb42から接続関係上、よりRootPortb41に近い方向を上、RootPortb41から遠い方向を下と呼ぶものとする。すなわち、RootPortb41が一番上にあり、各デバイスから下に辿ることはできない。主記憶b30の中には、仮想計算機b311から仮想計算機b31n及び、Hypervisorb32の情報が格納されている。仮想計算機内b311から仮想計算機b31nには、それぞれ少なくとも仮想CPUb33、仮想主記憶b34、仮想PCIツリーb35の情報を格納しているが、それ以外の情報を格納していても良い。また、主記憶b30内のどこに情報が配置されていても良い。仮想PCIツリーb35の内部に格納されている情報については、図2を用いて、仮想主記憶34の内部に格納されている情報については、図3を用いてそれぞれ後述する。Hypervisorb32内には物理デバイス仮想デバイス対応表b36、仮想ブリッジ表b37、起動プログラムb38、仮想ブリッジ変更プログラムとして機能する割り込み処理プログラムb39、PCIツリーエミュレーションb310が格納されている。Hyervisorb32の中には、これ以外の情報が含まれていても良い。物理デバイス仮想デバイス対応表b36の詳細については図4を、仮想ブリッジ表b37の詳細については図5を用いて後述する。図2は、実施例1における仮想PCIツリーb35の一例の詳細を示している。この仮想PCIツリーb351~b35nはそれぞれ、上述した仮想計算機b311~b31nに対応している。図示の関係上、図2では仮想PCIツリーB351の内部のみ図示したが、仮想PCIツリーB352~B35nも仮想計算機b312~b31nに対応する、同様なツリー構成を備えている。以下、仮想PCIツリーB351を、代表例とし、仮想PCIツリーB35として説明する。図2において、仮想PCIツリーb35は、仮想RootPortb61と、仮想ブリッジb62、仮想デバイスb63から構成されている。仮想RootPortb61及び各仮想ブリッジb62には、仮想レジスタb65を持つ。仮想レジスタb65の内部については、図15を用いて後述する。仮想デバイスb63は、仮想ブリッジb62を介して仮想RootPortb61と接続されているが、仮想デバイスb63が直接仮想RootPortb61と接続されていても良い。ただし、仮想デバイスから仮想RootPortb61に対して辿ることのできる経路は高々一通りしかない。一つの仮想デバイスb63は、それぞれ一つのデバイスb43と対応しているが、具体的な対応方法については、図4を用いて後述する。図2に示す通り、各仮想計算機b311~b31nの中にある仮想PCIツリーb351~b35nは、それぞれ異なる仮想ブリッジb62、仮想RootPortb61、仮想デバイスb63から構成されている。各仮想計算機b311~b31nの中にある仮想PCIツリーb35において、各仮想RootPortb61、仮想ブリッジb62、仮想デバイスb63はそれぞれ異なる値である仮想BDFを持つ。以下では仮想PCIツリー内部において、接続関係上より仮想RootPortb61に近い方向を上、仮想RootPortb61から遠い方向を下と呼ぶものとする。すなわち、各仮想PCIツリーにおいて、仮想RootPortb41が一番上にあり、各仮想デバイスb63から下に辿ることはできない。図3は、本実施例における図1の仮想主記憶b34の詳細を示す図である。仮想主記憶b34の中には、少なくとも仮想計算機b31を制御するためのOSb70がある。OSb70は、仮想化されていない環境で動作するものであっても良いし、そうでなくても良い。OSb70の中には、少なくともOSカーネルb71と、デバイスドライバb731~デバイスドライバb73nがある。OSカーネルb71内には、Hypervisorb32がOS70に対して仮想的に割り込みを上げた際に、その割り込み要因を特定し、割り込みを処理するための割り込みエンドポイントb72がある。デバイスドライバb731~デバイスドライバb73nは、基本的に仮想デバイスb63の種類によって異なるものを使用するが、同一のデバイスドライバを用いて複数の仮想デバイスb63を操作してもよい。また、一つの仮想デバイスb63の操作のために、デバイスドライバb731~b73nのうち複数を使用してもよい。図14は、本実施例におけるレジスタb45の一構成を示す図である。各レジスタb45内部には、少なくとも障害記録領域b44が存在している。障害記録領域の形式は、例えばAERのようにデバイス非依存な形式で書かれてもよいし、デバイス依存性を持った形式であってもよい。図15は、同様に本実施例における仮想レジスタb65の一構成を示す図である。各仮想レジスタb65内部には、少なくとも仮想障害記録領域b64が存在している。仮想障害記録領域の形式は、例えばAERのようにデバイス非依存な形式で書かれてもよいし、デバイス依存性を持った形式であってもよい。図4は本実施例における物理デバイス仮想デバイス対応表b36の実装例であり、図5は仮想ブリッジ構成表b37の実装例である。まず、物理デバイス仮想デバイス対応表b36と仮想ブリッジ構成表b37で共通に使用される要素について、簡単に述べる。物理デバイス仮想デバイス対応表b36内の仮想計算機番号c12及び、仮想ブリッジ構成表b37内の仮想計算機番号c21は、どちらも仮想計算機b311からb31nのうち一つを指定するものである。これらは、仮想計算機b311からb31nのうち一つを特定できるものであればどのような形式の情報でも良い。仮想計算機名を示すための文字列や、整数値などを用いて表現することが一般的であると考えられるが、例えば仮想計算機が個別に所有しているIPアドレスなどの他の値を用いても良い。次に、物理デバイス仮想デバイス対応表b36内の直上仮想ブリッジIDc14、仮想ブリッジ構成表b37内の仮想ブリッジIDc22、直上仮想ブリッジIDc23について述べる。これらはどれも、仮想PCIツリーb35内の仮想ブリッジb62もしくは仮想RootPortb61を各仮想計算機b311からb31nの中で一意に特定する情報である。すなわち、仮想ブリッジ構成表b37内の仮想ブリッジIDc22は、仮想計算機番号c12で指定された仮想計算機b311からb31nの中で、仮想ブリッジb62もしくは仮想RootPortb61を一意に特定する情報である。また、仮想ブリッジ構成表b37内の仮想ブリッジIDc22、直上仮想ブリッジIDc23は、仮想計算機番号c21で指定された仮想計算機b311からb31nの中で、仮想ブリッジb62もしくは仮想RootPortb61を一意に特定する情報である。これらは便宜上、仮想ブリッジb62もしくは仮想RootPortb61を同一に管理しているが、仮想ブリッジb62の場合と仮想RootPortb61を別の表で管理するような実装であっても良い。これらの値の形式は、仮想計算機b311からb31nの中で、仮想ブリッジb62もしくは仮想RootPortb61を一意に特定するものであればどんな形式の情報でも構わないが、例えば主記憶領域b30内のアドレス値等を使用することが考えられる。次に、図4の物理デバイス仮想デバイス対応表、又はテーブルの詳細を述べる。物理デバイス仮想デバイス対応表b36は、例えばデバイスを特定する情報である物理BDFc11、仮想計算機番号c12、仮想デバイスを特定する情報である仮想BDFc13、直上仮想ブリッジIDc14等を持つ。物理デバイス仮想デバイス対応表b36の各行は、PCIツリーb40の中にある、物理デバイスb43のうち一つを表している。一つの物理デバイスb43は、仮想計算機b311からb31nの中にある仮想PCIツリーb35のうち、高々一つの仮想PCIツリーb35内の仮想デバイスb63に対応している。すなわち、本実施例において、一つの物理デバイスb43に対応する仮想デバイスb63は、複数の仮想計算機の中に同時に存在したり、あるいは一つの仮想計算機の中の二つの仮想デバイスb63に対応することは無い。物理BDFc11は、Hypervisorが各デバイスb43を特定するために使用する情報の例として使用するものであるため、物理デバイス仮想デバイス対応表b36の中で一意の値を持つものになっているが、Hypervisorから見てデバイスb43を特定できるものであれば、別の値を使用しても良い。仮想計算機番号c12は、そのデバイスb43を使用している仮想計算機b311からb31nのうち一つを表現するものである。値の形式については前述した。仮想BDFc13は、仮想計算機番号c12で指定された仮想計算機b311からb31nにおいて、どのように見えているかを指定するものである。この仮想BDF値は、後述するように仮想ブリッジb62や仮想RootPortb61内の仮想障害記録領域b64に記録されるものであるため、仮想障害記録領域b64に記録できるものであれば、他の形式でも構わない。直上仮想ブリッジIDc14は、対応する仮想デバイスb63が、どの仮想ブリッジb62に接続されているかを表現する値である。本値の形式については、前述した。図5は、上述の通り仮想ブリッジ構成表、又はテーブルの実装例である。仮想ブリッジ構成表b37は、例えば仮想計算機を特定する情報である仮想計算機番号c21、仮想ブリッジを特定する情報である仮想ブリッジIDc22、仮想ブリッジ各々の直ぐ上に位置する仮想ブリッジを特定する情報である直上仮想ブリッジIDc23等を持つ。仮想ブリッジ表b37の各行は、仮想計算機番号c21と仮想ブリッジIDc22の両方が同じになる事は無い。仮想計算機番号b21は、各仮想ブリッジb62または仮想RootPortb61が、どの仮想計算機b311からb31nに所属しているかを示すものである。本値の形式については前述した。仮想ブリッジIDb22は、各仮想計算機番号b21で指定された仮想計算機b311からb31nの内部にある、仮想PCIツリーb35の中の仮想ブリッジb62または、仮想RootPortb61を一意に特定する番号を記録するものである。本値の形式については前述した。直上仮想ブリッジIDb23は、仮想計算機番号b21と仮想ブリッジIDb22で指定された仮想ブリッジb62または仮想RootPortb61から見て、一つRootPortに近い仮想ブリッジb62または仮想RootPortb61を指定するものである。仮に、仮想ブリッジIDb22で指定されているものが、仮想RootPortb61であった場合、より仮想RootPortb61に近い仮想ブリッジb62や仮想RootPortb61は存在しないため、本値には存在しないことを意味する値を入れる。図6を用いて、本実施例の計算機システムの動作例の概要を示す。本計算機システムの動作は、物理計算機b1が起動することで開始する。具体的な物理計算機b1の起動方法は、例えば計算機システムの電源スイッチを入れることや、実際の起動後に仮想計算機システムの動作を開始させるためのプログラムを明示的に記述する方法などがあるが、本実施例の要部と関係ないので、ここでは詳述しない。手続きa101で起動された物理サーバはHypervisorb32を初期化し、Hypervisorb32を起動させる。Hypervisorb32の初期化としては、主記憶を確保することと、Hypervisorに対してデバイスb43等から割り込みがあった場合に、仮想ブリッジ変更プログラムとして機能する割り込み処理プログラムb39が起動されるように、CPUb2に対して命令を設定することが主な目的であるが、その他の処理をしても良い。例えば特定のCPUb2には、Hypervisorが動作するためのモードが存在するため、初期化処理の段階でHypervisorb32が動作するためのモードに切り替えることなどがありうる。手続きa102で初期化されたHypervisorb32は、起動プログラムb38を用いて仮想計算機b311から仮想計算機b31nのメモリを確保する。ただし、必ずしもHypervisorb32が起動プログラムb38を用いて確保する必要はなく、Hypervisorb32起動時に物理計算機が自動的に仮想計算機のメモリを確保する方法等も考えられる。また、必ずしも仮想計算機b311から仮想計算機b31nの全てのメモリを確保する必要はなく、実際に起動するモノだけを確保すればよい。次にHypervisorb32は手続きa103でメモリを確保した仮想計算機b311から仮想計算機b31nを起動する。メモリを確保した仮想計算機b311から仮想計算機b31nの全てを起動する必要はなく、いくつかだけ起動しても良い。手続きa104によって仮想計算機b311から仮想計算機b31nが起動すると、仮想計算機内の仮想主記憶内でOSb70が起動する。OSb70は仮想主記憶内を、自身が動作できるように初期化を行うが、初期化の一部はHypervisorb32が行っても良い。この場合、例えば手続きa102において、仮想計算機b311から仮想計算機b31nの初期化を行い、主記憶を確保する際に設定を行うことも考えられる。仮想計算機b311から仮想計算機b31n内で、OSb70が動作を始めると、二つの契機でHypervisorb32が呼び出される。一つはHypervisorb32に対してデバイスb43等から割り込みが発生した際であり、もうひとつは仮想計算機b311~b31nから仮想PCIツリーにアクセスが行われた際である。手続きa105で、Hypervisorb32にデバイスb43等から割り込みが発生した場合、Hypervisorb32内の割り込み処理プログラムb39が割り込みに対応する処理を行う。この割り込み対応の処理の具体的な手続きについては、図7を用いて後述する。手続きa105で、仮想計算機b311から仮想計算機b31nから仮想PCIツリーにアクセスが行われた場合、HypervisorはPCIツリーエミュレーションb310を起動する。PCIツリーエミュレーションb310の詳細な動作については、図8~図10を用いて後述する。図13を用いて、本実施例の計算機システムにおいて、物理デバイスに障害が発生した際に想定される、物理PCIツリーb40の動作例について説明する。本動作は、図1に示したデバイスb43の一つに障害が発生したことを契機として開始される。デバイスb43に障害が発生すると、障害の発生したデバイスb43は、自身の内部に障害内容を記録する。障害内容のフォーマットは、AERのようなデバイスに依存しないものであっても、デバイス個別のフォーマットによって保存されていても良い。障害の発生したデバイスb43は、デバイスがブリッジb42に接続されている場合は接続されているブリッジb42に、RootPortb41に接続されている場合にはRootPortb41に障害を伝達する。手続きa803で障害を伝達されたブリッジb42もしくはRootPortb41は、自身の内部に障害情報を記録する余地があるかどうかをチェックする。これは、複数のデバイスb43に同時もしくは近い時期に障害が発生したことを想定している。複数のデバイスから障害が発生した場合、上述のAERではそのうち最初の一つのみを記録する仕様になっているため、すでに他のデバイスで障害が発生していれば、障害を記録する余地は無い。なお、複数のデバイスの障害情報を記録できるような仕様の場合は、すでに障害情報があっても障害情報を記録できることもある。手続きa804で障害情報を記録できる余地が無かった場合、処理を終了する。AERでは、単に終了するだけであるが、Hypervisorに対して割り込みをあげても良い。手続きa804で障害情報を記録できる余地があった場合、手続きa803で障害を伝達されたブリッジb42もしくはRootPortb41は自身に障害情報を書き込む。この場合、障害情報として書き込むものには、例えばHypervisorb32がデバイスb43を管理する際に用いる番号である、バスデバイスファンクションBDF番号などがありうる。また、デバイスb43に発生した障害要因を書き込むことなどがあっても良い。次に手続きa805で障害情報をブリッジb42に記録したか、RootPortb41に記録したかを判定する。手続きa806において、障害情報を記録したのがRootPortb41であった場合、RootPortb41はHypervisorb32に割り込みを上げて、処理を終了する。Hypervisorb32に割り込みが上がると、割り込み処理プログラムb39が起動されるが、その場合の動作例については図7を用いて後述する。手続きa806において、障害情報を記録したのがRootPortb41ではなくブリッジb42であった場合、さらにその上にあるブリッジb42もしくはRootPortb41に障害情報を伝達する。障害情報を伝達されたブリッジb42もしくはRootPortb41は、再び手続きa804に戻り、障害情報を記録する余地があるかどうかを判定する。図7を用いて、本実施例の、上述した物理PCIツリー動作例において、Hypervisorb32に割り込みが発生した際の、仮想ブリッジ変更プログラムである割り込み処理プログラムb39の動作例を説明する。以下、図7の説明においては、各手続きである処理ステップは、特に断りが無い限り割り込み処理プログラムが主体となって行う。本動作は、Hypervisorb32に対してデバイスb43等から割り込みが発生したことを契機として開始される。Hypervisorb32に対してデバイスb43等から割り込みが発生すると、割り込み処理プログラムb39が起動され、割り込み処理プログラムb39はその割り込みがデバイス障害であるかどうかを判定する。デバイス障害であるかどうかの判定方法については、例えば割り込み要因として考えられるものを全て調べ、デバイス障害以外の割り込み要因でなかった場合に、デバイス障害であると判定する方法がある。また、割り込み処理プログラムb39を複数用意しておき、割り込み要因によって複数の割り込み処理プログラムb39を切り替える方法などもある。図7の手続きa202で割り込み要因がデバイス障害ではないと判定した場合、割り込み処理プログラムb39は従来の割り込み処理を行う。従来の割り込み処理は、例えばCPUb2のタイマ割り込みを契機として行われる処理や、ネットワークb51からのデータの送受信を契機として行われる処理などがあるが、本明細書では詳述しない。手続きa202で割り込み要因がデバイス障害であると判定された場合、割り込み処理プログラムb39は障害が発生したデバイスb43を一つ選択する。ここで一つ選択としたのは、複数のデバイスに同時、もしくは非常に近い時期に障害が発生した場合のことを想定している。これは、一つのデバイスの障害が他のデバイスに物理サーバ1内の電子回路を通じて波及するケースがある場合、あるいは物理サーバ1の外部で接続されている複数のデバイスb43があった場合に、物理サーバ1の外部を通じて障害が波及する場合などがあるためであり、ケースとしては非常に多い。障害が発生したデバイスb43を一つ選択する方法はいくつかあり、例えばHypervisorb32からみてバスデバイスファンクション番号の小さいものから順に調べて障害デバイスを探索する方法や、あるいはRootPortb41内にある、障害記録領域b44に記録されているデバイスb43を優先的に選択し、そのデバイスb43に障害が発生していないことを確認してからHypervisorb32からみて番号の小さいBDF番号を持つデバイスb43から順に調べる方法などが考えられる。ここで、障害記録領域b44に記録されているデバイスb43を優先的に選択する方法は、先に述べたように一つのデバイスb43の障害が他のデバイスb43に波及するケースでは、大本のデバイスb43の障害を先に処理することが重要になることがあるためである。手続きa203で選択された障害の発生したデバイスb43、もしくは本手続き内で選択された仮想ブリッジb62、本手続き内で選択された仮想RootPortb61について、物理デバイス仮想デバイス対応表b36と、仮想ブリッジ表b37を用いて、一つ上にある仮想ブリッジb62または仮想RootPortb61に障害情報を記入する。まずデバイスb43の一つ上にある、仮想ブリッジb62または仮想RootPortb61を調べる方法について述べる。図4の物理デバイス仮想デバイス対応表b36を用い、デバイスb43の物理BDFと、物理BDFc11が等しい行を選択する。選択された行中の仮想計算機番号c12と直上仮想ブリッジIDc14の組み合わせで指定されている仮想ブリッジb62または仮想RootPortb61が一つ上にある仮想ブリッジb62または仮想RootPortb61である。以上がデバイスb43の一つ上にある仮想ブリッジb62または仮想RootPortb61を特定する方法である。次に、本手続き内で選択された仮想ブリッジb62または仮想RootPortb61を元に、一つ上にある仮想ブリッジb62または仮想RootPortb61を選択する方法について述べる。便宜上、本手続き内で選択された仮想ブリッジb62または仮想RootPortb61を元仮想ブリッジと呼ぶものとする。元仮想ブリッジの仮想計算機番号と、仮想ブリッジIDが、図5の仮想ブリッジ表b37内の、仮想計算機番号c21と仮想ブリッジIDc22の組み合わせと等しい行を選択する。仮想計算機番号c21と直上仮想ブリッジIDc23の組み合わせで指定される、仮想ブリッジb62または仮想RootPortb61が一つ上にある仮想ブリッジb62または仮想RootPortb61である。以上によって選択された仮想ブリッジb62または仮想RootPortb61内の仮想障害記録領域b64に障害情報を書き込む。続いて図7の手続きa205において、手続きa204で障害が書き込まれたのが、仮想ブリッジb62内の仮想障害記録領域b64であったかどうかを判定する。障害を書きこまれたのが仮想ブリッジb62内の仮想障害記録領域b64であった場合は、手続きa203に戻り、より上位の仮想ブリッジ内の仮想障害記録領域b64に障害を書き込む。手続きa205で、障害を書きこまれたのが仮想RootPortb61であった場合は、仮想RootPortb61が存在する仮想PCIツリーb35内を持つ仮想計算機b311~b31nに対して割り込みを上げる。仮想計算機b311からb31nに割り込みが挙げられた場合、仮想計算機内b311からb31nのOSb70が受理し、割り込み処理を行う。OSが行う処理については、図11を用いて後述する。手続きa206の手続き完了後、ブリッジb42及びRootPortb41の障害情報を削除する。この手続きは、次に別の障害が発生した際に、障害情報が物理ブリッジに残るようにするために必要なものである。この手続きを行うのは一度で良いが、時期はいつでも良く、例えば手続きa203の直前やa206の直前などでも良い。手続きa207の後に、障害処理を行っていないデバイスが無いかどうかを調べる。仮にまだ、障害処理を終えていないデバイスがあった場合、手続きa203に戻り、再度障害処理を行う。手続きa208において、全ての障害処理が完了した場合、また手続き209で他の割り込み処理が完了した場合、再度デバイスb43等から割り込みが発生することが可能になるように、割り込み完了処理を行う。具体的には、CPUや仮想RootPort内にある、再割り込み禁止ビットを解除する処理を行う。この再割り込み禁止ビットは、割り込み処理中に同一の割り込みが入らないことを保証するために、ハードウェア的に実装されているものである。仮に、このような実装が無かった場合は、本手続きは行わなくても良い。手続きa209が完了した場合、全ての割り込み処理が終了されるので、通常の処理に戻る。図8を用いて、本実施例のPCIツリーエミュレーション処理についての詳細を述べる。本手続きは、図6中の手続きa107に該当するものであり、図1のHypervisorb32内のPCIツリーエミュレーションb310が行う動作である。以下、本図の説明中の各手続きは、特に断りが無い場合はPCIツリーエミュレーションb310の動作である。PCIツリーエミュレーション処理の契機は、仮想計算機b311~b31nが仮想PCIツリーb35を操作することである。具体的な仮想PCIツリーb35に対する操作としては、仮想RootPortb61、仮想ブリッジb62、仮想デバイスb63内部のレジスタb45の読み書きである。まず、手続きa301により、起動されたPCIツリーエミュレーションは、まずそのエミュレーションの対象が、仮想ブリッジb62もしくは仮想RootPortb61であるかどうかを判定する。手続き302の判定で、仮想ブリッジb62もしくは仮想RootPortb61に対する操作であった場合、仮想ブリッジエミュレーション処理を行う。本操作の詳細は、図9を用いて後述する。手続き302の判定で、仮想ブリッジb62でも仮想RootPortb61でもないものに対する操作、すなわち仮想デバイスb63に対する操作であった場合、仮想デバイスエミュレーション処理を行う。本操作の詳細は、図10を用いて後述する。手続きa303もしくは手続きa304が完了すると、本手続きは終了する。図9を用いて仮想ブリッジエミュレーション処理についての詳細を述べる。本処理は、図8中の手続きa303に該当するものであり、仮想ブリッジb62もしくは仮想RootPortb61内部のレジスタb45に対する操作が行われた際に起動される。本処理は、Hypervisorb32内のPCIツリーエミュレーションb310が行う動作である。仮想ブリッジエミュレーション処理が開始すると、まずその操作がデータの読み込みであるかどうかを判定する。仮想ブリッジb62もしくは仮想RootPortb61に対する操作は、仮想レジスタb65の読み込み、もしくは書き込みである。手続きa402で、仮想ブリッジb62もしくは仮想RootPortb61に対する読み込みであると判断した場合、PCIツリーエミュレーションb310は仮想ブリッジ内にあるレジスタの値を読み込み、OSに渡す。OSに対してデータを渡すための方法は、例えば仮想CPUや仮想主記憶の特定位置に値を設定するなどの方法がある。手続きa402で、仮想ブリッジb62もしくは仮想RootPortb61に対する読み込みで無いと判断した場合、言い換えると仮想ブリッジb62もしくは仮想RootPortb61に対する書き込みであると判断した場合、PCIツリーエミュレーションb310は仮想ブリッジ内にある仮想レジスタb65に値を設定する。手続きa403もしくは手続きa404でOSに処理を戻した段階で、本ブリッジエミュレーション処理は終了となる。図10を用いて、仮想デバイスエミュレーション処理についての詳細を述べる。本処理は、図8中の手続きa304に該当するものであり、仮想デバイスb63内部のレジスタb45に対する操作が行われた際に起動される。本処理は、図1のHypervisorb32内のPCIツリーエミュレーションb310が行う動作である。仮想デバイスエミュレーション処理が開始すると、PCIツリーエミュレーションb310は図4の物理デバイス仮想デバイス対応表を用い、操作対象の仮想デバイスb63が、どのデバイスb43に対応するかを判定する。具体的には、操作対象となっている仮想デバイスb63を使用している仮想計算機b311からb31nを指定している値を仮想計算機番号c12から、その仮想計算機b311からb31nにおける仮想デバイスb63のBDF値を仮想BDFc13から調べ、該当行の物理BDFc11値を調べることで物理デバイスb43を特定する。次にその操作がデータの読み込みであるかどうかを判定する。仮想デバイスb61に対する操作は、仮想レジスタb65の読み込みまたは書き込みである。手続きa503で操作が仮想デバイスb63内のレジスタb65に対する読み込みであった場合、PCIツリーエミュレーションb310は手続きa502で調べたデバイスa43内のレジスタb45に対して読み込みを行う。例えば、仮想デバイスb63内の仮想レジスタb65のアドレスαに対する読み込みであれば、これをデバイスb43内のレジスタb45のアドレスαに対する読み込みを行う。手続きa504で読み込んだ値に対して、PCIツリーエミュレーションb310は場合によって値を変更する。これは例えば、あるレジスタb45の値を仮想計算機に直接見せたくない場合等において、隠すことができる処理である。ただし、全てのレジスタをそのまま見せるケースでは、この処理は省略可能であり、手続きa503で読まれた値をそのまま使用する。PCIツリーエミュレーションb310は、手続きa505において変更された値を、本手続きの起動のきっかけとなった仮想計算機b311からb31n内のOSb70に対して渡す。手続きa503で操作が仮想デバイスb63内のレジスタb65に対する読み込みでなかった場合、言い換えると仮想デバイスb63内のレジスタb65に対する書き込みであった場合、PCIツリーエミュレーションb310は手続きa502で調べたデバイスa43内のレジスタb45に対して書き込み値の変更を行う。本手続きは、例えばデバイスb43内のレジスタb45の値を変更したくない場合などに行われる。仮に変更する必要がない場合、本手続きは行わず、そのままの値を使用する。手続きa507が終了すると、手続きa502で調べたデバイスa43内のレジスタb45に対して、手続きa507で変更された値を書き込む。例えば仮想デバイスb63内の仮想レジスタb65のアドレスαに対してβを書き込むという処理であり、手続きa507でβをβ’に変更した場合であれば、デバイスb43内のレジスタb45のアドレスαに対してβ’を書き込む処理を行う。手続きa508が終了すると、PCIツリーエミュレーションb310は本手続きの起動のきっかけとなった仮想計算機b311からb31n内の仮想主記憶b34中のOSb70に処理を戻す。手続きa506もしくは手続きa509が完了すると、本仮想デバイスエミュレーションの処理は終了する。図11は、本実施例の計算機システムにおいて、図3に示した、仮想計算機311から31nのそれぞれの仮想主記憶b34中にあるOSb70に割り込みが発生した際に、OSb70内部がどのような動作を行うかについて示すものであり、図7中の手続きa206でOSb70に対して割り込みを入れた際の動作である。本動作は、OSb70に割り込みが発生したことを契機とし、割り込みエンドポイントb72が起動する。一般的に、OSは割り込みが入った場合に起動するプログラムを選択することが出来る。次に、割り込みエンドポイントb70は、割り込みがデバイス障害であるかどうかを判定する。デバイス障害である場合に、特別な割り込みエンドポイントb70を起動するOSの場合は、本割り込みがデバイス障害であることが自明であるため本手続きを行わなくても良い。手続きa602で、割り込み要因がデバイス障害でない場合、OSは従来の割り込み処理を行う。他の割り込みとしては、例えばタイマ割り込み等があり得るため、その処理を行うが、本明細書では詳述しない。手続きa602で、割り込み要因がデバイス障害であると判定された場合、OSは仮想RootPortb61に残ったデバイス障害情報を読み取り、障害の発生した仮想デバイスb63を特定し、図3に示したデバイスドライバb731からb73nに処理を渡す。直前の手続きで障害の発生した仮想デバイスb63の処理を任されたデバイスドライバb731~b73nは、障害処理を行う。障害処理の例としては、レジスタ値のリセット等が考えられる。なお、障害処理の方式は各デバイスおよびデバイスドライバに依存しているため、ここでは詳述しない。直前の手続きで障害処理を行った仮想デバイスb63、仮想ブリッジb62、もしくは仮想RootPortb61の直上仮想ブリッジの存在を調べる。本手続きは、図7の手続きa204における、直上仮想ブリッジを調べる操作と同等であるが、仮想計算機の場合には直接仮想PCIツリーb35が見えているため、必ずしも物理デバイス仮想デバイス対応表b36や、仮想ブリッジ表b37を使用する必要はないが、a204の手続きと同様に、使用してもよい。手続きa605で、直上に仮想ブリッジb62もしくは仮想RootPortb61が存在した場合、存在した仮想ブリッジb62もしくは仮想RootPortb61から障害情報を削除し、その配下に障害情報を持つ仮想ブリッジb62もしくは仮想デバイスb63が存在しないかどうかを調べる。複数の障害が発生した場合、最初の一つのみを記録するため、本手続きは必要である。手続きa606で調査した結果、他の障害情報があるかどうかを判定する。他の障害情報があれば、その障害の発生している仮想デバイスb63の処理をa604に戻って行う。他の障害情報がない場合、手続きa605に戻り、さらに直上の仮想ブリッジb62もしくは仮想RootPortb61を調査する。手続きa608で他の割り込みを処理し終えた場合、手続きa605において、直上に仮想ブリッジや仮想RootPortが存在しない場合には、本手続きは終了する。終了時に、例えばHypervisorb32に対して処理が終わったことを通知する、あるいは割り込み処理終了ビットを仮想RootPortに立てる、等の処理を行ってもよい。以上が、実施例1に係る計算機システムであり、この構成動作により、仮想PCIツリー内で、仮想ブリッジと仮想デバイスの保持している情報に、整合性がとれた計算機システムを提供することが可能となる。第2の実施例は、基本的な構成については実施例1と同様であるが、仮想計算機311~31n上のOSb70に割り込みが発生した場合の動作が異なる計算機システムに関する。図12は、本実施例において、OSb70に割り込みが発生した場合の動作を示すフローチャートである。本手続きでは、図3の仮想主記憶b34中のOSb70に割り込みが発生した場合、実施例1と同様、OSb70内の割り込みエンドポイント62が起動する。また、起動した割り込みエンドポイントプログラムb72は、割り込みがデバイス障害に由来するかどうかを判定する。デバイス障害かどうかを判定する方法は、例えば割り込み番号を変える、あるいは仮想RootPortb62の状態を読むなどの方法が考えられる。通常、割り込み番号を用いてデバイス障害かどうかを判定するケースであれば、割り込みエンドポイントプログラムの中の、デバイス障害処理プログラムが自動的に読み込まれるため、明示的な条件分岐が必要ない場合もある。手続きa702で割り込みが障害情報ではなかった場合、OSb60は従来の割り込み処理を行う。従来の割り込み処理には、例えば通信やタイマ処理などがあるが、本実施例においては直接関係しないので説明を省略する。手続きa702で割り込みが障害情報であった場合、本実施例においては、任意のデバイスb63を一つ選択する。ここでデバイスを選択する方法としては複数考えられるが、例えば仮想計算機上のOSがPCIデバイスを特定する値である、仮想BusDeviceFunctionの値が最も小さいものから順に調べる方法、逆に仮想BusDeviceFunctionの値が最も大きいものから順に調べる方法等がありうる。次に手続きa703で選択されたデバイスb63に、障害情報があるかどうかを調べる。障害情報があるかを調べる方法にはいくつかあるが、例えばデバイス内のレジスタb65の値を読む、等の方法がある。OSb70がデバイス障害を調べる手法を用いていない際には、常にデバイス障害であると判定しても良い。手続きa704で障害と判定された場合、デバイスドライバb73に処理を委譲し、仮想デバイスb63のリセットを行う。デバイスドライバb73が仮想デバイスのリセットを行っても回復できない場合が存在するが、その場合は仮想デバイスb63の操作を止める。仮想デバイスの操作を止める方法にはいくつかあり、OS60に通知を行う、デバイス自体の電源を止める等が考えられるが、本発明では扱わないため省略する。手続きa704で障害と判定されなかった場合、あるいはa705でデバイスドライバによるリセット処理が行われた場合、まだ手続きa703で処理を行っていないデバイスがあるかどうかを判定する。判定方法にはいくつかありうるが、例えば手続きa703で仮想BusDeviceFunctionの値が小さいものから探索している場合であれば、より大きな仮想BDFの値が大きなものが存在しないことを確認すればよい。仮想BDFは、16bitの値であるため、高々65536回の探索を行えばよい。まだ手続きa703で処理を行っていないデバイスがあれば、a703の手続きに戻り、処理を続行する。手続きa706において、全てのデバイスの探索を行っていた場合、仮想ブリッジ及び仮想RootPortにある、全ての障害情報を削除する。以上が、実施例2に係る計算機システムの処理フローであり、この構成動作により、仮想PCIツリー内で、仮想ブリッジと仮想デバイスの保持している情報に、整合性がとれた計算機システムを提供することが可能となる。本実施例は、実施例1におけるPCIツリーb40の内部構成が異なる計算機システムに関する実施例である。基本的な動作は実施例1と同様であるため、図16を用いて図1に示したPCIツリーb40の異なる構成についてのみ記述する。便宜上、図16中のPCIツリーをb40’と呼び、図1中のPCIツリーb40と区別する。図16内のPCIツリーb40’は図1内のPCIツリーb40と同様に、RootPortb41、ブリッジb42、デバイスb43を持つ。しかし、PCIツリーb40’は、デバイスb43の代わりにマルチデバイスb46を持つことがある。マルチデバイスb46は、内部に複数のデバイスb43を持っている。また、マルチデバイスb46内の複数のデバイスb43は、それぞれ異なる目的で使用されていてもよく、例えばマルチデバイスb46はネットワークb51と外部記憶b52の両方に同時に接続されているものがあってもよい。あるいは、マルチデバイスb46内の複数のデバイスb43が両方とも外部記憶b52と接続されていてもよい。マルチデバイスb46内のデバイスb43は、それぞれ異なるレジスタを持っており、個別に読み書きすることができる。また、マルチデバイスb46内のデバイスb43は、それぞれ異なるBDFを持っているため、Hypervisorはマルチデバイスb46内のデバイスb43である場合も、あるいはブリッジb42に直接接続されているデバイスb43である場合も同様の動作をすることができる。なお、本実施例の計算機システムの場合、仮想PCIツリーも同様に、PCIツリーb40’に対応する仮想PCIツリー構成となるので、ここでは説明を省略した。このことより、図1中のPCIツリーb40の代わりに図16中のPCIツリーb40’を用いても、上述した第1、第2実施例同様の手続きが実行でき、整合性がとれた計算機システムを提供することが可能となる。なお、本発明は上記した各種の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の構成の追加削除置換をすることが可能である。