JP2022534977A - 入出力メモリ管理ユニットレジスタのコピーのゲストオペレーティングシステムへの提供 - Google Patents
入出力メモリ管理ユニットレジスタのコピーのゲストオペレーティングシステムへの提供 Download PDFInfo
- Publication number
- JP2022534977A JP2022534977A JP2021570831A JP2021570831A JP2022534977A JP 2022534977 A JP2022534977 A JP 2022534977A JP 2021570831 A JP2021570831 A JP 2021570831A JP 2021570831 A JP2021570831 A JP 2021570831A JP 2022534977 A JP2022534977 A JP 2022534977A
- Authority
- JP
- Japan
- Prior art keywords
- iommu
- operating system
- guest operating
- mmio
- guest
- 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
Links
- 238000004891 communication Methods 0.000 claims abstract description 64
- 239000000872 buffer Substances 0.000 claims description 123
- 238000000034 method Methods 0.000 claims description 34
- 238000013519 translation Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 4
- 230000000875 corresponding effect Effects 0.000 description 36
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 13
- 230000009471 action Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
一部の電子デバイス(例えば、サーバやデスクトップコンピュータ等)は、入出力(IO)デバイス等の電子デバイスハードウェアの「仮想化」をサポートする。仮想化は、電子デバイス上又は電子デバイス内の中間エンティティが、電子デバイス上で実行中のソフトウェアのインスタンス(例えば、アプリケーションプログラム等)に対して、ソフトウェアのインスタンスが電子デバイスハードウェアに直接アクセス可能であるというような錯覚を与えるが、実際には、中間エンティティが、ソフトウェアのインスタンスが行うアクセスをインターセプト/リダイレクト又は他の方法で補助することを含む。例えば、一般的な中間エンティティの1つに「仮想マシン」がある。仮想マシンは、電子デバイスハードウェアを抽象化し、電子デバイスハードウェアへの既知のインタフェースをエミュレート又は提示するソフトウェアエンティティであり、それによって、ソフトウェアのインスタンスが様々なタイプ及び構成の電子デバイス上で実行することが可能になる。電子デバイスハードウェアの構成は、ソフトウェアのインスタンスが互換性を有しない電子デバイスハードウェアを含む可能性がある。一部の電子デバイスでは、仮想マシンは、「ゲスト」オペレーティングシステムと呼ばれるオペレーティングシステムの1つ以上のインスタンスの実行をサポートする。ゲストオペレーティングシステムは、生産性アプリケーション、データベース等のソフトウェアの他のインスタンスを実行するための環境を提供する。
以下の説明では、様々な用語が実施形態を説明するために用いられる。以下は、これらの用語の簡略化された一般的な説明である。この用語は、明確且つ簡潔にするために、本明細書に記載されていない重要な追加特徴を有していてもよく、したがって、この説明は用語を限定することを意図していないことに留意されたい。
記載された実施形態は、メモリ、入出力(IO)デバイス等の電子デバイスハードウェアの「仮想化」をサポートする。仮想化は、一般に、電子デバイス上又は電子デバイス内の中間エンティティが、電子デバイス上で実行中のソフトウェアのインスタンスに対して、ソフトウェアのインスタンスが電子デバイスハードウェアに直接アクセス可能であるというような錯覚を与えるが、実際には、中間エンティティが、ソフトウェアのインスタンスが行うアクセスをインターセプト/リダイレクト又は他の方法で補助することを含む。例えば、ソフトウェアのインスタンスは、中間エンティティによって、電子デバイスの実際のデバイスレジスタ、メモリ位置等としてソフトウェアのインスタンスに出現するが中間エンティティによって示される単なるコピーである電子デバイスレジスタ、メモリ位置、電子デバイス設定、及び、他の機能ブロックのセットを用いて提示され得る。この場合、中間エンティティは、電子デバイスハードウェアのコピーのアクセスを受信、傍受(インターセプト)又は他の方法で取得し、ソフトウェアのインスタンスに代わって実際の電子デバイスハードウェアと対応する相互作用を行う。電子デバイスハードウェアの仮想化は、様々な電子デバイスが様々な構成の電子デバイスハードウェア、電子デバイスハードウェアの様々なアドレス、位置又は識別子等を用いることを可能にし、ソフトウェアのインスタンスが、電子デバイスハードウェアへの同一のインタフェースを用いて中間エンティティを介して示される等の多くの利点がある。さらに、中間エンティティは、ソフトウェアの所定のインスタンスによる電子デバイスハードウェアのアクセスを許可するかブロックするかを決定することができ、したがって、電子デバイスハードウェアの仮想化により、電子デバイスハードウェア(又は、その一部)及び/又は電子デバイス上で実行中のソフトウェアのインスタンスの保護を可能にする。上述したようにアクセスを制御することによって、中間エンティティは、ソフトウェアのいくつかのインスタンス間で電子デバイスハードウェアを共有し、及び/又は、ソフトウェアの個々のインスタンスに、電子デバイスハードウェアの一部への排他的アクセスを提供することができる。
記載された実施形態では、電子デバイスは、プロセッサと、メモリ(例えば、メインメモリ)と、いくつかの入出力(IO)デバイス(例えば、ネットワークインタフェースデバイス、ディスクコントローラ等)と、プロセッサとIOデバイスとの間をインタフェースする入出力メモリ管理ユニット(IOMMU)と、を含む。プロセッサは、ハイパーバイザ、1つ以上の仮想マシン、及び、仮想マシンにおけるゲストオペレーティングシステムを実行する。各ゲストオペレーティングシステムは、そのゲストオペレーティングシステムがアクセスするデータ及び情報を記憶するために予約されたメモリのゲスト部分(例えば、連続若しくは非連続の領域又はメモリのブロック)が割り当てられる。記載された実施形態では、IOMMUは、ゲストオペレーティングシステムとIOMMUとの間の通信を処理するための動作を実行する。
図4は、いくつかの実施形態による、電子デバイス400を示すブロック図である。図4に見られるように、電子デバイス400は、プロセッサ402と、メモリ404と、大容量記憶装置406と、入出力(IO)デバイス408~412と、入出力(IO)ハブ414と、メモリコントローラ416と、を含む。
いくつかの実施形態では、IOMMUは、本明細書に記載される動作を実行するために、メモリ(例えば、メモリ404)の異なる部分におけるデータ及び情報にアクセスする。これらの実施形態のいくつかにおいて、メモリの一部は、IOMMUバッキングストア(例えば、IOMMUバッキングストア426)、ゲストメモリ(例えば、ゲストメモリ428)、及び/又は、ハイパーバイザメモリを含む。図5は、いくつかの実施形態による、IOMMUによってアクセスされるメモリの一部を示すブロック図である。図5は一例として示されているが、いくつかの実施形態では、メモリ及び/又はメモリの異なる部分は、異なるタイプ及び/又は構成の情報を記憶する。一般に、メモリは、本明細書で記載された動作を可能にするのに十分な情報を含む。
記載された実施形態では、IOMMU(例えば、IOMMU424)は、IOMMU(又は、それによってサービスされるIOデバイス)とゲストオペレーティングシステムとの間の通信を処理する。図7は、いくつかの実施形態による、IOMMU702によって処理される、ゲストオペレーティングシステム700とIOMMU702との間の通信を示すブロック図である。図7には、いくつかの要素が特定の構成で示されているが、他の実施形態では、異なる数又は構成の要素を用いる。一般に、記載された実施形態では、IOMMU702は、本明細書に記載された動作を可能にするのに十分な要素を含むか、それらにアクセスする。図7では、いくつかの要素が点線/点状で示されている。これらの要素は、メモリに(例えば、IOMMUバッキングストア500に、ゲストメモリ512に等)記憶され、IOMMU702、ゲストオペレーティングシステム700及び/又は他のエンティティによって典型的なメモリアクセス技術を用いてアクセスされるログ、バッファ等である。いくつかの実施形態では、ゲストオペレーティングシステム700、IOMMU702及びハイパーバイザ704は、図3のゲストオペレーティングシステム302、IOMMU312及びハイパーバイザ306と同様に構成されるが、これは必須要件ではない。
記載された実施形態では、IOMMU(例えば、IOMMU702)は、IOMMU MMIOレジスタの仮想コピーをゲストオペレーティングシステム(例えば、ゲストオペレーティングシステム700)に提供するための動作を実行する。上記のように、動作は、ゲストオペレーティングシステムに代わって、IOMMUバッキングストアに記憶されているIOMMU MMIOレジスタの対応するコピーへアクセスすることを含む。図8は、いくつかの実施形態による、ゲストオペレーティングシステムに代わって、IOMMUがIOMMUバッキングストア内のIOMMU MMIOレジスタのコピーにアクセスするプロセスを示すフローチャートである。図8に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として示されていることに留意されたい。他の実施形態によって実施される動作は、異なる動作、異なる順序で実施される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実施される動作を含む。
Claims (22)
- 電子デバイスであって、
ゲストオペレーティングシステムを実行するプロセッサと、
入出力メモリ管理ユニット(IOMMU)と、
IOMMUバッキングストアを記憶するメインメモリであって、前記IOMMUバッキングストアは、サポートされているゲストオペレーティングシステムのセット内のゲストオペレーティングシステム毎のIOMMUメモリマップ入出力(MMIO)レジスタのセットの個別のコピーを含む、メインメモリと、を備え、
前記IOMMUは、
前記ゲストオペレーティングシステムから、所定のIOMMU MMIOレジスタ内のデータにアクセスする通信を受信することと、
前記ゲストオペレーティングシステムに関連付けられた前記IOMMUバッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータへの対応するアクセスを実行することと、
を行うように構成されている、
電子デバイス。 - 前記ゲストオペレーティングシステムから、所定のIOMMU MMIOレジスタ内のデータにアクセスする通信を受信することは、
前記プロセッサのメモリ管理ユニット(MMU)から前記通信を受信することであって、前記MMUは、前記ゲストオペレーティングシステムから前記通信を受信し、前記所定のIOMMU MMIOレジスタに関連付けられたIOMMU MMIOアドレスで前記IOMMUに前記通信を転送する、ことを含む、
請求項1の電子デバイス。 - 前記データにアクセスすることは、前記所定のIOMMU MMIOレジスタにデータを記憶することを含み、
前記IOMMUは、
前記ゲストオペレーティングシステムに関連付けられたドメイン識別子と1つ以上の変換テーブルとを使用して、前記IOMMU MMIOアドレスに基づいて、前記所定のIOMMU MMIOレジスタのコピーが配置されている前記IOMMUバッキングストア内の物理アドレスを決定することと、
前記ゲストオペレーティングシステムに関連付けられた前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータを、前記物理アドレスに記憶することと、
を行うように構成されている、
請求項2の電子デバイス。 - 前記IOMMUは、
前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータを記憶することを引き起こす通信を検出することと、
前記通信の検出に応じて、前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピーからのデータを使用して、1つ以上の後続の処理操作を実行することと、
を行うように構成されている、
請求項3の電子デバイス。 - 前記データにアクセスすることは、前記所定のIOMMU MMIOレジスタからデータを読み取ることを含み、
前記IOMMUは、
前記ゲストオペレーティングシステムに関連付けられたドメイン識別子と1つ以上の変換テーブルとを使用して、前記IOMMU MMIOアドレスに基づいて、前記所定のIOMMU MMIOレジスタのコピーが配置されている前記IOMMUバッキングストア内の物理アドレスを決定することと、
前記ゲストオペレーティングシステムに関連付けられた前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータを前記物理アドレスから読み取ることと、
前記データを前記ゲストオペレーティングシステムに戻すことと、
を行うように構成されている、
請求項2の電子デバイス。 - 前記IOMMUは、前記バッキングストア内の前記所定のIOMMU MMIOレジスタ内の情報を、
前記ゲストオペレーティングシステムに関連付けられたドメイン識別子と1つ以上の変換テーブルとを使用して、前記所定のIOMMU MMIOレジスタのコピーが配置されている前記IOMMUバッキングストア内の物理アドレスを決定することと、
前記ゲストオペレーティングシステムに関連付けられた前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータを、前記物理アドレスに記憶することと、
によって更新するように構成されている、
請求項1の電子デバイス。 - 前記バッキングストア内の前記IOMMU MMIOレジスタのセットの各コピーは、
ゲストオペレーティングシステム毎に、
ゲストオペレーティングシステムのバッファ及びログのポインタと、
ゲストオペレーティングシステムの前記バッファ及びログに関連する制御フィールドと、
を記憶するためのメモリ位置を含む、
請求項1の電子デバイス。 - 前記プロセッサはハイパーバイザを実行し、
前記ハイパーバイザは、
前記IOMMUバッキングストアの初期化操作中に、前記IOMMUバッキングストアの記憶に使用される前記メインメモリ内の連続又は分散したメモリページを割り当てる、
請求項1の電子デバイス。 - 前記ハイパーバイザは、
前記ゲストオペレーティングシステムについて、前記バッキングストア内の前記ゲストオペレーティングシステムの対応するIOMMU MMIOレジスタのセットに含まれない少なくともいくつかのIOMMU MMIOレジスタをエミュレートし、
前記IOMMUを介して、エミュレートされたIOMMU MMIOレジスタの情報にアクセスする、
請求項8の電子デバイス。 - 前記ハイパーバイザによってエミュレートされる前記IOMMU MMIOレジスタは、変換テーブルベースアドレス及びIOMMU制御レジスタを含む、
請求項9の電子デバイス。 - 前記IOMMU内のキャッシュメモリを備え、
前記IOMMUは、前記IOMMU MMIOレジスタのセットの各々のコピーの一部から、前記IOMMU MMIOレジスタ内の情報のコピーをキャッシュする、
請求項1の電子デバイス。 - ゲストオペレーティングシステムを実行するプロセッサと、入出力メモリ管理ユニット(IOMMU)と、IOMMUバッキングストアを記憶するメインメモリと、を備える電子デバイスのゲストオペレーティングシステムに対して、前記IOMMUレジスタのコピーを提供する方法であって、
前記IOMMUバッキングストアは、サポートされているゲストオペレーティングシステムのセット内のゲストオペレーティングシステム毎のIOMMUメモリマップ入出力(MMIO)レジスタのセットの個別のコピーを含み、
前記方法は、
前記IOMMUが、前記ゲストオペレーティングシステムから、所定のIOMMU MMIOレジスタ内のデータにアクセスする通信を受信することと、
前記IOMMUが、前記ゲストオペレーティングシステムに関連付けられた前記IOMMUバッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータへの対応するアクセスを実行することと、を含む、
方法。 - 前記ゲストオペレーティングシステムから、前記所定のIOMMU MMIOレジスタ内のデータにアクセスする通信を受信することは、
前記プロセッサのメモリ管理ユニット(MMU)から前記通信を受信することであって、前記MMUは、前記ゲストオペレーティングシステムから前記通信を受信し、前記所定のIOMMU MMIOレジスタに関連付けられたIOMMU MMIOアドレスで前記IOMMUに前記通信を転送する、ことを含む、
請求項12の方法。 - 前記データにアクセスすることは、前記所定のIOMMU MMIOレジスタにデータを記憶することを含み、
前記方法は、
前記IOMMUが、前記ゲストオペレーティングシステムに関連付けられたドメイン識別子と1つ以上の変換テーブルとを使用して、前記IOMMU MMIOアドレスに基づいて、前記所定のIOMMU MMIOレジスタのコピーが配置されている前記IOMMUバッキングストア内の物理アドレスを決定することと、
前記IOMMUが、前記ゲストオペレーティングシステムに関連付けられた前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータを、前記物理アドレスに記憶することと、を含む、
請求項13の方法。 - 前記IOMMUが、前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータを記憶することを引き起こす通信を検出することと、
前記通信の検出に応じて、前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピーからのデータを使用して、1つ以上の後続の処理操作を実行することと、を含む、
請求項14の方法。 - 前記データにアクセスすることは、前記所定のIOMMU MMIOレジスタからデータを読み取ることを含み、
前記方法は、
前記IOMMUが、前記ゲストオペレーティングシステムに関連付けられたドメイン識別子と1つ以上の変換テーブルとを使用して、前記IOMMU MMIOアドレスに基づいて、前記所定のIOMMU MMIOレジスタのコピーが配置されている前記IOMMUバッキングストア内の物理アドレスを決定することと、
前記IOMMUが、前記ゲストオペレーティングシステムに関連付けられた前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータを前記物理アドレスから読み取ることと、
前記IOMMUが、前記データを前記ゲストオペレーティングシステムに戻すことと、を含む、
請求項13の電子デバイス。 - 前記IOMMUが、前記バッキングストア内の前記所定のIOMMU MMIOレジスタ内の情報を、
前記ゲストオペレーティングシステムに関連付けられたドメイン識別子と1つ以上の変換テーブルとを使用して、前記所定のIOMMU MMIOレジスタのコピーが配置されている前記IOMMUバッキングストア内の物理アドレスを決定することと、
前記ゲストオペレーティングシステムに関連付けられた前記バッキングストア内の前記所定のIOMMU MMIOレジスタのコピー内のデータを、前記物理アドレスに記憶することと、
によって更新することを含む、
請求項12の方法。 - 前記バッキングストア内の前記IOMMU MMIOレジスタのセットの各コピーは、
ゲストオペレーティングシステム毎に、
ゲストオペレーティングシステムのバッファ及びログのポインタと、
ゲストオペレーティングシステムの前記バッファ及びログに関連する制御フィールドと、
を記憶するためのメモリ位置を含む、
請求項12の電子デバイス。 - 前記プロセッサはハイパーバイザを実行し、
前記方法は、
前記ハイパーバイザが、前記IOMMUバッキングストアの初期化操作中に、前記IOMMUバッキングストアの記憶に使用される前記メインメモリ内の連続又は分散したメモリページを割り当てることを含む、
請求項12の方法。 - 前記ハイパーバイザが、前記ゲストオペレーティングシステムについて、前記バッキングストア内の前記ゲストオペレーティングシステムの対応するIOMMU MMIOレジスタのセットに含まれない少なくともいくつかのIOMMU MMIOレジスタをエミュレートすることと、
前記ハイパーバイザが、前記IOMMUを介して、エミュレートされたIOMMU MMIOレジスタの情報にアクセスすることと、を含む、
請求項19の方法。 - 前記ハイパーバイザによってエミュレートされる前記IOMMU MMIOレジスタは、変換テーブルベースアドレス及びIOMMU制御レジスタを含む、
請求項20の方法。 - 前記IOMMUがキャッシュメモリを備え、
前記方法は、
前記ハイパーバイザが、前記IOMMU MMIOレジスタのセットの各々のコピーの一部から、前記IOMMU MMIOレジスタ内の情報のコピーをキャッシュすることを含む、
請求項12の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/423,077 | 2019-05-27 | ||
US16/423,077 US10909053B2 (en) | 2019-05-27 | 2019-05-27 | Providing copies of input-output memory management unit registers to guest operating systems |
PCT/US2020/034455 WO2020243043A1 (en) | 2019-05-27 | 2020-05-25 | Providing copies of input-output memory management unit registers to guest operating systems |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022534977A true JP2022534977A (ja) | 2022-08-04 |
JP7564830B2 JP7564830B2 (ja) | 2024-10-09 |
Family
ID=73549697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021570831A Active JP7564830B2 (ja) | 2019-05-27 | 2020-05-25 | 入出力メモリ管理ユニットレジスタのコピーのゲストオペレーティングシステムへの提供 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10909053B2 (ja) |
EP (1) | EP3977286A4 (ja) |
JP (1) | JP7564830B2 (ja) |
KR (1) | KR20220001016A (ja) |
CN (1) | CN113906389A (ja) |
WO (1) | WO2020243043A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10380039B2 (en) * | 2017-04-07 | 2019-08-13 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
US11301402B2 (en) * | 2020-04-30 | 2022-04-12 | Red Hat, Inc. | Non-interrupting portable page request interface |
US12020053B2 (en) | 2021-03-29 | 2024-06-25 | Red Hat, Inc. | Exposing untrusted devices to virtual machines |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7035963B2 (en) * | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
JP4346850B2 (ja) | 2001-01-23 | 2009-10-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Osイメージごとに論理分割された論理分割データ処理システム |
JP4322232B2 (ja) * | 2005-06-14 | 2009-08-26 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
US8291180B2 (en) * | 2008-03-20 | 2012-10-16 | Vmware, Inc. | Loose synchronization of virtual disks |
US9535849B2 (en) | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US8347294B2 (en) * | 2009-10-14 | 2013-01-01 | Oracle International Corporation | Automated administration using composites of atomic operations |
US8635385B2 (en) | 2010-07-16 | 2014-01-21 | Advanced Micro Devices, Inc. | Mechanism to handle peripheral page faults |
US20120167082A1 (en) | 2010-12-23 | 2012-06-28 | Sanjay Kumar | Direct sharing of smart devices through virtualization |
US8719464B2 (en) | 2011-11-30 | 2014-05-06 | Advanced Micro Device, Inc. | Efficient memory and resource management |
US9424199B2 (en) | 2012-08-29 | 2016-08-23 | Advanced Micro Devices, Inc. | Virtual input/output memory management unit within a guest virtual machine |
US9134954B2 (en) * | 2012-09-10 | 2015-09-15 | Qualcomm Incorporated | GPU memory buffer pre-fetch and pre-back signaling to avoid page-fault |
US20160077981A1 (en) * | 2014-09-12 | 2016-03-17 | Advanced Micro Devices, Inc. | Method and Apparatus for Efficient User-Level IO in a Virtualized System |
CN106155933B (zh) | 2016-07-06 | 2019-02-05 | 乾云众创(北京)信息科技研究院有限公司 | 一种基于KSM及Pass-through相结合的虚拟机内存共享方法 |
US10459850B2 (en) * | 2016-09-20 | 2019-10-29 | Advanced Micro Devices, Inc. | System and method for virtualized process isolation including preventing a kernel from accessing user address space |
US10013199B2 (en) | 2016-11-15 | 2018-07-03 | Red Hat Israel, Ltd. | Translation bypass by host IOMMU for systems with virtual IOMMU |
WO2018176360A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Scalable interrupt virtualization for input/output devices |
US10140148B1 (en) | 2017-08-30 | 2018-11-27 | Red Hat Israel, Ltd. | Copy based IOMMU emulation for out-of-process emulated devices |
-
2019
- 2019-05-27 US US16/423,077 patent/US10909053B2/en active Active
-
2020
- 2020-05-25 KR KR1020217042281A patent/KR20220001016A/ko unknown
- 2020-05-25 WO PCT/US2020/034455 patent/WO2020243043A1/en unknown
- 2020-05-25 CN CN202080039910.4A patent/CN113906389A/zh active Pending
- 2020-05-25 JP JP2021570831A patent/JP7564830B2/ja active Active
- 2020-05-25 EP EP20813757.0A patent/EP3977286A4/en active Pending
-
2021
- 2021-01-11 US US17/145,750 patent/US20220269621A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2020243043A1 (en) | 2020-12-03 |
EP3977286A4 (en) | 2023-06-14 |
US20220269621A1 (en) | 2022-08-25 |
US10909053B2 (en) | 2021-02-02 |
CN113906389A (zh) | 2022-01-07 |
JP7564830B2 (ja) | 2024-10-09 |
KR20220001016A (ko) | 2022-01-04 |
EP3977286A1 (en) | 2022-04-06 |
US20200379927A1 (en) | 2020-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7613898B2 (en) | Virtualizing an IOMMU | |
US11907542B2 (en) | Virtualized-in-hardware input output memory management | |
US7383374B2 (en) | Method and apparatus for managing virtual addresses | |
KR101179341B1 (ko) | 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행 | |
US11042495B2 (en) | Providing interrupts from an input-output memory management unit to guest operating systems | |
JP7564830B2 (ja) | 入出力メモリ管理ユニットレジスタのコピーのゲストオペレーティングシステムへの提供 | |
CA2800632C (en) | Enable/disable adapters of a computing environment | |
JP2015526829A (ja) | ゲスト仮想マシン内の仮想入出力メモリ管理ユニット | |
JP2022536689A (ja) | 入出力メモリ管理ユニットによるゲストオペレーティングシステムのバッファとログへのアクセス | |
JP7520843B2 (ja) | 入出力メモリ管理ユニットによるドメイン識別子及びデバイス識別子の変換 | |
JP2024503259A (ja) | 入出力デバイスによってアクセス可能なメモリのページの移行 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230427 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240416 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240507 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240807 |
|
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: 20240903 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240927 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7564830 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |