JP4052265B2 - 情報処理装置とデバイスドライバのロード方法並びにプログラム - Google Patents

情報処理装置とデバイスドライバのロード方法並びにプログラム Download PDF

Info

Publication number
JP4052265B2
JP4052265B2 JP2004062419A JP2004062419A JP4052265B2 JP 4052265 B2 JP4052265 B2 JP 4052265B2 JP 2004062419 A JP2004062419 A JP 2004062419A JP 2004062419 A JP2004062419 A JP 2004062419A JP 4052265 B2 JP4052265 B2 JP 4052265B2
Authority
JP
Japan
Prior art keywords
pci
virtual
driver
configuration space
pci device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004062419A
Other languages
English (en)
Other versions
JP2005250975A (ja
Inventor
健一 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2004062419A priority Critical patent/JP4052265B2/ja
Priority to US11/072,078 priority patent/US20050246478A1/en
Publication of JP2005250975A publication Critical patent/JP2005250975A/ja
Application granted granted Critical
Publication of JP4052265B2 publication Critical patent/JP4052265B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • G06F9/4413Plug-and-play [PnP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置に関し、特に、デバイスドライバのロード方法と装置並びにプログラムに関する。
PCI(Peripheral Component Interconnect)デバイスを実装したコンピュータシステムでは、該PCIデバイスを制御するプラグ・アンド・プレイ機能に対応したオペレーティングシステムが、システムBIOS(Basic Input/Output System)を介して、PCIデバイス側のPCIコンフィギュレーション空間を検索し、コンピュータシステムに実装されているPCIデバイスを知ることにより、該当するPCIデバイスに必要とされ対応するドライバ(「デバイスドライバ」、「I/Oドライバ」ともいう)をロードし、PCIデバイスを制御する。
一方、バスインタフェース等がPCI仕様と異なる非PCIデバイスでは、デバイスと、ドライバとを関連付ける一般的な手法は存在していない。よって、デバイスのシステムへの実装に先立ち、予めオペレーティングシステムを改造する等して、ドライバをオペレーティングシステムのカーネルへリンクしておくことが必要とされる。そして、オペレーティングシステムを改造できない場合には、非PCIデバイスを制御するドライバをオペレーティングシステムに組み込むことは、甚だしく困難である。
なお、複数の入出力装置を接続するための複数のアダプタと、これを制御する複数の入出力制御プログラム(デバイスドライバ)を有するコンピュータシステムにおいて、アダプタにアダプタ識別を設け、コンピュータシステムの初期化時に、CPUが識別を読込み、補助記憶装置のデバイスドライバのうち必要なデバイスドライバのみをリンクしてオペレーティングシステムを生成し主記憶にロードする構成が知られている(例えば特許文献1参照)。また、後述する本発明で用いられる仮想PCIデバイスとは、「仮想」の意味が異なるが、仮想資源オペレーティングシステム上で仮想計算機(VM)として走行するオペレーティングシステムのデバイスドライバと仮想資源マネージャの対応する実デバイス及び仮想デバイスとを結合する構成が知られている(例えば特許文献2参照)。
特開平8−63420号公報(第1図) 特開昭61−201341号公報(第1図)
上記した通り、PCIデバイスと相違して、デバイスとドライバとを関連付ける一般的な手法が存在しないデバイスに対しては、該デバイスをシステムに実装するにあたり、予めオペレーティングシステムを改造しドライバをオペレーティングシステムのカーネルへリンクしておくことが必要とされ、このため、オペレーティングシステムを改造できない場合には、非PCIデバイスを制御するドライバをオペレーティングシステムに組み込むことは困難である、という問題点を有している。
したがって、本発明は、上記問題点に鑑みて創案されたものであって、その目的は、非PCIデバイス等のデバイスを制御するドライバをコンピュータシステムへ簡易に組み込み可能とするシステム及び方法並びにコンピュータ・プログラムを提供することにある。
本明細書で開示される発明は、前記目的を達成するため、概略以下の構成とされる。
本発明の一つのアスペクト(側面)に係る情報処理装置は、所定のバスインタフェース仕様を有する少なくとも1つの第1の機器と、前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも1つの第2の機器とを実装し、前記第1の機器に設けられ前記第1の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、前記情報処理装置の記憶部内に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第2の機器に対して仮想的なコンフィギュレーション空間領域を備え、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第2の機器に関する仮想的な識別情報が記憶され、ブート時に、前記第1の機器に対して、前記第1の機器の識別情報を、前記第1の機器のコンフィギュレーション空間から取得し、前記第1の機器に対応するドライバをロードし、前記第2の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第2の機器に対応するドライバをロードする構成とされている。
本発明の他のアスペクト(側面)に係る方法は、所定のバスインタフェース仕様を有する少なくとも1つの第1の機器と、前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも1つの第2の機器と、を実装する情報処理装置のドライバの組込みにあたり、前記第1の機器に設けられ前記第1の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、前記情報処理装置の記憶部内に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第2の機器に対して仮想的なコンフィギュレーション空間領域を用意し、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第2の機器に関する仮想的な識別情報を記憶しておく工程と、ブート時に、前記第1の機器に対して、前記第1の機器の識別情報を、前記第1の機器のコンフィギュレーション空間から取得し、前記第1の機器に対応するドライバをロードし、前記第2の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第2の機器に対応するドライバをロードする工程と、
を含む。
本発明の他のアスペクト(側面)に係るコンピュータ・プログラムは、所定のバスインタフェース仕様を有する少なくとも1つの第1の機器と、前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも1つの第2の機器と、を実装するコンピュータに、前記第1の機器に設けられ前記第1の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、所定の記憶部に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第2の機器に対して仮想的なコンフィギュレーション空間領域を用意し、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第2の機器に関する仮想的な識別情報を格納する処理と、ブート時に、前記第1の機器に対して、前記第1の機器の識別情報を、前記第1の機器のコンフィギュレーション空間から取得し、前記第1の機器に対応するドライバをロードし、前記第2の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第2の機器に対応するドライバをロードする処理と、を実行させるプログラムよりなる。
本発明は、システムBIOSが非PCIデバイスを、PCIデバイスへ見せかけることにより、オペレーティングシステムが対応するドライバをコンピュータシステムに組み込む。
本発明の他のアスペクトに係るコンピュータシステムは、PCIデバイスと、非PCIデバイスとを実装するコンピュータシステムにおいて、前記非PCIデバイスに対応させた仮想的なPCIデバイスの所定の識別情報を少なくとも記憶した記憶領域を、システムBIOS側に用意しておき、オペレーティングシステムは、ブート時に、前記コンピュータシステムに実装されているPCIデバイスを探すために前記システムBIOSに問い合わせ、前記システムBIOSは、前記コンピュータシステムに実装されているPCIデバイスに対して、前記PCIデバイスの識別情報を前記オペレーティングシステムに返却し、前記非PCIデバイスに対して、前記仮想的なPCIデバイスの識別情報を前記オペレーティングシステムに返却し、前記オペレーティングシステムは、前記システムBIOSからの前記識別情報を受け、前記仮想的なPCIデバイスに対応するドライバをドライバライブラリから検索し、検索された前記ドライバを前記非PCIデバイスに対応するドライバとしてロードする構成とされている。
本発明において、前記システムBIOSが参照可能な媒体上に、仮想的なPCIデバイスのコンフィギュレーション空間のヘッダ領域が配設され、前記ヘッダ領域に、前記仮想的なPCIデバイスの所定の識別情報として、予め定めたベンダIDとデバイスIDとが格納される構成としてもよい。
本発明において、前記非PCIデバイスが割り込みを用いる場合には、前記仮想PCIデバイスのコンフィギュレーション空間のヘッダ領域の割り込みピンレジスタに、割り込み有りが設定される構成としてもよい。
本発明において、前記オペレーティングシステムは、前記仮想PCIデバイスが割り込みを実装しているか否かを前記システムBIOSに問い合わせ、前記システムBIOSは、非PCIデバイスが割り込みを用いる場合には、設定された割り込み有りを返却し、前記オペレーティングシステムは、前記仮想PCIデバイスが割り込みを実装していると判断して割り込みハンドラを登録する構成としてもよい。
本発明によれば、非PCIデバイスを制御するドライバを、PCIデバイスに対するプラグ・アンド・プレイ機能を用いてコンピュータシステムへ組み込むにあたり、システムBIOSが非PCIデバイスを、PCIデバイスへ見せかけることにより、オペレーティングシステムが対応するドライバをコンピュータシステムに容易に組み込むことができる
さらに、本発明によれば、非PCIデバイス用ドライバを通常のPCIデバイス用ドライバとして作成することにより、オペレーティングシステムを改造することなく、ドライバを組み込むことができる。
本発明についてさらに詳細に説述すべく、添付図面を参照してこれを説明する。
図1は、発明を実施するための最良の一実施形態の構成を示す図である。図1を参照すると、本実施形態に係るコンピュータシステム(100)において、オペレーティングシステム(3)は、PCIコンフィギュレーション空間を参照する際に、システムBIOS(13)に問い合わせ、システムBIOS(13)が値を返却する。オペレーティングシステム(3)をブートする前に、予めコンピュータシステム(100)に非PCIデバイス(12)に対応する仮想的なPCIデバイスのPCIコンフィギュレーション空間を実装しておく。具体的には、システムBIOS(13)から参照可能な媒体上に仮想的に、PCIコンフィギュレーション空間ヘッダ領域(131)を定義しておき、PCIコンフィギュレーション空間ヘッダ領域(131)に、非PCIデバイスに対応する仮想PCIデバイスとしてあらかじめ定めておいたベンダIDとデバイスID(132)を設定しておく(設定1)。
また、非PCIデバイス(12)が割り込みを用いる場合には、非PCIデバイス(12)に対応する仮想PCIデバイス(20)が割り込みを実装しているように見せるために仮想PCIデバイスのコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタ(133)に「割り込み有り」の情報を予め設定しておく(設定2)。
オペレーティングシステム(3)は、ブート時に、コンピュータシステムに実装されているPCIデバイスを探すために、PCIコンフィギュレーション空間ヘッダ領域を、システムBIOSに問い合わせる(図1の矢線Aで示す処理)。
システムBIOS(13)は、システムに実装されているPCIデバイスに対して、該デバイスのべンダIDとデバイスIDを返却する。
システムBIOS(13)は、非PCIデバイス(12)に対して、上記「設定1」で設定された仮想PCIデバイス(20)のベンダIDとデバイスID(132)を返却する(図1の矢線Bで示す処理)。システムBIOS(13)から渡されたIDにより、オペレーティングシステム(3)は、仮想PCIデバイス(20)用のドライバ(300)を検索し、対応するドライバ(非PCIドライバ300)を主記憶にロードする(図1の矢線CA、CBで示す処理)。
また、オペレーティングシステム(3)は、仮想PCIデバイス(20)が割り込みを実装しているか否かをシステムBIOS(13)に問い合わせる。システムBIOS(13)は、非PCIデバイス(12)が割り込みを用いる場合には、上記「設定2」で、仮想PCIデバイスのコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタ(133)に設定されている「割り込み有り」をオペレーティングシステム(3)に返却する。
これを受けて、オペレーティングシステム(3)は、仮想PCIデバイス(20)が割り込みを実装しているものと判断し、割り込みハンドラを登録する(図1の矢線Dで示す処理)。
以上の通り、本実施形態によれば、一般的なPCIデバイスのドライバをPCIデバイスのプラグ・アンド・プレイ機能を実装したオペレーティングシステムにロードする機構を用いて、非PCIデバイス(12)のドライバ(300)をオペレーティングシステム(3)へ組み込みことを可能としている。以下、具体的な実施例に即して、詳細に説明する。
図1は、本発明の一実施例の構成を示す図である。図1を参照すると、本発明の実施例をなすコンピュータシステム(100)は、メモリ(10)と、プロセッサ(11)と、非PCIデバイス(12)と、システムBIOS(13)とを搭載したマザーボード(1)と、PCIデバイス群(2)とがPCIバス(4)を介して接続されている。PCIデバイス群(2)には、SCSI(Small Computer System Interface)コントローラのような、n個のPCIデバイス(21,…,2n)が搭載されている。
それぞれのPCIデバイス(2)は、その内部に、それぞれ、PCIコンフィギュレーション空間(210,…,2n0)を有する。
図4は、図1に示したPCIコンフィギュレーション空間の構成を模式的に示す図である。PCIデバイスは、デバイス内にPCIコンフィギュレーション空間(40)を備え、PCIコンフィギュレーション空間(40)は、PCIデバイスの検知、制御に用いられる。
図4に示すように、PCIコンフィギュレーション空間(40)は、256バイトのアドレス空間であり、デバイスの種類に依存しない64バイトのヘッダ領域(41)と、192バイトのデバイス固有領域(42)と、から成る。ヘッダ領域(41)には、ベンダIDレジスタ(411)(サイズは2バイト)と、デバイスIDレジスタ(412)(サイズは2バイト)が設けられており、当該デバイスを製造するベンダと当該デバイスの種類を特定するために用いられる。また、ヘッダ領域(41)には、割り込みピンレジスタ(413)(サイズは1バイト)が設けられており、デバイスが使用する割り込み線を識別するために用いられる。
システムBIOS(13)のコード(命令コード等)は、メモリ(10)上に展開されて、システムの立ち上げを行うプロセッサ(11)がシステム起動時に実行する。システムBIOS(13)により、システムが初期化された後に、システムBIOS(13)は、オペレーティングシステム(3)をブートする。オペレーティングシステム(3)は、PCIデバイス(2)に対するプラグ・アンド・プレイ機能を具備している。
一般に、オペレーティングシステム(3)用のPCIデバイスを制御するドライバはどのベンダIDとデバイスIDを持つデバイスに対応しているかという情報を持つ。例えば、SCSIドライバ(301)は、SCSIコントローラ(21)のPCIコンフィギュレーション空間ヘッダ領域(210)内に記録されているベンダIDとデバイスIDを持つデバイスに対応しているという情報を有する。また、システムに対応しているPCIデバイスを制御するドライバは、予めオペレーティングシステム(3)内部のドライバライブラリ(30)に格納されている。
本実施例では、非PCIデバイス(12)を制御するドライバ(300)には、システムBIOS(13)が設定した仮想PCIデバイスのPCIコンフィギュレーション空間ヘッダ領域(131)のベンダID、デバイスIDを持つデバイスに対応しているという情報を持たせている。
また、本実施例では、オペレーティングシステム(3)において、あらかじめ非PCIデバイス(12)を制御するドライバ(300)を、通常のPCIデバイスを制御するドライバと同様に、ドライバライブラリ(30)に実装しておく。
図2は、図1に示した本発明の一実施例の構成において、PCIデバイスを制御するドライバをPCIデバイスのプラグ・アンド・プレイに対応したオペレーティングシステムに組み込む処理を説明するための図である。図5は、本発明の一実施例の処理手順を説明するためのフローチャートである。
図2及び図5のフローチャートを参照して、本実施例において、PCIデバイスを制御するドライバをPCIデバイスのプラグ・アンド・プレイに対応したオペレーティングシステムに組み込む処理を以下に説明する。
PCIデバイスを制御するドライバをPCIデバイスのプラグ・アンド・プレイに対応したオペレーティングシステム(3)への組み込みは、本実施例においても、通常と同様、以下のような手続きで行われる。
まず、オペレーティングシステム(3)は、すべてのバス番号、デバイス番号、機能番号に対するPCIデバイス(22,23,…,2n)のPCIコンフィギュレーション空間ヘッダ領域(220,230,…,2n0)を参照して、PCIデバイスを検索する(図5のステップ5A)。ここで、PCIデバイスが存在しないバス番号、デバイス番号、機能番号に対するPCIコンフィギュレーション空間ヘッダ領域(220,230,…,2n0)のベンダIDとデバイスIDは、PCIの仕様により、それぞれ、"0xFFFF"と、"0xFFFF"とが返却される。したがって、PCIデバイスを見つけるとは、参照したPCIコンフィギュレーション空間ヘッダ領域のベンダIDとデバイスIDがともに、"0xFFFF"ではなかった場合を意味する。
なお、本実施例のコンピュータシステム(100)では、オペレーティングシステム(3)がPCIコンフィギュレーション空間(220,230,…,2n0)を参照する際、PCIデバイスに実装されているPCIコンフィギュレーション空間を直接参照せずに、システムBIOS(13)に問い合わせて(図2の矢線Aの処理)、システムBIOS(13)が、PCIデバイスのPCIコンフィギュレーション空間を参照し(図2の矢線BAの処理)、値をオペレーティングシステム(3)に返却する(図2の矢線Bの処理)。
そして、PCIデバイスが見つかると(図5のステップ5B)、オペレーティングシステム(3)は、見つかったPCIデバイス(22,23,…,2n)のベンダIDとデバイスIDを持つPCIデバイスに対応したドライバを、オペレーティングシステム(3)内部のドライバライブラリ(30)から検索する(図5のステップ5C)。ドライバライブラリ(30)の検索は、具体的には、以下のようにして行われる。
PCIデバイスのドライバは、オペレーティングシステム(3)からPCIデバイスのベンダIDとデバイスIDを受け取って、そのベンダIDとデバイスIDを持つデバイスに対応しているか否かをオペレーティングシステム(3)に応答する機構を具備している。オペレーティングシステム(3)では、様々なPCIデバイスに対するドライバ(302,303,…,30n)がドライバライブラリ(30)に格納されているが、オペレーティングシステム(3)は、システムBIOS(13)によって検索されたPCIデバイスのベンダIDとデバイスIDを、ドライバライブラリ(30)内のすべてのPCIデバイスに対するドライバ(302,303,…,30n)に渡して、ドライバ(302,303,…,30n)から、見つかったデバイスのデバイスIDとベンダIDをもつデバイスに対応しているかどうかの応答を受ける。これにより、オペレーティングシステム(3)は、システムBIOS(13)によって検索されたPCIデバイスを制御するドライバが、どのドライバであるを認識する(図5のステップ5C)。
オペレーティングシステム(3)は、PCIデバイスを制御するドライバが見つかった場合(図5のステップ5D)、当該ドライバをロードする。
オペレーティングシステム(3)は、上記したドライバのロード処理を、見つかったすべてのPCIデバイス(22,23,…,2n)に対して実行する。この結果、オペレーティングシステム(3)はシステムに実装されているすべてのPCIデバイスのドライバをロードすることができる(図2の矢線CC,CD,CEの処理)(図5のステップ5E)。
またPCIデバイスを制御するドライバ(302,303,…,30n)が割り込みを使う場合、ドライバは、オペレーティングシステム(3)へ割り込みハンドラ(31)の登録要求をする。
オペレーティングシステム(3)は、割り込みハンドラの登録要求を受けると、当該PCIデバイスのPCIコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタを見て、PCIデバイスが割り込みを実装しているか否かを調べる(図5のステップ5F)。
ここで、PCIの仕様により、PCIコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタの値が、「0」ならば割り込みはPCIデバイスで使用されないという意味であり、値が「1」、「2」、「3」、「4」の場合、当該PCIデバイスが割り込みを用いることを表している。
PCIデバイスが割り込みを実装していることが分かると、オペレーティングシステム(3)は、PCIデバイスへ割り込みベクタを割り当て、その割り込みベクタに対して割り込みハンドラ(31)を登録する(図2の矢線Dの処理)(図5のステップ5G)。
次に、図3は、図1に示した本実施例において、非PCIデバイスを制御するドライバをPCIデバイスのプラグ・アンド・プレイに対応したオペレーティングシステム(3)に組み込む処理を説明するための図である。図6は、その処理手順を示すフローチャートである。図3と図5、図6を参照し、本実施例における、非PCIデバイスを制御するドライバをPCIデバイスのプラグ・アンド・プレイに対応したオペレーティングシステム(3)への組み込み処理を以下に説明する。
PCIデバイスのプラグ・アンド・プレイに対応したオペレーティングシステム(3)は、図2及び図5を参照して説明した一般的なPCIデバイス組み込み手順に従い、PCIデバイス検索のためにPCIデバイスのコンフィギュレーション空間の参照をすべてのバス番号、デバイス番号、機能番号に対して行う(図5のステップ5A)。
本実施例のコンピュータシステムでは、オペレーティングシステム(3)がPCIコンフィギュレーション空間を参照する際、PCIデバイスに実装されているPCIコンフィギュレーション空間を直接参照するのではなく、システムBIOS(13)に問い合わせて(図3の矢線Aの処理)、システムBIOS(13)が、PCIデバイスのPCIコンフィギュレーション空間を参照し値を返却する(図3の矢線Bの処理)。
次に、図5のステップAについて、図6を参照して詳しく説明する。PCIデバイスはバス番号、デバイス番号、機能番号で一意的に特定できる。オペレーティングシステム(3)は、これらの番号を用いて、システムに搭載されているPCIデバイスを検索する。
本実施例では、システムBIOS(13)は、システムの初期化中に、実際に搭載されているPCIデバイスのどのバス番号、デバイス番号、機能番号にも一致しないバス番号、デバイス番号、機能番号に対応するPCIコンフィギュレーション空間ヘッダ領域を、メモリ(10)上に実装し、該メモリ領域に、あらかじめ定めておいたベンダID、デバイスID、割り込みピンの値を設定しておく。この設定により、実際には存在しないPCIデバイス、つまり仮想PCIデバイスのPCIコンフィギュレーション空間ヘッダ領域を設定したことになる。
システムBIOS(13)は、オペレーティングシステム(3)が仮想PCIデバイスのバス番号、デバイス番号、機能番号のPCIコンフィギュレーション空間ヘッダ領域を参照しようとしているか否かを判断し(図6のステップ6A)、そうである場合(図6のステップ6AのYES分岐)、システムBIOS(13)が設定した仮想PCIデバイスのPCIコンフィギュレーション空間ヘッダ領域(131)を返却する(図6のステップ6B)。
オペレーティングシステム(3)が仮想PCIデバイスのバス番号、デバイス番号、機能番号のPCIコンフィギュレーション空間ヘッダ領域を参照しようとしていない場合には(図6のステップ6AのNO分岐)、通常のPCIデバイスのPCIコンフィギュレーション空間ヘッダ領域を返却する(図6のステップ6C)。
オペレーティングシステム(3)は、ベンダIDとデバイスIDを見て、PCIデバイスが見つかったか否か判断する(図6のステップ6D)。
PCIデバイスが見つかった場合(図6のステップ6DのYES分岐)、オペレーティングシステム(3)は、そのバス番号、デバイス番号、機能番号で見つかったPCIデバイスを登録する(図6のステップ6E)。このとき、オペレーティングシステム(3)は、仮想PCIデバイスのバス番号、デバイス番号、機能番号には仮想PCIデバイス(20)が実装されていると判断する(図3の矢線BBの処理)。
次に、オペレーティングシステム(3)は、検索すべき最後のバス番号、デバイス番号、機能番号であるか否かを判断し(図6のステップ6F)、そうであるならば(図6のステップ6FのYES分岐)、デバイスの検索を終了する。一方、検索が終了していない場合(図6のステップ6FのNO分岐)、図6のステップ6Aに戻り、検索を続ける。
次に、オペレーティングシステム(3)は、PCIデバイスの検索(図5のステップ5A)が終わると、PCIデバイスが見つかったか否かを判断する(図5のステップ5B)。見つかった場合(図5のステップ5BのYES分岐)、一般的なPCIデバイス用ドライバ検索手順に従い、オペレーティングシステム(3)は、見つかったPCIデバイスのベンダIDとデバイスIDを持つPCIデバイスに対応したオペレーティングシステム内部のドライバライブラリ(30)を検索する(図5のステップ5C)。このとき、オペレーティングシステム(3)は、仮想PCIデバイス(20)が実装されているものと判断しているので、仮想PCIデバイス(20)のベンダIDとデバイスIDを持つPCIデバイスに対応したドライバを検索する。
ここで、非PCIデバイス(12)を制御するドライバ(300)は、仮想PCIデバイス(20)のベンダIDとデバイスIDを持つPCIデバイスを制御するPCIデバイス用のドライバ(非PCIドライバ300)として、ドライバライブラリ(30)に実装されている。このため、このドライバは、オペレーティングシステム(3)から仮想PCIデバイス(20)のベンダIDとデバイスIDを受け取ったときに、仮想PCIデバイス(20)に対応していると、オペレーティングシステム(3)に応答する。
よって、オペレーティングシステム(3)は、仮想PCIデバイス(20)を制御するドライバが、非PCIデバイスを制御するドライバ(300)であるものと判断し(図5のステップ5DのYES分岐)、ロードする(図3の矢線CA、CBの処理)(図5のステップ5E)。
また、非PCIデバイス(12)を制御するドライバ(300)が割り込みを使う場合、一般的なPCIデバイス用ドライバの割り込みハンドラ登録手続きに従い、ドライバはオペレーティングシステム(3)へ割り込みハンドラ(31)の登録要求をする。オペレーティングシステム(3)は、登録要求を受けると、その仮想PCIデバイス(20)のPCIコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタを見て、PCIデバイスが割り込みを実装しているか否かを調べる(図5のステップ5F)。
あらかじめシステムBIOS(13)により、仮想PCIデバイス(20)のPCIコンフィギュレーション空間の割り込みピンレジスタ(133)には、「0」でない適切な値が設定されている。オペレーティングシステム(3)は、PCIコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタ参照のために、システムBIOS(13)に問い合わせて、システムBIOS(13)は、オペレーティングシステム(3)に仮想PCIデバイス(20)の割り込みピンレジスタ(133)の値を返却する。
システムBIOS(13)から割り込みピンレジスタ(133)の値を受け取ったオペレーティングシステム(3)は、仮想PCIデバイス(20)が割り込みを実装しているものと判断し、割り込みハンドラを登録する。
仮想PCIデバイス(20)が割り込みを実装していることが分かると、オペレーティングシステム(3)は、仮想PCIデバイス(20)へ割り込みベクタを割り当て、その割り込みベクタに対して、割り込みハンドラ(31)を登録する(図3の矢線Dの処理)(図5のステップ5G)。
以上の手続きにより、非PCIデバイスを制御するドライバ(300)を、オペレーティングシステム(3)に組み込むことができる。
本実施例の作用効果について以下に説明する。
本実施例によれば、非PCIデバイスを持つコンピュータシステムにおいて、非PCIデバイスを制御するドライバを、PCIデバイスのプラグ・アンド・プレイに対応したオペレーティングシステムに組み込む場合、非PCIデバイス用ドライバを通常のPCIデバイス用ドライバとして作成することにより、オペレーティングシステムを改造することなく、ドライバを組み込むことができる。
以上本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみ限定されるものでなく、本発明の範囲で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
本発明の一実施例の構成を示す図である。 本発明の一実施例におけるPCIデバイスのドライバのロード手順を説明するための図である。 本発明の一実施例における非PCIデバイスのドライバのロード手順を説明するための図である。 本発明の一実施例におけるPCIコンフィギュレーション空間を説明するための図である。 本発明の一実施例におけるPCIデバイスのドライバのロード手順を説明するためのフローチャートである。 本発明の一実施例における非PCIデバイスのドライバのロード手順(図5のステップ5Aに対応)を説明するためのフローチャートである。
符号の説明
1 マザーボード
2 PCIデバイス群
3 オペレーティングシステム
4 PCIバス
10 メモリ
11 プロセッサ
12 非PCIデバイス
13 システムBIOS
20 仮想PCIデバイス
21、22、…2n PCIデバイス
30 ドライバライブラリ
31 割り込みハンドラ
40 PCIコンフィギュレーション空間
41 ヘッダ領域
42 デバイス固有領域
100 コンピュータシステム
131 PCIコンフィギュレーション空間ヘッダ領域
132 ベクタIDとデバイスID
133 割り込みピンレジスタ
210、…2n0 PCIコンフィギュレーション空間
300 非PCIデバイスのドライバ
301 SCSIドライバ
302、303、30n ドライバ
411 ベンダIDレジスタ
412 デバイスIDレジスタ
413 割り込みピンレジスタ

Claims (11)

  1. 所定のバスインタフェース仕様を有する少なくとも1つの第1の機器と、
    前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも1つの第2の機器と、
    を実装する情報処理装置が、
    前記第1の機器に設けられ前記第1の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、前記情報処理装置の記憶部内に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第2の機器に対して仮想的なコンフィギュレーション空間領域を備え、
    前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第2の機器に関する仮想的な識別情報が記憶され、
    ブート時に、前記第1の機器に対して、前記第1の機器の識別情報を、前記第1の機器のコンフィギュレーション空間から取得し、前記第1の機器に対応するドライバをロードし、
    前記第2の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第2の機器に対応するドライバをロードする構成とされてなる、ことを特徴とする情報処理装置。
  2. 所定のバスインタフェース仕様を有する少なくとも1つの第1の機器と、
    前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも1つの第2の機器と、
    を実装する情報処理装置のドライバのロード方法であって、
    前記第1の機器に設けられ前記第1の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、前記情報処理装置の記憶部内に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第2の機器に対して仮想的なコンフィギュレーション空間領域を用意し、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第2の機器に関する仮想的な識別情報を記憶しておく工程と、
    ブート時に、前記第1の機器に対して、前記第1の機器の識別情報を、前記第1の機器のコンフィギュレーション空間から取得し、前記第1の機器に対応するドライバをロードし、
    前記第2の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第2の機器に対応するドライバをロードする工程と、
    を含む、ことを特徴とする情報処理装置のドライバのロード方法。
  3. 所定のバスインタフェース仕様を有する少なくとも1つの第1の機器と、
    前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも1つの第2の機器と、
    を実装するコンピュータに、
    前記第1の機器に設けられ前記第1の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、所定の記憶部に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第2の機器に対して仮想的なコンフィギュレーション空間領域を用意し、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第2の機器に関する仮想的な識別情報を格納する処理と、
    ブート時に、前記第1の機器に対して、前記第1の機器の識別情報を、前記第1の機器のコンフィギュレーション空間から取得し、前記第1の機器に対応するドライバをロードし、
    前記第2の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第2の機器に対応するドライバをロードする処理と、
    を実行させるプログラム。
  4. PCI(Peripheral Component Interface)デバイスと、非PCIデバイスとを実装するコンピュータシステムにおいて、
    前記非PCIデバイスに対応させた仮想的なPCIデバイスの所定の識別情報を少なくとも記憶した記憶領域を、システムBIOS(Basic Input/Output System)側に用意しておき、
    オペレーティングシステムは、ブート時に、前記コンピュータシステムに実装されているPCIデバイスを探すために前記システムBIOSに問い合わせ、
    前記システムBIOSは、前記コンピュータシステムに実装されているPCIデバイスに対して、前記PCIデバイスの識別情報を前記オペレーティングシステムに返却し、前記非PCIデバイスに対して、前記仮想的なPCIデバイスの識別情報を前記オペレーティングシステムに返却し、
    前記オペレーティングシステムは、前記システムBIOSからの前記識別情報を受け、前記仮想的なPCIデバイスに対応するドライバをドライバライブラリから検索し、検索された前記ドライバを前記非PCIデバイスに対応するドライバとしてロードする、ことを特徴とするコンピュータシステム。
  5. 前記システムBIOSが参照可能な媒体上に、仮想的なPCIデバイスのコンフィギュレーション空間のヘッダ領域が配設され、前記ヘッダ領域に、前記仮想的なPCIデバイスの所定の識別情報として、予め定めたベンダIDとデバイスIDとが格納される、ことを特徴とする請求項4記載のコンピュータシステム。
  6. 前記非PCIデバイスが割り込みを用いる場合には、前記仮想PCIデバイスのコンフィギュレーション空間のヘッダ領域に設けられた割り込みピンレジスタに、割り込み有りの情報が設定される、ことを特徴とする請求項5記載のコンピュータシステム。
  7. 前記オペレーティングシステムは、前記仮想PCIデバイスが割り込みを実装しているか否かを前記システムBIOSに問い合わせ、前記システムBIOSは、非PCIデバイスが割り込みを用いる場合には、設定された割り込み有りを返却し、
    前記オペレーティングシステムは、前記仮想PCIデバイスが割り込みを実装していると判断して割り込みハンドラを登録する、ことを特徴とする請求項6記載のコンピュータシステム。
  8. PCI(Peripheral Component Interface)デバイスと、非PCIデバイスとを実装するコンピュータシステムにおける前記非PCIデバイスのドライバのロード制御方法であって、
    前記非PCIデバイスに対応させた仮想的なPCIデバイスの所定の識別情報を少なくとも記憶した記憶領域を、システムBIOS(Basic Input/Output System)側に用意しておく工程と、
    オペレーティングシステムは、ブート時に、前記コンピュータシステムに実装されているPCIデバイスを探すために前記システムBIOSに問い合わせる工程と、
    前記システムBIOSは、前記コンピュータシステムに実装されているPCIデバイスに対して、前記PCIデバイスの識別情報を前記オペレーティングシステムに返却し、前記非PCIデバイスに対して、前記仮想的なPCIデバイスの識別情報を前記オペレーティングシステムに返却する工程と、
    前記オペレーティングシステムは、前記システムBIOSからの前記識別情報を受け、前記仮想的なPCIデバイスに対応するドライバをドライバライブラリから検索し、検索された前記ドライバを前記非PCIデバイスに対応するドライバとしてロードする工程と、
    を含む、ことを特徴とするドライバのロード制御方法。
  9. 前記システムBIOSが参照可能な媒体上に、仮想的なPCIデバイスのコンフィギュレーション空間のヘッダ領域が配設され、
    前記ヘッダ領域に、前記仮想的なPCIデバイスの所定の識別情報として、予め定めたベンダIDとデバイスIDとを格納しておく工程を含む、ことを特徴とする請求項8記載のドライバのロード制御方法。
  10. 前記非PCIデバイスが割り込みを用いる場合には、前記仮想PCIデバイスのコンフィギュレーション空間のヘッダ領域に設けられた割り込みピンレジスタに割り込み有りの情報を設定する工程を含む、ことを特徴とする請求項9記載のドライバのロード制御方法。
  11. 前記ブート時に、前記オペレーティングシステムが、仮想PCIデバイスが割り込みを実装しているか否かを、前記システムBIOSに問い合わせる工程と、
    前記システムBIOSは、非PCIデバイスが割り込みを用いる場合に、割り込み有りを返却する工程と、
    前記ブート時に、前記オペレーティングシステムは、前記仮想PCIデバイスが割り込みを実装していると判断して割り込みハンドラを登録する工程と、
    を含む、ことを特徴とする請求項10記載のドライバのロード制御方法。
JP2004062419A 2004-03-05 2004-03-05 情報処理装置とデバイスドライバのロード方法並びにプログラム Expired - Fee Related JP4052265B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004062419A JP4052265B2 (ja) 2004-03-05 2004-03-05 情報処理装置とデバイスドライバのロード方法並びにプログラム
US11/072,078 US20050246478A1 (en) 2004-03-05 2005-03-04 Information processing apparatus and a method and a program of loading a device driver

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004062419A JP4052265B2 (ja) 2004-03-05 2004-03-05 情報処理装置とデバイスドライバのロード方法並びにプログラム

Publications (2)

Publication Number Publication Date
JP2005250975A JP2005250975A (ja) 2005-09-15
JP4052265B2 true JP4052265B2 (ja) 2008-02-27

Family

ID=35031386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004062419A Expired - Fee Related JP4052265B2 (ja) 2004-03-05 2004-03-05 情報処理装置とデバイスドライバのロード方法並びにプログラム

Country Status (2)

Country Link
US (1) US20050246478A1 (ja)
JP (1) JP4052265B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060236016A1 (en) * 2005-04-19 2006-10-19 Tetrick R S Method, system, and apparatus to support device configuration
US7945721B1 (en) * 2006-08-11 2011-05-17 Oracle America, Inc. Flexible control and/or status register configuration
US7752376B1 (en) * 2006-08-11 2010-07-06 Oracle America, Inc. Flexible configuration space
JP5119686B2 (ja) * 2007-03-06 2013-01-16 日本電気株式会社 情報処理装置および設定方法
US8625615B2 (en) 2008-05-16 2014-01-07 Nec Corporation PCI express switch, PCI express system, and network control method
US8458731B2 (en) * 2008-07-08 2013-06-04 Dell Products L.P. Methods, systems and media for installing peripheral software drivers
JP5180729B2 (ja) * 2008-08-05 2013-04-10 株式会社日立製作所 計算機システム及びバス割当方法
JP4410294B1 (ja) 2008-12-25 2010-02-03 株式会社東芝 情報処理装置およびエミュレーション方法
JP5316078B2 (ja) * 2009-02-25 2013-10-16 株式会社リコー 通信機器、該通信機器の制御方法およびそのプログラムならびにシステム
JP5365847B2 (ja) 2009-03-05 2013-12-11 日本電気株式会社 仮想化装置における物理デバイスのコンフィグレーション処理方法及びコンピュータシステム
US8762698B2 (en) * 2009-12-14 2014-06-24 Intel Corporation Virtual bus device using management engine
US9547499B2 (en) 2011-12-09 2017-01-17 Microsoft Technology Licensing, Llc Device configuration with cached pre-assembled driver state
US9195580B2 (en) * 2013-02-21 2015-11-24 Dell Products, Lp Systems and methods for user configuration of device names
JP6311164B2 (ja) * 2013-12-23 2018-04-18 インテル・コーポレーション 統合コンポーネント相互接続
CN117453151B (zh) * 2023-12-25 2024-04-05 长沙金维信息技术有限公司 Nor-flash驱动开发方法、装置与计算机设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751975A (en) * 1995-12-28 1998-05-12 Intel Corporation Method and apparatus for interfacing a device compliant to a first bus protocol to an external bus having a second bus protocol and for providing virtual functions through a multi-function intelligent bridge
US5948076A (en) * 1997-12-31 1999-09-07 Adaptec, Inc. Method and system for changing peripheral component interconnect configuration registers
US6141703A (en) * 1998-07-21 2000-10-31 Hewlett-Packard Company Interrupt sharing system assigning each interrupt request signal to a select one of system interrupt signals based on characteristic data of each peripheral device
US6629157B1 (en) * 2000-01-04 2003-09-30 National Semiconductor Corporation System and method for virtualizing the configuration space of PCI devices in a processing system
US20030097503A1 (en) * 2001-11-19 2003-05-22 Huckins Jeffrey L. PCI compatible bus model for non-PCI compatible bus architectures
US7406549B2 (en) * 2003-08-01 2008-07-29 Intel Corporation Support for non-standard device containing operating system data

Also Published As

Publication number Publication date
US20050246478A1 (en) 2005-11-03
JP2005250975A (ja) 2005-09-15

Similar Documents

Publication Publication Date Title
US20050246478A1 (en) Information processing apparatus and a method and a program of loading a device driver
US6725178B2 (en) Use of hidden partitions in a storage device for storing BIOS extension files
US5854905A (en) Extensible bios for boot support of devices on multiple hierarchical buses
US7134007B2 (en) Method for sharing firmware across heterogeneous processor architectures
JP3593241B2 (ja) 計算機の再起動方法
JP3954088B2 (ja) 論理分割された(lpar)計算機でシステム・ファームウェア更新を安全に実行する機構
US8352721B1 (en) Initiating an operating system boot from firmware
US9098321B2 (en) Method and computer for controlling virtual machine
JP5307196B2 (ja) シリコンに一体化されたコードのシステムへの提供
US20080010446A1 (en) Portable apparatus supporting multiple operating systems and supporting method therefor
US20070061818A1 (en) Detection of devices during operating system setup
US6934956B1 (en) Method and apparatus for installing an operating system
US20080228971A1 (en) Device modeling in a multi-core environment
JPH06324849A (ja) オペレーティング・システム環境の起動方法およびシステム
US7711941B2 (en) Method and apparatus for booting independent operating systems in a multi-processor core integrated circuit
US20150074665A1 (en) Information processing apparatus, control method, and computer-readable recording medium having stored therein control program
US7886095B2 (en) I/O space request suppressing method for PCI device
JP2009252194A (ja) データ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラム
US7484083B1 (en) Method, apparatus, and computer-readable medium for utilizing BIOS boot specification compliant devices within an extensible firmware interface environment
US20180059982A1 (en) Data Storage Systems and Methods Thereof to Access Raid Volumes in Pre-Boot Environments
US6725294B1 (en) Installation and access of a device handler for a peripheral device in a computer
US7640421B1 (en) Method and system for determining context switch state
KR20220027965A (ko) 펌웨어 롤백 방지
US20120005464A1 (en) Start up processing method, information processing apparatus, and computer-readable storage medium storing program
US8745364B2 (en) Method and apparatus for enabling non-volatile content filtering

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071126

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101214

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101214

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111214

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111214

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121214

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121214

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131214

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees