JP2013543627A - オペレーティングシステム(os)不在サービス環境においてファームウェアをプロビジョニングする方法 - Google Patents

オペレーティングシステム(os)不在サービス環境においてファームウェアをプロビジョニングする方法 Download PDF

Info

Publication number
JP2013543627A
JP2013543627A JP2013535155A JP2013535155A JP2013543627A JP 2013543627 A JP2013543627 A JP 2013543627A JP 2013535155 A JP2013535155 A JP 2013535155A JP 2013535155 A JP2013535155 A JP 2013535155A JP 2013543627 A JP2013543627 A JP 2013543627A
Authority
JP
Japan
Prior art keywords
firmware
computing device
module
volume
environment
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.)
Granted
Application number
JP2013535155A
Other languages
English (en)
Other versions
JP5606633B2 (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2013543627A publication Critical patent/JP2013543627A/ja
Application granted granted Critical
Publication of JP5606633B2 publication Critical patent/JP5606633B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

【解決手段】 コンピューティングデバイス(CD)を第1の高電力消費状態から第2の低電力消費状態へと遷移させる場合、プレブート期間において利用可能な1以上のファームウェア(FW)機能を含むFW環境を再インスタンス化する方法および装置を提供する。FW環境は、FWボリューム上の暗号署名が承認されるか否かを判断し、FWボリュームのマニフェストによって要求されているCDのハードウェアリソースが利用可能か否かを判断し、FWボリュームのFWモジュールがFW環境のインストールされたFWに準拠しているか否かを判断する。判断が真であれば、FW環境は、FWモジュールによって利用されるリソースを収容するスペースをメモリ内に確保し、第2の低電力消費状態にあるCDでFWモジュールを実行する。
【選択図】 図1

Description

本開示は、概してコンピューティングデバイスの管理に関し、具体的には、コンピューティングデバイスのファームウェア環境において、当該コンピューティングデバイスが低電力消費状態を維持している間に、当該コンピューティングデバイスのオペレーティングシステムに関係なく、ファームウェアをプロビジョニングすることに関する。
コンピューティングデバイスの消費電力を低減するべくさまざまなメカニズムが考えられている。標準的な電力管理技術は、アドバンスド・コンフィグレーション・アンド・パワー・インターフェース(Advanced Configuration and Power Interface:ACPI)バージョン4.0に仕様が説明されている。この文献は、URL:www−acpi−info(本文献では、意図せずハイパーリンクが組み込まれないように、ピリオドに代えてハイフンを使用している)で示す公共のインターネットで入手可能である。ACPIは、大半のコンピュータシステムが電力管理のために現在利用している規格であり、オペレーティングシステム(OS)に対してコンピューティングシステムがどのように見えるかを説明している。電力管理機能によって、コンピューティングデバイスは、コンポーネントレベルおよびシステムレベルの両方において、高電力消費状態と低電力消費状態との間で動作状態を遷移させることができるようになっている。これらの動作モードは大抵、ウェイク状態またはウェイクモード、および、スリープ状態またはスリープモードと呼ばれる。ACPI仕様では、コンピューティングデバイスが通常遷移し得る状態として7個の状態が定義されている。例えば、ステートS3(「S3」)は、スタンドバイと通常は呼ばれ、スリープ(本明細書では「スリープモード」とも呼ぶ)またはRAMサスペンド(一時休止)とも呼ばれるとしてよい。ステートS5(「S5」)は、シャットダウンまたは「オフ」と呼ばれるとしてよい。
複数のイベントによって、コンピューティングデバイスは、スリープモードとウェイクモードとの間を遷移する、つまり、ウェイク状態になるか、または、スリープ状態になるとしてよい。例えば、スリープイベントは、コンピューティングデバイスをスリープ状態に遷移させるトリガとなるが、ユーザがアクティブ状態でないこと、または、ユーザによる選択を含むとしてよい。コンピューティングデバイスがスリープ状態に遷移すると、コンピューティングデバイスの構成要素の多く(例えば、中央演算処理装置(CPU)等のメインプロセッサ、揮発性メモリ、大容量ストレージ用のディスクドライブ等も)も同様にスリープ状態になるとしてよい。スリープ状態になると、コンピューティングデバイスは、ウェイクイベントの発生に伴いウェイク状態になるとしてよい。ウェイクイベントには、例えば、コンピューティングデバイスがマウスまたはキーボードからの入力を受信すること、電子メールメッセージ、または、リモートシステム管理者からのクエリ等があるとしてよい。
ウェイクイベントの処理が完了すると、OSが再度実行される前に、コンピューティングデバイスのファームウェアが、OSの関与無しに、有用な処理を実行する機会がある。
本発明の実施形態は、実施形態例として説明され、これらに限定されないが、添付図面に図示される。添付図面では、同様の参照番号は同様の構成要素を意味する。添付図面は以下の通りである。
さまざまな実施形態に係る、コンピューティングデバイスがウェイクモードからスリープモードへと遷移する時系列を説明する図である。 さまざまな実施形態に係る、オペレーティングシステム(OS)に関係なく、ファームウェアがウェイクイベントを処理する方法の一例を示すフローチャートである。 さまざまな実施形態に係る、オペレーティングシステム(OS)に関係なく、ファームウェアがウェイクイベントを処理する方法の一例を示すフローチャートである。 さまざまな実施形態に係る、コンピューティングデバイスにおけるブート−ウェイクサイクルを説明するブロック図である。 さまざまな実施形態に係る、コンピューティングデバイスの一例を示すブロック図である。 さまざまな実施形態に係る、ハードウェアコンポーネントの上方のソフトウェアスタックを示す図である。 本発明の一実施形態に係るファームウェアボリュームを示す図である。 さまざまな実施形態に係るプロビジョニングプロセスを説明するためのフローチャートである。
本発明の実施形態例は、これらに限定されないが、コンピューティングデバイスのファームウェア環境において、当該コンピューティングデバイスが低電力消費状態であるスリープモードを維持している場合、当該コンピューティングデバイスのオペレーティングシステムとは別個に、ファームウェアモジュールをプロビジョニングする方法および装置を含む。
実施形態例のさまざまな側面は、当業者間で研究内容を伝達するべく一般的に利用している用語を用いて説明される。しかし、説明する側面のうち一部のみを利用して他の実施形態を実施し得ることは当業者には明らかであろう。説明の便宜上、具体的な数字、材料および構成を記載して、実施形態例を完全に理解されたい。しかし、具体的且つ詳細な内容を利用することなく別の実施形態を実施し得ることは当業者には明らかであろう。また、公知の特徴は、実施形態例をあいまいにすることを避けるべく、説明を省略しているか、または、簡潔に説明している。
さらに、さまざまな処理を、実施形態例を最も理解しやすい順序で、複数の独立した処理として、順次説明する。しかし、説明の順序は、これらの処理が必ず所定順序で行われなければならないことを意味するものと解釈されるべきではない。具体的には、これらの処理は、説明する順序で実行する必要はない。「一実施形態において」という表現を何度も用いる。この表現は概して、同じ実施形態を意味するものではない。しかし、同じ実施形態を意味している場合もある。「備える」、「有する」、「含む」といった用語は、文脈からそうでないことが分かる場合を除き、同義語である。
図1は、さまざまな実施形態に係る、コンピューティングデバイスがウェイクモードからスリープモードへと遷移する様子を時系列で説明する図である。本明細書で説明されるように、さまざまな実施形態において、コンピューティングデバイスのファームウェアは、コンピューティングデバイスがスリープモードである間に、処理を実行する構成を持つとしてよい。ファームウェアは、オペレーティングシステムとは別個にこの処理を実行することができる。この結果、機能が向上するとともに、コンピューティングデバイスの総消費電力が小さくなる。実施形態では、コンピューティングデバイスまたはシステムは、デスクトップコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、ネットワークサーバ、シン・クライアント、または、ファームウェアを利用する他のコンピューティングデバイスであってよい。実施形態によると、ファームウェアは、レガシー・ベーシック・インプット/アウトプット・システム(BIOS)、ユニファイド・エクステンシブル・ファームウェア・インターフェース(例えば、UEFI仕様、バージョン2.0、2006)に準拠しているか、エクステンシブル・ファームウェア・インターフェース(EFI)に準拠しているか(例えば、EFI仕様、バージョン1.10、2004)、または、その他のファームウェアであってよい。尚、EFIは、コンピューティングデバイスファームウェアと、オペレーティングシステムまたは他のアプリケーション環境との間の抽象的なプログラムインターフェースを説明する公共の産業仕様である。例えば、EFIによって、ファームウェアを、ファームウェアモジュールとして、さまざまなリソースから、または、コンピュータネットワークを介して1以上のコンピュータシステムから、ロードすることができるようになる。リソースとしては、フラッシュメモリデバイス、オプションのROM(リードオンリーメモリ)、さまざまな持続的ストレージデバイス(例えば、ハードディスク、CD−ROM(コンパクトディスクリードオンリーメモリ)等)がある。ユニファイドEFI(UEFI)アーキテクチャに関するさらなる情報については、公共のインターネットのwww−uefi−org(本文献では、意図せずハイパーリンクが組み込まれないように、ピリオドに代えてハイフンを使用している)において入手可能であるとしてよい。このように、本明細書で説明するように、さまざまな実施形態において、スリープモードに遷移すると、コンピューティングデバイスは、UEFI、または、プレブート期間に利用可能な1以上のファームウェア機能を含む他のファームウェア環境を再インスタンス化するとしてよい。実施形態によると、再インスタンス化されたファームウェア環境によって、ファームウェア環境は、通常はコンピューティングデバイスのOSが実行する電力管理機能を実行できるようになるとしてよい。ある実施形態によると、再インスタンス化されたファームウェア環境は、新しいファームウェアモジュールのプロビジョニング、または、既存のファームウェアモジュールの更新等を、OSの関与無しに実行可能とするとしてよい。ある実施形態によると、新しくインストールされたファームウェアまたは新しく更新されたファームウェアモジュールは、コンピューティングデバイスについての処理を実施するべく実行されるとしてよい。
図1を参照しつつ説明すると、図示している実施形態では、111において、コンピューティングデバイスがファームウェア環境(ファームウェアとも呼ぶ)によってプレブート期間に初期化されるとしてよい。さまざまな実施形態によると、以下でもさらに詳細に説明するが、112において、このプレブート期間において、ファームウェアは、メモリの一部分またはメールボックスを、そこからファームウェアが後にデータを収集するものとして、確保するとしてよい。プレブート初期化が完了すると、113において、ブート処理を継続して行うべく、コンピューティングデバイスのオペレーティングシステム(OS)に制御が引き渡されるとしてよい。OSまたはシステムのブートの後、OSは、115において、機能モードまたはウェイクモードでコンピューティングデバイスを実行または動作させるとしてよい。ウェイクモードには、通常動作に対応付けられる高電力消費状態が通常含まれる。コンピューティングデバイスは、117までウェイクモードで動作し続けるとしてよい。117において、スリープイベントによってコンピューティングデバイスはスリープモードS3に遷移する。スリープモードS3は、低電力消費状態を含む。上述したように、スリープイベントは、さまざまなイベントを含むとしてよく、例えば、ユーザによる選択またはユーザがアクティブでないことなどがある。
ある程度時間が経過した後、さまざまな実施形態において、コンピューティングデバイスはウェイクイベントを受信するとしてよい。一部の実施形態によると、ウェイクイベントは、電子メール、コンフィグレーションディレクティブ、または、その他のネットワーク送信等のネットワークイベントを含むとしてよい。他の実施形態では、ウェイクイベントは、入力デバイスでの入力を感知すること、コンピューティングデバイスのキーボードに触ること、特定の種類のネットワークパケットを受信すること等であってよい。ウェイクイベントの処理は、システム管理割り込み(SMI)、制御ライン変更、レジスタフラグまたはその他の構造体によって開始されるとしてよい。また、ウェイクイベントの処理は、コンピューティングデバイスのチップセットによって開始されるとしてよい。さらに、一部のウェイクイベントは、OSによる処理のために、コンピューティングデバイスの電源を入れる処理をトリガするとしてよい。他のウェイクイベントは、本開示の実施形態に関して後述するが、コンピューティングデバイスがスリープモードの間に、ファームウェアによって処理されるとしてよい。
したがって、さまざまな実施形態において、ファームウェアは、コンピューティングデバイスのOSとは別個に動作し、ウェイクイベントが、コンピューティングデバイス全体を第1の高電力消費状態に戻さなくても処理できるか否かを判断するとしてよい。ウェイクイベントをファームウェアで処理することが出来ず、OSがウェイクイベントを処理する場合、121において、ディスクを回転させて、モニタをオンに制御して、コンピューティングデバイスを完全ウェイクモードに戻すとしてよい。処理フローはこの後、115に戻るとしてよい。115において、OSはウェイクモードでコンピューティングデバイスを実行または動作させる。しかし、OSに別個に、そして、コンピューティングデバイス全体を第1の高電力消費状態に戻すことなくウェイクイベントを処理可能であるとファームウェアが判断すると、ファームウェアはウェイクイベントの処理を実行することができる。コンピューティングデバイスはこうして、119において、スリープ状態を継続するとしてよい。一部の実施形態によると、ファームウェアは、ウェイクイベントに応じて、そして、コンピューティングデバイス全体をウェイク状態にすることなく、1以上のハードウェアコンポーネントまたはハードウェアデバイスをウェイク状態にして、ウェイクイベントに対応するタスクについて対処または完了させるとしてよい。さらに、ファームウェアは、イベントの処理が完了した後、ハードウェアコンポーネントを、第2の低電力消費状態を含むスリープモードに戻すとしてよい。
尚、実施形態において、123では、OSが1以上のハードウェアコンポーネントをスリープモードに遷移させる方法に関するデータのモニタリングおよび収集を、例えば、フィルタドライバ等のファームウェアコンポーネントが開始するとしてよい。さまざまな実施形態において、フィルタドライバは、収集したデータを、112においてプレブート期間中にファームウェアが確保したにメールボックスまたはメモリの一部に保存するとしてよい。ファームウェアは後に独立して、収集したデータを利用して、ウェイクイベントに対処する必要がある1以上のハードウェアコンポーネントをスリープモードへ、および/または、スリープモードから遷移させるとしてよい。ある実施形態によると、ウェイクイベントが発生すると、エンドユーザに出荷された後にコンピューティングデバイスにプロビジョニングされたファームウェアモジュールを実行することができるとしてよい。
続いて、図2Aおよび図2Bは、本開示のさまざまな実施形態に係る、OSとは別個に、ウェイクイベントを処理する方法の一例を示すフローチャートである。図2Aに示すブロックは、ある実施形態によると、ファームウェアによって実行されるとしてよい。図2Bに示すブロックは、ある実施形態によると、OSによって実行される。「ファームウェアによって実行される」という表現は、より複雑なコンピューティングデバイスのやり取りを短くまとめたものであることは当業者には明らかであろう。シングルプロセッサシステムにおいて、例えば、命令の実行は、メインプロセッサ、つまり、中央演算処理装置(CPU)によって実行されるとしてよい。尚、「ファームウェアによって実行される」という表現は、非オペレーティングシステム命令を、プロセッサに結合されている不揮発性メモリストア(ファームウェア)からフェッチして、プロセッサで実行することを意味するとしてもよい。プロセッサは、OSをロードする前に、ファームウェアに対するアクセスを持つ。このため、ブート命令は通常、ファームウェアブートブロックに格納されているとしてよい。さらに、一部の実施形態では、完全ブートブロックはリモートに設けられているとしてよく、ローカルブートブロックが、完全ブートブロックのリモート位置に対するポインタを含むとしてよい。
図2Aおよび図2Bの実施形態では、ブロック201において、コンピューティングデバイスまたはコンピューティングシステムの電源がオンになるとしてよい。コンピューティングプラットフォームは、ブロック203において、ブートブロックファームウェアによって予備的に初期化されるとしてよい。ファームウェアの他の部分は、ブートブロックの外部に設けられており、予備初期化において役割を持つとしてよい。尚、ブートブロックは通常、早期メモリ初期化および中央プロセッサ初期化等の初期化の早期段階を担当する。予備初期化はさらに、メモリの特定および再設定、コンピューティングデバイスに結合されているコンポーネントおよびデバイスの特定等を含むとしてよい。
図示している実施形態では、予備初期化または直後の処理の一環として、ファームウェアが複数のポリシークエスチョンを開始して、コンピューティングデバイスのステータスを決定するとしてよい。ブロック204において、ファームウェアは、スリープイネーブルアクティビティがイネーブルされているか否かを判断するとしてよい。スリープイネーブルアクティビティがイネーブルされている場合、ブロック206に進む。スリープイネーブルアクティビティがイネーブルされていない場合、ブロック230に進む。実施形態では、ファームウェアは、ブロック206において、コンピューティングデバイスが、ウェイクイベント(例えば、少なくとも1つの実施形態においてネットワークウェイクイベント)に起因して、ウェイク状態になるか、または、スリープモードから遷移するか否かについて質問するとしてよい。さまざまな実施形態において、コンピューティングデバイスがネットワークウェイクイベントに起因してウェイク状態にならずに単に起動処理を完了すると、プレブートプロセスはブロック208に続くとしてよい。ブロック208において、ファームウェアは、後に必要になる画像をキャッシュするとしてよい。例えば、スリープモード(例えば、S3)に必要なデータをキャッシュするとしてよい。続いて、ブロック210において、ファームウェアは、このプレブート期間において、コンピューティングデバイスの有形コンピュータ可読格納媒体においてメモリの一部を確保するとしてよい。ある実施形態によると、メモリの一部は、ファームウェアのメールボックスとして機能するとしてよい。尚、ファームウェアが能動的にこのようなリソースを自身で確保しない限り、コンピューティングデバイスのリソースは通常は、OSの制御下にある。さらに、さまざまな実施形態において、以下で説明するが、OSが1以上のハードウェアコンポーネントをスリープ状態に遷移させる方法に関する入出力(I/O)データは、(例えば、OSのモニタ素子によって、)ファームウェアによって後にアクセスされるべくメールボックスに保存されるとしてよい。実施形態において、既にキャッシュした画像をファームウェアが再度初期化できるような十分なメモリが確保されているとしてよい。
図示した実施形態では、次のブロック212において、ファームウェアは通常のブートプロセスを継続し、OSは制御を与えられて開始されるとしてよい。図2Bのブロック214において、OSは、例えば、フィルタドライバ等のコンポーネントをインストールするとしてよい。以下で分かるが、フィルタドライバは、ハードウェアコンポーネントをスリープモードに遷移させることに関するI/Oデータを収集するモニタリングコンポーネントとして機能するとしてよい。通常のOS処理をブロック216で継続して行うとしてよい。判断ブロック218において、入力が所定期間にわたって受信されていない場合、または、他のコンピューティングデバイスポリシーが指定する状態の場合、OSはコンピューティングデバイスをスリープモードに遷移させるとしてよい。例えば、コンピューティングデバイスがスリープモードに遷移することをポリシーが指示していない場合、OS処理をブロック216で継続して実行する。別の場合、判断ブロック218に戻って、コンピューティングデバイスがスリープモードに遷移すると、OSは判断ブロック218からブロック220へと下方に進むとしてよい。実施形態によると、OSはこの後、全てまたは略全てのハードウェアコンポーネントまたはハードウェアデバイスドライバに、ハードウェアコンポーネントがスリープモードに遷移する旨を通知するメッセージを送信するとしてよい。フィルタドライバは、この通知をブロック222で受信または検出するとしてよく、1以上のハードウェアデバイスまたはコンポーネントがスリープモードに遷移する方法に関する入出力(I/O)データ、例えば、ハードウェアデバイスインターフェースとハードウェアデバイスドライバとの間のI/O信号を監視し始めるとしてよい。ブロック224において、フィルタドライバはこの後、I/Oデータを収集して、プレブート期間にファームウェア環境に確保したメールボックス(ブロック210で説明)に保存するとしてよい。最後に、ブロック226において、OSはコンピューティングデバイスのスリープモードへの遷移を完了させる。
尚、ブロック224でメールボックスに保存されたI/Oデータは、前述したように、後に、ウェイクイベントの処理中および/または処理後に、ファームウェアに当該I/Oデータを利用させるべく利用されるとしてもよい。このように、例えば、判断ブロック206まで戻り、コンピューティングデバイスが、ネットワークウェイクイベント等のウェイクイベントによりウェイク状態に遷移する場合、YESの矢印にしたがって進むとしてよい。ブロック228において、ファームウェアは、OSがスリープモードである間に、OSに別個に、コンピューティングデバイス全体をウェイク状態にすることなく、または、高電力消費状態に戻すことなく、ネットワークイベントがファームウェアによって処理可能か否かを判断するとしてよい。判断結果がNOである場合、コンピューティングデバイスは、ブロック230において、通常のS3コードパスで再開し、最終的に212において通常のブートプロセスを継続する。しかし、判断結果がYESである場合、ファームウェアは、ネットワークイベントをOSに別個に処理させるとしてよい。一部の実施形態によると、ブロック232において、ファームウェアは、1以上(しかし、全てではない)のハードウェアコンポーネントのみをウェイク状態または高電力消費状態に遷移させるか、および/または、ネットワークイベントの処理に利用されるソフトウェアを開始するとしてよい。ブロック235において、ファームウェアは、キャッシュされたデバイスI/Oを利用して、コンピューティングデバイスをD3ステートに戻すとしてよく、必要であれば、コマンドを適切なポートに書き込んで、S3へと遷移させるとしてよい。
このように、さまざまな実施形態によると、コンピューティングデバイスのファームウェア環境は、コンピューティングデバイスがスリープモードに遷移すると、再インスタンス化される。実施形態によっては、ファームウェア環境は、電力管理またはコンピューティングデバイスのOSによって通常実行される他の機能を実行できる構成を持つ。一部の実施形態によると、コンピューティングデバイスが特定のハードウェアコンポーネント、例えば、スリープモード中にコンピューティングデバイスが受信するネットワーク送信に対応付けられているハードウェアコンポーネントをスリープ状態に遷移させる機能を持つだけでなく、ファームウェア環境は、コンピューティングデバイスの複数のその他のハードウェアコンポーネントまたはその他のコンポーネントのウェイクモードへの遷移を開始する機能を持つ。さまざまな実施形態において、ファームウェア環境は、複数のハードウェアデバイスのうちいずれかがスリープモードに遷移する方法に関するI/Oデータを読み出す構成を持つ。このようなI/Oデータは、プレブート期間においてファームウェアによって確保されたメールボックスから読み出されるとしてよい。さまざまな実施形態によると、ファームウェア環境は、通常はOSによってのみ実施される電力管理機能であるが、ハードウェアコンポーネントをスリープモードに遷移させる構成を持つ。さまざまな実施形態によると、ファームウェア環境は、新規または更新後のファームウェアモジュールをプロビジョニングする構成を持つ。
図3を参照すると、実施形態は、例えば、www−intel−com/technology/framework(本文献では、意図せずハイパーリンクが組み込まれないように、ピリオドに代えてハイフンを使用している)で入手可能なプラットフォーム・イノベーション・フレームワーク・フォー・エクステンシブル・ファームウェア・インターフェース(EFI)(検討案、バージョン0.9、2003年9月16日)のモジュールS3レジュームアーキテクチャを結合させるとしてよい。通常、例えば、UEFIプラットフォーム初期化(PI)仕様(バージョン2.3、公開日:2009年5月8日)によると、PI プレEFI(PEI)モジュールおよびPIドライバ・エグゼキューション・エンバイロメント(DXE)ドライバの完全な実装は、S5モード(オフ)からブート中に呼び出されるとしてよい。この結果、プレOSアプリケーションが利用し得るUEFI環境、例えば、UEFIシェル、第三者UEFIドライバ/オプションROM、および、UEFI OSローダが作成される。しかし、S3の間は、S3レジューム時間制約のために、コンピューティングデバイスは、DXEを含まずPEIのサブセットのみを通常含む標準的なPIレジュームフローを実行するとしてよい。このため、S3レジュームモードでは、多くのUEFIドライバフィーチャを利用できない可能性がある。しかし、本開示のさまざまな実施形態では、コンピューティングデバイスは、S3の間にDXE330を実施し得る。このため、図3に示すように、S3は、OSがスリープモードにある間に、UEFIブートサービスアプリケーションを実行するべく、一部のプレOS隔離ページ(または、OSドライバ固定ページ)においてUEFI環境を再形成するべくDXEを含むとしてよい。
図3を参照すると、図示されている実施形態は、UEFIアーキテクチャに応じて実装されるブート−ウェイクサイクルを説明するブロック図300である。当該実施形態では、通常ブート301の間に、電源オンまたはリセットの後、プレメモリ初期化セキュリティ(SEC)フェーズ302(「SEC302」)が開始されるとしてよい。SEC302は、コンピューティングデバイス上で実行される最初のオペレーティングコードのセキュリティチェックをサポートするとしてよい。続いて、当該実施形態では、SEC302は、CPU/メモリ初期化、プレEFI(PEI)フェーズ304(「PEI304」)に遷移するとしてよい。PEI304は、例えば、プロセッサ、チップセットおよびマザーボード用の特定の初期(INIT)コンフィグレーションルーチンをロードして呼び出す方法を提供するとしてよい。PEI304は、メモリを発見して、後期初期化、ドライバ実行環境(DXE)フェーズ306(「DXE306」)にハンドオフされるリソースマップを用意するとしてよい。DXE306は、プロセッサ、チップセットおよびプラットフォームコンポーネントの初期化を行うDXEドライバを呼び出すことを含むとともに、コンソールおよびブートデバイスについてソフトウェア抽象化を提供することを含むとしてよい。310に図示しているように、DXE306は、I/Oコントローラ設定を、ブートスクリプトテーブルの一部として不揮発性ストア(NVS)等の未使用メモリに保存するとしてよい。ブートスクリプトは、スリープモードに遷移する前の状態にコンピューティングデバイスを戻すためにS3レジューム時に再生すべき一連の処理を含むとしてよい。通常のブートスクリプトは、I/OデバイスおよびCPUステート情報を復元する。
319に見られるように、S3レジュームブートでは、SEC320が実施されるとしてよい。続いて、325では、S3 PEIモジュールが、PEIフェーズコンフィグレーションを310のNVSから復元するとしてよい。例えば、基本的なチップセット(CS)、ハードウェア(HW)およびビデオの設定の復元を行うとしてよい。このように、実施形態では、OSがスリープ状態の間、更新されたDXE330がS3において実施されるとしてよい。DXE330は、S3DXE初期プログラムロード(IPL)335、S3DXEコア340、S3DXEファームウェアボリューム(FV)345、S3ブートデバイス選択(BDS)350、S3ネットワークプロキシアクション355、および、S3DXEターミネータ360を含む、幾つかのコンポーネントまたはフェーズによって円滑化されるとしてよい。上述したように、略完全に形成されたUEFIインターフェースのインスタンス化は、DXE330をS3に含めることによって実施されるとしてよい。通常は、少数のUEFIドライバのみをプレブートフェーズで追加する。しかし、ある実施形態によると、OSドライバは、追加のUEFIドライバをUEFI環境に追加するとしてもよい。さまざまな実施形態によると、UEFIドライバは、それぞれ別のソースから収集されるとしてよい。一部の実施形態では、これらの追加されるドライバは、UEFIシステムパーティション上で、または、DXE330の間に利用可能なUEFIドライバの数を大きくする他の方法を用いて、プロビジョニングされるとしてもよい。
図4は、本開示の実施形態を実現するコンピューティングデバイス400の一例を示す図である。さまざまな実施形態において、コンピューティングデバイス400は、バス420を介して結合されるさまざまな素子を備える。図示されているように、これらの素子には、プロセッサ401、メモリ410、チップセット403、ハードウェアデバイス460、フラッシュメモリ等の不揮発性ストレージ430、および、通信インターフェース415が含まれるとしてよい。チップセット403は、上述したファームウェアが設けられているとしてよい。メモリ410は、OS422、上述したメールボックス435およびデバイスドライバ480を含むとしてよい。プロセッサ401は、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ等、ソフトウェアを実行可能な任意の種類のプロセッサであってよい。図4に図示されているプロセッサ401は1つのみであるが、コンピューティングデバイス400には1以上のプロセッサが設けられるとしてよく、プロセッサのうち1以上は、複数のスレッド、複数のコア等を含むとしてよい。さまざまな実施形態によると、BIOS433のファームウェアモジュールは、バス420上で1以上のハードウェアデバイス460のハードウェアインターフェースとデバイスドライバ480との間で通信されるI/O信号をモニタリングすることによって、第1の高電力消費状態と、第2の低電力消費状態との間での1以上のハードウェアデバイス460の遷移に関する情報を決定または収集するとしてよい。スリープモード中、ファームウェアは、上述したように、1以上のネットワークまたはウェイクイベントを処理するとしてよい。
通信インターフェース415は、ネットワークインターフェースカード(NIC)等のネットワーク化インターフェースを含むとしてよい。NICは、例えば、シリアル・オーバー・ローカル・エリア・ネットワーク(LAN)インターフェースを介して、1以上のリモートサーバ482を含むインターネット/ネットワーク475に通信可能に結合されているとしてよい。通信インターフェースは、トランスファー・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)、ハイパーテキスト・トランスファー・プロトコル(HTTP)またはシンプル・オブジェクト・アクセス・プロトコル(SOAP)またはその他の通信プロトコルをサポートするとしてよい。NICは、他の手段を用いて、ネットワークを介して通信を行うとしてもよい。例えば、インテグレーテッド・ドライブ・エレクトロニクス(IDE)リダイレクション(不図示)またはその他の手段を用いるとしてよい。尚、実施形態によっては、ウェイクイベントの処理は、これに限定されないが、特定のパケットタイプに応答すること、ダイナミック・ホスト・コンフィグレーション・プロトコル(DHCP)リースを有効で維持すること、低電力バックグラウンドアクティビィティ、例えば、ウイルスに関してメモリをスキャンすること、および、リモートファイルバックアップ/復元等を維持することを含むとしてよい。図示した実施形態では、チップセット403はさらに、ベーシックインプットアウトプットシステム(BIOS)409用のソフトウェアインターフェースを含むとしてよい。
図5は、さまざまな実施形態に係る、ハードウェアコンポーネントの上方のソフトウェアスタックを示す図である。ある実施形態によると、ユーザOS可視環境において、低電力更新/ダウンロード(LPUD)アプリケーション500および対応するLPUDサービス・アプリケーション・プログラミング・インターフェース(API)502は、独立ソフトウェアベンダ(ISV)アプリケーション・プログラム504、506、508と、シリアル・アドバンスド・トランスポート・アーキテクチャ(SATA)コントローラ512と通信するストレージ・ソフトウェア・スタック510との間に配置されているとしてよい。SATAコントローラは、ストレージデバイス(図5では不図示)と通信する。LPUDアプリケーションは、さまざまなアクティビティをOS不在状態で実行する。このようなアクティビティには、ウイルス署名に関してディスクをスキャンすること(例えば、ウイルス対策クライアント)、ディスクのコンテンツをコンピューティングクラウドバックアップサーバにリモートバックアップすること(例えば、バックアップクライアント)、または、ファイルサーバとして機能すること(例えば、ラップトップのメインOSが中断されており、ラップトップがLPUD状態にある間に、MP3またはMP4を車内インフォテインメントPCに提供すること)が含まれるとしてよい。LPUDサービスAPIは、ファイルシステムに悪影響を与えない方法で、例えば、読出処理等、ディスクへのアクセスを可能とする。このため、メインOSがウェイク状態になっても、ディスクは破損状態になっていない。LPUDサービスAPIはさらに、バックアップ(例えば、クライアントからのデータ送信)およびウイルス対策(AV)スキャン(例えば、署名ファイルの受信)をサポートするべく、送受信処理を実行するソケット・ライブラリを実現する。ユーザOS側は、メインOSがウェイク状態になると、ステータス情報をLPUDから受信するとしてよい。または、ユーザOSは、ユーザOSがビジー状態でない場合に、LPUD状態への遷移を開始してよい。また、ユーザOSは、LPUDアプリケーションの帯域内アクティブ化のためにコンソールを提供する。LPUDアプリケーションは、これに限定されないが、オプトイン、および、LPUD用にどの程度メモリを分離するか判断すること(この物理メモリはユーザOSに対して失われ、性能に影響を与えるので)を含む。
ある実施形態によると、ファームウェア環境では、EFI BIOS514(図4ではBIOS433としてNVS430に格納されている)は、少なくとも複数のコンポーネントを含む。ニュー・テクノロジ・ファイル・システム(NTFS)ドライバ516は、データを読み書きするべく、ハードドライブ518と通信を行う。ネットワークインターフェースコントローラ(NIC)ドライバ520は、コンピューティングデバイスに結合されているネットワークを介してデータの読み書きを行うべく、NIC522と通信を行う。WiFiシム(Shim)524は、UEFI2.3仕様の付録(アペンディクス:Appendix)E.2に定義されているように、UEFI UNDIインターフェース、コンピューティングプラットフォームにおいてワイヤレスNic(W−NIC)へのローデータグラム読み書きを行うコマンドおよびデータブロック(CDB)を実現する。これには、インテル・コーポレーション社製の市販のチップセットのホスト・エクステンデッド・コマンド・インターフェース(HECI)を用いてUNDI CDBがプロキシされる第三者W−NICまたは管理エンジン(ME)ベースのW−NICが含まれるとしてよい。管理エンジン(ME)526は、アウトオブバンドチップセットネットワーク側管理機能を提供するべく含まれているとしてよい。EFI LPUDエージェント528は、コンピューティングデバイスがスリープ状態にある間に、新しいファームウェアモジュールのプロビジョニングおよび/または既存のファームウェアモジュールの更新を調整する。ハイパー・テキスト・トランスポート・プロトコル(HTTP)/HTTPセキュア(HTTPS)プラグイン530は、LibSocketを利用するべく含まれているとしてよく、Lib Cラッパ532は、POSIX同様のプログラミングAPIを抽象化するべく含まれているとしてよい。ファームウェアモジュール534は、本明細書に開示しているように、ISVから取得されて、コンピューティングデバイスにインストールされる新規または更新後のファームウェアモジュールを含む。ある実施形態によると、EFI BIOS514はさらに、S3 DXEイネーブルフラグ536および公開認証鍵538(一実施形態によると、Kpub_s3extension_verificationと呼ばれる)を含む。
ある実施形態によると、コンピューティングデバイスは、工場での製造時に、EFI BIOSファームウェアおよび少なくとも1つのS3 DX IPLファームウェアモジュールがシステムボードにインストールされるとしてよい。EFI BIOSにおけるS3 DXEイネーブルフラグ536は、製造時には「偽」に設定されているとしてよい。コンピューティングデバイスはこの後、ユーザに出荷されるとしてよい。コンピューティングデバイスは、ユーザによって操作されている間、S4状態(ハイバネート)またはS5状態(全電力サイクル)を通って、OSへブートされるとしてよい。ユーザは、OSおよび従来のウェブブラウザを介して、選択されたウェブサイトを訪問してS3 DXEファームウェアボリュームをダウンロードするとしてよい。
図6は、本発明の実施形態に係る、S3 DXEファームウェアボリューム600を示す図である。ファームウェアボリューム600は、ファームウェアボリュームヘッダ608と、ファームウェアボリュームのコンテンツをカバーする暗号署名606とを含むバイナリファイルを有する。ファームウェアボリューム600はさらに、1以上のファームウェアモジュール602を有する。ある実施形態によると、ファームウェアモジュールは、「.efi」ファイル拡張を含む。ある実施形態によると、ファームウェアモジュールは、ドライバを含む。ファームウェアモジュール602は、1以上のS3 DXE IPLファームウェアモジュール用のファームウェアバイナリコードを含む。本発明の実施形態によると、ファームウェアモジュールは、本明細書で説明しているように、ファームウェアボリュームから読み出されて、不揮発性ストレージ430にインストールされて、低電力消費状態の間に実行されるとしてよい。ファームウェアボリュームはさらに、マニフェスト604を有する。マニフェスト604は、実行されると、S3 DXEファームウェアボリュームがコンピューティングデバイスのハードウェアリソースのうちどれ(I/Oデバイス、メモリ等)を消費または利用するかを宣言している。S3 DXEファームウェアボリュームは、事前に第三者によって署名が成されている(例えば、対応する秘密鍵(Kpriv_s3extension_verification)を持つ署名サーバを利用する独立ソフトウェアベンダ(ISV)、相手先商標製品製造(OEM)、または、独立BIOSベンダ(IBV)等)。
OS存在アプリケーション・プログラムはこの後、ユーザがS3 DXE拡張ファームウェアモジュールのインストールを希望しているか否かを質問するようにユーザを促すとしてよい。ユーザがファームウェアモジュールのインストールを希望している場合、ある実施形態では、OS存在アプリケーションが、不揮発性ストレージに格納されているS3 DXEファームウェアボリュームへのポインタを用いてUpdateCapsule UEFIランタイムサービスを呼び出す。再開すると(EFI BIOSファームウェアが、ユーザに対して不透明である必要があるUpdateCapsuleランタイムサービスをどのように実施するかに応じて、ウォームスタートまたはS3状態)、EFI BIOSファームウェアは、不揮発性ストレージにS3 DXEファームウェアボリュームの存在を検出する。
図7は、さまざまな実施形態に係るプロビジョニングプロセスを説明するためのフローチャートである。ある実施形態によると、このプロセスは、図3に示すように、コンピューティングデバイスがS3スリープ状態にある間に実行されるとしてよい。ブロック700において、EFI BIOSファームウェアは、公開認証鍵(Kpub_s3extension_verification)を用いて、S3 DXEファームウェアボリューム上の暗号署名606が正しいか否かを判断する。認証している場合、ブロック702において、EFI BIOSファームウェアは、ファームウェアボリュームマニフェストによって要求されたハードウェアリソースが利用可能か否かを判断するべく確認する。利用可能である場合、ブロック704において、EFI BIOSは、ファームウェアボリューム内のファームウェアモジュールが、既にインストールされている既存のファームウェアに準拠している(例えば、依存関係が満たされている、正しい命令セットアーキテクチャが存在している等)か否かを判断する。準拠している場合、ブロック706において、EFI BIOSは、不揮発性メモリにおいて、ファームウェアボリュームから得られる新規または更新後のファームウェアモジュールが利用するリソースをサポートするために必要な大きさのメモリスペースを確保する。ブロック708において、EFI BIOSは、S3 DXEイネーブルフラグを「真」に設定する。ブロック700、702、および704において、いずれかの判断結果が否定である場合、ブロック710に進む。ブロック710において、EFI BIOSは、システムテーブルエントリを作成する。システムテーブルは、UEFI2.3仕様のセクション4.6に説明されているように、EFIコンフィグレーションテーブルを持つ。これによって、ベンダGUIDによって名前が割り当てられる一連の追加テーブルをインストールすることが可能になる。この場合、EFI BIOSは、成功について「真」となり、失敗について「偽」となるブール値を持つテーブルを作成する。システムテーブルエントリは、UpdateCapsuleランタイムサービスコールに応じて、ファームウェアモジュールの実行に関するステータス値をOSに戻すステータス構造を持つ。これは、システムがS3から遷移してウェイク状態になった後、埋め込みS3処理環境からメインホストOSにステータス情報を戻すために実行される。ブロック712において、S3 DXEイネーブルフラグが真である場合、ブロック714において成功ステータスが返されて、ファームウェアモジュールが実行されるとしてよい。偽である場合、ブロック716において失敗ステータスが返されるとしてよい。
ある実施形態によると、利用されるハードウェアリソースのためにメモリを供給する別の方法として、OSが、S3 DXEファームウェアモジュールが利用するOSページを「ピン」付けまたは確保して、(恐らくはバラバラの状態の)ページリストをUpdateCapsuleランタイムサービスコールに渡す。このため、ファームウェアは、OSメモリマップからメモリを盗むことに代えて、バラバラの状態のページリストをOSから受け取って、これらのページを「ファームウェア確保」として、S3 DXEファームウェアモジュールを開始するために利用する。
ある実施形態によると、OSインストーラは、S3 DXEファームウェアボリュームを、UEFIサービスパーティション上のディレクトリに入れることが出来、ファームウェアボリュームの位置をUpdateCapsuleコールを介して通知する。別の実施形態では、EFI BIOSは、ファームウェアボリュームについて、UEFIシステムパーティションを調べるとしてよい。いずれの場合も、EFI BIOSは、ファームウェアボリュームのコンテンツを、続くS3 DXEアクティブ化で利用するメモリへと複製する前に、当該コンテンツを暗号を利用して承認する。
ある実施形態によると、続くS3レジュームにおいて、S3 DXEイネーブルフラグが真である場合、EFI BIOSは、スリープ状態に戻る前に、および/または、OSレジュームベクトルに制御を渡す前に、S3 DXE IPLおよび対応するファームウェアモジュールをS3 DXEファームウェアボリュームから開始するとしてよい。
このように、低電力消費状態においてOSホストインストーラがファームウェアモジュールダウンロード機能をアクティブ化するワンタッチプロビジョニングモデルを説明した。この機能は、コンピューティングデバイスが、ユーザに出荷された後にアクティブ化されるとしてよい。これによって、S3 DXE IPLコードおよび証明鍵インフラストラクチャを、EFI BIOS内の小さい「フック」として、第三者に提供することが出来るようになるが、出荷後に、OSが中断されたS3 DXE環境において実行するべく、ファームウェアボリュームをコンピューティングデバイスに追加することができる。
本明細書で説明した方法は、任意の特定のハードウェア構成またはソフトウェア構成に限定されるものではない。任意のコンピューティング環境、家庭用電化製品または処理環境において適用され得るであろう。本明細書で説明した方法は、ハードウェア、ソフトウェア、または、これら2つの組み合わせで実現されるとしてよい。本明細書で説明した方法は、プログラミング可能なマシンで実行されるプログラムで実装されるとしてよい。このようなマシンには、モバイルコンピュータあるいは固定型コンピュータ、携帯情報端末(PDA)、セットトップボックス、セルラー方式電話およびポケットベル(登録商標)、家庭用電化製品(DVDプレーヤ、パーソナルビデオレコーダ、パーソナルビデオプレーヤ、衛星受信機、ステレオ受信機、ケーブルテレビ受信機を含む)、および、その他の電子機器がある。このようなマシンは、プロセッサと、プロセッサがアクセス可能な格納媒体(揮発性メモリおよび不揮発性メモリおよび/または格納素子を含む)と、少なくとも1つの入力デバイスと、1以上の出力デバイスとを備えるとしてよい。当業者であれば、本開示はさまざまなシステム構成で実施可能であることに想到するであろう。例えば、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ、独立した家庭用電化製品等で実施可能であることに想到するであろう。本発明は、タスクまたはその一部は、通信ネットワークで結合されている、リモート処理デバイスで実行され得る分散型コンピューティング環境でも実施可能である。
プログラム命令は、当該命令がプログラミングされている汎用処理システムまたは特定用途向け処理システムに、本明細書で説明した処理のうち一部を実行させるために用いられるとしてよい。これに代えて、これらの処理は、当該処理を実行するためのハードワイヤードロジックを含む特定のハードウェアコンポーネントによって実行されるとしてもよい。または、プログラミングされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントを組み合わせることによって、実行されるとしてもよい。本明細書で説明した方法は、処理システムまたは他の電子デバイスに当該方法を実行させるべく当該処理システムまたは他の電子デバイスをプログラミングするために用いられる命令が格納されている機械アクセス可能媒体を含むコンピュータプログラム製品として供給されるとしてよい。本明細書で用いる「コンピュータ可読媒体」という用語は、コンピューティングデバイスで実行される命令列を格納または符号化することができ、コンピューティングデバイスに、本明細書で説明した方法のいずれか1つを実行させる任意の媒体を含むとしてよい。「コンピュータ可読媒体」という用語は、これらに限定されないが、ソリッドステートメモリおよび光ディスクおよび磁気ディスクを含むとする。さらに、一の形態または別の形態としての(例えば、プログラム、プロシージャ、プロセス、アプリケーション、モジュール、ロジック等)ソフトウェアといえば、関連技術分野では、動作を実行するもの、または、結果を発生させるものを意味することが普通である。このような表現は単に、処理システムによってソフトウェアが実行されると、プロセッサは、動作を実行するか、または、結果を発生させることを記述するための簡単な表現である。

Claims (23)

  1. コンピューティングデバイスにファームウェアモジュールをプロビジョニングする方法であって、
    前記コンピューティングデバイスを第1の高電力消費状態から第2の低電力消費状態へと遷移させる場合、プレブート期間において利用可能な1以上のファームウェア機能を含むファームウェア環境を再インスタンス化する段階と、
    ファームウェアボリューム上の暗号署名が承認されるか否かを、前記ファームウェア環境によって判断する段階と、
    前記ファームウェアボリュームのマニフェストによって要求されている前記コンピューティングデバイスのハードウェアリソースが利用可能か否かを、前記ファームウェア環境によって判断する段階と、
    前記ファームウェアボリュームの少なくとも1つのファームウェアモジュールが前記ファームウェア環境のインストールされたファームウェアに準拠しているか否かを、前記ファームウェア環境によって判断する段階と、
    前記少なくとも1つのファームウェアモジュールによって利用されるリソースを収容するスペースをメモリ内に確保する段階と、
    前記第2の低電力消費状態にある前記コンピューティングデバイスで、前記少なくとも1つのファームウェアモジュールを実行する段階と
    を備える方法。
  2. 前記コンピューティングデバイスが前記第1の高電力消費状態にある場合、前記コンピューティングデバイスに前記ファームウェアボリュームをダウンロードする段階をさらに備える請求項1に記載の方法。
  3. 前記ファームウェアボリュームは、ヘッダと、前記ファームウェアボリュームの内容をカバーする暗号署名と、前記少なくとも1つのファームウェアモジュールによって利用されるべき前記コンピューティングデバイスのハードウェアリソースを宣言するマニフェストと、前記少なくとも1つのファームウェアモジュールとを含む請求項1または2に記載の方法。
  4. 前記少なくとも1つのファームウェアモジュールは、1以上のEFI S3 DXE IPLファームウェアドライバのためのバイナリコードを含む請求項3に記載の方法。
  5. 前記ファームウェア環境は、前記コンピューティングデバイスの製造時に偽に設定されるS3 DXE IPLイネーブルフラグを含み、
    前記方法はさらに、前記暗号署名が承認され、前記ハードウェアリソースが利用可能で、前記少なくとも1つのファームウェアモジュールが準拠している場合、前記S3 DXE IPLイネーブルフラグを真に設定する段階を備える請求項4に記載の方法。
  6. 続くS3レジュームにおいて、前記S3 DXE IPLイネーブルフラグが真の場合、オペレーティングシステムレジュームベクトルに制御を渡す前に、前記S3 DXE IPLおよび対応付けられているファームウェアモジュールを前記ファームウェアボリュームから開始する段階をさらに備える請求項5に記載の方法。
  7. 前記ファームウェアボリュームは、前記コンピューティングデバイスの製造者以外によって、提供されるとともに署名され、前記ファームウェアボリュームは、ユーザに出荷された後に、前記コンピューティングデバイスにインストールされる請求項1から6のいずれか一項に記載の方法。
  8. 前記少なくとも1つのファームウェアモジュールの実行に関するステータス値を、前記コンピューティングデバイスのオペレーティングシステムに戻すステータス構造を持つシステムテーブルエントリを作成する段階をさらに備える請求項1から7のいずれか一項に記載の方法。
  9. プロセッサと、
    前記プロセッサによって操作されるファームウェア環境と
    を備えるコンピューティングデバイスであって、
    前記ファームウェア環境は、第1の電力レベルを消費する動作状態へと前記コンピューティングデバイスをブートさせるために用いられる複数のファームウェア機能を含み、
    前記ファームウェア環境はさらに、前記コンピューティングデバイスが前記動作状態から前記第1の電力レベルよりも低い第2の電力レベルを消費するスリープ状態へと遷移する場合、前記コンピューティングデバイスをブートさせるために用いられる前記複数のファームウェア機能の少なくともサブセットを含むように再インスタンス化され、
    前記ファームウェア環境は、再インスタンス化されると、
    ファームウェアボリューム上の暗号署名が承認されるか否かを判断し、
    前記ファームウェアボリュームのマニフェストによって要求されている前記コンピューティングデバイスのハードウェアリソースが利用可能か否かを判断し、
    前記ファームウェアボリュームの少なくとも1つのファームウェアモジュールが前記ファームウェア環境のインストールされたファームウェアに準拠しているか否かを判断し、
    前記少なくとも1つのファームウェアモジュールによって利用されるリソースを収容するスペースをメモリ内に確保し、
    前記第2の電力レベルを消費するスリープ状態にある前記コンピューティングデバイスで、前記少なくとも1つのファームウェアモジュールを実行するコンピューティングデバイス。
  10. 前記プロセッサは、前記コンピューティングデバイスが前記第1の電力レベルを消費する動作状態にある場合、前記ファームウェアボリュームを前記コンピューティングデバイスにダウンロードする請求項9に記載のコンピューティングデバイス。
  11. 前記ファームウェアボリュームは、ヘッダと、前記ファームウェアボリュームの内容をカバーする暗号署名と、前記少なくとも1つのファームウェアモジュールによって利用されるべき前記コンピューティングデバイスのハードウェアリソースを宣言するマニフェストと、前記少なくとも1つのファームウェアモジュールとを含む請求項9または10に記載のコンピューティングデバイス。
  12. 前記少なくとも1つのファームウェアモジュールは、1以上のEFI S3 DXE IPLファームウェアドライバのためのバイナリコードを含む請求項11に記載のコンピューティングデバイス。
  13. 前記ファームウェア環境は、前記コンピューティングデバイスの製造時に偽に設定されるS3 DXE IPLイネーブルフラグを含み、
    前記ファームウェア環境は、前記暗号署名が承認され、前記ハードウェアリソースが利用可能で、前記少なくとも1つのファームウェアモジュールが準拠している場合、前記S3 DXE IPLイネーブルフラグを真に設定する請求項12に記載のコンピューティングデバイス。
  14. 続くS3レジュームにおいて、前記S3 DXE IPLイネーブルフラグが真の場合、前記ファームウェア環境は、オペレーティングシステムレジュームベクトルに制御を渡す前に、前記S3 DXE IPLおよび対応付けられているファームウェアモジュールを前記ファームウェアボリュームから開始する請求項13に記載のコンピューティングデバイス。
  15. 前記ファームウェアボリュームは、前記コンピューティングデバイスの製造者以外によって、提供されると共に署名され、前記ファームウェアボリュームは、ユーザに出荷された後に、前記コンピューティングデバイスにインストールされる請求項9から14のいずれか一項に記載のコンピューティングデバイス。
  16. 前記ファームウェア環境は、前記少なくとも1つのファームウェアモジュールの実行に関するステータス値を、前記コンピューティングデバイスのオペレーティングシステムに戻すステータス構造を持つシステムテーブルエントリを作成する請求項9から15のいずれか一項に記載のコンピューティングデバイス。
  17. コンピューティングデバイスに、
    前記コンピューティングデバイスを第1の高電力消費状態から第2の低電力消費状態へと遷移させる場合、プレブート期間において利用可能な1以上のファームウェア機能を含むファームウェア環境を再インスタンス化する手順と、
    ファームウェアボリューム上の暗号署名が承認されるか否かを前記ファームウェア環境によって判断する手順と、
    前記ファームウェアボリュームのマニフェストによって要求されている前記コンピューティングデバイスのハードウェアリソースが利用可能か否かを前記ファームウェア環境によって判断する手順と、
    前記ファームウェアボリュームの少なくとも1つのファームウェアモジュールが前記ファームウェア環境のインストールされたファームウェアに準拠しているか否かを前記ファームウェア環境によって判断する手順と、
    前記少なくとも1つのファームウェアモジュールによって利用されるリソースを収容するスペースをメモリ内に確保する手順と、
    前記第2の低電力消費状態にある前記コンピューティングデバイスで、前記少なくとも1つのファームウェアモジュールを実行する手順と
    を実行させて、前記コンピューティングデバイスにファームウェアモジュールをプロビジョニングするためのプログラム。
  18. 前記コンピューティングデバイスが前記第1の高電力消費状態にある場合、前記コンピューティングデバイスに前記ファームウェアボリュームをダウンロードする手順を前記コンピューティングデバイスにさらに実行させる請求項17に記載のプログラム。
  19. 前記ファームウェアボリュームは、ヘッダと、前記ファームウェアボリュームの内容をカバーする暗号署名と、前記少なくとも1つのファームウェアモジュールによって利用されるべき前記コンピューティングデバイスのハードウェアリソースを宣言するマニフェストと、前記少なくとも1つのファームウェアモジュールとを含む請求項17または18に記載のプログラム。
  20. 前記少なくとも1つのファームウェアモジュールは、1以上のEFI S3 DXE IPLファームウェアドライバのためのバイナリコードを含む請求項19に記載のプログラム。
  21. 前記ファームウェア環境は、前記コンピューティングデバイスの製造時に偽に設定されるS3 DXE IPLイネーブルフラグを含み、
    前記暗号署名が承認され、前記ハードウェアリソースが利用可能で、前記少なくとも1つのファームウェアモジュールが準拠している場合、前記S3 DXE IPLイネーブルフラグを真に設定する手順を前記コンピューティングデバイスにさらに実行させる請求項20に記載のプログラム。
  22. 続くS3レジュームにおいて、前記S3 DXE IPLイネーブルフラグが真の場合、オペレーティングシステムレジュームベクトルに制御を渡す前に、前記S3 DXE IPLおよび対応付けられているファームウェアモジュールを前記ファームウェアボリュームから開始する手順を前記コンピューティングデバイスにさらに実行させる請求項21に記載のプログラム。
  23. 前記少なくとも1つのファームウェアモジュールの実行に関するステータス値を、前記コンピューティングデバイスのオペレーティングシステムに戻すステータス構造を持つシステムテーブルエントリを作成する手順を前記コンピューティングデバイスにさらに実行させる請求項17から22のいずれか一項に記載のプログラム。
JP2013535155A 2010-11-16 2011-11-07 オペレーティングシステム(os)不在サービス環境においてファームウェアをプロビジョニングする方法 Expired - Fee Related JP5606633B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/947,485 US8607040B2 (en) 2010-11-16 2010-11-16 Method of provisioning firmware in an operating system (OS) absent services environment
US12/947,485 2010-11-16
PCT/US2011/059615 WO2012067882A2 (en) 2010-11-16 2011-11-07 Method of provisioning firmware in an operating system (os) absent services environment

Publications (2)

Publication Number Publication Date
JP2013543627A true JP2013543627A (ja) 2013-12-05
JP5606633B2 JP5606633B2 (ja) 2014-10-15

Family

ID=46048900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013535155A Expired - Fee Related JP5606633B2 (ja) 2010-11-16 2011-11-07 オペレーティングシステム(os)不在サービス環境においてファームウェアをプロビジョニングする方法

Country Status (8)

Country Link
US (1) US8607040B2 (ja)
EP (1) EP2641168B1 (ja)
JP (1) JP5606633B2 (ja)
KR (1) KR101512252B1 (ja)
CN (1) CN103221919B (ja)
AU (1) AU2011329330B2 (ja)
TW (1) TWI524205B (ja)
WO (1) WO2012067882A2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9721101B2 (en) 2013-06-24 2017-08-01 Red Hat, Inc. System wide root of trust chaining via signed applications
US8607040B2 (en) 2010-11-16 2013-12-10 Intel Corporation Method of provisioning firmware in an operating system (OS) absent services environment
WO2012083486A1 (en) 2010-12-21 2012-06-28 Intel Corporation System and method for power management
JP5775149B2 (ja) * 2011-03-23 2015-09-09 パナソニック株式会社 ステーション、ターゲット装置、イニシエータ装置、通信システム及び通信方法
US8843915B2 (en) * 2011-07-28 2014-09-23 Hewlett-Packard Development Company, L.P. Signature-based update management
US20130042231A1 (en) * 2011-08-10 2013-02-14 Ford Global Technologies, Llc Methods and Apparatus for Software Updating
TW201337760A (zh) * 2012-03-09 2013-09-16 Phoenix Tech Ltd 呼叫基本輸入輸出系統之韌體執行時間服務之方法
US9031712B2 (en) * 2012-06-30 2015-05-12 Intel Corporation Remote management and control of vehicular functions via multiple networks
US9600423B2 (en) * 2012-07-26 2017-03-21 Hewlett-Packard Development Company, L.P. Periodic access of a hardware resource
US9189225B2 (en) 2012-10-16 2015-11-17 Imprivata, Inc. Secure, non-disruptive firmware updating
US20140208133A1 (en) * 2013-01-23 2014-07-24 Dell Products L.P. Systems and methods for out-of-band management of an information handling system
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
US9588572B2 (en) 2013-08-28 2017-03-07 Via Technologies, Inc. Multi-core processor having control unit that generates interrupt requests to all cores in response to synchronization condition
TWI643130B (zh) * 2013-09-12 2018-12-01 系微股份有限公司 用於在uefi安全開機資料庫中自動註冊任選rom的系統以及方法
JP6272991B2 (ja) * 2013-10-31 2018-01-31 インテル コーポレイション プリブートファームウェア更新のための選択的パワーマネジメント
DE102014008479A1 (de) * 2014-06-07 2015-12-17 Audi Ag Kraftfahrzeug-Steuergerät mit Stromsparmodus für eine Parkphase
EP3161657B1 (en) 2014-06-24 2020-07-22 Intel Corporation Firmware sensor layer
US9785801B2 (en) * 2014-06-27 2017-10-10 Intel Corporation Management of authenticated variables
US20160092877A1 (en) * 2014-09-25 2016-03-31 Yen Hsiang Chew Secure user authentication interface technologies
CN106293898A (zh) * 2015-05-20 2017-01-04 张远虎 多线程设计方法
US9965270B2 (en) * 2015-07-01 2018-05-08 Quanta Computer Inc. Updating computer firmware
US10228930B2 (en) * 2016-01-28 2019-03-12 Microsoft Technology Licensing, Llc Offloading network connectivity and execution tasks to an assistant device
WO2017131712A1 (en) * 2016-01-28 2017-08-03 Hewlett-Packard Development Company, L.P. Thresholds on scripts executable by unified extensible firmware interface systems
US10922116B2 (en) 2016-02-12 2021-02-16 Hewlett Packard Enterprise Development Lp Creating operating system volumes
CN107085459B (zh) * 2016-02-14 2020-03-31 华为技术有限公司 一种电源管理方法以及系统
JP2017162283A (ja) * 2016-03-10 2017-09-14 富士通株式会社 スマート装置、スワップ方法及びスワッププログラム
US10171452B2 (en) * 2016-03-31 2019-01-01 International Business Machines Corporation Server authentication using multiple authentication chains
US10146606B2 (en) * 2016-04-06 2018-12-04 Dell Products, Lp Method for system debug and firmware update of a headless server
US11243782B2 (en) * 2016-12-14 2022-02-08 Microsoft Technology Licensing, Llc Kernel soft reset using non-volatile RAM
US10262158B1 (en) * 2017-07-27 2019-04-16 American Megatrends, Inc. Restricting the use of a firmware tool to a specific platform
AU2018329224B2 (en) 2017-09-06 2023-03-16 Absolute Software Corporation Secure firmware interface
AU2018384097B2 (en) * 2017-12-13 2022-03-10 Absolute Software Corporation Firmware publication of multiple binary images
TWI647617B (zh) * 2018-01-23 2019-01-11 緯創資通股份有限公司 電子裝置與其韌體更新方法
US11379214B2 (en) * 2019-03-29 2022-07-05 Intel Corporation Runtime firmware activation for memory devices
US11068035B2 (en) * 2019-09-12 2021-07-20 Dell Products L.P. Dynamic secure ACPI power resource enumeration objects for embedded devices
WO2021141606A1 (en) * 2020-01-10 2021-07-15 Hewlett-Packard Development Company, L.P. Change of firmware settings
US11126518B1 (en) * 2020-03-16 2021-09-21 Quanta Computer Inc. Method and system for optimal boot path for a network device
US11392365B2 (en) * 2020-12-14 2022-07-19 International Business Machines Corporation Optimizing device update scheduling
US11960389B2 (en) 2021-10-29 2024-04-16 International Business Machines Corporation Compatibility testing of a component with an unknown software and/or firmware version in a multi-component system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691234B1 (en) * 2000-06-16 2004-02-10 Intel Corporation Method and apparatus for executing instructions loaded into a reserved portion of system memory for transitioning a computer system from a first power state to a second power state
US20060136756A1 (en) * 2004-12-22 2006-06-22 Intel Corporation Low power firmware
JP2009524121A (ja) * 2005-11-21 2009-06-25 インテル コーポレイション システム動作前の動的広告板サービス
US20100241839A1 (en) * 2009-03-20 2010-09-23 Phoenix Technologies Ltd Loading operating systems using memory segmentation and ACPI based context switch

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7017040B2 (en) * 2003-12-04 2006-03-21 Intel Corporation BIOS update file
US7185190B2 (en) * 2003-12-29 2007-02-27 Intel Corporation Pushing capabilities into firmware by an operating system
US7818614B2 (en) * 2004-10-25 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for reintroducing a processor module to an operating system after lockstep recovery
US20060149713A1 (en) * 2005-01-06 2006-07-06 Sabre Inc. System, method, and computer program product for improving accuracy of cache-based searches
US7373537B2 (en) 2005-06-28 2008-05-13 Intel Corporation Response to wake event while a system is in reduced power consumption state
CN1992611B (zh) * 2005-12-30 2010-05-12 联想(北京)有限公司 移动计算装置及其接收数据包的方法
US20090132839A1 (en) 2007-11-15 2009-05-21 Rothman Michael A Method and device to handle denial of service attacks on wake events
US8230237B2 (en) 2007-12-06 2012-07-24 Intel Corporation Pre-boot environment power management
US8806231B2 (en) * 2009-12-22 2014-08-12 Intel Corporation Operating system independent network event handling
US8607040B2 (en) 2010-11-16 2013-12-10 Intel Corporation Method of provisioning firmware in an operating system (OS) absent services environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691234B1 (en) * 2000-06-16 2004-02-10 Intel Corporation Method and apparatus for executing instructions loaded into a reserved portion of system memory for transitioning a computer system from a first power state to a second power state
US20060136756A1 (en) * 2004-12-22 2006-06-22 Intel Corporation Low power firmware
JP2009524121A (ja) * 2005-11-21 2009-06-25 インテル コーポレイション システム動作前の動的広告板サービス
US20100241839A1 (en) * 2009-03-20 2010-09-23 Phoenix Technologies Ltd Loading operating systems using memory segmentation and ACPI based context switch

