JP2004070952A - システム記述補助テーブルを検索するマルチプラットフォーム用ファームウェア - Google Patents

システム記述補助テーブルを検索するマルチプラットフォーム用ファームウェア Download PDF

Info

Publication number
JP2004070952A
JP2004070952A JP2003279682A JP2003279682A JP2004070952A JP 2004070952 A JP2004070952 A JP 2004070952A JP 2003279682 A JP2003279682 A JP 2003279682A JP 2003279682 A JP2003279682 A JP 2003279682A JP 2004070952 A JP2004070952 A JP 2004070952A
Authority
JP
Japan
Prior art keywords
firmware
entry
information
auxiliary
firmware interface
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.)
Withdrawn
Application number
JP2003279682A
Other languages
English (en)
Inventor
Shiraz A Qureshi
シャイラツ・エー・クレシ
Chris Denamur
クリス・デナマー
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2004070952A publication Critical patent/JP2004070952A/ja
Withdrawn 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

Abstract

【課題】IA−64命令セットプロセッサ用のACPIファームウェアを提供すること。
【解決手段】IA−64命令セットのファームウェア・インタフェース・テーブル(FIT)は、SSDTデータを用いたハードウェア・コンポーネント名前空間を格納することに使用される。SSDTデータは、システム内のコンポーネントを記述する。ブートアップ時に、すべてのハードウェア・コンポーネントが分かる。システムファームウェアにおけるACPIサブシステムは、データ設定を消費し、FITからSSDTをロードし、アクティブシステムコンポーネントのために名前空間を作成する。SSDTエントリを指し示す一つのFITタイプがあり、サブタイプは、FITバージョンフィールドを使用して指し示される。
【選択図】図1

Description

 本発明は、IA−64命令セットプロセッサ用のACPIファームウェアに関する。
 本発明は同時に出願された、Ali Qureshi他に対する、「System And Method For Using A Firmware Interface Table To Dymamica11y Load An ACPI SSDT」という表題の米国特許出願第10/212,721号に関連する。
 Advanced Configuration and Power Interface(ACPI)は、ハードウェアのステータス情報を、ラップトップ、デスクトップ、サーバーなどのコンピュータのオペレーティングシステムが利用できるようにするための仕様である。ACPIについては、Compaq Computer Corporation、Intel Corporation、Microsoft Corporation、Phoenix Technologies Ltd.、Toshiba Corporationが共同で策定した500ページの「Advanced Configuration and Power Interface Specification」,Revision 2.Oa, March 31, 2002にさらに詳細に記述されている。ACPI仕様は、オペレーティングシステム(OS)指向の堅牢なマザーボードデバイスの構成とデバイスおよびシステム全体の電源管理を可能にするための業界共通のインタフェースを確立するために開発された。ACPIは、オペレーティングシステム指向の構成と電源管理(OSPM)の重要な要素である。
 ACPIは、Microsoft(商標) Corporationから提供されるWindows(商標)、さまざまな製造元からオープンソースとして利用できるLinux、Hewlett-Packard Companyから提供されるHP/UXなどの様々なオペレーティングシステムを実行するパーソナルコンピュータ(PC)で使用される。ACPIにより、ハードウェアリソースを取り扱うことも可能になる。たとえば、ACPIは、コンピュータシステムの周辺機器の電源をオンおよびオフにすることができるようにし、それにより電源管理を改善することで、電源管理を支援する。また、ACPIは、外部機器によりコンピュータシステムをオンにしたりオフにしたりすることができるようにする。たとえば、マウスに触れたり、キーを押すことでACPIを使用してコンピュータシステムのスリープ状態を解除することができる。
 従来、ACPIは様々な理由で使用するのが困難であった。第1に、ACPIが記述される言語は、どのコンピュータシステムのプラットフォームにも固有のアセンブリ言語ではない。その代わりACPIは、独自のソース言語と機械語、つまり、それぞれACPIソース言語(ASL)とACPI機械語(AML)で記述されている。ASLはこのように使用方法が非常に特殊なために、ASLをプログラムできる者は比較的少数である。さらに、ASLは、用途が限定されているため、コンストラクト(construct)が比較的少ない。そのうえ、ACPIコードは、従来から融通がきかない構造を持つ。その結果、ACPIコードを他のプラットフォームや、同一のプラットフォームの別の構成にさえ移行するのが困難である。そのため、新規に設計されたプラットフォームで動作するようにするには、新規のASLコードを書くことが必要になる。ASLプログラマの数が限られていることで、新しいコードを書くことは、いよいよ困難で費用がかかることになる。
 ACPIは、静的なテーブルと、インタープリタにより実行可能なテーブルの両方からなる。ブートアップ時、システムファームウェア(典型的にはBIOS、つまり基本入出力システム)は静的テーブルを作成し、オペレーティングシステムがそのテーブルを使用する。インタープリタ実行可能テーブルはAMLで作成され、コンパイルされてからシステムファームウェアにマージされる。オペレーティングシステムはAMLをインタープリタ実行可能テーブルから読み取り、構築されたインタフェースを、ACPIインタプリタを使用して実行する。このようにして、オペレーティングシステムはハードウェアリソースを取り扱う。インタープリタ実行可能テーブルはシステムファームウェアにマージされるので、この従来の方法は、柔軟性と拡張性に欠け、プログラムし直してさまざまなシステム構成に対応するのに相当な時間が必要になる。
 たとえば、従来から、ASLの開発者はACPIコードを書くことでプラットフォームやその派生プラットフォームの特定の構成を指定している。しかし残念ながら、ハードウェアがわずかでも変更されると、コードの設計を修正しなければならない。その場合、新規のAMLコードを書いて、新規のテーブルをシステムファームウェアにマージしなければならない。したがって、従来の設計は移植性や再利用性がなかった。
 そのうえ、ACPIは、従来からプラットフォームに派生がある場合や、相互に排他的なACPI要件を持つ複数のACPI対応のOSシステムをサポートする場合には、異なるシステムファームウェアROM(読み取り専用メモリ)やBIOSを使用する必要があった。同一のシステムが複数のオペレーティングシステムをサポートする場合にも、異なるシステムファームウェアROMを使用しなければならなかった。たとえば、パーソナルコンピュータの現在の技術では、IA−32命令セットを使用している。ACPIは当初Microsoft(商標)ファミリーのオペレーティングシステム、特にIA−32命令セットを持つシステムで使用されていた。
 ACPIは、さまざまなオペレーティングシステムで標準のインタフェースとして受け入れられてきた。新しい命令セットアーキテクチャであるIA−64が開発中であるが、従来のACPIコードや方法ではその利点を十分に利用することはできない。Intel(商標) Corporationから提供される新しいItanium(商標)プロセッサファミリーは、IA−64命令セットを使用する。現在の手法を使用する場合、このファミリーのプロセッサを元にした新規の各プラットフォームやシステム構成のためのASLは、独自に書き直す必要がある。
 ACPI名前空間は、名前の付けられたオブジェクトを含むOS制御メモリ内の階層ツリー構造である。これらのオブジェクトはデータオブジェクト、制御方法オブジェクト、バス/デバイスパッケージオブジェクトなどである。OSはACPI BIOS内に存在するACPIテーブルの定義ブロックをロードおよび/またはロード解除することで実行時に名前空間の内容を動的に変更する。ACPI名前空間内のすべての情報は、差分定義ブロックを含む差分システム記述子テーブル(DSDT)と、1つ以上のその他の定義ブロックから得られる。現在の技術では、OEM(相手先商標製品製造業者)は、基本システムについての実装と構成の情報を提供するDSDTをACPI準拠OSに対して提供しなければならない。OSは常にシステムブート時にDSDT情報をACPI名前空間内に挿入し、それを除去することは決してない。
 別のACPIコンストラクトは、システム記述補助テーブル(SSDT)である。SSDTは、DSDTの延長部分である。複数のSSDTをプラットフォーム記述の一部として使用することができる。DSDTがACPI名前空間にロードされた後、一意のOEMテーブルIDを持つ各システム記述補助テーブルがロードされる。これにより、OEMは基本的な支援を1つのテーブルで提供し、他のテーブルでより小規模のシステムオプションを追加することができる。追加されたテーブルは、データを追加することだけが可能で、それ以前のテーブルのデータを上書きすることはできない。
 システム抽象層(SAL)によって定義されるACPIアーキテクチャ内のコンストラクトはファームウェア・インタフェース・テーブル(FIT)である。これはIA−64命令セットコンストラクトである。FITには保護されたブートブロック外にあるファームウェアコンポーネントの開始アドレスとサイズが含まれる。FITエントリの仕様の適切な概要は、http://WWW.inte1.com/design/itanium/down1oads/24535905.pdfから取得可能な“ITANIUM(商標) Processor Family System Abstraction Layer Specification”, document No. 245359-005, (Intel July 2002)に記述されている。
米国特許出願第10/212,721号
 本発明の目的は、IA−64命令セットプロセッサ用のACPIファームウェアを提供することである。
 IA−64命令セットのファームウェア・インタフェース・テーブル(FIT)は、差分システム記述子テーブル(DSDT)データとシステム記述補助テーブル(SSDT)データを使用してハードウェアコンポーネント名前空間の内容を作成する(populate)ことであり、DSDTデータとSSDTデータはシステム内のコンポーネントを記述する。ブートアップ時にすべてのハードウェアコンポーネントが検出される。システムファームウェア内のACPI(Advanced Condiguration and Power Interface)サブシステムは、データ設定を使用してFITからSSDTをロードしてアクティブなシステムコンポーネントのための名前空間を作成する。
 ファームウェア・インタフェース・テーブル(FIT)には、アドレスフィールド、サイズフィールド、タイプフィールドを有するエントリが含まれる。FITエントリのアドレスフィールドは、そのエントリのタイプについてのデータに対応する記憶域を指す。FIT内の少なくとも1つのFITエントリは、SSDTを識別する。SSDTは、一意のFITタイプとサブタイプにより識別され、サブタイプはFITバージョンフィールドを使用して表される。SSDTを指定するFITエントリは、ブートアップ時中に検索され、DSDTと共にアクティブなシステムコンポーネントの名前空間を記述する。
 詳細な説明においては、以下の図を参照するが、同一の数字は同一の要素を示す。
 ACPIはIA−32命令セットの概念であり、新しいIA−64命令セットでも引き続き使用されている。ACPIは、ハードウェアの取り扱いと構成データを抽象化してオペレーティングシステム(OS)とファームウェアとのやりとりのためにハードウェア構成を定義する方法である。ACPIは、業界標準の仕様である。現在、主要な3つの商用パーソナルコンピュータ(PC)オペレーティングシステム、つまり、Linux、HP/UX、Windows(商標)は、IA−32空間でACPIを使用していて、新しいIA−64空間でもACPIを使用して実行されることになる。システムブート時、ファームウェアに電源が投入され、ファームウェアがシステム構成を確定する。システムは、必要な場合初期化されてから、動作がOSに渡される、つまりOSがブートアップされる。システムがブートアップされるときに、システムは様々なプラットフォーム構成の知識を持っていなければならない。ACPIは、さまざまなプラットフォーム構成を定義するためにインタフェースオブジェクトと名前空間を有するハードウェア構成の仕様である。
 新しいプラットフォーム用のACPIコードの作成は、より構造化されかつプラットフォームに依存しないようにすることが望ましい。これは、ACPIコードに対してモジュラー設計による構築化されたアプローチを使用して達成することができる。この方法によるACPI設計は現在使用されておらず、事実、開発者から難色を示されている。
 従来のACPI設計についての別の問題は、ACPI開発者はASLを使用してあらゆる所定のプラットフォームの派生を完全に記述しなければならないことである。このような設計では、ブートアップ時にハードウェアコンポーネントが存在しない場合も含め、ハードウェアがわずかに変更された場合でさえ移植性や再利用性がなかった。さらに、所定のプラットフォームのタイプから派生したタイプや、同一のシステムが複数のオペレーティングシステムを支援している場合に同一のROMを使用することができなかった。
 名前空間は、コンピュータシステムの階層を論理的な方法で記述する。たとえばOSが名前空間を使用するとき、OSは下位のハードウェアの状態を取得する。したがって、OSがある所定のハードウェアのためのリソースを取得することが必要な場合、あるいはコンポーネントにアクセスする方法を知る必要がある場合、OSは名前空間を調べる。たとえば、OSがマシンをスリープ状態にする必要がある場合、デバイスをスリープ状態にする方法を特定するオブジェクトが存在する。OSは名前空間で定義されたインタフェースまたはオブジェクトを使用してハードウェアを取り扱う。これがACPIの機能である。
 本システムと本方法の利点は、様々なプラットフォームとそれらのプラットフォームの複数の構成が共通のまたは汎用にプログラムされたファームウェアを使用して動作できるようにしていることである。現在のファームウェアが現状では克服していない問題は、ファームウェアが1つのプラットフォームの1つの構成でしか使用できないことである。本システムと本方法によれば、3つの主要なOSすべてで同時に動作するシステムファームウェアが可能になる。そのため、構成やOSが変更されるたびにファームウェアをアップグレードしたり修正する必要がない。そのためには、OSは、特に、ブート時にプラットフォーム上でどのオペレーティングシステムが実行中なのかについて知る必要がある。
 IA−64命令セットは、システムファームウェアがシステムハードウェアのROMコンポーネントにどのように配置されるのかを記述する。システムでは、ACPI AMLテーブル、ACPI静的テーブル、純粋なファームウェアであるSAL(システム抽象化層)など様々なファームウェアコンポーネントがマージされる。ファームウェア・インタフェース・テーブル(FIT)はファームウェア内に存在し、必要なACPIテーブルと他の情報がメモリのどこに存在するかを記述する。FITは、特定の数のフィールドを有し、各フィールドにはタイプがある。フィールドタイプは、コンポーネントのタイプを特定する。そのため、コンポーネントのタイプは、構造化されている。たとえば、タイプ0xE(Eは16進値)は、PAL(プロセッサ抽象化層)を具体的に示すことにすることができる。製造元OEM(相手先商標製品)フィールドであるタイプの範囲も存在する。
 図面を参照すると、図1は特にIA−64命令セットに関連付けられたファームウェア用のシステムROM 100の例を示している。ROM 100は、SAL 101、PAL 103、SSDT領域105、ACPIテーブル107、FIT 109などのいくつかのコンポーネント領域を有する。FITは、たとえばアドレス111、サイズ113、チェックサム115、タイプ117、バージョン119など多くのフィールドを有する。この例では、FITアドレス111は、SAL 101の先頭を指す。サイズ113は、必要な場合に正しいバイト数が検索できるようにSAL領域の長さを示す。ROM内のデータの完全性を保証するためにチェックサム115が存在することもある。
 ACPIテーブル107は、指定テーブルにより静的か動的(つまりインタープリタにより実行可能)であるかのいずれかである。システムの名前空間を作成するために、DSDT(差分システム記述子テーブル)がFITに保存されている。IA−64ではDSDTが存在していることが必要である。DSDTは、実行可能なAMLの部分を定義する。DSDTはルートシステムのハードウェアコンポーネントを定義する。ACPIは、SSDT(システム記述補助テーブル)105を持つことも可能である。ACPIインタープリタが実行されるとき、インタープリタはDSDTとすべてのSSDTを検索して結合された名前空間を作成する。
 システム内に存在するコンポーネントタイプの構成ごとに個別のSSDTエントリが作成される。たとえば、システムがローカルバスアダプタについて2つの派生を持つことが可能な場合、2つのSSDTが生成され、それらのローカルバスアダプタコンポーネントを定義するが、その場合、たとえばSSDTはプラットフォーム構成の派生ごとにそれぞれ定義される。各SSDTには各自のタイプ117がある。たとえば、タイプ55から80は、様々なSSDTタイプに専用に使用されるようにしてもよい。この方法は、構成の派生がほとんどない単一プラットフォームには適している。しかし、システムに多くの構成と使用可能なオペレーティングシステムがある場合、SSDTタイプの範囲が許容される範囲を超えることがある。そのため、FITエントリ内で、1つのタイプをSSDTを表すのに使用して、別のフィールドを使用してコンポーネントタイプと特定の構成を示すことが望ましい。バージョンフィールド119はこのタイプのFITエントリには使用されていないため、他のFIT操作に悪影響をまったく与えることなく有利に使用できる。ファームウェアの仕様を守り、ファームウェアがFITエントリをデコードできる限り、その他の使用されないフィールドが使用可能であることや、フィールドをその他の用途に割り当て直さなければならないことは同業者には明らかであろう。
 図2にDSDT名前空間200の例を示す。システムボード内のルートシステムバス(SB)は_SB 201で、システムバスアダプタ(SBA)_SBA0 203を持つ。SBA _SBA0は、PCI (Peripheral Component Interconnect/Interface)コンポーネント、PCI−1 205を有する。_SBA0とPCI−1とは、それらに関連付けられた_CRS 209と_CRS 207をそれぞれ有する。DSDTはシステム全体を記述しなくてもよい。たとえば、DSDTは、正常にブートされたときに動作することが必要なコンピュータシステムの一部を記述してもよい。図3はSSDTの例を示していて、このSSDTはブート時にDSDTと結合され、システム全体を記述する。
 図3では、SSDT 300はルート_SB._SBA0 301を有する。この名前は、この名前空間内で下位の子は、DSDT 200のルート_SB 201の子_SBA0 203に関連付けられることを示している。_SB._SBA0という表記は、オブジェクト指向の性質を持つ。子ノードは一般的に親のコンポーネントである。コンポーネント_SB._SBA0 301はPCIコンポーネント、PCI−5 303を有し、PCI−5 303は、自身に関連付けられた状態_STA 305を有する。システムのブート時、DSDTとSSDTは組み合わされて図4に示すようにシステム名前空間400が作成される。
 次に図4を参照すると、システムバス_SB 401の組み合わされた名前空間400が示されている。システムバスは、DSDT 200とSSDT 300の名前空間で定義されたように、自身に関連付けられた子を有するPCIコンポーネントPCI−1 205とPCI−5 303を有するようになった子SBA_SBA0 403を有する。
 完全な名前空間を動的に構築する利点は、異なる構成に同一の基本ファームウェアで対応できることである。構成の差分は、1つまたは複数のSSDT領域で定義することができる。図1をもう一度参照すると、FIT 109のSSDTエントリは、そのタイプ117とバージョン119により識別される。FIT 109は、1つまたは複数のSSDT105を指し、ブート時に読み込まれる。SSDTのアドレスは、システム内のROMやその他の任意のメモリ領域を指すことができることは、当業者には明らかであろう。
 動的名前空間の別の利点は、ブートアップ中に何らかのコンポーネントに障害が発生する場合に対応できることである。首尾よいブートのために、システムのすべてのデバイスが存在したり動作状態にある必要はない。従来技術のシステムでは、ブート中にデバイスに障害が発生するときに、ブート全体が失敗することが多かった。Windows(商標)では、この失敗は、いわゆる「青い画面」つまりシステム障害という結果を引き起こし得る。動的SSDTを使用してオプションのデバイスを定義する場合、システムはこれらのオプションのデバイスが存在していてブート時に機能するかどうかを確定することができる。デバイスが存在しなかったり機能しないときには、デバイスは名前空間にロードされない。そのため、OSはブート時にそれらのデバイスを検索することはない。
 図5Aと図5Bは、システム−1とシステム−2のハードウェア構成の例を示しており、両方のシステムは本方法を利用する同一のファームウェアを使用できる。図5Aを参照すると、2つのローカルバスアダプタ(LBA)、LBA1 503とLBA2 505、を有するシステムバスアダプタ(SBA)501が示されている。LBA1は4つのスロット、S1、S2、S3、S4(507、509、511、513)を有する。LBA2はスロットS1 515を1つだけ有する。図5Bを参照すると、3つのLBA、LBA1、LBA2、LBA4(523、525、527)を有するSBA 521が示されている。LBA1は2つのスロット、S1とS2(529と531)を有し、LBA2は1つのスロットS1 533を有し、LBA4は3つのスロット、S1 535、S2 537、S3 539を有する。
 これらのシステムの名前空間を表すのに使用される簡略化したDSDTは図6Aのようになる。システム−1の残りのコンポーネントを記述するのに使用されるSSDTは図6Bのようになる。システム−2の残りのコンポーネントを記述するのに使用されるSSDTは図6Cのようになる。両方のシステムが、2つのローカルバスアダプタを備えるSBAを有し、第1のLBAは少なくとも2つのスロットを有し、第2のLBAは1つのスロットを有することが当業者には明らかであろう。この例では、この構成が基本システムのため、DSDTは3つのコンポーネントを定義するだけでよい。他のすべてのコンポーネントはSSDTで記述される。
 たとえば、システム−1については、LBA1の2つの追加スロットは基本構成に追加して定義されなければならない。システム−2については、追加のLBAであるLBA4は3つのスロットS1、S2、S3を有するように定義されなければならない。したがって、同一のファームウェアについて、ロードされるSSDTだけを変更すれば、システム−1とシステム−2に対応できる。
 多くの構成を持つ多くのプラットフォームで使用するためにファームウェアとそれに関連するASLが開発される場合、多くのコンポーネント構成が可能なことは明らかであろう。3つのスロットを各々が持つ4つのLBAを有するプラットフォームもあれば、1つから4つのPCIスロットを各々が持つ5つのLBAを有するプラットフォームもある。したがって、バージョンフィールドは、個々の構成を区別するのに使用される。FITについて1つのSSDTタイプが定義され、DSDTを複数のSSDTと組み合わせるときに、エントリのバージョンが構成を区別するのに使用される。たとえば、バージョンフィールドが16ビット長とする。例示的な一実施形態では、16ビットが8ビットごとの2つのバイトに分割される。一方の1バイト[8ビット]はアダプタを特定し、他方の1バイトはアダプタのスロット数を特定する。表1は、4つのスロットを持つLBA 1について、現在の構成を示すためにバージョンフィールドがどのように設定され得るかを示している。テーブルは2進表記を使用している。したがって、コンポーネント番号は2進表記で00000001になり、スロット数は00000100になる。他のビット割り当て方法も使用できることは当業者にとっては明らかであろう。たとえば、より多くのスロットが必要な場合、コンポーネント番号に3ビットを使用して、スロット数を確定するのに5ビットを使用することができる。
Figure 2004070952
 図7は、DSDTと少なくとも1つのSSDT用のFITエントリを使用してシステムコンポーネント名前空間を生成する例示的な一方法を示す流れ図である。ステップ701で、システムコンポーネントが識別され、それらのシステムコンポーネントに対応する情報または定義が1つまたは複数のSSDT領域に保存される。この情報は、システムファームウェアからアクセス可能なROMや任意のその他のメモリに保存することができる。ステップ703でシステムブートアップ中に、正常にブートアップされたコンポーネントが識別される。ここでは説明の便宜上、これらのコンポーネントは「アクティブな」コンポーネントとして認識されているとする。すべてのロード可能なSSDTがROMにロードされ、FITにより記述される。ステップ705で、SALによるACPI静的テーブルの生成時に、SALはアクティブなコンポーネントに対してどのSSDTがロードされるかを決定し、その情報をACPI静的テーブルに配置する。
 システムコンポーネント情報が検索されシステム名前空間が生成されるときに、アクティブではないコンポーネントや障害のあるコンポーネントは記述されない。これにより、1つまたは複数の不可欠ではないコンポーネントがない場合でもシステムがブートアップ可能になる。また、ステップ707で、システムのブートアップ中に、ACPIインタープリタは、静的テーブルと動的テーブル(DSDTとSSDT)を組み合わせることで、静的テーブルと動的テーブルを使用して有効なACPI名前空間を作成する。ステップ709で、ACPIインタープリタにより名前空間が完全に生成されると、制御はOSに移行し、システムが起動し動作する。それから、OSは生成された名前空間を使用してシステムコンポーネントとのやりとりを行う。
 ファームウェア・インタフェース・テーブルを使用してACPI SSDTをロードするための新規の方法の好ましい実施形態について説明したが(説明は限定することを意図したものではなく例示することを意図している)、当業者は、前述の教示をふまえて変更や変形が可能であることに留意しなければならない。したがって、併記の特許請求の範囲によって定義されるように本発明の範囲と精神内で、開示した本発明の特定の実施形態に対して変更が可能なことは明らかである。
ファームウェア・インタフェース・テーブルを有する例示的なファームウェアROMを示すブロック図。 DSDTの例示的な名前空間を示す図。 SSDTの例示的な名前空間を示す図。 図2のDSDTと図3のSSDTのコンポーネントを組み合わせた名前空間を示す図。 システムバスアダプタ、少なくとも1つのローカルバスアダプタ、対応するスロットを有する例示的なシステムのブロックダイヤグラム。 システムバスアダプタ、少なくとも1つのローカルバスアダプタ、対応するスロットを有する例示的なシステムのブロックダイヤグラム。 図5Aと図5Bに共通に示されるハードウェアコンポーネントに対応する例示的なDSDT名前空間。 図5Aに示され図6AのDSDT名前空間には含まれないハードウェアコンポーネントに対応する例示的なSSDT名前空間。 図5Bに示され図6AのDSDT名前空間には含まれないハードウェアコンポーネントに対応する例示的なSSDT名前空間を示す図。 DSDTと少なくとも1つのSSDT用のFITエントリを使用してシステムコンポーネント名前空間を生成する例示的な方法を示す流れ図。

Claims (10)

  1.  IA−64命令セットプロセッサ用のマルチプラットフォームのマルチオペレーティングシステム用ファームウェアであって、
     コンピュータシステムをブートアップするシステムファームウェアであって、該システムファームウェアは、ブートアップ命令がプログラムされている第1の命令ブロックと、データを保存するための第2のメモリブロックとを有し、
     前記第2のメモリブロックは、システムブートアップ中にアクセス可能であって、前記コンピュータシステムのコンポーネントに対応した情報を格納しており、
     前記第2のメモリブロック内に設けられたファームウェア・インタフェース・テーブルであって、アドレスフィールド、サイズフィールド、およびタイプフィールドのエントリを含み、ファームウェア・インタフェース・テーブルのエントリの前記アドレスフィールドのエントリが該エントリのタイプについてのデータに対応する記憶域を指すファームウェア・インタフェース・テーブルと、
     システム記述補助テーブルを識別する前記ファームウェア・インタフェース・テーブル内の少なくとも1つのファームウェア・インタフェース・テーブルのエントリであって、前記システム記述補助テーブルは少なくとも1つの前記コンピュータシステムのコンポーネントを記述する情報を備え、前記システム記述補助テーブルは一意のファームウェア・インタフェース・テーブルのタイプおよびファームウェア・インタフェース・テーブルのバージョンフィールドを使用したサブタイプにより識別され、前記ファームウェア・インタフェース・テーブルのエントリはアクティブなシステムコンポーネントの名前空間を記述するためにブートアップ中に検索される、少なくとも1つのファームウェア・インタフェース・テーブルのエントリと、
    を備えるファームウェア。
  2.  前記ファームウェア・インタフェース・テーブルのエントリはチェックサムおよびバージョンの情報をさらに含む請求項1に記載のファームウェア。
  3.  前記システム記述補助テーブルの情報は差分システム記述子テーブルの情報と組み合わされ、前記差分システム記述子テーブルの情報は前記第2のメモリブロック内に存在する請求項1に記載のファームウェア。
  4.  前記システム記述補助テーブルの情報は、第3のメモリブロック内に存在し、該第3のメモリブロックは前記ファームウェア外に存在する請求項3に記載のファームウェア。
  5.  前記システム記述補助テーブルの情報は差分システム記述子テーブルの情報と組み合わされ、前記差分システム記述子テーブルの情報および前記システム記述補助テーブルの情報は第3のメモリブロック内に存在し、該第3のメモリブロックは前記ファームウェア外に存在する請求項1に記載のファームウェア。
  6.  システムブートアップ中にシステム記述補助テーブルのデータをファームウェア・インタフェース・テーブルから検索してアクティブなシステムコンポーネントの名前空間を生成する方法であって、
     各システムコンポーネントについて、対応するシステムコンポーネント情報を、前記システム記述補助テーブルを保存する記憶域に保存するステップと、
     システムブートアップ時に、コンピュータシステムにおけるアクティブなコンポーネントのシステム構成を決定するステップと、
     システム記述補助テーブルのエントリを有するファームウェア・インタフェース・テーブルをロードするステップであって、各システム記述補助テーブルは、対応する前記システム記述補助テーブルの情報を保存する記憶域を指し、ロードされる前記エントリはシステムコンポーネントに対応し、ファームウェア・インタフェース・テーブルのエントリはタイプフィールドによりシステム記述補助テーブルのエントリとして識別され、前記システム記述補助テーブルのエントリはファームウェア・インタフェース・テーブルのエントリのバージョンフィールドで識別されるサブタイプを有し、
     決定された前記システム構成を持つ前記システムコンポーネントの名前空間をアクティブなシステムコンポーネントについて初期化するステップと、
    を含む方法。
  7.  制御を前記システムファームウェアから選択されたオペレーティングシステムに移行するステップをさらに含み、前記オペレーティングシステムは、前記システムコンポーネントの名前空間を使用してシステムコンポーネントとの対話を定義する請求項6に記載の方法。
  8.  前記ファームウェア・インタフェース・テーブルは第1のメモリブロック内に存在し、前記ファームウェア・インタフェース・テーブルはアドレス、サイズ、およびタイプを有するエントリを含み、ファームウェア・インタフェース・テーブルのエントリの前記アドレスは前記エントリのタイプについてのデータに対応する記憶域を指す請求項6に記載の方法。
  9.  ファームウェア・インタフェース・テーブルのエントリは、前記第1のメモリブロック外の記憶域を指す請求項8に記載の方法。
  10.  前記システムコンポーネントの名前空間をアクティブなシステムコンポーネントについて初期化するステップは、システム記述補助テーブルの情報を差分システム記述子テーブルの情報と組み合わせるステップをさらに含む請求項6に記載の方法。
JP2003279682A 2002-08-07 2003-07-25 システム記述補助テーブルを検索するマルチプラットフォーム用ファームウェア Withdrawn JP2004070952A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/212,719 US7017034B2 (en) 2002-08-07 2002-08-07 System and method for using a firmware interface table to dynamically load multiple ACPI SSDT tables

Publications (1)

Publication Number Publication Date
JP2004070952A true JP2004070952A (ja) 2004-03-04

Family

ID=31494359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003279682A Withdrawn JP2004070952A (ja) 2002-08-07 2003-07-25 システム記述補助テーブルを検索するマルチプラットフォーム用ファームウェア

Country Status (3)

Country Link
US (1) US7017034B2 (ja)
JP (1) JP2004070952A (ja)
FR (1) FR2850471A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511331A (ja) * 2008-01-30 2011-04-07 パナソニック株式会社 セキュアブート方法及びセキュアブート装置
US8001368B2 (en) 2007-03-06 2011-08-16 Nec Corporation Hot-pluggable information processing device and setting method
JP2011180885A (ja) * 2010-03-02 2011-09-15 Nec Corp コンピュータシステム及びそのhw抽象化方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058801B2 (en) * 2003-02-19 2006-06-06 American Megatrends, Inc. Methods and computer systems for updating values of a DSDT
US7076648B2 (en) 2003-02-19 2006-07-11 American Megatrends, Inc. Methods and computer systems for selection of a DSDT
US7363434B2 (en) * 2003-03-18 2008-04-22 American Megatrends, Inc. Method, system, and computer-readable medium for updating memory devices in a multi-processor computer system
US7188339B2 (en) * 2003-10-24 2007-03-06 Hewlett-Packard Development Company, L.P. ACPI preprocessor
US7757030B2 (en) * 2005-12-16 2010-07-13 Microsoft Corporation Simulating hardware dynamic partitioning capabilities
US8429418B2 (en) * 2006-02-15 2013-04-23 Intel Corporation Technique for providing secure firmware
US7590835B1 (en) 2006-06-30 2009-09-15 American Megatrends, Inc. Dynamically updating a computer system firmware image
US7797696B1 (en) 2006-06-30 2010-09-14 American Megatrends, Inc. Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure
US9395968B1 (en) * 2006-06-30 2016-07-19 American Megatrends, Inc. Uniquely identifying and validating computer system firmware
US7895376B2 (en) * 2008-11-26 2011-02-22 International Business Machines Corporation Hardware configuration information system, method, and computer program product
US8631251B2 (en) * 2009-12-24 2014-01-14 International Business Machines Corporation System management controller entry into reduced power state responsive to other hardware entering reduced power state
WO2015139228A1 (en) * 2014-03-19 2015-09-24 Intel Patent Group Access isolation for multi-operating system devices

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319751A (en) * 1991-12-27 1994-06-07 Intel Corporation Device driver configuration in a computer system
US5903894A (en) * 1997-03-03 1999-05-11 Microsoft Corporation System and method for using a hierarchical data structure to control and identify devices and represent connections between the devices
US6167511A (en) * 1998-06-15 2000-12-26 Phoenix Technologies Ltd. Method to reflect BIOS set up changes into ACPI machine language
US6081890A (en) * 1998-11-30 2000-06-27 Intel Corporation Method of communication between firmware written for different instruction set architectures
US6907474B2 (en) 2000-09-15 2005-06-14 Microsoft Corporation System and method for adding hardware registers to a power management and configuration system
JP2002215585A (ja) * 2000-11-16 2002-08-02 Fuji Xerox Co Ltd 個人証明書サブジェクト名処理装置および方法
US6772330B2 (en) * 2001-01-26 2004-08-03 Dell Products L.P. System and method for storing component information and a program in a hidden partition, and loading the component information to a reserved portion of the memory using the program

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8001368B2 (en) 2007-03-06 2011-08-16 Nec Corporation Hot-pluggable information processing device and setting method
JP2011511331A (ja) * 2008-01-30 2011-04-07 パナソニック株式会社 セキュアブート方法及びセキュアブート装置
US8677108B2 (en) 2008-01-30 2014-03-18 Panasonic Corporation Method for finding next component to be booted based on booting status of current component to continue booting process by using a component look-up table
JP2011180885A (ja) * 2010-03-02 2011-09-15 Nec Corp コンピュータシステム及びそのhw抽象化方法
US8555046B2 (en) 2010-03-02 2013-10-08 Nec Corporation Computer system and its HW abstraction method

