特許第6918994号(P6918994)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ レノボ・シンガポール・プライベート・リミテッドの特許一覧

<>
  • 特許6918994-情報処理装置および情報処理方法 図000002
  • 特許6918994-情報処理装置および情報処理方法 図000003
  • 特許6918994-情報処理装置および情報処理方法 図000004
  • 特許6918994-情報処理装置および情報処理方法 図000005
  • 特許6918994-情報処理装置および情報処理方法 図000006
  • 特許6918994-情報処理装置および情報処理方法 図000007
  • 特許6918994-情報処理装置および情報処理方法 図000008
  • 特許6918994-情報処理装置および情報処理方法 図000009
  • 特許6918994-情報処理装置および情報処理方法 図000010
  • 特許6918994-情報処理装置および情報処理方法 図000011
  • 特許6918994-情報処理装置および情報処理方法 図000012
  • 特許6918994-情報処理装置および情報処理方法 図000013
  • 特許6918994-情報処理装置および情報処理方法 図000014
  • 特許6918994-情報処理装置および情報処理方法 図000015
  • 特許6918994-情報処理装置および情報処理方法 図000016
  • 特許6918994-情報処理装置および情報処理方法 図000017
  • 特許6918994-情報処理装置および情報処理方法 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6918994
(24)【登録日】2021年7月27日
(45)【発行日】2021年8月11日
(54)【発明の名称】情報処理装置および情報処理方法
(51)【国際特許分類】
   G06F 8/65 20180101AFI20210729BHJP
   G06F 21/56 20130101ALI20210729BHJP
【FI】
   G06F8/65
   G06F21/56
