(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【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、タブレット端末、スマートフォン、などのいずれの形態で実現されてもよい。