Also Published As

Publication number Publication date
FR2850471A1 (fr) 2004-07-30
US20040030875A1 (en) 2004-02-12
US7017034B2 (en) 2006-03-21

Similar Documents

Publication Publication Date Title
US7134007B2 (en) Method for sharing firmware across heterogeneous processor architectures
US8201166B2 (en) Virtualization platform configured with virtual connect control
EP3491519B1 (en) Optimized uefi reboot process
US6167511A (en) Method to reflect BIOS set up changes into ACPI machine language
US5903894A (en) System and method for using a hierarchical data structure to control and identify devices and represent connections between the devices
JP4327363B2 (ja) 周辺リソース構成のためのacpiソース言語の自動生成
US6990576B2 (en) System and method for using a firmware interface table to dynamically load an ACPI SSDT
US20040230963A1 (en) Method for updating firmware in an operating system agnostic manner
US7146512B2 (en) Method of activating management mode through a network for monitoring a hardware entity and transmitting the monitored information through the network
US7162626B2 (en) Use of common language infrastructure for sharing drivers and executable content across execution environments
US8082436B2 (en) Enhanced UEFI framework layer
US7962734B2 (en) Method of restarting a computer platform
US7743072B2 (en) Database for storing device handle data in an extensible firmware interface environment
JP2004070952A (ja) システム記述補助テーブルを検索するマルチプラットフォーム用ファームウェア
US6986014B2 (en) System and method for using a vendor-long descriptor in ACPI for the chipset registers
US8539214B1 (en) Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware
US9811347B2 (en) Managing dependencies for human interface infrastructure (HII) devices
US10402204B1 (en) Multi-platform firmware support
US7600111B2 (en) Method of restarting a computer platform
EP3724757B1 (en) Firmware publication of multiple binary images
US6986032B2 (en) System and method for using an operating system defined field in ACPI support multiple operating systems
US7873807B1 (en) Relocating a program module from NVRAM to RAM during the PEI phase of an EFI-compatible firmware
US11263019B2 (en) Method for converting device tree data into ACPI data for edge device operating in a network
US10430201B1 (en) Multi-platform firmware support
Banik et al. System Firmware Architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060724

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20080408