【請求項の数】6
【全頁数】18
(21)【出願番号】特願2020-2207(P2020-2207)
(22)【出願日】2020年1月9日
(65)【公開番号】特開2021-111093(P2021-111093A)
(43)【公開日】2021年8月2日
【審査請求日】2020年1月9日
(73)【特許権者】
【識別番号】505205731
【氏名又は名称】レノボ・シンガポール・プライベート・リミテッド
(74)【代理人】
【識別番号】100161207
【弁理士】
【氏名又は名称】西澤 和純
(74)【代理人】
【識別番号】100169764
【弁理士】
【氏名又は名称】清水 雄一郎
(74)【代理人】
【識別番号】100175824
【弁理士】
【氏名又は名称】小林 淳一
(74)【代理人】
【識別番号】100206081
【弁理士】
【氏名又は名称】片岡 央
(72)【発明者】
【氏名】馬 克
(72)【発明者】
【氏名】笠松 栄太郎
(72)【発明者】
【氏名】萩原 幹雄
(72)【発明者】
【氏名】堀之内 康大
【審査官】 金田 孝之
(56)【参考文献】
【文献】 特開2011−175352(JP,A)
【文献】 米国特許出願公開第2016/0055113(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00 − 8/38
G06F 8/60 − 8/77
G06F 9/44 − 9/445
G06F 9/451
G06F 21/56 −21/57
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムを備える情報処理装置であって、
第1のファームウェアと第2のファームウェアを記憶可能なメモリと、
ランタイムファームウェアを記憶可能なシステムメモリを有し、ファームウェアの認証および前記ファームウェアを用いた処理を実行可能なコントローラと、
を備え、
前記コントローラは、
前記コンピュータシステムのシャットダウン後、かつ、前記コンピュータシステムが起動する前に、前記ランタイムファームウェアを前記メモリに前記第2のファームウェアとして記憶し、
前記ランタイムファームウェアを前記メモリに記憶する前に、前記コンピュータシステムに当該コンピュータシステムの起動を阻止するための信号を出力し、
前記コンピュータシステムが起動されると前記システムメモリに前記第1のファームウェアをロードして、前記第1のファームウェアを認証し、
前記第1のファームウェアの認証に成功するとき、当該第1のファームウェアを用いた処理を開始し、
前記第1のファームウェアの認証に失敗するとき、前記第2のファームウェアを用いた処理を開始する
情報処理装置。
【請求項2】
前記コントローラは、
前記第1のファームウェアの認証に失敗するとき、
前記第2のファームウェアが前記第1のファームウェアとして前記メモリに記憶されるように書き換える
請求項1に記載の情報処理装置。
【請求項3】
前記コントローラは、
前記第1のファームウェアの認証に失敗するとき、
前記コンピュータシステムをシャットダウンまたは再起動し、前記システムメモリから認証に失敗した前記第1のファームウェアを消去し、
再度前記コンピュータシステムが起動された際に、前記システムメモリに書き換えられた前記第1のファームウェアをロードする
請求項2に記載の情報処理装置。
【請求項4】
前記システムメモリは、揮発性メモリであり、
前記コントローラは、前記システムメモリから認証に失敗した前記第1のファームウェアを消去する際、当該システムメモリへの通電を停止する
請求項3に記載の情報処理装置。
【請求項5】
前記コントローラと前記メモリを接続するプラットフォームコントローラを備え、
前記メモリは、
前記コンピュータシステムのファームウェアをさらに記憶する
請求項1から請求項のいずれか一項に記載の情報処理装置。
【請求項6】
コンピュータシステムと、
ランタイムファームウェアを記憶可能なシステムメモリを有し、ファームウェアの認証および前記ファームウェアを用いた処理を実行可能なコントローラと、
第1のファームウェアと第2のファームウェアを記憶可能なメモリと、を備える情報処理装置の情報処理方法であって、
前記コントローラは、
前記コンピュータシステムのシャットダウン後、かつ、前記コンピュータシステムが起動する前に、前記ランタイムファームウェアを前記メモリに前記第2のファームウェアとして記憶する第1のステップと、
前記ランタイムファームウェアを前記メモリに記憶する前に、前記コンピュータシステムに当該コンピュータシステムの起動を阻止する信号を出力する第2のステップと、
前記コンピュータシステムが起動されると前記システムメモリに前記第1のファームウェアをロードして、前記第1のファームウェアを認証する第3のステップと、
前記第1のファームウェアの認証に成功する時、当該第1のファームウェアを用いた処理を開始し、
前記第1のファームウェアの認証に失敗するとき、前記第2のファームウェアを用いた処理を開始する第4のステップと、を有する
情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
パーソナルコンピュータ(PC:Personal Computer)をはじめとする多くの情報処理装置は、主たるコンピュータシステム(以下、ホストシステム、単にホストまたはシステムと呼ぶこともある)とは別個に、特定の機能を実現するための組み込み制御器(EC:Embedded Controller)を備える。ECを構成するハードウェアの動作を制御するためのソフトウェアとして独自のファームウェア(以下、ECFW)が用いられる。ECは、起動時において所定のファームウェア(FW:firmware)ローダに基づく処理を開始し、フラッシュROM(Read Only Memory)に予め記憶されておいたECFWイメージ(ECFW IMG:EC Firmware Image)を読み出し、読み出したECFW IMGをECに内蔵されるSRAM(Static Random Access Memory)に記憶する。但し、フラッシュROMに記憶されるECFW IMGは、悪意あるプログラム(マルウェア;malware)により破損するリスクがある。そのため、認証に成功したECFW IMGをプライマリECFW IMGとし、プライマリECFW IMGを複製してバックアップECFW IMGとしてフラッシュROMに記憶しておくことが提案されていた。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】“Platform Firmware Resiliency Guidelines”,NIST(National Institute of Standards and Technology) Special Publication 800−193,May 2018,U.S. Department of Commerce,[令和1年12月10日検索],インターネット<URL: https://doi.org/10.6028/NIST.SP.800-193>
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、プライマリECFW IMGとバックアップECFW IMGのいずれも破損した場合には、FWローダに基づく処理が中断してしまうために、情報処理装置が依然として利用できなくなる可能性が残される。例えば、予期しない脆弱性(vulnerability)を悪用してマルウェアがホストシステムに感染する場合には、ホストシステムによりECFW IMGが格納される領域が上書き(overwrite)される可能性がある。上書きによって、2つのECFW IMGがいずれも破損するとEC14はいずれのECFWの認証に失敗するため、ホストシステムが起動できなくなるという課題が残されていた。
【課題を解決するための手段】
【0005】
本発明は上記の課題を解決するためになされたものであり、本発明の一態様に係る情報処理装置は、コンピュータシステムを備える情報処理装置であって、第1のファームウェアと第2のファームウェアを記憶可能なメモリと、ランタイムファームウェアを記憶可能なシステムメモリを有し、ファームウェアの認証および前記ファームウェアを用いた処理を実行可能なコントローラと、を備え、前記コントローラは、前記処理の実行を開始する前または前記処理の実行中に、前記ランタイムファームウェアを前記メモリに前記第2のファームウェアとして記憶し、前記コンピュータシステムが起動されると前記システムメモリに前記第1のファームウェアをロードして、前記第1のファームウェアを認証し、前記第1のファームウェアの認証に成功する時、当該第1のファームウェアを用いた処理を開始し、前記第1のファームウェアの認証に失敗するとき、前記第2のファームウェアを用いた処理の実行を開始する。
【0006】
上記の情報処理装置において、前記コントローラは、前記第1のファームウェアの認証に失敗するとき、前記第2のファームウェアが前記第1のファームウェアとして前記メモリに記憶されるように書き換えてもよい。
【0007】
上記の情報処理装置において、前記コントローラは、前記第1のファームウェアの認証に失敗するとき、前記コンピュータシステムをシャットダウンまたは再起動し、前記システムメモリから認証に失敗した前記第1のファームウェアを消去し、再度前記前記コンピュータシステムが起動された際に、前記システムメモリに書き換えられた前記第1のファームウェアをロードしてもよい。
【0008】
上記の情報処理装置は、前記システムメモリは、揮発性メモリであり、前記コントローラは、前記システムメモリから認証に失敗した前記第1のファームウェアを消去する際、当該システムメモリへの通電を停止してもよい。
【0009】
上記の情報処理装置において、前記コンピュータシステムは、自部への通電が停止または供給電力が低下するとき起動が制限され、前記コントローラは、自部のシステムメモリのリセット前に、前記通電の停止または前記供給電力の低下を通知してもよい。
【0010】
上記の情報処理装置において、前記コントローラと前記メモリを接続するプラットフォームコントローラを備え、前記メモリは、前記コンピュータシステムのファームウェアをさらに記憶してもよい。
【0011】
上記の情報処理装置において、前記処理の実行を開始する前または前記処理の実行中の期間は、前記コンピュータシステムがシャットダウンまたは再起動するときを含み、前記コントローラは、前記シャットダウンまたは前記再起動する際、前記ランタイムファームウェアを前記メモリに前記第2のファームウェアとして記憶した後に前記システムメモリをリセットしてもよい。
【0012】
本発明の第2態様に係る情報処理方法は、コンピュータシステムと、ランタイムファームウェアを記憶可能なシステムメモリを有し、ファームウェアの認証および前記ファームウェアを用いた処理を実行可能なコントローラと、第1のファームウェアと第2のファームウェアを記憶可能なメモリと、を備える情報処理装置の情報処理方法であって、前記コントローラは、前記処理の実行を開始する前または前記処理の実行中に、前記ランタイムファームウェアを前記メモリに前記第2のファームウェアとして記憶する第1のステップと、前記コンピュータシステムが起動されると前記システムメモリに前記第1のファームウェアをロードして、前記第1のファームウェアを認証する第2のステップと、前記第1のファームウェアの認証に成功するとき、当該第1のファームウェアを用いた処理を開始し、前記第1のファームウェアの認証に失敗するとき、前記第2のファームウェアを用いた処理を開始する第3のステップと、を有する情報処理方法である。
【発明の効果】
【0013】
本発明の実施形態によれば、メモリに格納されたファームウェアが破損しても、動作を回復することができる。
【図面の簡単な説明】
【0014】
図1】本実施形態に係る情報処理装置の概要を示す説明図である。
図2】本実施形態に係る情報処理装置のハードウェア構成例を示すブロック図である。
図3】本実施形態に係るランタイムリカバリ処理を開始する状況の一例を示す説明図である。
図4】本実施形態に係るランタイムリカバリ処理の第1のステップの例を示す説明図である。
図5】本実施形態に係るランタイムリカバリ処理の第2のステップの例を示す説明図である。
図6】本実施形態に係るランタイムリカバリ処理の第3のステップの例を示す説明図である。
図7】本実施形態に係るランタイムリカバリ処理の第4のステップの例を示す説明図である。
図8】本実施形態に係るランタイムリカバリ処理の第5のステップの例を示す説明図である。
図9】本実施形態に係るランタイムリカバリ処理の第6のステップの例を示す説明図である。
図10】本実施形態に係るECのリセット時または電源オフ時におけるECFW IMGの消去例を示す説明図である。
図11】本実施形態に係るランタイムリカバリ処理期間の例を示す説明図である。
図12】本実施形態に係るホストシステムにおけるBIOSを用いた処理の例を示すフローチャートである。
図13】本実施形態に係るECFWを用いた処理の例を示すフローチャートである。
図14】本実施形態に係るFWローダを用いたランタイムリカバリ処理の例を示すフローチャートである。
図15】従来のECの構成例を示す説明図である。
図16】従来の情報処理装置の構成例を示す説明図である。
図17】従来のフラッシュROMの使用形態の一例を示す説明図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態の概要について、図面を参照して説明する。
図1は、本実施形態に係る情報処理装置10の概要を示す説明図である。
情報処理装置10は、コンピュータシステムを備え、ハードウェアとしてPCH11と、フラッシュROM12と、EC14と、を含んで構成される。
PCH(Platform Controller Hub)11は、自部に接続するデバイスとの各種のデータの入出力を制御するためのI/Oコントローラ117を備える。I/Oコントローラ117は、フラッシュROM12と接続するためのSPIフラッシュコントローラ117sを備える。
フラッシュROM(Read Only Memory)12には、ディスクリプタ(Descriptor)の他に、ホストシステム(単に、ホストとも呼ばれる)のBIOS(Basic Input-output System)、プライマリECFW IMG(EC Firmware Image)およびバックアップECFW IMGをフラッシュROM12に記憶可能とする。ディスクリプタは、個々のファームウェアの格納位置を示すコードを含む。
【0016】
EC(Embedded Controller)14は、CPU141(後述)と、SRAM143と、ブートROM145を含んで構成される。SRAM(Static Random Access Memory)143は、主にデータを格納するデータ領域(data space)と、実行に係るプログラム(実行プログラム)を格納するコード領域(code space)を有する。実行プログラムとしてランタイム(run-time)ECFW IMG)が記憶される。ブートROM145にはブートローダを予め保存させておく。ブートローダは、FW(Firmware)ローダを含んで構成される。CPU(Central Processing Unit)141は、FWローダに記述された指令で指示される処理として、フラッシュROM12からプライマリECFW IMGを読み出し、読み出したプライマリECFW IMGに対して認証処理を行う。認証に成功するとき、CPU141は、プライマリECFW IMGを用いた処理の実行を開始する。また、CPU141は、プライマリECFW IMGを用いた処理の実行中または、次に実行を再開する前に、その時点で処理が実行中であるランライムECFW IMGをフラッシュROM12の予備領域(reserved space)にバックアップECFW IMGとして記憶する。認証に失敗する場合には、CPU141は、バックアップECFW IMGを読み出し、読み出したバックアップECFW IMGを用いた処理を開始する。
【0017】
よって、EC14に備わるSRAM143には、予めフラッシュROM12に記憶させておいた既存のバックアップECFW IMGに代えて、ランタイムECFW IMGがロード(load)される。ランタイムECFW IMGは、フラッシュROM12に予め記憶される既存のバックアップECFW IMGとは異なり、ホストシステムからはアクセスできないSRAM143に記憶される。そのため、ランタイムECFW IMGは、ホストシステムに感染したマルウェアの実行により破損されるリスクは低い。特にホストシステムの動作停止中にランタイムECFW IMGをフラッシュROM12にバックアップECFW IMGとして記憶することで、プライマリECFW IMGとバックアップECFW IMGの両者の破損のために情報処理装置10が正常に動作を再開できなくなるリスクを回避することができる。なお、ECFW IMGのIMG(イメージ)とは、イメージファイルの略称である。イメージファイルとは、相互間で階層構造(ファイル構造)を有する複数のファイルからなるセットを指す。本願では、ECFW IMGからIMGもしくはイメージを省略して、単にECFWまたはFWと呼ぶことがある。
【0018】
次に、情報処理装置10のハードウェア構成例について説明する。
図2は、本実施形態に係る情報処理装置10のハードウェア構成例を示すブロック図である。情報処理装置10は、PCH11、フラッシュROM12、システムメモリ131、LCD133、HDD135、EC14およびキーボード151を含んで構成される。
PCH11は、各種のデータの入出力を制御し、CPU111の機能を支援するチップセットである。PCH11は、CPU111、GPU113、メモリコントローラ115およびI/Oコントローラ117を備える。
これらのデバイスのうち、CPU111、メモリコントローラ115およびシステムメモリ131は、システムデバイスSDを構成する。システムデバイスは、情報処理装置10としての機能の発揮に要するコンピュータシステム(つまり、ホストシステム)を構成する最低限のデバイスである。
【0019】
CPU(Central Processing Unit)111は、所定のプログラムを実行し、情報処理装置10の全体の機能を制御するプロセッサである。本願では、各種のプログラムに記述された指令で指示される種々の処理を実行することを、プログラムの実行、またはプログラムを実行する、などと呼ぶ。CPU111は、HDD135に記憶されたBIOS、OS、デバイスドライバ、ユーティリティなどのプログラムを読み出し、システムメモリ131にロードする。CPU111は、システムメモリ131にロードしたプログラムを実行する。
【0020】
GPU(Graphics Processing Unit)113は、画像表示に関連する処理を実行するプロセッサである。GPU113は、CPU111から入力された描画命令を処理し、処理した描画情報をビデオメモリに書き込むとともに、ビデオメモリからこの描画情報を読み出して、LCD133に表示データとして出力する。
メモリコントローラ115は、自部に接続される各種のメモリとのインタフェースを備える。メモリコントローラ115は、例えば、システムメモリ131およびHDD135のそれぞれとの間で各種のデータを入出力する。
【0021】
I/Oコントローラ117は、自部に接続されるデバイスを用いて各種のデータを入出力するためのインタフェースを備える。I/Oコントローラ117は、USB(Universal Serial Bus)、シリアルATA(Advanced Technology Attachment)、PCI(Peripheral Component Interconnect)バス、PCI−Expressバス、およびLPC(Low Pin Count)バスなどのインタフェースを備え、複数のデバイスを接続可能とする。I/Oコントローラ117は、フラッシュROM12との接続に用いられるSPIバスを接続するためのSPI(Serial Peripheral Interface)フラッシュコントローラ117s(図1図16)と、EC14との接続に用いられるeSPI(extended Serial Peripheral Interface)バスを接続するためのeSPIマスタコントローラ117e(図16)とを備える。
【0022】
フラッシュROM12は、主にファームウェアの記憶に用いられる記憶媒体である。フラッシュROM12に記憶されるファームウェアには、BIOSとECFWがある。BIOSは、システムデバイスへの電力供給中に実行され、システムデバイスに接続される他のデバイスとの低レベルの入出力を行うためのプログラムである。ECFWは、EC14のCPU141により実行され、EC14の機能を発揮するために実行される。フラッシュROM12は、システムデバイスに係るファームウェアと、ECFWとで共用されるためシェアドフラッシュ( shared flash)として機能する。フラッシュROM12には、ディスクリプタがさらに記憶される。ディスクリプタは、個々のファームウェアを示す識別情報と、フラッシュROM12におけるその格納位置を示すアドレスが記述される。フラッシュROM12は、電気的に書き換え可能な不揮発性メモリ(non-volatile memory)である。フラッシュROM12は、SPIフラッシュコントローラ117sとSPIバスを用いて接続するためのSPIコントローラインタフェースを備える。
【0023】
システムメモリ131は、CPU111が実行する実行プログラムを読み込むコード領域、実行プログラムの実行に要するパラメータなどの設定データや実行により取得されたデータを記録するためのデータ領域として用いられるメモリである。システムメモリ131は、例えば、1個または複数個のDRAM(Dynamic Random Access Memory)チップを含んで構成される。
LCD(Liquid Crystal Display;液晶ディスプレイ)133は、GPU113から入力される表示データに基づく表示情報を表示する。表示情報は、画像、文字、記号、図形のいずれかまたはこれらの組み合わせを含む。
HDD(Hard Disk Drive)135は、各種のプログラムやデータを保存する補助記憶装置である。保存されるプログラムには、OS、デバイスドライバ、サービス/ユーティリティ(以下、ユーティリティ)、アプリケーションプログラム(以下、アプリ)などが含まれる。HDD135は、電気的に書き換え可能な不揮発性メモリである。
【0024】
EC14は、例えば、ホストシステムの動作状態に関わらず、自部に接続される各種のデバイスの動作状態の制御、情報処理装置10を構成する各デバイスへの電力供給の制御などを行う。図1に示す例では、キーボード151が接続され、EC14は、キーボード151が受け付けた操作に基づく操作入力情報をシステムに出力する。EC14は、CPU141、SRAM143およびブートROM145を含んで構成される。
【0025】
CPU141は、ECFWを実行してその機能を実現する。但し、CPU141は、自部への電力の供給開始を検出するときブート処理を開始する。ブート処理とは、プログラム(例えば、CPU141では、ECFW)を実行可能な状態にするための一連の処理である。ブート処理には、例えば、自部に接続される接続デバイスの検出、初期化、ECFWのフラッシュROM12からの読み出し(ロード)、読み出したECFWの検証、および検証に成功したECFWのSRAM143への記憶などの処理が含まれる。CPU141は、ホストシステムの動作モードごとに各デバイスに必要とする電力の供給を制御する。例えば、CPU141は、ホストシステムの動作停止中には、少なくともシステムデバイスとその制御下で動作するデバイス(例えば、CPU111、GPU113、メモリコントローラ115、システムメモリ131、LCD133、およびHDD135)への電力の供給を停止する。その場合でも、CPU141は、I/Oコントローラ117、フラッシュROM12、およびEC14への電力供給を維持してもよい。
ECFWの修復、再起動に係るランタイムリカバリ(run-time recovery)処理については、後述する。
【0026】
SRAM(Static Random Access memory)143は、データ領域とコード領域を有する。コード領域は、CPU141が実行する実行プログラムを読み込む領域を含む。データ領域は、実行プログラムの実行に要するパラメータなどの設定データや実行により取得されたデータを記録するための領域を含む。SRAM143は、自部への電力の供給が停止されると記憶内容が失われる揮発性メモリ(volatile memory)である。
【0027】
ブートROM145は、主にブートローダ(boot loader)を予め記憶する不揮発性メモリである。ブートローダは、CPU141によるブート処理の実行に用いられるプログラムである。ブートローダには、FWローダ145fが含まれる。FWローダ145fは、ECFWのフラッシュROM12からの読み出し、ECFWの検証およびECFWのSRAM143への記憶をCPU141が実行するためのプログラムである。CPU141は、自部への電力の供給開始後、ブート処理の開始前にブートROM145からブートローダを読み出し、ブートローダの検証に成功した後、読み出したブートローダをSRAM143に記憶する。これにより、CPU141は、ブート処理の実行を開始することができる。本願では、実行を開始することを起動と呼ぶことがある。
【0028】
なお、従来の情報処理装置では、図15に例示されるように、EC14は、データRAM145と内部フラッシュROM145iを備え、内部フラッシュROM145iに予めECFW IMGを記憶しておくことが通例であった。これに対し、本実施形態に係る情報処理装置10は、図2図16に例示されるように、EC14において内部フラッシュROM145iを備えず、EC14とは別個にフラッシュROM12を備える。フラッシュROM12には、ECFW IMGに限らず、他種のファームウェア(例えば、ホストシステムのBIOS、ME(Management Engine)ファームウェア)やそれらの格納位置を示すディスクリプタともに記憶しておく。EC14のCPU141は、起動時にFWローダ145fに基づく処理を実行し、PCH11を経由してフラッシュROM12からECFW IMGを読み出し、EC14に内蔵されるSRAM143のコード領域143bにECFW IMGを記憶する。CPU141は、フラッシュROM12にアクセスする際、例えば、eSPIバスとSPIバスを用い、eSPIマスタコントローラ117eとSPIフラッシュコントローラ117sを経由する。よって、各種のファームウェアを記憶したフラッシュROM12は、ホストシステムとEC14とで共用される。このようにフラッシュROM12を共用する仕組みはMAFS(Master Attached Flash Sharing)と呼ばれ、その目的で用いられるフラッシュROM12が上記のようにシェアドフラッシュと呼ばれることがある。本実施形態に係る情報処理装置10は、この仕組みを採用することで、従来の情報処理装置よりも製造コストが低減しメンテナンスが容易となる。
【0029】
但し、フラッシュROM12は、ホストシステムからもアクセス可能であるため、ホストシステムの動作によりECFWが破損するリスクは免れない。例えば、ホストシステムは情報処理装置10の外部からマルウェアに感染され、感染されたマルウェアの実行によってECFW IMGの一部が削除または書き換えられるおそれがある。そこで、CPU141は、起動時にFWローダに基づく処理を実行して所定のプロトコル(例えば、標準楕円曲線ディジタル署名アルゴリズム(ECDSA:Elliptic Curve Digital Signature Algorithm)を用いてECFW IMGを認証し、その完全性(integrity)を検証する。CPU141は、認証に成功する場合、SRAM143にロードしたECFW IMGに基づく処理の実行を開始し、認証に失敗する場合、CPU141は、ECFW IMGに基づく処理を実行しない。但し、ECFW IMGが破損してしまうとEC14が動作できなくなり、ひいては情報処理装置10の動作が再開できなくなってしまう。そのため、ECFW IMGの破損が検出されるとき、ECFW IMGを修復して、情報処理装置10の動作を正常に再開させることが望まれる。そこで、本実施形態では、CPU141は後述するランタイムリカバリ処理において、ECFW IMGの実行中であって次に再起動する前に、その処理に係るECFW IMGであるランタイムファームウェアをフラッシュROM12にバックアップECFW IMG(図17)として、プライマリECFW IMGとは別個に格納する。
【0030】
そして、CPU141は、起動時におけるFWローダに基づく処理においてプライマリECFW IMGの破損が検出される場合、EC14はプライマリECFW IMGの認証に失敗したと判定し、その後、CPU141は、バックアップECFW IMGを読み出し、読み出したバックアップECFW IMGに対する認証に成功するとき、そのバックアップECFW IMGに基づく処理を開始する。
【0031】
次に、本実施形態に係るランタイムリカバリ処理の例について説明する。
図3図9は、それぞれ本実施形態に係るランタイムリカバリ処理を説明するための説明図である。ランタイムリカバリ処理は、EC14のCPU141により実行され、主にFWローダ145fに記述された指令で指示される一連の処理である。
図3に示すように、ランタイムリカバリ処理は、CPU141がECFW IMGの実行中または遅くとも次の再起動前に、例えば、フラッシュROM12に記憶されたプライマリECFW IMGが破損したと判定するときに開始すればよい。ランタイムリカバリ処理は、ステップS102−S112を有し、ステップS102−S112はそれぞれ図4図9に対応する。なお、図3図9では、PCH11、CPU141、ブートROM145の図示が省略されている。
【0032】
(ステップS102)CPU141は、その時点で実行中のランタイムECFW IMGをSRAM143のコード領域143bから読み取り、読み取ったランタイムECFW IMGをフラッシュROM12の予備領域にバックアップECFW IMGとして記憶する(図4)。その後、ステップS104の処理に進む。
(ステップS104)CPU141は、フラッシュROM12からプライマリECFW IMGを読み取り、SRAM143のコード領域143bに記憶(ロード)する。CPU141は、読み取ったプライマリECFW IMGに対して所定の認証処理を行って、その完全性を検証する。CPU141は、認証処理において、例えば、ECDSAを用いることができる。CPU141は、認証処理に失敗するときプライマリECFW IMGが破損していると判定し(図5)、ステップS106の処理に進む。
認証処理に成功するときプライマリECFW IMGが破損していないと判定し、以降のステップの処理に進まずに、プライマリECFW IMGの実行を開始する。
【0033】
(ステップS106)CPU141は、フラッシュROM12に記憶されたバックアップECFW IMGを、プライマリECFW IMGが記憶されていた記憶領域(プライマリ領域)に複製(コピー)することで、プライマリECFW IMGを修復する(図6)。その後、ステップS108の処理に進む。
(ステップS108)CPU141は、フラッシュROM12に記憶されたバックアップECFW IMGを消去する(図7)。その後、ステップS110の処理に進む。
(ステップS110)CPU141は、EC14の動作の再起動(リセット)が指示されるとき、またはEC14への電力供給を停止するとき(電源オフ)、揮発性メモリであるSRAM143に記憶されたプライマリECFW IMGが消去される(図8)。その後、ステップS112の処理に進む。
【0034】
(ステップS112)CPU141は、自部の動作の再起動を開始またはEC14への電力供給を再開(電源オン)するとき、ブートROM145からブートローダを読み取り、読み取ったブートローダをSRAM143のコード領域143bにロードする。その後、CPU141は、ブートローダに含まれるFWローダ145fの実行を開始する。FWローダ145fを用いた処理として、CPU141は、フラッシュROM12から複製されたプライマリECFW IMGを読み取り、読み取ったECFW IMGをSRAM143のコード領域143bに記憶する。CPU141は、プライマリECFW IMGに対して所定の認証処理を行って、その完全性を検証する。この場合には、自部の再起動または電源オフとなる直前に実行中であったランタイムECFW IMGがロードされるので、認証処理の成功が期待される(図9)。CPU141は、ロードされたプライマリECFW IMGの実行を開始する。その後、ステップS102の処理に戻る。
【0035】
なお、ランタイムリカバリ処理において、ステップS108の処理を省略し、バックアップECFW IMGを消去せずにフラッシュROM12に記憶させたまま残してもよい。その場合には、ステップS112において、プライマリECFW IMGに対する認証処理に失敗するとき、CPU141は、バックアップECFW IMGを読み取り、SRAM143にロードし、バックアップECFW IMGに対して所定の認証処理を実行してもよい。認証処理に成功するとき、CPU141は、バックアップECFW IMGの実行を開始する。これにより、システムの冗長性を強化することができる。
【0036】
次に、本実施形態に係るランタイムリカバリ処理の開始タイミングの例について説明する。図10に示すようにEC14のリセットまたは電源オフによりSRAM143への電力供給が停止されると、EC14がフラッシュROM12にプライマリECFW IMGを記憶する前にSRAM143に記憶されたデータ(ランタイムECFW IMGを含む)が消去されてしまう。そこで、CPU141は、EC14をリセットまたは電源オフとする前に予めプライマリECFW IMGに対して認証処理を実行しておくとともに、認証処理の失敗が検出される前にランタイムECFW IMGをフラッシュROM12にバックアップしておくべきである。
【0037】
また、ECFWを更新する際、更新後のECFWを有効にするためにEC14はリセット処理を行う。より具体的には、ECFWを更新する際、ホストシステムはシャットダウン処理を行い、その後、EC14のCPU141はEC14への電力供給を停止し、再起動する(リブート)。CPU141は、ブート処理の過程で更新後のECFWをフラッシュROM12から読み出してSRAM143にロードし、ロードしたECFWについて認証処理を行う。CPU141は、認証処理に成功したとき更新後のECFWの実行を開始する。そして、ホストシステムは、自システムについてブート処理を開始する(リブート)。
他方、ホストシステムがシャットダウン処理を行った後、CPU141はEC14への電力供給を停止する(電源オフ)。その後、ユーザの操作に応じて起動指示を検出するとき、EC14のCPU141は再起動し、再起動が完了した後、ホストシステムは自システムのブート処理を開始する。
【0038】
そこで、CPU141は、図11に例示されるように、ホストシステムからシャットダウンまたは再起動が通知されるときにランタイムリカバリ処理を開始すればよい。再起動を行う場合には、CPU141は、上記のランタイムリカバリ処理のステップS102〜S112の全てをランタイムリカバリ期間中に実行する。ホストシステムのシャットダウンによりEC14への電力供給が停止される場合には、CPU141は、上記のランタイムリカバリ処理のステップS102〜S110をランタイムリカバリ期間中に実行する。
【0039】
次に、本実施形態に係るランタイムリカバリ処理に係る各部の動作について説明する。
図12は、ホストシステムにおけるBIOSを用いた処理の例を示すフローチャートである。
(ステップS122)PCH11のCPU111は、EC14に再起動の実行指示を通知するよう要求されたか否かを判定する。要求されたと判定する場合(ステップS122 YES)、ステップS124の処理に進む。要求されていないと判定する場合(ステップS122 NO)、ステップS126の処理に進む。
【0040】
その前提として、PCH11のCPU111は、例えば、所定のユーティリティを実行してシステムの動作状態として再起動、シャットダウン等を指示するための指示画面をLCD133に表示させ、自装置に接続される入力部(図示せず)から動作状態を示す操作信号の入力を待ち受ける。また、EC14のCPU141は、例えば、自部に接続された電源ボタンの押下の検出に応じて、PCH11に再起動を示す操作信号を出力する。
PCH11のCPU111は、再起動を示す操作信号の入力を検出するとき、EC14への再起動の実行指示の通知をBIOSに要求する。PCH11のCPU111は、再起動を示す操作信号の入力を検出するとき、EC14への再起動の実行指示の通知をBIOSに要求する。なお、CPU111は、例えば、シャットダウンを示す操作信号の入力を検出するとき、またはEC14から低電力通知信号(後述)の入力を検出するとき、システム(ホスト)のシャットダウンが指示されたと判定する。
【0041】
(ステップS124)PCH11のCPU111は、EC14に再起動の実行指示を通知する。その後、ステップS128の処理に進む。
(ステップS126)CPU111は、シャットダウンが指示されたか否かを判定する。シャットダウンが指示されたと判定する場合(ステップS126 YES)、ステップS128の処理に進む。シャットダウンが指示されていないと判定する場合(ステップS128 NO)、ステップS122の処理に戻る。
(ステップS128)CPU111は、システムのシャットダウンをEC14に通知し、自システムのシャットダウンを開始する。その後、図12に示す処理を終了する。
【0042】
図13は、ECFWを用いた処理の例を示すフローチャートである。
(ステップS142)EC14のCPU141は、PCH11のCPU111から再起動の実行指示を待ち受ける。再起動の実行指示が入力される場合(ステップS142 YES)、ステップS144の処理に進む。再起動の実行指示が入力されない場合(ステップS142 NO)、ステップS148の処理に進む。
(ステップS144)CPU141は、リセットフラグの値を1に設定する。リセットフラグは、シャットダウン後の再起動の要否を示す設定情報である。リセットフラグの値が1とは、シャットダウン後の再起動を示す。リセットフラグの値が0とは、シャットダウン後の再起動を不要とすることを示す。その後、ステップS146の処理に進む。
【0043】
(ステップS146)CPU141は、PCH11のCPU111からシステムのシャットダウン通知を待ち受ける。シャットダウンが通知される場合(ステップS146 YES)、ステップS150の処理に進む。シャットダウンが通知されない場合(ステップS146 NO)、ステップS146の処理を繰り返す。
(ステップS148)CPU141は、PCH11のCPU111からシステムのシャットダウン通知を待ち受ける。シャットダウンが通知される場合(ステップS148 YES)、ステップS150の処理に進む。シャットダウンが通知されない場合(ステップS148 NO)、ステップS142の処理に戻る。
【0044】
(ステップS150)CPU141は、PCH11のCPU111に低電力通知信号batLow#を出力する。低電力通知信号batLow#は、二次電池から供給される電力がシステムデバイスの動作のための所定の電力の下限以下に低下したことを通知するための信号である。CPU111は、EC14から低電力通知信号batLow#が入力されることで、再起動が阻止される。その後、ステップS152の処理に進む。
なお、ステップS146、S148におけるシャットダウン通知が、直前にCPU111に出力した低電力通知信号batLow#に応じて出力された信号である場合には、ステップS150の処理が省略されてもよい。これにより、低電力通知信号batLow#の重複が防止される。
(ステップS152)CPU141は、ブートローダの起動を指示し、FWローダに基づくランタイムリカバリ処理の実行を開始させる。CPU141は、再起動直後にリセットフラグの初期値を0と設定する。その後、図13の処理を終了する。
【0045】
図14は、FWローダを用いたランタイムリカバリ処理の例を示すフローチャートである。
(ステップS162)EC14のCPU141は、ブートローダの起動指示を待ち受ける。起動指示を検出するとき(ステップS162 YES)、ブートローダの起動を開始することで、ブートローダに含まれるFWローダの実行を開始する。その後、ステップS164の処理に進む。起動指示が検出されないとき(ステップS164 NO)、ステップS162の処理を繰り返す。
(ステップS164)CPU141は、SRAM143から読み出したランタイムECFW IMGをフラッシュROM12の予備領域にバックアップECFW IMGとして記憶する。その後、ステップS166の処理に進む。
【0046】
(ステップS166)CPU141は、フラッシュROM12からプライマリECFW IMGを読み出し、SRAM143にロードする。その後、ステップS168の処理に進む。
(ステップS168)CPU141は、ECDSAを用いてプライマリECFW IMGに対して認証処理を行う。その後、ステップS170の処理に進む。
(ステップS170)CPU141は、認証処理に成功したか否かを判定する。認証処理に成功した場合(ステップS170 YES)、ステップS176の処理に進む。認証処理に失敗した場合(ステップS170 NO)、ステップS172の処理に進む。
【0047】
(ステップS172)CPU141は、フラッシュROM12の予備領域に記憶したバックアップECFW IMGをフラッシュROM12のプライマリ領域にプライマリECFW IMGとして複製する。その後、ステップS174の処理に進む。
(ステップS174)CPU141は、フラッシュROM12の予備領域に記憶したバックアップECFW IMGを消去する。その後、ステップS176の処理に進む。
【0048】
(ステップS176)CPU141は、設定されたリセットフラグの値が1であるか否かを判定する。1である場合(ステップS176 YES)、ステップS178の処理に進む。0である場合(ステップS176 NO)、ステップS180の処理に進む。
(ステップS178)CPU141は、再起動する。その後、図14に示す処理を終了する。
(ステップS180)CPU141は、シャットダウン処理を行い、処理の完了後、再起動せずに電源オフのまま図14に示す処理を終了する。
【0049】
なお、図14の処理のうち、ステップS174の処理は省略されてもよい。ステップS174の処理を省略する場合、CPU141は、再起動直後にプライマリECFW IMGを読み出し、読み出したプライマリECFW IMGに対して認証処理を行ってもよい。認証処理に成功する場合、CPU141は、プライマリECFW IMGの実行を開始する。認証処理に失敗する場合、CPU141は、バックアップECFW IMGを読み出し、読み出したバックアップECFW IMGの実行を開始してもよい。
【0050】
以上に説明したように、本実施形態に係る情報処理装置10は、コンピュータシステムを備え、第1のファームウェア(例えば、プライマリECFW IMG)と第2のファームウェア(バックアップECFW IMG)を記憶するメモリ(例えば、フラッシュROM12)とを備える。情報処理装置10は、第1のファームウェアの認証に成功するとき、当該第1のファームウェアを用いた処理の実行を開始するコントローラ(例えば、EC14)を備える。そして、コントローラは、第1のファームウェアを用いた処理の実行を開始する前またはその処理の実行中に、当該処理に用いるファームウェア(ランタイムECFW IMG)をメモリに第2のファームウェアとして記憶し、第1のファームウェアの認証に失敗するとき、第2のファームウェアを用いた処理の実行を開始する。
この構成により、コンピュータシステムからのアクセスにより第1のファームウェアが損傷して認証に失敗しても、コンピュータシステムからアクセスできないコントローラの動作に用いられていたファームウェアをもって修復される。そのため、コントローラの処理、ひいてはコンピュータシステムの動作が正常に回復する。
【0051】
また、コントローラは、第1のファームウェアの認証に失敗するとき、当該コントローラの処理の実行時のファームウェアをメモリに記憶してもよい。
この構成により、メモリに記憶された第1のファームウェアの認証の失敗が検出された時点で、メモリに記憶されたコントローラのファームウェアが修復される。そのため、ファームウェアの修復を要しない時点における、無用な修復を回避することができる。
【0052】
また、コントローラは、コンピュータシステムがシャットダウンまたは再起動するとき、処理の実行時のランタイムファームウェアをメモリに記憶した後、自部のシステムメモリをリセットしてもよい。
この構成により、シャットダウンまたは再起動の直前に、ランタイムファームウェアをメモリに退避することができる。再起動が完了するまでメモリはコンピュータシステムからアクセスされないため、メモリに退避されたランタイムファームウェアが損傷するリスクを低減することができる。
【0053】
また、コントローラのシステムメモリは、揮発性メモリであり、コントローラは、そのシステムメモリをリセットするとき、当該システムメモリへの通電を停止してもよい。
この構成により、システムメモリに記憶され、認証に失敗したファームウェアを迅速に消去し、修復されたファームウェアを用いた処理を確実に開始することができる。
【0054】
また、コンピュータシステムは、自部への通電が停止または供給電力が低下するとき起動が制限され、コントローラは、自部のシステムメモリのリセット前に、通電の停止または供給電力の低下を通知してもよい。
この構成により、コントローラは、システムメモリのリセット前にコンピュータシステムの起動を制限することができる。そのため、コンピュータシステムの動作によりシステムウェアが損傷するリスクを低減することができる。
【0055】
また、情報処理装置10は、コントローラとメモリを接続するプラットフォームコントローラ(例えば、PCH11)を備え、メモリは、コンピュータシステムのファームウェアをさらに記憶してもよい。
この構成により、メモリはコンピュータシステムのファームウェアとコントローラのファームウェアとの間で共用された環境(例えば、シェアドフラッシュ)であっても、コントローラのファームウェアの修復がなされる。そのため、コンピュータシステムとコントローラでメモリを共用することで、ファームウェアのメンテナンスに係る労力を軽減しながら、コントローラのファームウェアの修復を実現することで、情報処理装置10の可用性(availability)を維持することができる。
【0056】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。上記の実施形態において説明した各構成は、矛盾しない限り任意に組み合わせることができる。
【0057】
例えば、PCH11にI/Oコントローラ117が含まれていれば、PCH11においてCPU111とメモリコントローラ115は省略され、PCH11とは別体であってもよい。GPU113も、PCH11とは別体であってもよい。
上記の説明では、情報処理装置10が主にノートPCである場合を例にしたが、これには限られない。情報処理装置10は、デスクトップPC、タブレット端末、スマートフォン、などのいずれの形態で実現されてもよい。
【符号の説明】
【0058】
10…情報処理装置、11…PCH、12…フラッシュROM、14…EC、111…CPU、113…GPU、115…メモリコントローラ、117…I/Oコントローラ、131…システムメモリ、133…LCD、135…HDD、141…CPU、143…SRAM、145…ブートROM、151…キーボード
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17