Also Published As

Publication number Publication date
US8607040B2 (en) 2013-12-10
JP5606633B2 (ja) 2014-10-15
KR20130107313A (ko) 2013-10-01
EP2641168A4 (en) 2015-01-21
CN103221919B (zh) 2017-04-12
EP2641168B1 (en) 2019-08-21
TWI524205B (zh) 2016-03-01
WO2012067882A3 (en) 2012-07-05
AU2011329330B2 (en) 2016-05-19
EP2641168A2 (en) 2013-09-25
TW201234209A (en) 2012-08-16
AU2011329330A1 (en) 2013-07-04
KR101512252B1 (ko) 2015-04-14
CN103221919A (zh) 2013-07-24
WO2012067882A2 (en) 2012-05-24
US20120124357A1 (en) 2012-05-17

Similar Documents

Publication Publication Date Title
JP5606633B2 (ja) オペレーティングシステム(os)不在サービス環境においてファームウェアをプロビジョニングする方法
US9489029B2 (en) Operating system independent network event handling
RU2435200C2 (ru) Быстрая загрузка операционной системы из выключенного состояния
US9361128B2 (en) Fast computer startup
US7162629B2 (en) Method to suspend-and-resume across various operational environment contexts
US8543849B2 (en) Fast computer startup
JP2009516244A (ja) 直接コンピューティング経験
WO2023098052A1 (zh) 一种服务器运维方法、装置、设备及存储介质
US8468388B2 (en) Restoring programs after operating system failure
WO2022036670A1 (en) Methods and apparatus to perform an enhanced s3 protocol to update firmware with a boot script update
US20230305834A1 (en) Methods and apparatus to perform a pseudo-s3 protocol to update firmware and/or activate new firmware with a warm reset
US11921582B2 (en) Out of band method to change boot firmware configuration
US11841773B2 (en) Persistence of learned profiles
KR101666619B1 (ko) 임베디드 디바이스 환경에서의 메모리 관리 방법 및 그 시스템

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140611

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: 20140701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140730

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140805

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140826

R150 Certificate of patent or registration of utility model

Ref document number: 5606633

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees