(57)【要約】【課題】  複数の異なるコードタイプのドライバが動作可能な計算機システムにおいて、同一のアダプタカードを制御する異なるコードタイプのドライバがメモリ展開された場合の優先制御を計算機システムのシステムファームウェアのコードタイプ選択設定に従って行うことが出来るドライバの制御方式を提供する。【解決手段】  ドライバＡはメモリ展開されたときにシステムファームウェアのコードタイプ選択がコードタイプＡであることを示すドライバ優先情報をアダプタカードの不揮発性メモリに記憶する(Ｓ１０２)ことによりドライバＢがメモリ展開されたときにも前記ドライバ優先情報をアダプタカードの不揮発性メモリから読み出して判定する(Ｓ１３１)ことを可能とし、また、ドライバＢは不揮発性メモリに記憶しているドライバ優先情報の妥当性を確認する手段(Ｓ１３２)を備えることで、システムファームウェアのコードタイプ選択に従ったドライバの使い分けを可能とした。【選択図】  図１
2011039802.tif 000002
【特許請求の範囲】
【請求項１】
演算部と、前記演算部が実行するプログラムを記憶する記憶部と、前記演算部とＰＣＩバスで接続される複数のＰＣＩスロットと、前記ＰＣＩスロットに搭載される外部装置制御装置とを備える計算機システムにおいて、
前記外部装置制御装置は、
前記記憶部に展開して当該外部装置制御装置を制御するためのドライバとして、第一のコードタイプに対応する第一のドライバ、及び前記第一のコードタイプとは異なる第二のコードタイプに対応する第二のドライバのうち少なくとも一方と、
ドライバ優先情報と、
外部装置制御装置用ファームウェアとを有し、
前記記憶部は、
前記計算機システムを制御するシステムファームウェアと、
前記システムファームウェアにより前記外部装置制御装置から展開されたドライバと、前記計算機システムにおけるドライバ優先情報とを保持し、
前記記憶部に展開されたドライバが第一のドライバである場合、前記記憶部に展開された第一のドライバは、
前記第二のドライバによる前記外部装置制御装置の制御の有無を判定し、
前記第二のドライバによる前記外部装置制御装置の制御が無い場合、他の外部装置制御装置から展開された第一のドライバによる前記外部装置制御装置の制御の有無を判定し、
他の外部装置制御装置から展開された第一のドライバによる前記外部装置制御装置の制御が無い場合、前記記憶部に展開された第一のドライバによる外部装置制御装置の制御を実行し、
他の外部装置制御装置から展開された第一のドライバによる前記外部装置制御装置の制御が有る場合、前記記憶部に展開された第一のドライバによる外部装置制御装置の制御を実行せず、
前記記憶部に展開されたドライバが第二のドライバである場合、前記記憶部に展開された第二のドライバは、
前記記憶部に格納されている前記ドライバ優先情報を確認し、
前記ドライバ優先情報が第二ドライバ優先の場合、他の外部装置制御装置から展開された第二のドライバによる前記外部装置制御装置の制御の有無を判定し、
他の外部装置制御装置から展開された第二のドライバによる前記外部装置制御装置の制御が無い場合、前記記憶部に展開された第二のドライバによる外部装置制御装置の制御を実行し、
他の外部装置制御装置から展開された第二のドライバによる前記外部装置制御装置の制御が有る場合、前記記憶部に展開された第二のドライバによる外部装置制御装置の制御を実行しない
ことを特徴とする計算機システム。
【請求項２】
請求項１記載の計算機システムにおいて、
前記第一のドライバのコードタイプは、前記第二のドライバのコードタイプよりも新しい
ことを特徴とする計算機システム。
【請求項３】
請求項１記載の計算機システムにおいて、
前記記憶部に展開されたドライバが第一のドライバである場合、前記記憶部に展開された第一のドライバは、
前記第二のドライバによる外部装置制御装置の制御の有無の判定前に、前記外部装置制御装置から前記記憶部に展開されたドライバ優先情報を、前記記憶部にドライバが展開されたときに前記記憶部が取得した、ドライバ優先情報の設定条件に基づいて設定し、
前記第二のドライバによる外部装置制御装置の制御有無の判定により、前記第二のドライバによる前記外部装置制御装置の制御が有ると判定した場合、前記計算機システムを再起動し、前記記憶部に展開された第一のドライバによる処理を行う指示を出す
ことを特徴とする計算機システム。
【請求項４】
請求項１記載の計算機システムにおいて、
前記記憶部に展開されたドライバが第二のドライバである場合、
前記記憶部は、前記外部装置制御装置からドライバが展開された際前記記憶部に展開されたドライバによって作成された管理テーブルに、各前記外部装置制御装置が展開したドライバの種類を有する構成情報、各前記外部装置制御装置のドライバ展開状況及び、前記ドライバを展開した回数を含む、前記ドライバ優先情報の設定が妥当であるか確認するためのドライバ優先情報妥当性確認情報を、保持し、
前記記憶部に展開されたドライバが第二のドライバは、前記ドライバ優先情報妥当性確認情報の、前記構成情報と、前記ドライバの展開状況及び、前記展開した回数と、前記格納されているドライバ優先情報とを比較して、優先すべきドライバを前記ドライバ優先情報に更新する
ことを特徴とする計算機システム。
【請求項５】
請求項４記載の計算機システムにおいて、
前記記憶部に展開されたドライバが第二のドライバである場合、前記記憶部に展開された第二のドライバは、
前記ドライバ優先情報が第一ドライバ優先の設定の場合、前記ドライバ優先情報妥当性確認情報を参照し、前記第一ドライバ優先の設定が、第一のドライバでのみ制御が実行される第一の第一ドライバ優先という設定であるか、もしくは、第一のドライバでの制御が設定してあるが、前記システムファームウェアにより展開されたドライバが第二のドライバであれば、第二のドライバによる制御に変更するという設定の第二の第一ドライバ優先であるかを判定し、
前記ドライバ優先情報の設定が第一の第一ドライバ優先の場合、他の外部装置制御装置から展開された第二のドライバによる前記外部装置制御装置の制御の有無の判定を実行し、
前記ドライバ優先情報の設定が第二の第一ドライバ優先の場合、前記ドライバ優先情報を第二ドライバ優先に変更するか否かを判定し、
前記ドライバ優先情報を第二ドライバ優先に変更しない場合、前記記憶部に展開されたドライバによる制御を続行せず、
前記ドライバ優先情報を第二ドライバ優先に変更する場合、前記ドライバ優先情報を第二ドライバ優先に設定し、前記計算機システムを再起動し、前記第二のドライバによる処理を行う指示を出す
ことを特徴とする計算機システム。
【請求項６】
請求項１記載の計算機システムにおいて、
前記記憶部は、前記外部装置制御装置用ファームウェアから展開された前記外部装置制御装置の有するドライバのバージョン情報を有し、
前記記憶部に展開されたドライバと同じコードタイプのドライバが、前記外部装置制御装置の制御を実行していない場合、前記記憶部に展開されたドライバは、
前記ドライバのバージョン情報を参照し、前記記憶部に展開されたドライバが、前記記憶部に展開されている他の外部装置制御装置のドライバのうち、同じコードタイプのドライバのバージョンよりも新しいか否かを判定し、
前記記憶部に展開されたドライバの方が、前記記憶部に展開されている他の外部装置制御装置のドライバのうち、同じコードタイプのドライバのバージョンよりも新しい場合、前記記憶部に展開されたドライバによる制御を続行し、
前記記憶部に展開されたドライバの方が、前記記憶部に展開されている他の外部装置制御装置のドライバのうち、同じコードタイプのドライバのバージョンよりも新しくない場合、前記記憶部に展開されたドライバによる制御を続行しない
ことを特徴とした計算機システム。
【請求項７】
請求項１記載の計算機システムにおいて、
前記外部装置制御装置は、前記外部装置制御装置の制御に用いる情報を、前記外部装置制御装置を制御するために前記記憶部に展開されたドライバから取得するインターフェイスを持つ
ことを特徴とする計算機システム。
【請求項８】
請求項４記載の計算機システムにおいて、
前記外部装置制御装置は、前記外部装置制御装置を制御するドライバのコードタイプを固定して設定するドライバ優先情報固定機能を備え、
前記ドライバ優先情報固定機能は、前記外部装置制御装置の有するドライバ優先情報に従って前記外部装置制御装置を制御するドライバを展開する無効設定と、
前記外部装置制御装置の有するドライバ優先情報に従って前記外部装置制御装置を制御せず、前記固定したドライバ優先情報に従ってドライバを展開する有効設定とを有する
ことを特徴とした計算機システム。
【請求項９】
演算部と、前記演算部が実行するプログラムを記憶する記憶部と、前記演算部とＰＣＩバスで接続される複数のＰＣＩスロットと、前記ＰＣＩスロットに搭載される外部装置制御装置とを備える計算機システムにおけるドライバ制御方法であって、
前記外部装置制御装置は、前記記憶部に展開して当該外部装置制御装置を制御するためのドライバとして、第一のコードタイプに対応する第一のドライバ、及び前記第一のコードタイプとは異なる第二のコードタイプに対応する第二のドライバのうち少なくとも一方と、ドライバ優先情報と、外部装置制御装置用ファームウェアとを有し、
前記記憶部は、前記計算機システムを制御するシステムファームウェアと、前記システムファームウェアにより前記外部装置制御装置から展開されたドライバとを保持し、
第一のドライバが前記記憶部に展開された場合、前記記憶部に展開された第一のドライバは、
前記第二のドライバが前記外部装置制御装置を制御しているか否かを判定し、
前記第二のドライバが前記外部装置制御装置を制御していない場合、他の外部装置制御装置から展開された第一のドライバが前記外部装置制御装置の制御をしているか否か判定し、
他の外部装置制御装置から展開された第一のドライバが前記外部装置制御装置を制御しない場合、前記記憶部に展開された第一のドライバは外部装置制御装置の制御を実行し、
他の外部装置制御装置から展開された第一のドライバが前記外部装置制御装置の制御をする場合、前記記憶部に展開された第一のドライバは外部装置制御装置の制御を実行せず、
第二のドライバが前記記憶部に展開された場合、前記記憶部に展開された第二のドライバは、
前記外部装置制御装置から前記記憶部に格納された前記ドライバ優先情報を確認し、
前記ドライバ優先情報が第二ドライバ優先の場合、他の外部装置制御装置から展開された第二のドライバが前記外部装置制御装置を制御しているか否か判定し、
他の外部装置制御装置から展開された第二のドライバが前記外部装置制御装置の制御していない場合、前記記憶部に展開された第二のドライバは外部装置制御装置の制御を実行し、
他の外部装置制御装置から展開された第二のドライバが前記外部装置制御装置の制御している場合、前記記憶部に展開された第二のドライバは外部装置制御装置の制御を実行しない
ことを特徴とするドライバ制御方法。
【請求項１０】
請求項９記載のドライバ制御方法において、
前記第一のドライバのコードタイプは、前記第二のドライバのコードタイプよりも新しい
ことを特徴とするドライバ制御方法。
【請求項１１】
請求項９記載のドライバ制御方法において、
前記第一のドライバが前記記憶部に展開された場合、前記記憶部に展開された第一のドライバは、
前記第二のドライバが既に外部装置制御装置を制御しているか否かの判定前に、
前記当該外部装置制御装置から前記記憶部に展開されたドライバ優先情報を、前記記憶部に展開されているドライバの有するドライバ優先情報の設定条件に基づいて設定し、
前記第二のドライバが既に外部装置制御装置の制御しているか否かの判定により、
前記第二のドライバが既に前記外部装置制御装置を制御しているか否かの判定した場合、前記ドライバ制御方式を用いた計算機システムを再起動し、前記記憶部に展開された第一のドライバによる処理を行う指示を出す
ことを特徴とするドライバ制御方法。
【請求項１２】
請求項９記載のドライバ制御方法において、
前記記憶部に展開されたドライバが第二のドライバである場合、
前記記憶部は、前記外部装置制御装置からドライバが展開された際前記記憶部に展開されたドライバによって作成された管理テーブルに、各前記外部装置制御装置が展開したドライバの種類を有する構成情報、各前記外部装置制御装置のドライバ展開状況及び、前記ドライバを展開した回数を含む、前記ドライバ優先情報の設定が妥当であるか確認するためのドライバ優先情報妥当性確認情報を、保持し、
前記記憶部に展開されたドライバが第二のドライバは、前記ドライバ優先情報妥当性確認情報の、前記構成情報と、前記ドライバの展開状況及び、前記展開した回数と、前記格納されているドライバ優先情報とを比較して、優先すべきドライバを前記ドライバ優先情報に更新する
ことを特徴とするドライバ制御方法。
【請求項１３】
請求項１２記載のドライバ制御方法において、
前記記憶部に展開されたドライバが第二のドライバである場合、前記記憶部に展開された第二のドライバは、
前記ドライバ優先情報が第一ドライバ優先の設定の場合、前記ドライバ優先情報妥当性確認情報を参照し、前記第一ドライバ優先の設定が、第一のドライバでのみ制御が実行される第一の第一ドライバ優先という設定であるか、もしくは、第一のドライバでの制御が設定してあるが、前記システムファームウェアにより展開されたドライバが第二のドライバであれば、第二のドライバによる制御に変更するという設定の第二の第一ドライバ優先であるかを判定し、
前記ドライバ優先情報の設定が第一の第一ドライバ優先の場合、他の外部装置制御装置から展開された第二のドライバが前記外部装置制御装置を制御しているか否か判定し、
前記ドライバ優先情報の設定が第二の第一ドライバ優先の場合、前記ドライバ優先情報を第二ドライバ優先に変更するか否かを判定し、
前記ドライバ優先情報を第二ドライバ優先に変更しない場合、前記記憶部に展開されたドライバは制御を続行せず、
前記ドライバ優先情報を第二ドライバ優先に変更する場合、前記ドライバ優先情報を第二ドライバ優先に設定し、前記計算機システムを再起動し、前記第二のドライバが処理を行う指示を出す
ことを特徴とするドライバ制御方法。
【請求項１４】
請求項９記載のドライバ制御方法において、
前記外部装置制御装置用ファームウェアは、前記記憶部に前記外部装置制御装置から展開したドライバのバージョン情報を有し、
前記記憶部に展開されたドライバは、前記記憶部に展開されたドライバと同じコードタイプのドライバが、前記外部装置制御装置を制御していない場合、
前記ドライバのバージョン情報を参照し、
前記記憶部に展開されたドライバのバージョンが、記憶部に展開されている他の外部装置制御装置のドライバのうち、同じコードタイプのドライバのバージョンよりも新しいか否かを判定し、
前記記憶部に展開されたドライバのバージョンの方が、記憶部に展開されている他の外部装置制御装置のドライバのうち、同じコードタイプのドライバのバージョンよりも新しい場合、前記記憶部に展開されたドライバは制御を続行し、
前記記憶部に展開されたドライバのバージョンの方が、記憶部に展開されている他の外部装置制御装置のドライバのうち、同じコードタイプのドライバのバージョンよりも新しくない場合、前記記憶部に展開されたドライバは制御を続行しない
ことを特徴とするドライバ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、異なるコードタイプのドライバが動作できる計算機システムにおいて、同一の外部装置制御部材を制御可能な異なるコードタイプのドライバが、メモリに展開されたときに、異なるコードタイプのドライバ間で実行する優先制御方式と、同一ドライバを実装している外部装置制御部材が複数搭載されている場合に、異なるバージョンのドライバ間で実行するバージョン管理方式および、それらの制御方式を用いた計算機システムに関するものである。
【背景技術】
【０００２】
オープン系サーバである計算機システムは、プロセッサと周辺デバイスの接続に関しては業界標準規格の手段であるＰＣＩ−ＳＩＧにて策定されたＰＣＩ（Peripheral Component Interchange）バスを含む。前記計算機システムは、ＰＣＩバスで接続されるスロット（ＰＣＩスロット）を複数備え、目的とする機能拡張に合わせたアダプタカードを計算機システムのＰＣＩスロットへ搭載する事によって、機能拡張を行う。アダプタカードの不揮発性メモリには、アダプタカードを制御するドライバが格納され、ＰＣＩ−ＳＩＧで規定された方法により計算機システムのメモリにマッピングされる。計算機システムを制御するシステムファームウェアは、ＰＣＩ−ＳＩＧで規定された業界標準規格である手順にて、そのドライバをシステムメモリに展開後、そのドライバに該当アダプタカードの制御を行わせる。計算機システムを制御するシステムファームウェアは、搭載されている全てのアダプタカードに対して上記手順を実行するので、搭載されているアダプタカードと同数のドライバが計算機システムのメモリに展開される。
【０００３】
なお、アダプタカードが搭載される計算機システムの種類は様々であり、その計算機システムの種類によりドライバのコードタイプも異なる。そのような状況でもアダプタカードの制御を行う事ができるように、１つのアダプタカードの不揮発性メモリには複数のコードタイプのドライバが格納されていることがある。この複数のコードタイプのドライバの中から、計算機システムを制御するシステムファームウェアは、ＰＣＩ−ＳＩＧで規定された業界標準規格の手段により計算機システムに合うコードタイプのドライバを選択し、計算機システムのメモリに展開し、アダプタカードの制御を実行させる。
【０００４】
計算機システムの種類によっては、複数のコードタイプのドライバが動作可能な計算機システムもあり、このような計算機システムには、アダプタカードの不揮発性メモリに動作可能な複数のコードタイプのドライバが格納されている場合に対応するために、システムファームウェアに使用するドライバのコードタイプを選択指定するコードタイプ選択機能を備えるものもある。
【０００５】
通常、一計算機システムで異なるコードタイプのドライバが動作可能な場合、一方のコードタイプは、計算機システムのシステムファームウェアの新しい機能を使用するための新しいコードタイプで、もう一方は、システムファームウェアの従来の機能を継続使用するための古いコードタイプであると考えられる。この新旧のそれぞれのコードタイプを持つ両ドライバは、両コードタイプのドライバ間で相互の状態を通知、取得する手段やシステム資源の共用などの互換性はない。その計算機システムのシステムファームウェアがコードタイプ選択機能について、新しいコードタイプを選択した場合は新しいコードタイプと古いコードタイプのどちらのドライバも使用可能であるが、古いコードタイプを選択した場合は古いコードタイプのドライバだけが使用可能であるという規則が一般的である。ドライバ選択機能を持たない計算機システムの場合は前記新しいコードタイプを選択した場合と同様の規則であるのが一般的である。以降、新しいコードタイプをコードタイプＡ、古いコードタイプをコードタイプＢ、各コードタイプに対応したドライバをそれぞれドライバＡ、ドライバＢとする。
【０００６】
前記コードタイプ選択機能は、アダプタカードの搭載スロット毎に制御を行う。同一アダプタカードが複数搭載されている場合はそれぞれのカードに対して選択制御を行う。各々のアダプタカードの不揮発性メモリに格納しているドライバのコードタイプが異なる場合は、アダプタカード毎に異なるコードタイプのドライバがメモリに展開された状態となる。このケースについて、計算機システムに、ドライバＡとドライバＢが不揮発性メモリに格納されている１番目のアダプタカードと、ドライバＡだけが不揮発性メモリに格納されている２番目のアダプタカードと、ドライバＢだけが不揮発性メモリに格納されている３番目のアダプタカードとを搭載してコードタイプ選択をコードタイプＡに設定した場合を例に説明する。
【０００７】
前記選択機能の規則により、まずコードタイプＡが選択されると、１番目のアダプタカードからはドライバＡが、２番目のアダプタカードからはドライバＡが、３番目のアダプタカードからはドライバＢがメモリに展開されて、同一アダプタカードでも異なるドライバのドライバＡとドライバＢの両方がメモリに展開された状態となる。
【０００８】
一方、アダプタカードのドライバは、同一アダプタカードを複数搭載している場合はアダプタカードと同数のドライバが計算機システムのメモリに展開されることを前述したが、アダプタカードの種類によっては、複数のドライバがメモリに常駐するタイプと、複数のドライバがメモリに常駐して、システム資源であるメモリを大量に消費してしまうことを回避するために、１つのドライバだけがメモリに常駐する制御を行うタイプが存在する。常駐した１つのドライバは全ての同一アダプタカードを制御する機能を備える。
【０００９】
前述の例で示したアダプタカードの不揮発性メモリに格納されているドライバが、この１つのドライバだけがメモリに常駐する制御機能を備えるドライバである場合を例にとって説明する。この時１番目のアダプタカードからはドライバＡがメモリに展開されて全アダプタカードの制御を開始し、２番目のアダプタカードからはドライバＡがメモリに展開される。しかし、１つのドライバだけがメモリに常駐する制御処理を行うために、２番目のアダプタカードからメモリに展開されたドライバＡは、アダプタカードの制御を行わずに終了する。３番目のアダプタカードからはドライバＢがメモリに展開されて全アダプタカードの制御を開始する。前述のようにドライバＡとドライバＢは、相互の状態を取得する手段が存在しないため、ドライバＢはドライバＡが全アダプタカードを既に制御していることを認識することができずに、全アダプタカードの制御を新たに開始してしまう。
【００１０】
また、通常、アダプタカードの制御インタフェースは１つのドライバだけが有効で、前記例の場合は後から開始したドライバＢとの制御インタフェースが有効となり、ドライバＡは制御不可能となる。このことは、選択設定でコードタイプＡを選択してコードタイプＡに対応したドライバＡがあるにも係わらず、ドライバＡを使用することができないという問題があることを示している。
【００１１】
又、別の問題として、アダプタカードの不揮発性メモリに格納されているドライバのバージョンが、計算機システムに搭載している複数アダプタカードで異なる場合のバージョン管理に関する問題がある。
【００１２】
バージョンＶ１のドライバが不揮発性メモリに格納されている１番目のアダプタカードと、バージョンＶ２のドライバが不揮発性メモリに格納されている２番目のアダプタカードとが搭載されている場合を例に説明する。この場合、最初に１番目のアダプタカードからバージョンＶ１のドライバがメモリに展開されて全アダプタカードの制御を開始し、次に２番目のアダプタカードからバージョンＶ２のドライバがメモリに展開されるが、１つのドライバだけがメモリに常駐する制御を行っている場合には、1番目のアダプタからメモリ展開されたドライバがアダプタカードの制御を開始しているために、２番目はアダプタカードの制御を行わずに終了する。このように、先にメモリに展開されるドライバが使用されるので、バージョンＶ１よりもバージョンＶ２が新しいドライバであっても、バージョンＶ１のドライバを使用しなければならないし、アダプタカードの搭載順番の入れ替えなどにより、使用するドライバのバージョンが変更されてしまう可能性を示すもので、バージョン管理の観点でも問題があることを示している。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００７−１６４４９２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
異なるコードタイプの第一のドライバ(ドライバＡ)と第二のドライバ(ドライバＢ)とが動作できるプラットフォームを持つ計算機システムにおいて、使用するコードタイプの選択機能があり、又、これまで述べたようなアダプタカードが複数混在している場合がある。このとき、アダプタカード毎に異なるコードタイプのドライバがメモリに展開されるため、そのドライバが１つのドライバで複数アダプタカードを制御する機能を備えたドライバであると、システムファームウェアのコードタイプ選択設定で選択したコードタイプのドライバを使用することが出来ないことがあるという問題がある。
【００１５】
また、アダプタカードを制御するドライバのバージョン管理については、メモリに展開される順番、つまりアダプタカードの搭載スロット位置に依存するため、搭載されているアダプタカードの中から一番新しいバージョンのドライバを使用できない。あるいは、搭載するスロット位置の入れ替えでバージョンが異なることがあるという問題がある。
【００１６】
特許文献１に記載の技術は、動作モードの異なる複数のドライバで動作するデバイスに対して、基本プログラムの環境下で認識する動作モードと、オペレーティングシステムの環境下で認識する動作モードが異なる場合に、オペレーティングシステム環境の動作モードに合わせてデバイスコントローラを設定し直すという、基本プログラムからオペレーティングシステムに制御が移行する際、両環境間の動作モードの違いに対応するための技術である。特許文献１には、基本プログラム環境下、またはオペレーティングシステム環境下の一環境下で、異なる動作モードのドライバが読み込まれた場合の制御方式については記載されていない。
【課題を解決するための手段】
【００１７】
これに対して本発明は、基本プログラム環境下、またはオペレーティングシステム環境下の１つの環境下で、コードタイプの異なる複数のドライバが動作した場合のドライバ優先制御に関する技術である。さらに、計算機システムを制御するシステムファームウェアのコードタイプ選択機能だけでは制御しきれない問題を、システムファームウェアの変更を必要とせずにドライバ自身の制御方式だけで解決するものである。
【００１８】
具体的には、外部装置制御部材は、記憶部(システムメモリ)に展開して当該外部装置制御部材を制御するためのドライバとして、第一のコードタイプに対応する第一のドライバ、及び前記第一のコードタイプとは異なる第二のコードタイプに対応する第二のドライバのうち少なくとも一方と、ドライバ優先情報と、外部装置制御部材用ファームウェアとを有している。また、外部装置制御部材は、ドライバがシステムメモリに展開されたときに、ドライバのコードタイプがシステムファームウェアのコードタイプ選択設定で選択されていることを示すドライバ優先情報を、不揮発性メモリに記憶する。
【００１９】
システムメモリは、システムファームウェアにより外部装置制御部材から展開されたドライバを保持し、この展開されたドライバのコードタイプによって異なった制御処理を行うことを特徴とする制御方法およびそれを用いた計算機システムである。
【００２０】
また、ドライバは、前記ドライバ優先情報を外部装置制御部材の不揮発性メモリから読み出す手段と、前記ドライバのメモリ展開情報とドライバ制御開始情報とを外部装置制御部材用ファームウェアから取得する手段とを備える。
【発明の効果】
【００２１】
本発明により、以下の効果を得ることができる。
（１）複数搭載した同一アダプタカードが、どのようなコードタイプのドライバを持つアダプタカードであるかを意識することなく、システムファームウェアのドライバ選択設定に従ったドライバを使用することが可能となる。
（２）システムファームウェアのドライバ選択設定とは独立して、アダプタカードだけでドライバの選択設定を行うことが可能となる。
（３）複数搭載した同一アダプタカードのドライバのバージョンが揃っていない場合でも、最新バージョンのドライバを使用することが可能となる。
（４）複数搭載した同一アダプタカードの搭載スロット位置を入替えても、常に同じバージョンのドライバを使用することが可能となる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態における、ドライバの優先制御処理のフローチャートである。
【図２】本実施形態における、計算機システムの構成を示すブロック図である。
【図３】本実施形態における、システムファームウェアのコードタイプ選択設定とメモリに展開されるドライバの種類の関連の例を示す図である。
【図４】本実施形態における、計算機システムのＰＣＩスロットと搭載するアダプタカードを制御するドライバの種類の組み合わせによる構成と分類分けの例を示す図である。
【図５】本実施形態における、カード構成の分類とドライバ優先情報を対応付ける例を示す図である。
【図６】本実施形態における、ドライバ優先情報とドライバの動作規定の例を示す図である。
【図７】本実施形態における、優先制御、バージョン制御のための情報をアダプタファームウェアから取得する処理のフローチャートである。
【図８】本実施形態における、ドライバ優先フラグ設定条件の例を示す図である。
【図９】本実施形態における、ドライバ優先フラグの妥当性確認条件を有すドライバ優先妥当情報管理情報の例を示す図である。
【図１０】本実施形態における、ドライバ優先情報の固定設定の項目を示す図である。
【発明を実施するための形態】
【００２３】
本発明の実施形態について、図面を用いて説明する。
【００２４】
以下、外部装置制御部装置をアダプタカードとした例を挙げる。また、実際にはＣＰＵがシステムファームウェアや、アダプタファームウェア、またはドライバを読み込んで処理を実行するが、分かりやすくするために、それぞれの処理を行うシステムファームウェアやドライバを主体として表現した。
【００２５】
＜実施例１＞
図１は、本実施形態におけるドライバの優先制御を実施するフローチャートであり、システムファームウェアのコードタイプ選択設定を認識してドライバ優先情報の設定、リセットを自動で制御する処理のフローを示す。今のシステム起動時点でのシステムファームウェアのコードタイプ選択設定を認識する処理と、そのシステムファームウェアが持つコードタイプ選択設定と、不揮発性メモリに保存しているドライバ優先情報との比較を行い、前回のシステム起動後にシステムファームウェアのコードタイプ選択設定が変更されている場合でも、自動でドライバ優先情報の変更を行なうためのフローである。本図の詳細の説明は後述する。
【００２６】
図２は、本発明のドライバ制御方式を適用する計算機システムの構成を示すブロック図である。なお、図２に示すブロック図は本発明を説明するための要部を示す図であり、本発明の説明に直接関係しない部分の構成は省略している。
【００２７】
図２において、計算機システム(１０)は、計算機システムを制御するＣＰＵ(１２)とシステムメモリ(１３)とＰＣＩスロット＃１(１５-１)〜＃ｎ(１５-ｎ)とを備えるマザーボード(１１)と、ＰＣＩスロット＃１(１５-１)〜＃ｎ(１５-ｎ)に搭載されるアダプタカード＃１(１６-１)〜＃ｎ(１６-ｎ)とで構成されている。なお、図２は、ＰＣＩスロット＃１(１５-１)〜＃ｎ(１５-ｎ)の全てにアダプタカード＃１(１６-１)〜＃ｎ(１６-ｎ)が搭載されている場合を示しているが、実際の計算機システムにおいて、全てのＰＣＩスロット(１５-１〜ｎ)にアダプタカードを搭載する必要はない。
【００２８】
アダプタカード(１６-１〜ｎ)は、アダプタカードを制御する異なるコードタイプのドライバのドライバＡ(１７ａ-１〜ｎ)とドライバＢ(１７ｂ-１〜ｎ)が格納された不揮発性メモリ(１７-１〜ｎ)を備えている。図２は、全てのアダプタカードがドライバＡとドライバＢの両方が不揮発性メモリに格納している場合を示しているが、実際の計算機システムにおいて、どのコードタイプのドライバがアダプタカードの不揮発性メモリに格納されているかは一定ではない。詳細は図３以降で説明する。
【００２９】
図２において、システムメモリ(１３)上のドライバ＃１(１３ｂ-1)〜ドライバ＃ｎ(１３ｂ-ｎ)は、システムファームウェア(１３ａ)がシステムファームウェアのコードタイプ選択情報(１３ｃ)に従って、アダプタカード(１６-１〜ｎ)の不揮発性メモリ(１７-１〜ｎ)からドライバＡ(１７ａ-１〜ｎ)またはドライバＢ(１７ｂ-１〜ｎ)をメモリに展開したものである。システムメモリに展開されたドライバ(１３ｂ-1〜ｎ)がアダプタカード(１６-１〜ｎ)の制御を行い、システムファームウェアから外部記憶装置(１９-１〜ｎ)へのアクセスを可能とする。
不揮発性メモリ(１７-１〜ｎ)に格納されているドライバ優先情報(１７ｃ-１〜ｎ)と、アダプタファームウェア(１８-１〜ｎ)が管理しているドライバＡとドライバＢのバージョン情報(１８ａ-１〜ｎ、１８ｂ-１〜ｎ)と制御開始情報(１８ｃ-１〜ｎ)とメモリ展開情報(１８ｄ-１〜ｎ)とは、本発明におけるドライバの優先制御方式で使用する情報であり、前記情報の使用方法については後述する図１および図３以降で説明する。
【００３０】
図３は、システムファームウェアのコードタイプ選択内容と、アダプタカードの不揮発性メモリに格納されているドライバの種類と、システムファームウェアが当該アダプタカードからメモリに展開するドライバの種類の関係の例について示す図である。以降、図３のようにアダプタカードおよびそのドライバが搭載されていることとする。
【００３１】
カード(２０−１)は２つのコードタイプのドライバを持つアダプタカードで、このアダプタカードからはシステムファームウェアのコードタイプ選択内容にしたがってドライバＡまたはドライバＢがメモリに展開される（２７−１）。
【００３２】
カード(２０−２)はドライバＡだけを持つアダプタカードで、このアダプタカードからはシステムファームウェアのコードタイプ選択がコードタイプＡの場合にのみドライバＡが展開され、コードタイプＢが選択されている場合には何もメモリに展開されない（２７−２）。
【００３３】
カード(２０−３)はドライバＢだけを持つアダプタカードで、このアダプタカードからは、システムファームウェアのコードタイプ選択内容に係わらずにドライバＢがメモリに展開される（２７−３）。
【００３４】
上記は、ドライバＡはコードタイプＡを選択している場合にだけメモリ展開されるドライバであり、ドライバＢはコードタイプＢが選択されているときだけでなく、コードタイプＡが選択されていてる場合でもドライバＡを実装していないアダプタカードからメモリ展開されるドライバであることを示し、つまり、ドライバＡがメモリに展開されたことはシステムファームウェアのコードタイプ選択でコードタイプＡが選択されていると判断することが出来、ドライバＡがメモリ展開されないことは、コードタイプＢが選択されていると判断出来ることを意味する。
【００３５】
図４は、計算機システムのＰＣＩスロット(図２の１５-１〜１５-ｎ)と、そのスロットに搭載するアダプタカード(図２の１６-１〜１６-ｎ)の不揮発性メモリに格納されているドライバの種類の組み合わせを代表的なグループで分けて、カード構成カテゴリと名付けて説明するための一覧表の図である。図４では説明の都合上スロット数を３つとして説明しているが、３スロット以外の組み合わせについては、カテゴリの特徴(３３)欄を参照して何れかのカテゴリに属するものとする。
【００３６】
カテゴリＣＴ−ＡＡＡ(３１−１)は、全てのアダプタカードがドライバＡを搭載しているカードの場合である。
カテゴリＣＴ−ＡＡＢ(３１−２)は、ドライバＢのカードの搭載位置に対して、全てのドライバＡのカードが前方のスロットに集まっている搭載状態である。
カテゴリＣＴ−ＡＢＡ(３１−３)は、先頭スロットがドライバＡのカードで、かつ、ドライバＢのカードがドライバＡのカードに挟まれている搭載状態である。
カテゴリＣＴ−ＢＢＢ(３１−４)は、全てのカードがドライバＢを搭載しているカードの場合である。
カテゴリＣＴ−ＢＢＡ(３１−５)は、ドライバＡのカードの搭載位置に対して、全てのドライバＢのカードが前方のスロットに集まっている搭載状態である。
カテゴリＣＴ−ＢＡＢ(３１−６)は、先頭スロットがドライバＢのカードで、かつ、ドライバＡのカードがドライバＢのカードに挟まれている搭載状態である。
【００３７】
図４のカテゴリ区分において、ドライバＡとドライバＢの両方を持つアダプタカードはドライバＡのアダプタカードに分類する。
【００３８】
図５は、図４で説明したカード構成のカテゴリ(３１)とシステムファームウェアのコードタイプ選択内容(４２)と、ドライバＢでの制御が開始されるよりも先にドライバＡがシステムメモリに展開されているか否かを示す情報(４３)によって、ドライバ優先情報をどのような内容で管理する(４４)のかを説明する図である。ドライバ優先情報の設定はこの図の規則に従うように行い(後述する図８を参照)、またドライバ優先情報の妥当性確認もこの図の規則に従うように行う(後述する図９を参照)。
【００３９】
基本的に、ドライバ優先情報の初期値は ドライバＢ優先である。
【００４０】
(４４)において、第１ドライバＡ優先とは、システムファームウェアがコードタイプＢを指定してきても、ドライバＢの制御には変更しない設定であり、第２ドライバＡ優先とは、システムファームウェアがコードタイプＢを指定してきたら、ドライバＢの制御に変更してもよい設定である。又、ＣＴ−ＡＡＡ  コードタイプＢは、(４４)が空白であるが、これは、何れのドライバもメモリに展開されないので、設定できない組み合わせであることを意味する。
【００４１】
図６は、ドライバ優先情報(５１)の内容に対して、ドライバＡとドライバＢそれぞれが実行する必要がある処理(５２)を示す図である。
【００４２】
(５３)は、第２ドライバＡ優先状態に切り替わってからメモリに展開された回数をカウントする情報で、アダプタカードの不揮発性メモリに格納されている。
【００４３】
図７は、ドライバで実施する優先制御と、バージョン管理を実施するための管理テーブルとを作成する処理のフローチャートである。ここでは図２のようなシステムにおけるフローについて説明する。
【００４４】
(Ｓ６０１)は、同一アダプタカード全てのバージョン情報を参照するために、システムファームウェアが提供する機能を利用して、同一アダプタカードの数を取得する処理である。この処理でカード＃１からｎまでのカード(６３０)が搭載されていることを認識する。この処理で取得したアダプタカード数は、システムメモリ(６２０)に作成する管理テーブル(６２１)のフィールド(６２６)に保存する。
【００４５】
(Ｓ６０２)は、アダプタカード(６３０)の不揮発性メモリ(６３２)に保持しているドライバ優先情報と、アダプタファームウェアが管理するバージョン情報、制御開始情報とメモリ展開情報など(６３１)をアダプタファームウェアとの取得手段(６３３)を介して取得する処理で、(Ｓ６０３)は取得したドライバ優先情報、制御開始情報とメモリ展開情報を管理テーブル(６２１)のフィールド(６２７)、(６２４)、(６２５)に保存する処理である。
【００４６】
ここで取得できるドライバ優先情報は、前回のシステム起動時に、後述する図１の(Ｓ１０２)または(Ｓ１３２)でアダプタカードの不揮発性メモリに格納されたものである。アダプタファームウェアがシステム起動時に不揮発性メモリから取得しておくことが望ましい。制御開始情報は、先にメモリに展開されたドライバにより図１の(Ｓ１０７)または(Ｓ１４３)でアダプタファームウェアに通知されるもので、メモリ展開情報は、先にメモリに展開されたドライバにより図１の(Ｓ１０１)または(Ｓ１３０)でアダプタファームウェアに通知されるものである。
【００４７】
(Ｓ６０４)は、(Ｓ６０２)の処理で取得したバージョン情報が有効かをチェックする処理で、バージョン情報が無効の場合は、そのアダプタカードにはドライバＡコードが搭載されていないことを意味するので(Ｓ６０８)へ進む。
【００４８】
(Ｓ６０６)、(Ｓ６０７)は、(Ｓ６０２)の処理で取得したバージョン情報を管理テーブル(６２１)に保存している最新バージョン情報(６２３)と比較して、最新バージョン情報(６２３)を更新する処理である。(Ｓ６１２)でループして全アダプタカードからのバージョン情報取得が完了すると、(６２３)はそのドライバの最新バージョンを示す情報となる。
【００４９】
(Ｓ６０８)〜(Ｓ６１１)は、ドライバＢについて(Ｓ６０４)〜(Ｓ６０７)と同じ処理を行なうフローである。
【００５０】
(Ｓ６１２)は、(Ｓ６０１)で取得したカード数の全てについて(Ｓ６０２)〜(Ｓ６１１)までの処理を実行するための判定処理である。
【００５１】
全てのカードに対する処理が完了すると図１の処理へ移る(Ｓ６１３)。
【００５２】
図１は、図７の処理で管理テーブル(６２１)を作成した後に行うドライバの優先制御処理と、バージョン制御処理のフローチャートである。
【００５３】
この実施形態において、ドライバＡは(Ｓ１０１)から始まる処理を、ドライバＢは(Ｓ１３０)から始まる処理を実装するものとする。
【００５４】
ドライバＡの処理について(Ｓ１０１)以降の処理について説明する。
【００５５】
(Ｓ１０１)は、ドライバＡがメモリ展開されたことを示すメモリ展開情報を、インタフェース(５３３)を通してアダプタファームウェアに通知する処理である。ここで通知する情報は、この後にメモリ展開されるドライバによって図７の(Ｓ６０２)で取得、後に(Ｓ１３２)で参照される。システム装置の動作期間中だけ保持できれば良いフラグなので、不揮発性メモリに格納する必要はない。
【００５６】
(Ｓ１０２)は、管理テーブル(６２１)のドライバ優先情報(６２７)を、図８の設定条件にしたがって設定する処理である。ドライバ優先情報の設定条件についての詳細は図８で説明する。
【００５７】
(Ｓ１０３)は、ドライバＢがアダプタカードを制御開始済みであるかを判定する処理で、管理テーブル(６２１)の制御開始情報(６２４−Ｂ)を参照して行う。ドライバＢによってアダプタカードの制御が開始済であれば、ドライバＢだけを搭載したカード(２０−３)が処理中のカード番号より早いカードに存在し、ドライバＢが既にメモリ展開されている（後述する(Ｓ１４２)〜(Ｓ１４４)の処理を実行した後である）ことを意味する。今はドライバＡで制御を行うので、ドライバＡは、コードタイプ選択設定に従ったアダプタカード制御を改めて実行するために、(Ｓ１２０−１)へ進んでシステム装置の強制リブート処理、つまりシステムの起動のやり直しを実行する。図１のＳ１５２はこのリブートを示しており、図１に点線で表されているリブートはシステムファームウェアによって行われる。
【００５８】
リブート後は、ドライブＢが展開されているカード番号の早いカードから、図１の処理をやり直すため、ドライバＢはドライバＡ優先状態であることを認識して、アダプタカードの制御を開始しなくなる(後述する(Ｓ１３１)〜(Ｓ１３４)の処理を実行する)ため、リブート後のドライバＡは(Ｓ１０３)から(Ｓ１０４)へ進む。また、ドライバＡがドライバＢよりも先にメモリ展開された場合も(Ｓ１０３)から(Ｓ１０４)へ進む。
【００５９】
(Ｓ１０４)は、他のアダプタカードからメモリに展開されたドライバＡが、アダプタカードを制御開始済みであることを検出する処理で、管理テーブル(６２１)の制御開始情報(６２４−Ａ)を参照して行う。ドライバＡによってアダプタカードの制御が開始済であることは、別カードにある最新バージョンのドライバＡがメモリ展開されていることを意味するので、(Ｓ１１０)へ進んで初期化処理が失敗したと応答する。制御開始情報(６２４−Ａ)がＮＯを示す場合は(Ｓ１０５)へ進み、バージョン制御処理を実行する。
【００６０】
(Ｓ１０５)は、最新バージョンのドライバを使用するために図７の(Ｓ６０４)〜(Ｓ６０７)の処理で作成した最新バージョン情報(６２３−Ａ)との比較を行う処理で、最新バージョンの場合は、(Ｓ１０６)へ進んでアダプタカードの初期化処理を実行する。最新バージョンでない場合には(Ｓ１１０)へ進んで終了する。
【００６１】
(Ｓ１０６)は、ドライバＡによる初期化処理の実行部分である。初期化処理自体は本発明の対象外であるため詳細は記述しない。
【００６２】
(Ｓ１０７)は、制御開始情報をインタフェース(６３３)を通してアダプタファームウェアに通知する処理である。ここで通知する情報は、この後にメモリ展開されるドライバによって、図７の(Ｓ６０２)で取得、(Ｓ１０４)で参照されるものである。システム装置の動作期間中だけ保持できれば良い情報なので、不揮発性メモリに格納する必要はない。
【００６３】
(Ｓ１０８)は、ドライバＡで初期化処理が成功したことをシステムファームウェアに応答する処理である。
【００６４】
(Ｓ１５０)で管理テーブル(６２１)のメモリ領域を解放する処理を行ない、終了する(Ｓ１５１)。
【００６５】
以上がドライバＡの処理である。ドライバＢの処理について(Ｓ１３０)以降の処理について説明する。
【００６６】
(Ｓ１３０)は、ドライバＢがメモリ展開されたことを示す情報を、インタフェース(６３３)を通してアダプタファームウェアに通知する処理であるシステム装置の動作期間中だけ保持できれば良い情報なので、不揮発性メモリに格納する必要はない。
【００６７】
(Ｓ１３１)は、管理テーブル(６２１)のドライバ優先情報(６２７)を確認する処理で、ドライバＡが(Ｓ１０２)で設定する情報である。ドライバ優先情報がドライバＢ優先状態の場合は、システムファームウェアのコードタイプ選択設定でコードタイプＢが選択されているか、選択内容が未だ判断できない場合で、コードタイプ選択内容が判明するまで、ドライバＢはアダプタカードの制御を実行するための処理をしなければならない。ドライバＢがアダプタカードの制御を開始後、コードタイプの選択設定がコードタイプＡであることが判明した場合は、前述のドライブＡの処理のように(Ｓ１０２)、(Ｓ１０３)、(Ｓ１２０−１)、(Ｓ１２０−２)により計算機システムをリブートしてシステム全体の処理をやり直す。図１のＳ１５２、１５３はこのリブートを示しており、図１に点線で表されているリブートはシステムファームウェアによって行われる。
【００６８】
(Ｓ１３２)はドライバ優先妥当情報管理情報である図９に示す条件に従い、ドライバ優先情報の内容が妥当であるかを確認する処理である。ここでは、各アダプタカードに格納されているドライバの種類とドライバＡのメモリ展開情報などを参照、判断してドライバ優先情報の妥当性を確認、判断することができる。
【００６９】
ドライバ優先情報の妥当性確認条件についての詳細は図９で説明する。
【００７０】
(Ｓ１３３)、(Ｓ１３４)は、ドライバ優先情報に変更があったかを確認する処理である。第二のドライバＡ優先状態(第２ドライバＡ優先)への変更は、最初のドライバＢのアダプタカードで検出できる(後述する図９を参照)ため、そのままドライバＢによる初期化処理へ進むことが可能である。ドライバＢ優先状態への変更は、最初のドライバＢのアダプタカードでは検出できないことがあるため、計算機システムシステムをリブートして、ドライバＢのバージョン管理処理を改めて実行できるようにする。
【００７１】
(Ｓ１４０)〜(Ｓ１４４)は、ドライバ優先情報がドライバＢ優先状態の場合の処理である。
【００７２】
(Ｓ１４０)は、ドライバＢによって制御開始済みであることを検出する処理で、管理テーブル(６２１)の制御開始情報(６２４−Ｂ)を参照して行う。ドライバＢによる初期化処理が完了していることは、最新バージョンのドライバＢが既にメモリ展開されていることを意味するので、(Ｓ１１０)へ進んで初期化処理が失敗したと応答することでメモリ展開を破棄する。制御開始情報(６２４−Ｂ)がＮＯの場合は(Ｓ１４１)へ進む。
【００７３】
(Ｓ１４１)は、最新バージョンのドライバを使用するために図７の処理で作成した最新バージョン情報(６２３−Ｂ)との比較を行う処理で、最新バージョンの場合は(Ｓ１４２)へ進んでカードの初期化処理を実行する。最新バージョンでない場合には(Ｓ１１０)へ進んで終了する。
【００７４】
(Ｓ１４２)は、ドライバＢによる初期化処理の実行部分である。初期化処理自体は本発明の対象外であるため詳細は記述しない。
【００７５】
(Ｓ１４３)は、制御開始情報をインタフェース(６３３)を通してアダプタファームウェアに通知する処理である。ここで通知する情報は、この後にメモリ展開されるドライバによって(Ｓ１４０)で参照される。システム装置の動作期間中だけ保持できれば良い情報なので、不揮発性メモリに格納する必要はない。
【００７６】
(Ｓ１４４)は、ドライバＢで初期化処理が成功したことをシステムファームウェアに応答する処理である。(Ｓ１５０)で管理テーブル(６２１)のメモリ領域を解放する処理を行い終了する(Ｓ１５１)。
【００７７】
図８は、(Ｓ１０２)で実行するドライバ優先情報の設定条件を示す図である。ドライバＡは、計算機システムの各ＰＣＩスロットのアダプタカードが持つドライバの種類を認識して、この図の条件に従ってドライバ優先情報を設定する。
【００７８】
(７２−１)はドライバＡがメモリ展開された時点のドライバ優先情報の内容であり、(７３−１)はカード構成カテゴリを確認した結果、設定し直す内容である。
【００７９】
(３１)は、前述の図４で説明したアダプタカードの搭載位置と、そのアダプタカードの不揮発性メモリに格納されているドライバの種類により分類したカード構成区分の条件である。
【００８０】
(７２)は、ドライバ優先情報の設定内容を示す欄で、項番４、５、６のケースを除いて第一のドライバＡ優先状態(第１ドライバＡ優先)に遷移させる。項番４と項番５のケースは、第二のドライバＡ優先状態(第２ドライバＡ優先)が継続している状態でメモリ展開カウンタをインクリメントする(７３−２)。(７３−２)は、第２ドライバＡ優先状態に切り替わってからメモリに展開された回数をカウントする情報で、アダプタカードの不揮発性メモリに格納する。項番４はさらにドライバＢによるアダプタカードの制御が開始しているケースで、今ドライバＡがメモリ展開される前にドライバＢがメモリ展開されて、ドライバＢが第２ドライバＡ優先に変更した後、(Ｓ１３３)(Ｓ１４０)の場合に発生する状態で、メモリ展開カウンタをインクリメントしたら計算機システムを強制リブートする(Ｓ１２０−２)(Ｓ１５３)。ここでインクリメントしたメモリ展開カウンタは、ドライバＢのドライバ優先情報の妥当性確認処理(Ｓ１３２)で第２ドライバＡ優先状態とともにカウントの一致性が検査される。一致する場合は、(Ｓ１１０)へ進むようにドライバＢで処理される。
【００８１】
図１のＳ１５３はこのリブートを示しており、図１に点線で表されているリブートはシステムファームウェアによって行われる。
【００８２】
項番６は項番４のケースと同様であるが、ドライバＢがメモリ展開された時点でまだドライバＢ優先状態であったため、メモリ展開カウンタをここでゼロクリアするところが異なる。このため、リブート後にドライバＢがメモリ展開されて実行する妥当性確認処理(Ｓ１３２)が正しく検証できるようにしておく必要がある。
【００８３】
図９は、(Ｓ１３２)で実行するドライバ優先情報の妥当性の確認条件を示す図である。現時点のドライバ優先情報の内容に対して図に示すチェック条件(８２)に従って、ドライバをシステムメモリに展開したときに取得した、アダプタカードがどのドライバを展開したかの情報と、各ドライバのアダプタカードへの搭載情報と、メモリへの展開の有無とその回数等の情報から、ドライバ優先と設定すべきドライバの種類を導いて保持している。この図と現在のドライバ優先情報にあるドライバ設定を比較することで、妥当性の確認を行い、チェック結果に従って対応する処理(８３)を実施する。この図の項番８と項番１７のケースは、今ドライバＢがメモリ展開されたアダプタカードはドライバＡとドライバＢの両方のドライバが不揮発性メモリに格納されている場合で、このようなアダプタカードカードからドライバＢがメモリ展開されたことは、システムファームウェアのコードタイプ選択でコードタイプＢが選択されていることを意味する(図３(２７−１))ので、ドライバＢ優先状態へ変更することを示す。
【００８４】
以上は、システムファームウェアのコードタイプ選択をアダプタカードのドライバが、動的に認識する制御方式の実施例であるが、動的に認識したドライバ優先情報を解除する手段と、ドライバ優先情報を明示的に設定する手段の実施例について以下に説明する。
【００８５】
＜実施例２＞
図１０は、ドライバ優先情報の解除および固定設定をアダプタカードのオプション設定機能を使用して行なう機能について、この機能の項目(９１)、デフォルト状態(９２)と設定範囲(９４)について示したものである。
【００８６】
項目のドライバ優先情報消去(９４)は、図９までの説明で示したアダプタカードの不揮発性メモリに格納しているドライバ優先情報を、手動で消去するための項目であって、動的に認識しているドライバ優先情報を解除する場合にＹＥＳを選択する。
【００８７】
項目のドライバ優先情報固定(９５)は、図９までの説明で示したシステムファームウェアのコードタイプ選択状態の動的認識処理を行わずに、アダプタカードでドライバ優先情報を固定する場合に設定する項目である。有効／無効(９５−２)設定で有効を選択するとドライバ優先情報固定機能が有効となり、コードタイプ選択(９５−３)で選択しているコードタイプのドライバを固定的に使用することが可能となる。
【符号の説明】
【００８８】
１０：計算機システム
１１：マザーボード
１２：ＣＰＵ
１３：システムメモリ
１３ａ：システムファームウェア
１３ｂ：システムメモリに展開されたドライバ
１３ｃ：システムファームウェアのコードタイプ選択情報
１５-１：ＰＣＩスロット＃１
１６-１：アダプタカード＃１
１７-１：アダプタカード＃１の不揮発性メモリ
１８-１：アダプタカード＃１のファームウェア
１９-１：アダプタカード＃１に接続された外部記憶装置
２０：アダプタカード
２１：アダプタカードの不揮発性メモリに格納されている状態のドライバＡ
２２：アダプタカードの不揮発性メモリに格納されている状態のドライバＢ
２６：コードタイプ選択内容によりメモリに展開されるドライバの種類
３１：アダプタカードの搭載順の規則を示すカテゴリ名
６２０：システム装置のメモリ
６２１：動作中のドライバが作成、参照する管理テーブル
６３１：ドライバとアダプタファームウェアの間で設定、取得する情報
６３２：アダプタカードの不揮発性メモリ
６３３：５３１の情報を設定、取得するインタフェース
９１：ドライバ優先情報の固定設定機能の項目
９２：固定設定機能の項目のデフォルト状態
９３：固定設定機能の項目の設定可能範囲
【図１】
2011039802.tif 000003
【図２】
2011039802.tif 000004
【図３】
2011039802.tif 000005
【図４】
2011039802.tif 000006
【図５】
2011039802.tif 000007
【図６】
2011039802.tif 000008
【図７】
2011039802.tif 000009
【図８】
2011039802.tif 000010
【図９】
2011039802.tif 000011
【図１０】
2011039802.tif 000012