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

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

▶ インテル コーポレイションの特許一覧

<>
  • 特許5925909-セキュアなエラーハンドリング 図000002
  • 特許5925909-セキュアなエラーハンドリング 図000003
  • 特許5925909-セキュアなエラーハンドリング 図000004
  • 特許5925909-セキュアなエラーハンドリング 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5925909
(24)【登録日】2016年4月28日
(45)【発行日】2016年5月25日
(54)【発明の名称】セキュアなエラーハンドリング
(51)【国際特許分類】
   G06F 12/14 20060101AFI20160516BHJP
   G06F 11/22 20060101ALI20160516BHJP
   G06F 11/30 20060101ALI20160516BHJP
【FI】
   G06F12/14 510A
   G06F11/22 310Z
   G06F11/30 305D
【請求項の数】21
【全頁数】12
(21)【出願番号】特願2014-545882(P2014-545882)
(86)(22)【出願日】2011年12月29日
(65)【公表番号】特表2015-505396(P2015-505396A)
(43)【公表日】2015年2月19日
(86)【国際出願番号】US2011067966
(87)【国際公開番号】WO2013101122
(87)【国際公開日】20130704
【審査請求日】2014年6月10日
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ナチムトゥ,ムルガサミー ケイ.
(72)【発明者】
【氏名】クマール,モハン ジェイ.
(72)【発明者】
【氏名】イグゾー,セオドロス
(72)【発明者】
【氏名】ヴァルガス,アンドリュー
(72)【発明者】
【氏名】クラムコテ,ラジェンドラ
【審査官】 脇岡 剛
(56)【参考文献】
【文献】 米国特許出願公開第2008/0288815(US,A1)
【文献】 米国特許出願公開第2007/0061634(US,A1)
【文献】 特開昭63−140342(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 11/22
G06F 11/30
(57)【特許請求の範囲】
【請求項1】
オペレーティングシステムと、
基本入出力システムとハードウェアプロセッサ備えるプラットフォームであり、前記ハードウェアプロセッサはエラーレジスタを含む、プラットフォームと、
を備え、
記オペレーティングシステムは、前記基本入出力システムを介して前記エラーレジスタにセキュアな方式で書き込みを行い、前記基本入出力システムは、前記オペレーティングシステムと前記ハードウェアプロセッサとの間のエラーシグナル送信を、前記ハードウェアプロセッサにおけるコードカバレッジエラー注入能力のサポートに基づいて有効及び/又は無効にする、装置。
【請求項2】
前記プラットフォームは更にシステム管理モード機能を備え、前記オペレーティングシステムは、前記システム管理モード機能を介して前記エラーレジスタにセキュアな方式で書き込みを行う、請求項1に記載の装置。
【請求項3】
前記基本入出力システムが前記システム管理モード機能を備える、請求項に記載の装置。
【請求項4】
前記オペレーティングシステムは、プラットフォームファームウェアを介して前記エラーレジスタにセキュアな方式で書き込みを行う、請求項1に記載の装置。
【請求項5】
前記エラーレジスタは、マシンチェックアーキテクチャレジスタ及びエラーシグナル送信レジスタのうち少なくとも1つを備える、請求項1に記載の装置。
【請求項6】
前記エラーレジスタは、前記プラットフォームを介して有効にされる及び/又は無効にされる、請求項1に記載の装置。
【請求項7】
前記エラーレジスタは、前記プラットフォームによってのみ有効にされる及び/又は無効にされるマシンチェックアーキテクチャレジスタである、請求項1に記載の装置。
【請求項8】
前記プラットフォームは、前記オペレーティングシステムと前記ハードウェアプロセッサとの間のエラーシグナル送信を制御する、請求項1に記載の装置。
【請求項9】
前記エラーレジスタは、前記プラットフォームにより制御されるマシンチェックアーキテクチャレジスタであり、前記ハードウェアプロセッサは更に、前記プラットフォームにより制御されるエラーシグナル送信レジスタを備える、請求項1に記載の装置。
【請求項10】
前記オペレーティングシステムは、前記プラットフォームを介して前記エラーレジスタに書き込む、請求項1に記載の装置。
【請求項11】
エラー注入が、前記プラットフォームを介して実施される、請求項1に記載の装置。
【請求項12】
オペレーティングシステムとハードウェアプロセッサとの間のエラーシグナル送信を、前記ハードウェアプロセッサにおけるコードカバレッジエラー注入能力のサポートに基づいて、有効及び/又は無効にするステップと、
前記オペレーティングシステムから、前記ハードウェアプロセッサ内のエラーレジスタに、プラットフォームの基本入出力システムを介してセキュアな方式で書き込みを行うステップ
を含む、方法。
【請求項13】
前記基本入出力システムが、前記オペレーティングシステムのシステム管理モード機能を備える、請求項12に記載の方法。
【請求項14】
前記オペレーティングシステムから、前記エラーレジスタに、プラットフォームファームウェアを介してセキュアな方式で書き込みを行うステップ、
更に含む請求項12に記載の方法。
【請求項15】
前記エラーレジスタは、マシンチェックアーキテクチャレジスタ及びエラーシグナル送信レジスタのうち少なくとも1つを含む、請求項12に記載の方法。
【請求項16】
前記プラットフォームを介して前記エラーレジスタを有効にする及び/又は無効にするステップ、
更に含む請求項12に記載の方法。
【請求項17】
前記エラーレジスタはマシンチェックアーキテクチャレジスタであり、前記プラットフォームのみが前記マシンチェックアーキテクチャレジスタを有効にする及び/又は無効にするステップ、
更に含む請求項12に記載の方法。
【請求項18】
前記プラットフォームを介して、前記オペレーティングシステムと前記ハードウェアプロセッサとの間のエラーシグナル送信を制御するステップ、
更に含む請求項12に記載の方法。
【請求項19】
前記エラーレジスタはマシンチェックアーキテクチャレジスタであり、前記プラットフォームが前記マシンチェックアーキテクチャレジスタと前記ハードウェアプロセッサ内のエラーシグナル送信レジスタとを制御するステップ、
更に含む請求項12に記載の方法。
【請求項20】
前記オペレーティングシステムから、前記エラーレジスタに、前記プラットフォームを介して書き込むステップ、
更に含む請求項12に記載の方法。
【請求項21】
前記プラットフォームを介して1又は複数のエラーを注入するステップ、
更に含む請求項12に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は概してセキュアなエラーハンドリングに関する。
【背景技術】
【0002】
サーバシステム(特に、拡張可能な、スケーラブルな、ミッションクリティカルなシステム)は、より良好な信頼性(Reliability)、可用性(Availability)及び保守性(Serviceability)(RAS)のエクスペリエンスのためのエラー検出、エラー訂正、エラーリカバリ及びエラーロギングの能力を備えている。
【0003】
マシンチェックアーキテクチャ(MCA)が、インテルXeon(登録商標)プロセッサにおいて用いられて、プロセッサ関連のエラーを上位レイヤソフトウェアにレポートする。マシンチェックアーキテクチャは、典型的には、コア、キャッシュなどのプロセッサコンポーネント関連のエラーに限定される。しかしながら、メモリコントローラ、PCIeルートコンプレックスの、Xeon(登録商標)プロセッサソケットへの統合とともに、マシンチェックアーキテクチャのスコープは、すべてのこれらのコンポーネントからのエラーハンドリング及びRASイベントを包含するようにレポートされている。マシンチェックアーキテクチャにおける別の進化が、エラーリカバリであり、これにおいて、プロセッサ/プラットフォームの観点から訂正できないエラーが、リカバリのため、オペレーティングシステム(OS)又は仮想マシンモニタ(VMM)に提供される。
【0004】
上記のイノベーションを考慮すると、プラットフォーム上のエラーハンドリング、エラーレポーティング及びエラーリカバリがオペレーティングシステム(OS)及び/又は仮想マシンモニタ(VMM)によって予期されるとおりに動作することを、オペレーティングシステムベンダ(OSV)及び/又は仮想マシンベンダ(VMV)において包括的に検証することが重要である。これは、RAS/エラーハンドリングコードカバレッジと呼ばれる。上記コードカバレッジにより、OS及び/又はVMMは、エラーハンドリング、リカバリ及びRAS機構がエンドツーエンドで実際に動作していることを保証することが可能となる。これには、種々のプロセッサコア、プロセッサキャッシュ、メモリ、入出力装置、システム相互接続などにおけるエラーなどの、種々のタイプのエラーを生成することを含む。エラーハンドリング能力を検証するために、エラー注入能力を、製造プラットフォーム上での実行時にOS及び/又はVMMが利用可能であることが必要となる。ハードウェアにおいて、種々のエラーサブシステム上にすべてのエラーケースについての実際のエラー注入メカニズムを実装することは、非常に複雑となり、非常に高価となる。さらに、エラー注入メカニズム自体は、システムのセキュリティに対するリスクをもたらすべきではない。
【0005】
エラーハンドリングコードは、現状、限定されたセットの実際のエラー注入を用いて検証されている。実施のエラー注入メカニズムは、1回に1つだけのエラーを注入することを可能にする。したがって、エラーハンドリングコードは、限定されたエラーコード実行カバレッジしか得られない。ひいては、多くの手作業のコードレビューを行ってさらなるコードカバレッジパスを決定することが必要となる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
いくつかの従前の実装は、リング0コードからMCAバンクに書き込むことを、別のリング0コードアクセス可能レジスタに書き込むことによって、可能にしている。これは、セキュリティホールである。MCAバンク書き込み有効化レジスタがリング0ドメイン内にあるため、任意のリング0コードが、MCAバンク書き込み能力を有効にしに行き、MCAバンクに書き込み、無用のエラーケースを引き起こす可能性がある。さらに、従前の実装は、マシンチェックアーキテクチャ(MCA)及び訂正マシンチェックエラー割り込み(Corrected Machine Check Error Interrupt)(CMCI)などのエラーのシグナル送信を提供せず、上記実装の機構の有用性を限定している。
【0007】
本願発明者らはさらに、現在の解決法がMCAバンク書き込み有効化/無効化能力の保護又はエラーシグナル送信(MCA/CMCI)生成有効化/無効化の保護を提供しないことを、識別している。
【課題を解決するための手段】
【0008】
いくつかの実施形態が、オペレーティングシステムと、プロセッサを含むプラットフォームとを含む。プロセッサは、エラーレジスタを含む。オペレーティングシステムは、プラットフォームを介してセキュアな方式でのみエラーレジスタに書き込むことができる。
【図面の簡単な説明】
【0009】
本発明は、以下に与えられる詳細説明と本発明のいくつかの実施形態の添付図面とからさらに十分に理解されるものである。しかしながら、上記詳細説明及び添付図面は、説明される特定の実施形態に本発明を限定するものと解されるべきではなく、単に説明及び理解のためのものである。
図1】本発明のいくつかの実施形態に従うシステムを示す。
図2】本発明のいくつかの実施形態に従うフローを示す。
図3】本発明のいくつかの実施形態に従うフローを示す。
図4】本発明のいくつかの実施形態に従うフローを示す。
【発明を実施するための形態】
【0010】
本発明のいくつかの実施形態は、セキュアなエラーハンドリングに関する。
【0011】
いくつかの実施形態において、マシンチェックエラーコードカバレッジのためのエラー注入が、実施するのにセキュアかつ効率的である(例えば、インテルサーバプロセッサ及び/又はインテルXeon(登録商標)プロセッサのためのいくつかの実施形態において)。
【0012】
いくつかの実施形態は、オペレーティングシステムと、システム管理モード(System Management Mode)(SMM)制御(例えば、及び/又はSMM機能及び/又はSMMファームウェア)を含む基本入出力システムと、エラーレジスタを含むプロセッサとを含む。オペレーティングシステムは、システム管理モード制御、機能、ファームウェアなどを介してのみエラーレジスタに書き込むことができる。
【0013】
いくつかの実施形態は、オペレーティングシステムと、プロセッサを含むプラットフォームとを含む。プロセッサは、エラーレジスタを含む。オペレーティングシステムは、プラットフォームを介してセキュアな方式でのみエラーレジスタに書き込むことができる。いくつかの実施形態において、オペレーティングシステムは、プラットフォームファームウェアを介してセキュアな方式でのみエラーレジスタに書き込むことができる。
【0014】
図1は、いくつかの実施形態に従うシステム100を示す。いくつかの実施形態において、システム100は、プラットフォーム102と、オペレーティングシステム/仮想マシンモニタ(又はリング0コード)104と、エラーハンドラ106と、アプリケーション/ゲストオペレーティングシステム108と、アプリケーション/ゲストオペレーティングシステム110とを含む。いくつかの実施形態において、プラットフォーム102は、プロセッサ(及び/又はプロセッサハードウェア)122と、システム基本入出力システム(BIOS)124と、エラー注入ソフトウェア抽象化126とを含む。いくつかの実施形態において、システムBIOS124は、システム管理モード(SMM)コード/データ128(及び/又はSMM制御、SMM機能、SMMコントローラなど)を含む。いくつかの実施形態において、SMMコード/データは、ファームウェアで実装される。いくつかの実施形態において、プロセッサ122は、マシンチェックアーキテクチャ(MCA)バンク書き込み能力有効/無効レジスタ132と、エラーシグナル送信(error signaling)マシンチェックアーキテクチャ(MCA)/訂正マシンチェックエラー割り込み(CMCI)有効/無効レジスタ134とを含む。
【0015】
いくつかの実施形態において、プロセッサ122は、MCAメモリバンクへの書き込みを有効にする又は無効にすることができる。いくつかの実施形態において、プロセッサ122は、モデル固有レジスタ(Model Specific Register)(MSR)又はコンフィギュレーション空間レジスタ(Configuration Space Register)(CSR)としてエラーをシグナル送信することができる。いくつかの実施形態に従い、プロセッサ122内の有効/無効レジスタ132及び134は、システム管理モード(SMM)からのみアクセス可能である。このことは、オペレーティングシステム(OS)コードが、信頼されたSMMコードを直接経由することなしに、上記機構を有効にすることは決してできないことを、確かにする。
【0016】
いくつかの実施形態において、MCAバンクへの書き込みは、リング0コード104から実施される。いくつかの実施形態において、リング0コード104は、MCA/CMCIをシグナル送信することができる。いくつかの実施形態において、MCAバンク書き込み能力は、システム管理モード(SMM)からのみ有効にされ及び/又は無効にされ、上記機構の利用についてのセキュリティを提供する。いくつかの実施形態において、エラーシグナル送信(MCA/CMCI)は、SMMからのみ有効にされ及び/又は無効にされ、上記機構の利用についてのセキュリティを提供する。いくつかの実施形態において、オペレーティングシステム(OS)は、コードカバレッジのためのセキュアなエラー注入の可用性を検出する。いくつかの実施形態において、BIOS/OSインタフェースとして、OSに対するエラー注入機能のソフトウェア抽象化が実装される。
【0017】
図2は、いくつかの実施形態に従うフロー200を示す。いくつかの実施形態において、フロー200は、BIOS/OSインタフェースを公開するBIOSフローを示す。いくつかの実施形態において、フロー200は、ブート処理中のBIOSフローコードを示し、ここでは、プラットフォーム及び/又はプロセッサ内で利用可能な機構が識別され、BIOS/OSインタフェース(ACPIテーブル/メソッド、すなわち、アドバンスド・コンフィグレーション・アンド・パワー・インターフェイス・テーブル/メソッド)が公開される。いくつかの実施形態において、フローは、202において始まり、ここでは、BIOSセットアップオプションがエラー注入について有効にされているかどうかに関して、決定が行われる。BIOSセットアップオプションがエラー注入について有効にされていないことが202において決定された場合、204において、エラー注入のためのBIOS/OSインタフェースは公開されず、フローは206に移動してOSブート処理を継続する。BIOSセットアップオプションがエラー注入について有効にされていることが202において決定された場合、208において、プロセッサがコードカバレッジエラー注入能力をサポートするかどうかに関して、決定が行われる。プロセッサがコードカバレッジエラー注入能力をサポートしないことが208において決定された場合、フローは206に移動してOSブート処理を継続する。プロセッサがコードカバレッジエラー注入能力をサポートすることが208において決定された場合、210において、SMMインフラストラクチャが、エラーハンドリングコードカバレッジエラー注入インタフェース(Error Handling Code Coverage Error Injection Interface)を処理するようにセットアップされる。次いで212において、エラー注入のためのBIOS/OSインタフェースが公開され、次いで、フローは206に移動してOSブート処理を継続する。
【0018】
図3は、いくつかの実施形態に従うフロー300を示す。いくつかの実施形態において、フロー300は、エラーログ/エラーシグナル送信ハードウェアの書き込みを有効化/無効化するシステム管理モード(SMM)コードフローを示す。いくつかの実施形態において、フロー300は、OSがBIOS/OSインタフェースを呼び出してMCAバンク書き込み能力及びエラーシグナル送信能力を有効/無効にするときに、SMMコードにより行われる動作を示す。
【0019】
いくつかの実施形態において、フロー300は、302においてシステム管理割り込み(System Management Interrupt)(SMI)モジュールにおいて始まる。304において、上記SMIがエラーハンドリングコードカバレッジをもたらすSMIであるかどうかに関して、決定が行われる。上記SMIがエラーハンドリングコードカバレッジをもたらすSMIではないことが304において決定された場合、306において、通常のSMIフローが継続される。上記SMIがエラーハンドリングコードカバレッジをもたらすSMIであることが304において決定された場合、308において、エラーログハードウェア有効化及び/又は無効化が所望されるかどうかに関して、決定が行われる。エラーログハードウェア有効化及び/又は無効化が308において所望されない場合、フローは310に移動し、ここでは、エラーシグナル送信有効化/無効化を決定するように、決定がなされる。エラーログハードウェア有効化/無効化が308において所望される場合、312において、エラーログハードウェア(MCAバンク)書き込み能力の有効化/無効化が行われ、フローが、要求された動作を310に移動する前に設定することができない場合、エラーで応答する。エラーシグナル送信有効化/無効化が310においてまったく決定されない場合、306において通常のSMIフローが継続される。エラーシグナル送信有効化/無効化が310において決定された場合、314において、エラーシグナル送信能力の有効化/無効化が行われ、306において通常のSMIフローが継続される。
【0020】
図4は、いくつかの実施形態に従うフロー400を示す。いくつかの実施形態において、フロー400は、エラーを注入するためのOSフローを示す。いくつかの実施形態において、フロー400は、OSがどのようにBIOS/OSインタフェースを実行し(consumes)、いくつかの実施形態に従うシステムにエラーを注入するのかを示す。
【0021】
フロー400は、402において始まり、ここでは、BIOS/OSインタフェースがエラーハンドリングコードカバレッジエラー注入に利用可能であるのかどうかに関して、決定が行われる。402においてBIOS/OSインタフェースがエラーハンドリングコードカバレッジエラー注入に利用可能でない場合、404において、プラットフォームがエラー注入能力をサポートしない(例えば、MCAバンクエラー注入能力をサポートしない)という決定が行われる。402においてBIOS/OSインタフェースがエラーハンドリングコードカバレッジエラー注入に利用可能である場合、406において、注入すべきエラーが決定される(例えば、エラーログリストを構築することによる)。次いで408において、MCAバンク書き込み能力が、BIOSインタフェース(及び/又はACPIインタフェース)を呼び出すことによって有効にされる。410において、MCAバンク書き込み能力が成功したかどうかに関して、決定が行われる。成功しなかった場合、412においてエラー注入は失敗する。成功した場合、414において、エラーがリストから選択される。416において、エラーを設定すべきスレッドが選択され、エラーを設定すべきMCAバンクが選択される。418において、エラーログデータが書き込まれる。420において、現在のMCAバンクが読み出され、読み出されたものが書き込まれた値に一致するかどうかに関して、決定が行われる。一致しなかった場合、フローが418に戻される前に、422において、現在のMCAバンクがクリアされ、別のMCAバンクが選択され、すべてのバンクが使い尽くされている場合はエラーが生じる。420において読み出されたものが書き込まれた値に一致する場合、424において、エラーリスト内のすべてのエラーが設定されたかどうかに関して、決定が行われる。設定されていない場合、フローは414に戻される。設定されている場合、426において、MCAバンクの非ゼロの書き込み能力が、BIOSインタフェース(及び/又はACPIインタフェース)を呼び出すことによって無効にされる。これは、成功したエラー登録セットアップを示し、428において、エラーがシグナル送信される。次いで430において、MCA/CMCIシグナル送信能力が、BIOSインタフェース(及び/又はACPIインタフェース)を呼び出すことによって有効にされる。次いで432において、CMCIがシグナル送信されるべきである場合、要求されたスレッドが選択される。次いで434において、MCA又はCMCIがシグナル送信される(例えば、BIOSインタフェース動作シーケンスを呼び出すことによる)。次いで436において、MCA/CMCIシグナル送信能力が無効にされる。
【0022】
基本入出力システム(BIOS)の実行時コンテキストが、システム管理割り込み(SMI)であり、この実行コンテキストの下で、BIOSはMCAをシグナル送信することができない場合がある。この実装は、MCAバンク書き込み(エラーレジスタ書き込み)及びMCA/CMCIシグナル送信制御レジスタがSMI制御下にあることを可能にすることを備える。上記実装はさらに、いったんMCA/CMCIシグナル送信が有効にされると、OS/VMMが書き込みをしてMCA又はCMCIのシグナル送信を引き起こすことを可能にする。これらの詳細はBIOSインタフェースによって抽象化され、したがってOS/VMMは実装詳細を知る必要がなくなる。
【0023】
いくつかの実施形態において、信頼されたプラットフォーム実行(TXT)が有効にされる場合、SMI自体が信頼された計算境界(trusted compute boundary)(TCB)の範囲内に入るまで、MCAバンクレジスタに書き込むための制御レジスタとMCA/CMCIシグナル送信を有効にするための制御レジスタとが無効にされる。これは、上記のような信頼された環境で実施される他の実施形態を可能にする。
【0024】
いくつかの実施形態において、OS/ドライバが、コードカバレッジのためのエラー注入を行う準備ができていることを決定する。次いで、OS/ドライバは、BIOSインタフェースを呼び出してMCAバンク書き込み能力を有効にする。この時点で、OS/ドライバ(リング0コード)は、MCAバンクに書き込む。エラーハンドリングコードカバレッジ検証ドライバが、検証において関心のあるエラーを決定し、種々のMCAバンク及びスレッドのためのエラーログ値を構築する。検証ドライバは、選択されたMCAバンク及びスレッドにエラーログを書き込む。次いで、エラータイプに基づいて、検証ドライバは、例えば、CMCI又はMCAをシグナル送信する。いったんエラーがシグナル送信されると、割り込みがエラーハンドラを起動させ、エラーハンドラは、実際のエラーを受信したのかを考え、標準的にエラーを処理する。エラーハンドリングコードパスを検証するためにエラーハンドラコードを変更する必要はない。いくつかの実施形態に従うエラー注入が、1のエラーをシグナル送信する前に複数のMCAバンク及びスレッド上のエラーが作成される方式で、実施される。この方式において、同時的なエラーシナリオを作成することができる。
【0025】
いくつかの実施形態に従い、MCAバンク有効化及び/又は無効化とエラーシグナル送信制御とはシステム管理モード(SMM)の範囲内にあり、エラー注入中にデータがまったく公開されないため、セキュリティホールはまったく公開されない。
【0026】
いくつかの実施形態において、種々のタイプのエラーが、エラーをシグナル送信する前に、種々のMCAバンク、種々の中央処理ユニット(CPU)若しくはプロセッサスレッド、及び/又は種々のCPU若しくはプロセッサソケット上に設定される。このことは、種々のエラーハンドラコードフローの実行を可能にし、従前には可能ではなかった種々のエラーシナリオを作成する。これらのタイプのシナリオの作成は、エラーハンドリングフローにおける様々なコーナーケースの検証を可能にする。
【0027】
いくつかの実施形態において、MCAバンク書き込み及びエラーシグナル送信の機構は、システム管理モード(SMM)からのみ許容される。SMMアーキテクチャは、SMMコード又はデータにSMMの外部からアクセスすることができなくなるため、プラットフォームに対してセキュリティを提供する。このことは、マルウェア又は信頼されていないコードがSMMに入り込み、上記の機構を有効にすることが、決してないことを確かにする。
【0028】
いくつかの従前の実装は、リング0コードからMCAバンクを書き込むことを、別のリング0コードアクセス可能レジスタに書き込むことによって、許容する。これは、セキュリティホールである。MCAバンク書き込み有効化レジスタがリング0ドメイン内にあるため、任意のリング0コードが、MCAバンク書き込み能力を有効にしに行き、MCAバンクに書き込み、無用のエラーケースを引き起こす可能性がある。さらに、従前の実装は、MCA及びCMCIなどのエラーのシグナル送信を提供せず、上記実装の機構の有用性を限定している。
【0029】
現在の解決法は、MCAバンク書き込み有効化/無効化能力の保護又はエラーシグナル送信(MCA/CMCI)生成有効化/無効化の保護を提供していない。いくつかの実施形態に従い、保護が、MCAバンク書き込み能力及びエラーシグナル送信能力の有効化について提供される。いくつかの実施形態において、MCAバンク書き込み能力及びエラーシグナル送信能力の有効化/無効化についてのソフトウェア抽象化が実装される。いくつかの実施形態において、ハードウェアが変化した場合、エラーハンドリングコードカバレッジエラー注入は変更する必要がない。
【0030】
いくつかの実施形態において、MCAバンク書き込みの有効化及び/又は無効化が実装される(エラーロギングハードウェア書き込み)。いくつかの実施形態において、エラーシグナル送信ハードウェアの利用が保護される。いくつかの実施形態において、ソフトウェアに対するハードウェア実装の抽象化が実装され、したがってハードウェア実装レジスタ又は配置が変化した場合にソフトウェアの変更は必要なくなる。
【0031】
いくつかの実施形態において、オペレーティングシステムベンダ(OSV)がエラーハンドリングフローを検証することができ、プロセッサ上のRASのOS実装(例えば、サーバプロセッサ及び/又はインテルXeon(登録商標)プロセッサ)がより良好な品質を有することになる。このことは、RAS/エラーハンドリングを有効化するコストを削減する。いくつかの実施形態に従い、任意のエラーの組み合わせを、MCAバンクに投入する(populated)ことができ、OSは、シリコンが利用可能となる前でさえ、セキュアな方式で将来の機構のエラーハンドリングを検証することが可能となる。
【0032】
本明細書において、いくつかの実施形態を、特定の方式で実装されるものとして説明してきたが、いくつかの実施形態では、上記の特定の実装は、必要とされるものではない。例えば、本明細書において、いくつかの実施形態を、システム管理モード(SMM)コード/データ、SMM機能、SMM制御、SMMコントローラなどを含むものとして説明してきた。しかしながら、他の実施形態は、SMMを実装することを必要としない。さらに、いくつかの実施形態において、SMM、BIOSなどのいくつかの機能を、ファームウェア、ソフトウェア及び/又はハードウェアで実装することができる。いくつかの実施形態において、エラーレジスタを有効化/無効化するため、及び/又はエラーを検出、訂正、リカバリ、ロギングなどするためのプラットフォーム制御が、例えばオペレーティングシステム(OS)及び/又は仮想マシンモニタ(VMM)を用いて上記の機能を制御するよりはセキュアな方式で実施される。
【0033】
いくつかの実施形態が特定の実装を参照して説明されたが、他の実装がいくつかの実施形態に従って可能である。さらに、図面に示された及び/又は本明細書に記載された回路素子又は他の機構の配置及び/又は順序は、図示及び記載された特定の方法で配置される必要はない。多くの他の配置がいくつかの実施形態に従って可能である。
【0034】
図に示される各システムにおいて、いくつかの場合の要素が、同一の参照番号又は異なる参照番号を各々有して、表された要素が異なる及び/又は類似するであろうことを示唆し得る。しかしながら、要素は、種々の実装を有し、本明細書に図示又は記載されたシステムのうち一部又はすべてと共に動作するほど十分な適応性を有し得る。図面に示される種々の要素は、同一である又は異なる可能性がある。どの要素が第1の要素として参照され、どれが第2の要素と呼ばれるのかは、任意である。
【0035】
本願説明と特許請求の範囲とにおいて、用語「結合される」及び「接続される」とその派生語とが用いられる場合がある。上記の用語は互いに対して同義語である意図はないことを、理解されたい。むしろ、特定の実施形態において、「接続される」を用いて複数の要素が直接的な物理的又は電気的接触を有することを示す場合がある。「結合される」は、複数の要素が直接的な物理的又は電気的接触を有することを、意味する場合がある。しかしながら、「結合される」はさらに、複数の要素が互いに直接的な接触を有さず、しかしながらなお互いに協働又は相互作用することを意味する場合がある。
【0036】
本説明において、また一般的に、アルゴリズムは、所望の結果につながる動作又は操作についての自己矛盾のないシーケンスと見なされる。上記には、物理量の物理的な操作を含む。一般に、必ずしも必要ないが、上記の量は、保存され、転送され、組み合わせされ、比較され、及びその他の操作をされることが可能な、電気的又は磁気的な信号の形式をとる。主に一般的な用法の理由で、こうした信号をビット、値、要素、シンボル、文字、用語、数字又は類似のものと呼ぶことは、時に便利であることが証明されている。しかしながら、上記及び類似の用語のすべてが、適切な物理量に関連付けられるべきであり、単に上記の量に適用される便利なラベルであることを、理解されたい。
【0037】
いくつかの実施形態は、ハードウェア、ファームウェア及びソフトウェアのうちの1つ又はそれらの組み合わせで実装することができる。いくつかの実施形態は、さらに、機械読み取り可能媒体に記憶された命令として実装することができ、上記機械読み取り可能媒体は、コンピューティングプラットフォームによって読み出され、実行されて、本明細書に記載の動作を実行することができる。機械読み取り可能媒体には、機械(例えば、コンピュータ)により読取可能な形式の情報を記憶する又は送信する任意のメカニズムを含むことができる。例えば、機械読み取り可能媒体には、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、電気的、光学的、音響的又は他の形式の伝播信号(例えば、搬送波、赤外線信号、デジタル信号、信号を送受信するインタフェースなど)及びその他を含むことができる。
【0038】
実施形態は、本発明の実装又は例示である。本明細書における「ある実施形態」「1つの実施形態」「いくつかの実施形態」又は「他の実施形態」という言葉は、その実施形態と関連して説明された特定の機構、構造又は特徴が、本発明の少なくともいくつかの実施形態に含まれ、しかしながら必ずしもすべての実施形態には含まれないことを、意味する。「ある実施形態」「1つの実施形態」又は「いくつかの実施形態」の種々の出現は、必ずしもすべて同一の実施形態を参照するものではない。
【0039】
本願において記載及び図示されたすべてのコンポーネント、機構、構造、特徴などが、特定の1又は複数の実施形態に含まれる必要はない。例えば、あるコンポーネント、機構、構造又は特徴が含まれる「場合がある」「可能性がある」「ことができる」又は「であろう」ことを本明細書が述べる場合、上記の特定のコンポーネント、機構、構造又は特徴が含まれることは必要とはされない。本明細書又は請求項が「1の(“a”又は“an”)」要素に言及する場合、上記は、要素が1つしか存在しないことを意味するものではない。本明細書又は請求項が「1のさらなる(“an additional”)」要素に言及する場合、上記は、1より多くのさらなる要素が存在することを除外しない。
【0040】
本願においてフロー図及び/又は状態図を用いて実施形態を説明している場合があるが、本発明は、本願におけるこうした図、又は対応する記載に限定されない。例えば、フローは、本願において図示及び記載されたとおりの、各々の図示されたボックス若しくは状態を通って、又は正確に同一の順序で、移動する必要はない。
【0041】
本発明は、本明細書に列挙された特定の詳細に限定されない。実際に、本開示の便益を有する当業者は、前述の説明及び図面から多くの他の変形を本発明の範囲内で行うことができることを、十分理解するであろう。したがって、本発明の範囲を定義するものは、いかなる補正をも含む別記の特許請求の範囲である。
【0042】
[関連出願]
本出願は、“INJECTING ERROR AND/OR MIGRATING MEMORY IN A COMPUTING SYSTEM”と題され、2010年12月17日に申請された米国特許出願番号第12/971868号に関連する。この出願は、実際のエラー注入の実施を説明する。
図1
図2
図3
図4