DE112016004297T5 - TECHNOLOGIES FOR MULTI-STAGE VIRTUALIZATION - Google Patents

TECHNOLOGIES FOR MULTI-STAGE VIRTUALIZATION Download PDF

Info

Publication number
DE112016004297T5
DE112016004297T5 DE112016004297.3T DE112016004297T DE112016004297T5 DE 112016004297 T5 DE112016004297 T5 DE 112016004297T5 DE 112016004297 T DE112016004297 T DE 112016004297T DE 112016004297 T5 DE112016004297 T5 DE 112016004297T5
Authority
DE
Germany
Prior art keywords
root
virtualization
hypervisor
root hypervisor
computing device
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.)
Pending
Application number
DE112016004297.3T
Other languages
German (de)
Inventor
Jun Nakajima
Asit K. Mallick
Harshawardhan Vipat
Madhukar Tallam
Manohar R. Castelino
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 DE112016004297T5 publication Critical patent/DE112016004297T5/en
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Abstract

Technologien für mehrstufige Virtualisierung beinhalten eine Rechenvorrichtung mit einem Prozessor, der einen Root-Virtualisierungsmodus und einen Non-Root-Virtualisierungsmodus unterstützt. Ein Non-Root-Hypervisor stellt fest, ob er unter der Kontrolle eines Root-Hypervisors ausgeführt wird; falls ja, registriert er beim Root-Hypervisor einen Callback-Handler und Auslösebedingungen. Der Non-Root-Hypervisor hostet eine oder mehrere virtuelle Maschinen. In Reaktion auf einen Ausgang einer virtuellen Maschine stellt der Root-Hypervisor fest, ob für den Grund des Ausgangs der virtuellen Maschine ein Callback-Handler registriert wurde; falls ja, überprüft er die Auslösebedingungen im Zusammenhang mit dem Callback-Handler. Wenn die Auslösebedingungen erfüllt sind, aktiviert der Root-Hypervisor den Callback-Handler. Der Callback-Handler kann ein virtuelles Virtualisierungsunterstützungsobjekt auf der Grundlage von Veränderungen aktualisieren, die vom Root-Hypervisor an einem Virtualisierungsunterstützungsobjekt vorgenommen wurden. Der Root-Hypervisor kann den Callback-Handler im Non-Root-Virtualisierungsmodus aktivieren. Weitere Ausführungsformen werden beschrieben und beansprucht.Multi-stage virtualization technologies include a computing device with a processor supporting a root virtualization mode and a non-root virtualization mode. A non-root hypervisor determines if it is under the control of a root hypervisor; if so, it registers a callback handler and trigger conditions with the root hypervisor. The non-root hypervisor hosts one or more virtual machines. In response to a virtual machine exit, the root hypervisor determines whether a callback handler has been registered for the reason of the virtual machine's exit; if so, it checks the triggering conditions associated with the callback handler. When the trigger conditions are met, the root hypervisor activates the callback handler. The callback handler can update a virtual virtualization support object based on changes made by the root hypervisor to a virtualization support object. The root hypervisor can enable the callback handler in non-root virtualization mode. Further embodiments are described and claimed.

Description

QUERVERWEIS AUF EINE VERWANDTE US-PATENTANMELDUNGCROSS-REFERENCE TO A RELATED US PATENT APPLICATION

Die vorliegende Erfindung beansprucht Priorität gegenüber der US-Patentanmeldung mit der Seriennr. 14/866,187, Titel „TECHNOLOGIES FOR MULTI-LEVEL VIRTUALIZATION“, die am 25. September 2015 eingereicht wurde.The present invention claims priority over US patent application Ser. 14 / 866,187, entitled "TECHNOLOGIES FOR MULTI-LEVEL VIRTUALIZATION", which was submitted on September 25, 2015.

HINTERGRUND DER ERFINDUNGBACKGROUND OF THE INVENTION

Typische Computerprozessoren beinhalten Hardwareunterstützung für Virtualisierungsoperationen. Softwarevirtualisierung beinhaltet ein transparentes Ausführen eines oder mehrerer Gastbetriebssysteme aus dem Inneren eines Gastgeberbetriebssystems, eines Hypervisors oder eines Virtual-Machine-Monitors (VMM). Zu den Merkmalen von Hardwarevirtualisierung können ein Modell mit erweiterten Befugnisstufen, hardwareassistierte Unterstützung für das Adressieren virtueller Speicher, Unterstützung für erweiterte Speicherberechtigungen und weitere Virtualisierungsmerkmale gehören.Typical computer processors include hardware support for virtualization operations. Software virtualization involves transparently running one or more guest operating systems from within a host operating system, hypervisor, or virtual machine monitor (VMM). Hardware virtualization features may include a model with advanced authority levels, hardware-assisted virtual memory addressing support, extended storage privilege support, and other virtualization features.

Bestimmte Rechenvorrichtungen beinhalten einen dünnen Hypervisor zur Überwachung oder Überprüfung der Integrität des Gastgeberbetriebssystems. Rechensysteme, die einen dünnen Hypervisor beinhalten, können jedoch Schwierigkeiten haben, zusätzliche Hypervisoren oder VMMs auszuführen, etwa VMMs, die vom Gastgeberbetriebssystem gehostet werden, während die Sicherheit aufrechterhalten bleibt. Beispielsweise haben gehostete VMMs in der Regel privilegierte Komponenten im Gastgeberbetriebssystem, die dessen Sicherheit potenziell beeinträchtigen können. Um die Sicherheitsassertionen des Gastgeberbetriebssystems zu schützen, kann ein dünner Hypervisor alternativ veranlassen, dass Hardware-Virtualisierungseigenschaften gehosteten VMMs nicht zur Verfügung stehen und/oder die Hardwareeigenschaften für den gehosteten VMM virtualisieren und den gehosteten VMM in einem genesteten und/oder deprivilegierten Modus ausführen.Certain computing devices include a thin hypervisor for monitoring or verifying the integrity of the host operating system. However, computing systems that include a thin hypervisor may find it difficult to run additional hypervisors or VMMs, such as VMMs that are hosted by the host operating system while maintaining security. For example, hosted VMMs typically have privileged components in the host operating system that can potentially affect its security. Alternatively, to protect the security provisions of the host operating system, a thin hypervisor may cause hardware virtualization properties of hosted VMMs to be unavailable and / or virtualize the hardware properties for the hosted VMM and execute the hosted VMM in a nested and / or deprivileged mode.

In Systemen mit genesteter Virtualisierung virtualisiert der dünne Hypervisor jeden Ausgang einer virtuellen Maschine (VM), was dazu führen kann, dass zwischen dem dünnen Hypervisor und dem gehosteten VMM eine große Anzahl zusätzlicher VM existiert. Bestimmte von der Intel® Corporation hergestellte Prozessoren beinhalten Hardwareeigenschaften wie Virtual Machine Control Structure Shadowing (VMCS-Shadowing), die die Anzahl der VM-Ausgänge reduzieren kann. In diesen Ausführungsformen nimmt der dünne Hypervisor jedoch für jeden VM-Ausgang noch immer ein genestetes Verarbeiten des VM-Ausgangs vor.In nested virtualization systems, the thin hypervisor virtualizes every virtual machine (VM) exit, which can cause a large number of additional VMs to exist between the thin hypervisor and the hosted VMM. Certain processors manufactured by Intel® Corporation include hardware features such as Virtual Machine Control Structure Shadowing (VMCS), which can reduce the number of VM outlets. However, in these embodiments, the thin hypervisor still makes a nested VM output processing for each VM output.

Figurenlistelist of figures

Die hierin beschriebenen Konzepte werden in den beiliegenden Figuren beispielhaft und nicht einschränkend abgebildet. Zur Einfachheit und Übersichtlichkeit der Darstellung sind die in den Figuren abgebildeten Elemente nicht notwendigerweise maßstäblich. Sofern dies als angemessen erachtet wurde, wurden Referenzbezeichnungen in den Figuren wiederholt, um korrespondierende oder analoge Elemente zu kennzeichnen.

  • 1 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform einer Rechenvorrichtung für mehrstufige Virtualisierung;
  • 2 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform einer Umgebung der Rechenvorrichtung aus 1;
  • 3 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform einer Hypervisor-Umgebung, die von der Rechenvorrichtung aus den 1-2 gebildet werden kann;
  • 4 ist ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zur Root-Virtualisierung, das von der Rechenvorrichtung aus den 1-3 ausgeführt werden kann;
  • 5 ist ein vereinfachtes Flussdiagramm mindestens einer Ausführungsform eines Verfahrens für das Verarbeiten des Ausgangs einer virtuellen Maschine, das von der Rechenvorrichtung aus den 1-3 ausgeführt werden kann;
  • 6 ist ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zur Non-Root-Hypervisor-Paravirtualisierung, das von der Rechenvorrichtung aus den 1-3 ausgeführt werden kann; und
  • 7 ist ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens für Non-Root-Callback-Verarbeiten, das von der Rechenvorrichtung aus den 1-3 ausgeführt werden kann.
The concepts described herein are illustrated by way of example and not limitation in the accompanying figures. For simplicity and clarity of illustration, the elements depicted in the figures are not necessarily to scale. If deemed appropriate, reference numerals have been repeated in the figures to indicate corresponding or analogous elements.
  • 1 FIG. 10 is a simplified block diagram of at least one embodiment of a multilevel virtualization computing device; FIG.
  • 2 FIG. 4 is a simplified block diagram of at least one embodiment of an environment of the computing device 1 ;
  • 3 FIG. 4 is a simplified block diagram of at least one embodiment of a hypervisor environment that originates from the computing device 1 - 2 can be formed;
  • 4 FIG. 4 is a simplified flowchart of at least one embodiment of a method for root virtualization that originates from the computing device 1 - 3 can be executed;
  • 5 FIG. 3 is a simplified flowchart of at least one embodiment of a method for processing the output of a virtual machine that is from the computing device 1 - 3 can be executed;
  • 6 FIG. 10 is a simplified flowchart of at least one embodiment of a method for non-root hypervisor paravirtualization performed by the computing device 1 - 3 can be executed; and
  • 7 FIG. 4 is a simplified flowchart of at least one embodiment of a method for non-root callback processing that originates from the computing device 1 - 3 can be executed.

AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGENDETAILED DESCRIPTION OF THE DRAWINGS

Während die Konzepte der vorliegenden Offenbarung verschiedenen Modifikationen und alternativen Formen unterliegen können, werden in den Zeichnungen konkrete Ausführungsformen davon beispielhaft gezeigt und hierin ausführlich beschrieben. Es versteht sich jedoch, dass nicht beabsichtigt wird, die Konzepte der vorliegenden Offenbarung auf die konkreten offenbarten Formen zu begrenzen; stattdessen soll die Erfindung im Gegenteil alle Modifikationen, Äquivalente und Alternativen abdecken, die konsistent mit der vorliegenden Offenbarung und den anhängenden Ansprüchen sind.While the concepts of the present disclosure may be subject to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and described in detail herein. It is understood, however, that it is not intended to limit the concepts of the present disclosure to the specific forms disclosed; instead, on the contrary, the invention is intended to cover all modifications, equivalents, and alternatives. which are consistent with the present disclosure and the appended claims.

In der Beschreibung enthaltene Verweise auf „eine Ausführungsform“, „eine illustrative Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft beinhalten kann, doch jede Ausführungsform dieses bestimmte Merkmal, diese bestimmte Struktur oder diese bestimmte Eigenschaft zwar beinhalten kann, aber nicht notwendigerweise beinhalten muss. Darüber hinaus beziehen sich solche Ausdrücke nicht notwendigerweise auf dieselbe Ausführungsform. Wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft im Zusammenhang mit einer Ausführungsform beschrieben wird, wird ferner davon ausgegangen, dass es zum Wissen eines Fachmanns auf dem Gebiet gehört, ein solches Merkmal, eine solche Struktur oder eine solche Eigenschaft in Verbindung mit anderen Ausführungsformen zu erwirken, seien sie ausdrücklich beschrieben oder nicht. Darüber hinaus sollte es sich verstehen, dass in einer Liste in der Form von „mindestens ein A, B und C“ enthaltene Positionen (A); (B); (C); (A und B); (A und C); (B und C) oder (A, B und C) bedeuten können. Ähnlich können in einer Liste in der Form von „A, B und/oder C“ enthaltene Positionen (A); (B); (C); (A und B); (A und C); (B und C) oder (A, B und C) bedeuten.References to "one embodiment", "an illustrative embodiment", etc. included in the description indicate that the described embodiment may include a particular feature, structure, or characteristic, but any embodiment of this particular feature, structure, or structure Although this particular property may include, but need not necessarily include. Moreover, such terms do not necessarily refer to the same embodiment. When describing a particular feature, structure, or characteristic in the context of an embodiment, it is further to be understood that it belongs to the knowledge of one skilled in the art, such feature, structure, or trait in connection with to obtain other embodiments, they are expressly described or not. In addition, it should be understood that items contained in a list in the form of "at least one A, B and C" (A); (B); (C); (A and B); (A and C); (B and C) or (A, B and C) may mean. Similarly, positions (A) included in a list in the form of "A, B and / or C"; (B); (C); (A and B); (A and C); (B and C) or (A, B and C).

Die offenbarten Ausführungsformen können in einigen Fällen in Hardware, Firmware, Software oder jeglichen Kombinationen davon umgesetzt werden. Die offenbarten Ausführungsformen können auch als Anweisungen umgesetzt werden, die auf einem flüchtigen oder nicht flüchtigen maschinenlesbaren (z. B. rechenmaschinenlesbaren) Speichermedium abgelegt oder gespeichert sind, das von einem oder mehreren Prozessoren gelesen und ausgeführt werden kann. Ein maschinenlesbares Speichermedium kann verkörpert sein als ein Speichergerät, Mechanismus oder eine andere physische Struktur zum Speichern oder Übertragen von Informationen in einer von einer Maschine lesbaren Form (z. B. ein flüchtiger oder nicht flüchtiger Speicher, eine Medienscheibe oder eine andere Medienvorrichtung).The disclosed embodiments may in some cases be implemented in hardware, firmware, software, or any combination thereof. The disclosed embodiments may also be implemented as instructions stored or stored on a volatile or non-transitory machine-readable (eg, computer readable) storage medium that may be read and executed by one or more processors. A machine readable storage medium may be embodied as a storage device, mechanism, or other physical structure for storing or transmitting information in a machine readable form (eg, a volatile or nonvolatile memory, a media disk, or other media device).

In den Zeichnungen können einige strukturelle oder methodische Merkmale in bestimmten Anordnungen und/oder Reihenfolgen gezeigt werden. Es versteht sich jedoch, dass solche speziellen Anordnungen und/oder Reihenfolgen möglicherweise nicht erforderlich sind. Stattdessen können solche Merkmale in einigen Ausführungsformen in einer anderen Weise und/oder Reihenfolge angeordnet sein als in den illustrativen Figuren dargestellt. Darüber hinaus soll die Einbeziehung eines strukturellen oder methodischen Merkmals in eine bestimmte Figur nicht beinhalten, dass dieses Merkmal in allen Ausführungsformen erforderlich ist und in einigen Ausführungsformen möglicherweise nicht enthalten sein oder mit anderen Merkmalen kombiniert werden kann.In the drawings, some structural or methodological features may be shown in particular arrangements and / or orders. It should be understood, however, that such specific arrangements and / or orders may not be required. Instead, in some embodiments, such features may be arranged in a different manner and / or order than illustrated in the illustrative figures. Moreover, inclusion of a structural or methodological feature in a particular figure is not intended to include that feature being required in all embodiments, and in some embodiments may not be included or combined with other features.

Nunmehr Bezug nehmend auf 1, beinhaltet eine illustrative Rechenvorrichtung 100 für die sichere Kommunikation zwischen virtuellen Maschinen über einen gemeinsamen Speicher einen Prozessor 120, der eine Ausführung in einem Root-Virtualisierungsmodus und in einem Non-Root-Virtualisierungsmodus unterstützt. Wie nachfolgend ausführlicher beschrieben, baut die Rechenvorrichtung 100 im Betrieb einen Root-Hypervisor, der im Root-Virtualisierungsmodus ausgeführt wird, und einen Non-Root-Hypervisor, der im Non-Root-Virtualisierungsmodus ausgeführt wird, auf. Der Root-Hypervisor kann sicherheits- und leistungsintensive Operationen ausführen, etwa generische Handler für Ausgänge virtueller Maschinen. Der Non-Root-Hypervisor kann beim Root-Hypervisor einen oder mehrere Callback-Handler und entsprechende Auslösebedingungen registrieren. In Reaktion auf einen Ausgang einer virtuellen Maschine kann der Root-Hypervisor, wenn die Auslösebedingung erfüllt ist, in den Non-Root-Virtualisierungsmodus schalten und den registrierten Callback-Handler ausführen. Folglich kann die Rechenvorrichtung 100 eine zweistufige Virtualisierung ohne genestete Virtualisierung oder Software-Emulation ermöglichen und damit die virtualisierte Leistung erheblich verbessern. Beispielsweise kann die die Rechenvorrichtung 100 durch Verarbeiten des Ausgangs der virtuellen Maschine im Root-Hypervisor und Evaluieren der Auslösebedingungen im Vergleich zu einer genesteten Virtualisierung ein Ausführen vieler Ausgänge der virtuellen Maschine verhindern. Darüber hinaus kann die Rechenvorrichtung 100 Virtualisierungsvorgänge stapeln oder anderweitig bündeln und Listen von Aktualisierungen für Virtualisierungsunterstützungsobjekte nutzen, um eine volle Virtualisierung aller zur Virtualisierungsunterstützungsobjekte zu vermeiden. Durch Einbeziehung einer höherstufigen Funktionalität in dem Non-Root-Hypervisor kann der Root-Hypervisor im Vergleich zu traditionellen Monitoren oder Hypervisoren für virtuelle Maschinen eine kleinere Codebasis haben, und folglich kann auch die Rechenvorrichtung 100 eine reduzierte vertrauenswürdige Codebasis haben.Referring now to 1 , includes an illustrative computing device 100 for secure communication between virtual machines via a shared memory a processor 120 that supports execution in a root virtualization mode and in a non-root virtualization mode. As described in more detail below, the computing device builds 100 operating a root hypervisor running in root virtualization mode and a non-root hypervisor running in non-root virtualization mode. The root hypervisor can perform security and performance-intensive operations, such as generic handlers for virtual machine outputs. The non-root hypervisor can register one or more callback handlers and corresponding trigger conditions with the root hypervisor. In response to a virtual machine exit, if the trigger condition is met, the root hypervisor can switch to non-root virtualization mode and execute the registered callback handler. Consequently, the computing device 100 enable two-tier virtualization without nested virtualization or software emulation, significantly improving virtualized performance. For example, the computing device 100 Prevent execution of many virtual machine outputs by processing the output of the virtual machine in the root hypervisor and evaluating trigger conditions as compared to nested virtualization. In addition, the computing device 100 Stack or otherwise bundle virtualization operations and use lists of updates to virtualization support objects to avoid full virtualization of all virtualization support objects. By incorporating higher level functionality in the non-root hypervisor, the root hypervisor may have a smaller code base compared to traditional virtual machine monitors or hypervisors, and hence the computing device may also have a lower level of code 100 have a reduced trusted codebase.

Die Rechenvorrichtung 100 kann als jeglicher Typ einer Vorrichtung verkörpert sein, die in der Lage ist, mehrstufige Virtualisierung auszuführen und anderweitig die hierin beschriebenen Funktionen auszuführen. Beispielsweise kann die Rechenvorrichtung 100 ohne Einschränkung verkörpert sein als eine Workstation, ein Server-Rechner, ein verteiltes Rechensystem, ein Multiprozessorsystem, ein Schoßrechner, ein Notizbuchrechner, ein Flachrechner, ein intelligentes Mobiltelefon, eine mobile Rechenvorrichtung, eine tragbare Rechenvorrichtung, ein Rechner, ein Tischrechner, eine verbraucherelektronische Vorrichtung, ein intelligentes Gerät und/oder eine sonstige Rechenvorrichtung, die zu einer Kommunikation zwischen virtuellen Maschinen über einen gemeinsamen Speicher in der Lage sind. Wie in 1 gezeigt, beinhaltet die illustrative Rechenvorrichtung 100 den Prozessor 120, ein E/A-Subsystem 126, einen Speicher 128 und eine Datenspeichervorrichtung 130. Selbstverständlich kann die Rechenvorrichtung 100 in anderen Ausführungsformen andere oder zusätzliche Komponenten beinhalten wie etwa solche, die üblicherweise in einem Notizbuchrechner zu finden sind (z. B. verschiedene Eingabe/Ausgabevorrichtungen). Darüber hinaus können in einigen Ausführungsformen eine oder mehrere der illustrativen Komponenten in einer anderen Komponente enthalten sein oder anderweitig einen Teil einer anderen Komponente bilden. Beispielsweise kann in einigen Ausführungsformen der Speicher 128 oder Teile davon in dem Prozessor 120 enthalten sein.The computing device 100 may be embodied as any type of device capable of performing multilevel virtualization and otherwise performing the functions described herein. For example, the computing device 100 without limitation, be embodied as a workstation, a server computer, a distributed computing system, a multiprocessor system, a lap computer, a notebook computer, a flat computer, a smart mobile phone, a mobile computing device, a portable computing device, a computer, a desktop computer, a computer consumer electronic device, a smart device and / or other computing device capable of communicating between virtual machines through shared memory. As in 1 shown includes the illustrative computing device 100 the processor 120 , an I / O subsystem 126, a memory 128 and a data storage device 130 , Of course, the computing device 100 in other embodiments, include other or additional components, such as those commonly found in a notebook computer (eg, various input / output devices). Moreover, in some embodiments, one or more of the illustrative components may be included in another component or otherwise form part of another component. For example, in some embodiments, the memory 128 or parts of it in the processor 120 be included.

Der Prozessor 120 kann als jeglicher Typ eines Prozessors verkörpert sein, der in der Lage ist, die hierin beschriebenen Funktionen auszuführen. Beispielsweise kann der Prozessor 120 als ein Einzel- oder Mehrfachkernprozessor(en), digitaler Signalprozessor, eine Mikrosteuerung oder ein anderer Prozessor oder eine andere Verarbeitungs-/Steuerungsschaltung verkörpert sein. Darüber hinaus ist die Rechenvorrichtung 100 zwar so illustriert, dass sie einen Einzelprozessor 120 beinhaltet, doch sollte es sich verstehen, dass sie in einigen Ausführungsformen auch mehrere Prozessoren 120 beinhalten kann. Der Prozessor 120 beinhaltet eine hardwarebasierte, hardwareunterstützte oder hardwarebeschleunigte Unterstützung für Virtualisierung. Insbesondere beinhaltet der Prozessor 120 Unterstützung 122 für Erweiterungen virtueller Maschinen (Virtual Machine Extensions, VMX) und Unterstützung 124 für Extended Page Table (EPT). Die VMX-Unterstützung 122 unterstützt die virtualisierte Ausführung von Betriebssystemen und anderen Gästen durch Bereitstellung zweier Ausführungsmodi: den VMX-Root-Modus und den VMX-Non-Root-Modus. Der VMX-Root-Modus gestattet das Ausführen von Software, um eine breite Kontrolle über die Rechenvorrichtung 100 und ihre Hardwareressourcen zu haben. Dementsprechend kann ein Root-Hypervisor im VMX-Root-Modus ausgeführt werden. Der VMX-Non-Root-Modus beschränkt den Zugriff auf bestimmte Hardwarebefehle, während das gewöhnliche Ring-/Privilegsystem des Prozessors 120 noch immer ausgeführt wird. Folglich können ein Non-Root-Hypervisor und eine oder mehrere virtuelle Maschinen (VMs) und/oder Betriebssysteme (Operating Systems, OSs) als Gäste im VMX-Non-Root-Modus ausgeführt werden. Die Ausführung bestimmter Hardwareanweisungen und bestimmter anderer Systemereignisse kann hardwareunterstützte Übergänge in einen VMX-Root-Modus auslösen. Diese hardwareunterstützten Übergänge sind allgemein bekannt als Ausgänge virtueller Maschinen (Virtual Machine Exits, VMExits) oder Hypercalls. Bei Auftreten eines VMExit kann der Prozessor 120 Kontext von der Gast-VM oder dem Non-Root-Hypervisor zum Root-Hypervisor umschalten, um den VMExit zu verarbeiten. Folglich können VMExits in einigen Ausführungsformen zu Leistungsverschlechterungen von virtualisiertem Code führen. Die VMX-Unterstützung 122 kann beispielsweise als IntelⓇ VT-x Technologie verkörpert sein.The processor 120 may be embodied as any type of processor capable of performing the functions described herein. For example, the processor 120 be embodied as a single or multiple core processor (s), digital signal processor, microcontroller or other processor or other processing / control circuitry. In addition, the computing device 100 Although illustrated so that they are a single processor 120 but it should be understood that in some embodiments, they also include multiple processors 120 may include. The processor 120 includes hardware-based, hardware-assisted or hardware-accelerated support for virtualization. In particular, the processor includes 120 support 122 Virtual Machine Extensions (VMX) extensions and 124 Extended Page Table (EPT) support. The VMX support 122 supports virtualized execution of operating systems and other guests by providing two execution modes: VMX root mode and VMX non-root mode. The VMX root mode allows running software to have broad control over the computing device 100 and to have their hardware resources. Accordingly, a root hypervisor can be executed in VMX root mode. The VMX non-root mode restricts access to certain hardware commands while the processor's usual ring / privilege system 120 is still running. As a result, a non-root hypervisor and one or more virtual machines (VMs) and / or operating systems (OSs) can be run as guests in VMX non-root mode. Running certain hardware instructions and certain other system events can trigger hardware-assisted transitions into a VMX root mode. These hardware-assisted transitions are commonly known as virtual machine exits (VMExits) or hypercalls. When a VMExit occurs, the processor can 120 Switch context from the guest VM or the non-root hypervisor to the root hypervisor to process the VMExit. As a result, in some embodiments, VMExits may lead to performance degradation of virtualized code. The VMX support 122 may be embodied as Intel® VT-x technology, for example.

Die EPT-Unterstützung 124 unterstützt eine hardwareassistierte Page-Address-Translation der zweiten Stufe. Bei nicht virtualisierten Arbeitslasten (oder bei Betrieb im VMX-Root-Modus) kann der Prozessor 120 eine hardwareassistierte Übersetzung von virtuellen Speicheradressen (auch bekannt als lineare Adressen) in physische Speicheradressen bereitstellen. Der Prozessor 120 kann Speicheradressen unter Verwendung von einer oder mehreren Seitentabellenstrukturen übersetzen, die im Speicher 128 gespeichert sind und von einem Host-Betriebssystem, Hypervisor oder VMM verwaltet werden. Bei virtualisierten Arbeitslasten (oder bei Betrieb im VMX-Non-Root-Modus) unterstützt der Prozessor 120 eine hardwareassistierte Übersetzung von virtuellen Speicheradressen (die beispielsweise von Anwendungen verwendet werden, die innerhalb einer Gast-VM ausgeführt werden) in Adressen physischer Gastspeicher. Ein Gast-OS kann im Speicher 128 eine oder mehrere Seitentabellenstrukturen verwahren, um die Übersetzung in Adressen physischer Gastspeicher zu verwalten. Es ist jedoch möglich, dass die Adresse eines physischen Gastspeichers nicht mit der Adresse eines tatsächlichen physischen Speichers innerhalb des Speichers 128 korrespondiert. Die EPT-Unterstützung 124 stellt eine hardwareunterstützte Übersetzung von Adressen physischer Gastspeicher in Adressen physischer Speicher (auch bekannt als Adressen physischer Gastgeberspeicher) bereit. Die EPT-Unterstützung 124 kann Speicheradressen unter Verwendung von einer oder mehreren Extended-Page-Table-Strukturen übersetzen, die im Speicher 128 gespeichert sind und von dem Root-Hypervisor verwaltet werden. Ohne die EPT-Unterstützung 124 kann die Übersetzung von Adressen physischer Gastspeicher in Adressen physischer Speicher einen oder mehrere VMExits erfordern. Die EPT-Unterstützung 124 kann auch die Zuweisung von Zugriffsberechtigungen zu jeder physischen Gastseite und/oder physischen Seite (z. B. Lese-, Schreib- und/oder Ausführungsberechtigungen) unterstützen. Berechtigungsverstöße, die als EPT-Verstöße bekannt sein können, können VMExits generieren, die dem Root-Hypervisor ein Verarbeiten des EPT-Verstoßes ermöglichen. Die EPT-Unterstützung 124 kann beispielsweise als Intel® VT-x Technologie verkörpert sein.The EPT support 124 supports second-level hardware-assisted page address translation. For non-virtualized workloads (or when running in VMX root mode), the processor may 120 provide a hardware-assisted translation of virtual memory addresses (also known as linear addresses) into physical memory addresses. The processor 120 can translate memory addresses using one or more page table structures stored in memory 128 are stored and managed by a host operating system, hypervisor or VMM. For virtualized workloads (or when running in VMX non-root mode), the processor supports 120 a hardware-assisted translation of virtual memory addresses (used, for example, by applications running inside a guest VM) into physical guest memory addresses. A guest OS can be in memory 128 Retain one or more page table structures to manage translation into physical guest addresses. However, it is possible that the address of a physical guest does not match the address of an actual physical memory within the memory 128 corresponds. The EPT support 124 provides hardware-assisted translation of physical guest addresses into physical memory addresses (also known as physical host memory addresses). The EPT support 124 can translate memory addresses using one or more extended-page-table structures stored in memory 128 are stored and managed by the root hypervisor. Without the EPT support 124 For example, translation of physical guest addresses into physical memory addresses may require one or more VMExits. The EPT support 124 may also support the assignment of access permissions to each physical guest page and / or physical page (eg, read, write, and / or execute permissions). Permissions violations that may be known as EPT violations can generate VMExits that allow the root hypervisor to handle the EPT violation. The EPT support 124 For example, it can be embodied as Intel® VT-x technology.

Der Speicher 128 kann als jeglicher Typ eines flüchtigen oder nicht flüchtigen Speichers oder Datenspeichers verkörpert sein, der in der Lage ist, die hierin beschriebenen Funktionen auszuführen. Im Betrieb kann der Speicher 128 verschiedene Daten und Software speichern, die während des Betriebs der Rechenvorrichtung 100 verwendet werden, wie Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Der Speicher 128 kann auch ein oder mehrere Virtualisierungsunterstützungsobjekte beinhalten, die zur Steuerung von Virtualisierungsfunktionen des Prozessors 120 genutzt werden können. Beispielsweise kann der Speicher 128 ein oder mehrere Strukturen zur Steuerung einer virtuellen Maschine (Virtual Machine Control Structures, VMCSs) beinhalten, die zum Konfigurieren und anderweitigen Steuern virtueller Maschinen genutzt werden können, die von der Rechenvorrichtung 100 ausgeführt werden. Als ein weiteres Beispiel kann der Speicher 128 eine oder mehrere Extended Page Tables (EPTs) beinhalten. Wie nachfolgend weiter beschrieben, kann der Speicher 128 auch ein oder mehrere virtuelle Virtualisierungsunterstützungsobjekte beinhalten, die von dem Non-Root-Hypervisor verwaltet werden.The memory 128 can be considered any type of volatile or non-volatile memory or Data storage capable of performing the functions described herein. In operation, the memory can 128 store various data and software during operation of the computing device 100 such as operating systems, applications, programs, libraries and drivers. The memory 128 may also include one or more virtualization support objects used to control virtualization capabilities of the processor 120 can be used. For example, the memory 128 include one or more Virtual Machine Control Structures (VMCSs) that may be used to configure and otherwise control virtual machines that are being used by the computing device 100 be executed. As another example, the memory 128 include one or more Extended Page Tables (EPTs). As further described below, the memory may 128 also include one or more virtual virtualization support objects managed by the non-root hypervisor.

Der Speicher 128 ist über das E/A-Subsystem 126 kommunikativ gekoppelt mit dem Prozessor 120, der als Schaltung und/oder Komponenten verkörpert sein kann, um Eingangs/Ausgangsoperationen mit dem Prozessor 120, dem Speicher 128 und anderen Komponenten der Rechenvorrichtung 100 zu ermöglichen. Beispielsweise kann das E/A-Subsystem 126 verkörpert sein als Speichersteuerungs-Hubs, Eingangs/Ausgangs-Steuerungs-Hubs, Firmware-Vorrichtungen, Kommunikationsverbindungen (z. B. Punkt-zu-Punkt-Verbindungen, Busverbindungen, Drähte, Kabel, Lichtleiter, Leiterbahnen usw.) und/oder andere Komponenten und Untersysteme, welche Eingangs/Ausgangsoperationen ermöglichen, oder diese Komponenten anderweitig beinhalten. In einigen Ausführungsformen kann das E/A-Subsystem 126 einen Teil eines Ein-Chip-Systems (System-on-a-Chip, SoC) bilden und zusammen mit dem Prozessor 120, dem Speicher 128 und anderen Komponenten der Rechenvorrichtung 100 auf einem einzelnen Chip mit integrierter Schaltung enthalten sein.The memory 128 is communicatively coupled to the processor via the I / O subsystem 126 120 which may be embodied as circuitry and / or components for input / output operations with the processor 120 the store 128 and other components of the computing device 100 to enable. For example, the I / O subsystem 126 may be embodied as memory control hubs, input / output control hubs, firmware devices, communication links (eg, point-to-point links, bus links, wires, cables, optical fibers, Tracks, etc.) and / or other components and subsystems that enable input / output operations or otherwise incorporate these components. In some embodiments, the I / O subsystem 126 may form part of a system-on-a-chip (SoC) system and along with the processor 120 the store 128 and other components of the computing device 100 contained on a single integrated circuit chip.

Die Datenspeichervorrichtung 130 kann verkörpert sein als jeglicher Typ einer Vorrichtung oder von Vorrichtungen, die zur kurzfristigen oder langfristigen Speicherung von Daten konfiguriert sind, wie beispielsweise Speichervorrichtungen und Schaltungen, Speicherkarten, Festplattenlaufwerke, Festkörperlaufwerke und andere Datenspeichervorrichtungen. In einigen Ausführungsformen kann die Rechenvorrichtung 100 auch eine oder mehrere Peripherievorrichtungen 132 beinhalten. Die Peripherievorrichtungen 132 können eine beliebige Anzahl an zusätzlichen Eingangs/Ausgangsvorrichtungen, Schnittstellenvorrichtungen und/oder Peripherievorrichtungen beinhalten. Beispielsweise können die Peripherievorrichtungen 132 in einigen Ausführungsformen eine Anzeige, einen Berührungsbildschirm, eine Grafikschaltung, eine Tastatur, eine Maus, ein Sprechersystem, einen Netzwerkadapter, eine Kommunikationsschaltung und/oder andere Eingangs/Ausgangsvorrichtungen, Schnittstellenvorrichtungen und/oder Peripherievorrichtungen beinhalten.The data storage device 130 may be embodied as any type of device or devices configured for short-term or long-term storage of data, such as memory devices and circuits, memory cards, hard disk drives, solid state drives, and other data storage devices. In some embodiments, the computing device may 100 also one or more peripheral devices 132 include. The peripheral devices 132 may include any number of additional input / output devices, interface devices, and / or peripheral devices. For example, the peripheral devices 132 in some embodiments, include a display, a touch screen, a graphics circuit, a keyboard, a mouse, a speaker system, a network adapter, a communication circuit, and / or other input / output devices, interface devices, and / or peripheral devices.

Nunmehr Bezug nehmend auf 2, baut die Rechenvorrichtung 100 in der illustrativen Ausführungsform während des Betriebs eine Umgebung 200 auf. Die illustrative Ausführungsform 200 beinhaltet ein VMX-Root-Modul 202 und ein VMX-Non-Root-Modul 212. Wie gezeigt, beinhaltet das VMX-Root-Modul 202 ein Ausgangsmodul 204 einer virtuellen Maschine, ein Callback-Managementmodul 206, ein AktualisierungsManagementmodul 208 und ein Integritätsmodul 210. Das VMX-Non-Root-Modul 212 beinhaltet ein Callback-Modul 216 und ein Paravirtualisierungsmodul 218. Die verschiedenen Module der Umgebung 200 können als Hardware, Firmware, Software oder eine Kombination davon verkörpert sein. Beispielsweise können jedes der Module, die Logik und andere Komponenten der Umgebung 200 einen Teil des Prozessors 120 oder anderer Hardwarekomponenten der Rechenvorrichtung 100 bilden oder anderweitig durch sie gebildet werden. In einigen Ausführungsformen können ein oder mehrere der Module der Umgebung 200 als eine Schaltung oder eine Sammlung elektrischer Vorrichtungen verkörpert sein (z. B. eine Ausgangsschaltung 204 einer virtuellen Maschine, eine Callback-Schaltung 216 usw.).Referring now to 2 , builds the computing device 100 an environment during operation in the illustrative embodiment 200 on. The illustrative embodiment 200 includes a VMX root module 202 and a VMX non-root module 212. As shown, the VMX root module includes 202 an output module 204 a virtual machine, a callback management module 206 , an update management module 208, and an integrity module 210 , The VMX non-root module 212 includes a callback module 216 and a paravirtualization module 218 , The different modules of the environment 200 may be embodied as hardware, firmware, software or a combination thereof. For example, each of the modules, the logic and other components of the environment 200 a part of the processor 120 or other hardware components of the computing device 100 form or otherwise be formed by them. In some embodiments, one or more of the modules of the environment 200 may be embodied as a circuit or collection of electrical devices (eg, an output circuit 204 a virtual machine, a callback circuit 216 etc.).

Das Ausgangsmodul 204 der virtuellen Maschine ist dazu ausgelegt, durch einen Root-Hypervisor den Ausgang einer virtuellen Maschine zu empfangen, der von einer virtuellen Maschine der Rechenvorrichtung 100 erzeugt wurde. Wie nachfolgend weiter beschrieben, wird die virtuelle Maschine von einem Non-Root-Hypervisor der Rechenvorrichtung 100 gehostet. Das Ausgangsmodul 204 der virtuellen Maschine ist dazu ausgelegt, in einem Root-Virtualisierungsmodus des Prozessors 120, beispielsweise dem VMX-Root-Modus, zu arbeiten. Das Ausgangsmodul 204 der virtuellen Maschine kann ferner dazu ausgelegt sein, durch den Root-Hypervisor im Root-Virtualisierungsmodus den Ausgang der virtuellen Maschine zu verarbeiten, nachdem festgestellt wurde, dass für den Grund des Ausgangs der virtuellen Maschine kein Callback-Handler registriert wurde. Das Ausgangsmodul 204 der virtuellen Maschine kann ferner dazu ausgelegt sein, das Ausführen der virtuellen Maschine nach dem Verarbeiten des Ausgangs der virtuellen Maschine oder nachdem festgestellt wurde, dass eine Auslösebedingung im Zusammenhang mit dem Callback-Handler nicht erfüllt wurde, wiederaufzunehmen.The output module 204 The virtual machine is designed to receive, through a root hypervisor, the output of a virtual machine that is from a computing device virtual machine 100 was generated. As further described below, the virtual machine is a non-root hypervisor of the computing device 100 hosted. The output module 204 The virtual machine is designed to be in a root virtualization mode of the processor 120 for example, the VMX root mode. The output module 204 The virtual machine may be further configured to process the output of the virtual machine through the root hypervisor in root virtualization mode after determining that no callback handler has been registered for the reason of the virtual machine's exit. The output module 204 The virtual machine may be further configured to resume execution of the virtual machine after processing the output of the virtual machine or after determining that a trigger condition associated with the callback handler has not been met.

Das Callback-Managementmodul 206 ist dazu ausgelegt, durch den Root-Hypervisor im Root-Virtualisierungsmodus festzustellen, ob für den Grund des Ausgangs der virtuellen Maschine ein Callback-Handler des Non-Root-Hypervisors registriert ist. Das Callback-Managementmodul 206 ist ferner dazu ausgelegt, durch den Root-Hypervisor im Root-Virtualisierungsmodus festzustellen, ob eine Auslösebedingung in Verbindung mit dem Callback-Handler erfüllt ist, wenn festgestellt wurde, dass der Callback-Handler registriert ist. The callback management module 206 is configured to determine, by the root hypervisor in root virtualization mode, whether a non-root hypervisor callback handler is registered for the reason of the virtual machine's exit. The callback management module 206 is further configured to determine, by the root hypervisor in root virtualization mode, whether a trigger condition associated with the callback handler is met when it is determined that the callback handler is registered.

Das Update-Managementmodul 208 ist dazu ausgelegt, durch den Root-Hypervisor im Root-Virtualisierungsmodus festzustellen, ob ein virtuelles Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors in Reaktion auf das Ausführen des Callback-Handlers verändert wurde. Das virtuelle Virtualisierungsunterstützungsobjekt kann beispielsweise als eine virtuelle Struktur zur Steuerung einer virtuellen Maschine (Virtual Machine Control Structure, VMCS) oder eine virtuelle Extended Page Table (EPT) verkörpert sein. Das Aktualisierungsmanagementmodul 208 ist ferner dazu ausgelegt, durch den Root-Hypervisor im Root-Virtualisierungsmodus ein Virtualisierungsunterstützungsobjekt der Rechenvorrichtung 100 zu aktualisieren, basierend auf dem virtuellen Virtualisierungsunterstützungsobjekt in Reaktion auf die Feststellung, dass das virtuelle Virtualisierungsunterstützungsobjekt verändert wurde. Ähnlich kann das Virtualisierungsunterstützungsobjekt als eine VMCS oder eine EPT verkörpert sein. Das Aktualisierungsmanagementmodul 208 ist ferner dazu ausgelegt, durch den Root-Hypervisor die Ausführung der virtuellen Maschine in Reaktion auf ein Aktualisieren des Virtualisierungsunterstützungsobjekts wiederaufzunehmen. In einigen Ausführungsformen kann ein Aktualisieren des Virtualisierungsunterstützungsobjekts beinhalten, dass durch den Root-Hypervisor die Gültigkeit des virtuellen Virtualisierungsunterstützungsobjekts überprüft wird. In einigen Ausführungsformen kann das Aktualisierungsmanagementmodul 208 ferner dazu ausgelegt sein, durch den Root-Hypervisor im Root-Virtualisierungsmodus nach dem Empfang des Ausgangs der virtuellen Maschine das Virtualisierungsunterstützungsobjekt zu verändern und durch den Root-Hypervisor im Root-Virtualisierungsmodus eine Liste von Veränderungen am Virtualisierungsunterstützungsobjekt zu erstellen, die dem Non-Root-Hypervisor bereitgestellt werden können.The update management module 208 is configured to determine, by the root hypervisor in root virtualization mode, whether a virtual virtualization support object of the non-root hypervisor has changed in response to the callback handler being executed. For example, the virtualization support virtual object may be embodied as a virtual machine control structure (VMCS) virtual structure or a virtual extended page table (EPT). The update management module 208 is further configured to have a virtualization support object of the computing device through the root hypervisor in the root virtualization mode 100 based on the virtualization virtualization support object in response to determining that the virtualization virtualization support object has changed. Similarly, the virtualization support object may be embodied as a VMCS or an EPT. The update management module 208 is further configured to resume execution of the virtual machine by the root hypervisor in response to updating the virtualization support object. In some embodiments, updating the virtualization support object may include verifying the validity of the virtualization support virtual object by the root hypervisor. In some embodiments, the update management module may 208 further configured to change the virtualization support object by the root hypervisor in the root virtualization mode after receiving the output of the virtual machine and to create a list of changes to the virtualization support object by the root hypervisor in the root virtualization mode that is the non-root Hypervisor can be provided.

Das Integritätsmodul 210 ist dazu ausgelegt, durch den Root-Hypervisor im Root-Virtualisierungsmodus die Ausführung des Non-Root-Hypervisors zu überwachen. In einigen Ausführungsformen kann das Integritätsmodul 210 ferner dazu ausgelegt sein, durch den Root-Hypervisor im Root-Virtualisierungsmodus die Ausführung eines Gastgeberbetriebssystems der Rechenvorrichtung 100 zu überwachen. Wie nachfolgend beschrieben, kann das Gastgeberbetriebssystem den Non-Root-Hypervisor hosten.The integrity module 210 is designed to monitor the execution of the non-root hypervisor through the root hypervisor in root virtualization mode. In some embodiments, the integrity module 210 further, configured by the root hypervisor in the root virtualization mode to execute a host operating system of the computing device 100 to monitor. As described below, the host operating system can host the non-root hypervisor.

Das Callback-Modul 216 ist dazu ausgelegt, den Callback-Handler des Non-Root-Hypervisors auszuführen, wenn festgestellt wird, dass die Auslösebedingung erfüllt ist. In einigen Ausführungsformen kann das Callback-Modul 216 dazu ausgelegt sein, den Callback-Handler im Non-Root-Virtualisierungsmodus des Prozessors 120 auszuführen. Das Callback-Modul 216 kann ferner dazu ausgelegt sein, durch den Non-Root-Hypervisor auf der Grundlage des Virtualisierungsunterstützungsobjekts das virtuelle Virtualisierungsunterstützungsobjekt zu aktualisieren. Das Callback-Modul 216 kann dazu ausgelegt sein, die vom Root-Hypervisor bereitgestellte Liste von Veränderungen am Virtualisierungsunterstützungsobjekt zu nutzen. Das Callback-Modul 216 kann ferner dazu ausgelegt sein, durch den Non-Root-Hypervisor während des Ausführens des Callback-Handlers das virtuelle Virtualisierungsunterstützungsobjekt zu verändern und durch den Non-Root-Hypervisor eine Liste von Veränderungen am virtuellen Virtualisierungsunterstützungsobjekt zu erstellen.The callback module 216 is designed to execute the callback handler of the non-root hypervisor when it is determined that the trigger condition is met. In some embodiments, the callback module 216 be designed to use the callback handler in non-root virtualization mode of the processor 120 perform. The callback module 216 may be further configured to update the virtualization support virtual object by the non-root hypervisor based on the virtualization support object. The callback module 216 may be configured to use the list of changes to the virtualization support object provided by the root hypervisor. The callback module 216 may be further configured to alter the virtualization support virtualization object by the non-root hypervisor during execution of the callback handler and to make a list of changes to the virtualization support virtualization object through the non-root hypervisor.

Das Paravirtualisierungsmodul 218 ist dazu ausgelegt, durch den Non-Root-Hypervisor festzustellen, ob der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus ausgeführt wird. Das Paravirtualisierungsmodul 218 ist ferner dazu ausgelegt, durch den Non-Root-Hypervisor den Callback-Handler und die zugehörige Auslösebedingung beim Root-Hypervisor zu registrieren, nachdem festgestellt wurde, dass der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus ausgeführt wird. Das Paravirtualisierungsmodul 218 kann ferner dazu ausgelegt sein, die virtuelle Maschine durch den Non-Root-Hypervisor im Root-Virtualisierungsmodus zu hosten, nachdem festgestellt wurde, dass der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus nicht ausgeführt wird.The paravirtualization module 218 is designed to determine by the non-root hypervisor whether the non-root hypervisor is running in non-root virtualization mode. The paravirtualization module 218 is also configured to register the callback handler and associated trigger condition with the root hypervisor through the non-root hypervisor after determining that the non-root hypervisor is running in non-root virtualization mode. The paravirtualization module 218 may be further configured to host the virtual machine by the non-root hypervisor in root virtualization mode after determining that the non-root hypervisor is not running in non-root virtualization mode.

Nunmehr Bezug nehmend auf 3, kann die Rechenvorrichtung 100 im Einsatz eine Hypervisor-Umgebung 300 aufbauen. Wie gezeigt, beinhaltet die illustrative Hypervisor-Umgebung 300 ein Gastgeberbetriebssystem 302, eine oder mehrere virtuelle Maschinen 304, einen Non-Root-Hypervisor 306 und einen Root-Hypervisor 320. Das Gastgeberbetriebssystem 302 kann als jegliches Betriebssystem oder eine andere Steuerungsstruktur der Rechenvorrichtung 100 verkörpert sein. Wie gezeigt, wird das Gastgeberbetriebssystem 302 im VMX-Non-Root-Modus ausgeführt.Referring now to 3 , the computing device can 100 in use a hypervisor environment 300 build up. As shown, the illustrative hypervisor environment includes 300 a host operating system 302 , one or more virtual machines 304 , a non-root hypervisor 306 and a root hypervisor 320 , The host operating system 302 may be any operating system or other control structure of the computing device 100 be embodied. As shown, the host operating system becomes 302 in VMX non-root mode.

Der Root-Hypervisor 320, auch bekannt als Hypervisor der Stufe 0 oder L0-Hypervisor, kann als ein Hypervisor, ein Virtual-Machine-Monitor (VMM) oder eine andere Steuerungsstruktur der Rechenvorrichtung 100 verkörpert sein, die im VMX-Root-Modus ausgeführt wird. Der Root-Hypervisor 320 kann „dünn“ sein; das heißt, der Root-Hypervisor 320 kann eine relativ kleine Codebasis haben. Beispielsweise kann der Root-Hypervisor 320 nur Hardware-Virtualisierungsabstraktionen und Isolation bereitstellen, ohne eine volle Virtualisierung von Gästen bereitzustellen. Wie gezeigt, kann der Root-Hypervisor 320 einen Integritätsprüfer 322 beinhalten, um das Gastgeberbetriebssystem 302 und/oder den Non-Root-Hypervisor 306 zu überwachen und/oder seine Integrität zu prüfen.The root hypervisor 320 , also known as hypervisor of the stage 0 or L0 hypervisor, can act as a hypervisor, virtual machine monitor (VMM), or other computing device control structure 100 be embodied in the VMX root Mode is executed. The root hypervisor 320 can be "thin"; that is, the root hypervisor 320 may have a relatively small code base. For example, the root hypervisor 320 only provide hardware virtualization abstraction and isolation without providing full virtualization of guests. As shown, the root hypervisor can 320 an integrity examiner 322 involve to the host operating system 302 and / or the non-root hypervisor 306 to monitor and / or verify its integrity.

Der Non-Root-Hypervisor 306, auch bekannt als Hypervisor der Stufe 1 oder L1-Hypervisor, kann als ein gehosteter VMM, Hypervisor oder eine andere Steuerungsstruktur der Rechenvorrichtung 100 verkörpert sein, die im VMX-Non-Root-Modus ausgeführt wird. Der Non-Root-Hypervisor 306 kann eine vollständige Virtualisierung von Gästen (z. B. der virtuellen Maschinen 304) bereitstellen und folglich eine relativ große Codebasis haben. Da der Non-Root-Hypervisor 306 nicht im VMX-Root-Modus ausgeführt werden kann, muss der Non-Root-Hypervisor 306 nicht Teil der vertrauenswürdigen Codebasis der Rechenvorrichtung 100 sein.The non-root hypervisor 306 , also known as hypervisor of the stage 1 or L1 hypervisor, may be considered a hosted VMM, hypervisor, or other computing device control structure 100 be embodied in VMX non-root mode. The non-root hypervisor 306 can be a complete virtualization of guests (such as the virtual machines 304 ) and thus have a relatively large code base. Because the non-root hypervisor 306 can not run in VMX root mode, must be the non-root hypervisor 306 not part of the trusted code base of the computing device 100 be.

Wie in 3 gezeigt und nachfolgend ausführlicher beschrieben, verwahrt der Root-Hypervisor 320 eine Sammlung von VMX-Objekten 326, einschließlich beispielsweise einer oder mehrerer Strukturen zur Steuerung einer virtuellen Maschine (VMCSs) 328 und/oder Extended Page Tables (EPTs) 330. Wie nachfolgend ausführlicher beschrieben, können die VMX-Objekte 326 eine jegliche speicherinterne Struktur beinhalten, die vom Prozessor 120 zur Steuerung der Ausführung von virtualisiertem Code genutzt wird. Ähnlich verwahrt der Non-Root-Hypervisor 306 eine Sammlung virtueller VMX-Objekte 308, einschließlich beispielsweise einer oder mehrerer virtueller VMCSs 310 und/oder virtueller EPTs 312. Wie nachfolgend ausführlicher beschrieben, können Aktualisierungen an den virtuellen VMX-Objekten 308 gegenüber den VMX-Objekten 326 und umgekehrt propagiert werden. Wie in 3 gezeigt, können Aktualisierungen unter Verwendung einer Non-Root-Hypervisor-Aktualisierungsliste 314 und einer Root-Hypervisor-Aktualisierungsliste 324 propagiert werden, die Änderungen angeben können, die von dem Non-Root-Hypervisor 306 an den virtuellen VMX-Objekten 308 vorgenommen wurden, bzw. Änderungen, die von dem Root-Hypervisor 320 an den VMX-Objekten 326 vorgenommen wurden.As in 3 shown and described in more detail below, the root hypervisor keeps 320 a collection of VMX objects 326 including, for example, one or more virtual machine control structures (VMCSs) 328 and / or Extended Page Tables (EPTs) 330 , As described in more detail below, the VMX objects 326 include any in-memory structure that is internal to the processor 120 is used to control the execution of virtualized code. Similarly, the non-root hypervisor keeps 306 a collection of virtual VMX objects 308 including, for example, one or more virtual VMCSs 310 and / or virtual EPTs 312 , As described in more detail below, updates may be made to the VMX virtual objects 308 against the VMX objects 326 and vice versa. As in 3 Updates can be made using a non-root hypervisor update list 314 and a root hypervisor update list 324 which may specify changes made by the non-root hypervisor 306 on the virtual VMX objects 308 or changes made by the root hypervisor 320 on the VMX objects 326 were made.

Der Root-Hypervisor 320 baut ferner einen oder mehrere Ausgangs/Eingangs-Handler 332 für eine virtuelle Maschine (VM) auf. Die VM-Ausgangs/Eingangs-Handler 332 können als jegliche Funktion, jegliches Verfahren, jeglicher Vektor oder jegliche sonstige Routine verkörpert sein, die vom Prozessor 120 in Reaktion auf einen Ausgang einer virtuellen Maschine und/oder Eingang einer virtuellen Maschine aktiviert werden kann. Der Non-Root-Hypervisor 306 beinhaltet ferner einen oder mehrere Callback-Handler 316, die als jegliche Funktion, jegliches Verfahren, jeglicher Vektor oder jegliche sonstige Routine verkörpert sein können, die vom Root-Hypervisor 320 aktiviert werden kann, beispielsweise in Reaktion auf einen VM-Ausgang. Wie nachfolgend ausführlicher beschrieben, kann der Root-Hypervisor 320 eine oder mehrere Auslösebedingungen 334 bewerten, um festzustellen, ob ein Callback-Handler 316 zu aktivieren ist.The root hypervisor 320 also builds one or more output / input handlers 332 for a virtual machine (VM). The VM output / input handlers 332 may be embodied as any function, method, vector, or any other routine by the processor 120 in response to an exit of a virtual machine and / or input of a virtual machine. The non-root hypervisor 306 also includes one or more callback handlers 316 which may be embodied as any function, method, vector, or any other routine from the root hypervisor 320 can be activated, for example in response to a VM output. As described in more detail below, the root hypervisor 320 may have one or more trigger conditions 334 rate to determine if a callback handler 316 is to be activated.

Wie gezeigt, beinhaltet die Rechenvorrichtung 100 ferner eine Schnittstelle zur Anwendungsprogrammierung (Application Programming Interface, API) 318 für den Root-Hypervisor, bereitgestellt durch den Root-Hypervisor 320. Die Root-Hypervisor-API 318 kann durch jegliche Funktionsaufrufe, Hypercalls, Ausgänge virtueller Maschinen, spezielle Prozessoranweisungen oder andere Schnittstellenelemente verkörpert werden, die von dem Non-Root-Hypervisor 306 für die Kommunikation mit dem Root-Hypervisor 320 genutzt werden können. Dementsprechend kann der Non-Root-Hypervisor 306 in einigen Ausführungsformen paravirtualisiert werden; das heißt, der Non-Root-Hypervisor 306 kann in der Lage sein festzustellen, dass er unter der Aufsicht eines Root-Hypervisors 320 ausgeführt wird, beispielsweise durch Zugriff auf die Root-Hypervisor-API 318.As shown, the computing device includes 100 and an application programming interface (API) 318 for the root hypervisor provided by the root hypervisor 320 , The root hypervisor API 318 may be embodied by any function calls, hypercalls, virtual machine outputs, special processor instructions, or other interface elements received from the non-root hypervisor 306 for communication with the root hypervisor 320 can be used. Accordingly, the non-root hypervisor 306 paravirtualized in some embodiments; that is, the non-root hypervisor 306 may be able to determine that he is under the supervision of a root hypervisor 320 for example, by accessing the root hypervisor API 318 ,

Beispielsweise kann die Root-Hypervisor-API 318 Hypercalls beinhalten, um das Verarbeiten des VM-Ausgangs für jeden VM-Ausgangsgrund zu konfigurieren, beispielsweise einen VmExitHandle() Hypercall. Der VmExitHandle() Hypercall kann die Gründe für den VM-Ausgang, einen Pointer zu einem Callback-Handler 316, die (in Abhängigkeit vom Grund spezifischen) Auslösebedingungen 334, einen Pointer zu einem virtuellen VMX-Objekt 308 (z. B. eine virtuelle VMCS 310 oder eine virtuelle EPT 312), die Ll-Aktualisierungsliste 314, die LO-Aktualisierungsliste 324 und/oder andere Daten spezifizieren. Als anderes Beispiel kann die Root-Hypervisor-API 318 Hypercalls beinhalten, um die virtuelle VMCS 310 und/oder die virtuelle EPT 312 zu verarbeiten (z. B. ein Ungültigmachen oder andere Aufgaben auszuführen). Die Root-Hypervisor-API 318 kann einen UpdateVMCS() Hypercall beinhalten, um den Root-Hypervisor 320 aufzufordern, die VMCS 328 zu aktualisieren, eine virtuelle VMCS 310 und die Non-Root-Hypervisor-Updateliste 314 zu spezifizieren, und die Root-Hypervisor-API 318 kann einen UpdateEPT() Hypercall beinhalten, um den Root-Hypervisor 320 zum Aktualisieren der EPT 330 aufzufordern, wobei eine virtuelle EPT 312 und die Non-Root-Hypervisor-Updateliste 314 spezifiziert werden. In einigen Ausführungsformen kann die API 318 dem Non-Root-Hypervisor 306 gestatten, eine oder mehrere spezialisierte Prozessoranweisungen auszuführen, um auf Hardware-Virtualisierungsfunktionen des Prozessors 120 zuzugreifen, ohne einen Hypercall zu erzeugen. Beispielsweise kann der Non-Root-Hypervisor 306 in einigen Ausführungsformen die Prozessoranweisung VMFUNC ausführen, um auf die L0-Aktualisierungsliste 324, die VMX-Objekte 326 oder andere Daten zuzugreifen, die vom Root-Hypervisor 320 bezeichnet wurden.For example, the root hypervisor API 318 Hypercalls include configuring VM output processing for each VM origin, such as a VmExitHandle () Hypercall. The vmExitHandle () hypercall may explain the reasons for the VM output, a pointer to a callback handler 316 , the (depending on the reason specific) trigger conditions 334 , a pointer to a virtual VMX object 308 (eg a virtual VMCS 310 or a virtual EPT 312 ), the Ll update list 314 , the LO update list 324 and / or specify other data. As another example, the root hypervisor API 318 Hypercalls involve to the virtual VMCS 310 and / or the virtual EPT 312 to process (eg invalidate or perform other tasks). The root hypervisor API 318 may include an UpdateVMCS () Hypercall to the root hypervisor 320 to summon the VMCS 328 to update a virtual VMCS 310 and the non-root hypervisor update list 314 to specify and the root hypervisor API 318 may include an UpdateEPT () hypercall to the root hypervisor 320 to update the EPT 330 requesting a virtual EPT 312 and the non-root hypervisor update list 314 be specified. In some embodiments, the API 318 the non-root hypervisor 306 allow one or more specialized processor instructions to execute Hardware virtualization capabilities of the processor 120 access without generating a hypercall. For example, the non-root hypervisor 306 in some embodiments, execute the processor instruction VMFUNC to access the L0 update list 324, the VMX objects 326 or other data accessed by the root hypervisor 320 were designated.

Nunmehr Bezug nehmend auf 4 kann die Rechenvorrichtung 100 im Einsatz ein Verfahren 400 zur Root-Virtualisierung ausführen. Das Verfahren 400 kann von dem Root-Hypervisor 320 ausgeführt und folglich im VMX-Root-Modus mit vollem Zugriff auf die Rechenvorrichtung 100 ausgeführt werden. Das Verfahren 400 beginnt im Block 402, in dem die Rechenvorrichtung 100 die VMX-Objekte 326 auf eine virtualisierte Ausführung vorbereitet. Die VMX-Objekte 326 können eine jegliche speicherinterne Struktur beinhalten, die vom Prozessor 120 zur Steuerung der Ausführung von virtualisiertem Code genutzt wird. Beispielsweise können die VMX-Objekte 326 eine oder mehrere Strukturen zur Steuerung einer virtuellen Maschine (VMCSs) 328 und/oder eine oder mehrere Extended Page Tables (EPTs) 330 beinhalten. Welche konkreten VMX-Objekte 326 vorbereitet werden, kann von den Virtualisierungsfähigkeiten des Prozessors 120 sowie von der konkreten Virtualisierungsarbeitslast der Rechenvorrichtung 100 abhängen. Beispielsweise kann der Root-Hypervisor 320 eine VMCS 328 für jede virtuelle CPU und eine EPT 330 für jede virtuelle Maschine 304 vorbereiten.Referring now to 4 can the computing device 100 in use a procedure 400 to perform root virtualization. The procedure 400 can from the root hypervisor 320 executed and thus in VMX root mode with full access to the computing device 100 be executed. The procedure 400 starts in the block 402 in which the computing device 100 the VMX objects 326 prepared for a virtualized execution. The VMX objects 326 may include any in-memory structure used by the processor 120 is used to control the execution of virtualized code. For example, the VMX objects 326 One or More Virtual Machine Control Structures (VMCSs) 328 and / or include one or more Extended Page Tables (EPTs) 330. Which specific VMX objects 326 can be prepared from the virtualization capabilities of the processor 120 as well as the concrete virtualization workload of the computing device 100 depend. For example, the root hypervisor 320 may be a VMCS 328 for every virtual CPU and an EPT 330 for each virtual machine 304 to prepare.

Im Block 404 beginnt die Rechenvorrichtung 100 mit der Ausführung des Gastgeberbetriebssystems 302. Das Gastgeberbetriebssystem 302 kann im VMX-Non-Root-Modus ausgeführt werden. Beispielsweise kann der Root-Hypervisor 320 die Operation eines VM-Eintrags in das Gastgeberbetriebssystem 302 ausführen, um die Ausführung des Gastgeberbetriebssystems 302 zu starten. In einigen Ausführungsformen kann der Root-Hypervisor 320 im Block 406 das Gastgeberbetriebssystem 302 überwachen und/oder einer Integritätsprüfung unterziehen. Der Root-Hypervisor 320 kann bestimmte kritische ausführbare Bilder, Datenstrukturen oder andere Speicherorte ausführen und überwachen, beispielsweise durch Überprüfen von Prüfsummen der kritischen Speicherorte. Der Root-Hypervisor 320 kann jede geeignete Technik nutzen, um das Gastgeberbetriebssystem 302 zu überwachen oder einer Integritätsprüfung zu unterziehen, einschließlich der Nutzung von Virtualisierungsfunktionen des Prozessors 120. Beispielsweise kann der Root-Hypervisor 320 bestimmte Orte im Speicher durch Überwachung auf VM-Ausgänge auf Veränderungen überwachen, indem Genehmigungen für eine oder mehrere EPTs 330 gesetzt oder andere Virtualisierungsfunktionen genutzt werden.In the block 404 the computing device starts 100 with the execution of the host operating system 302 , The host operating system 302 can be run in VMX non-root mode. For example, the root hypervisor 320 the operation of a VM entry in the host operating system 302 execute the execution of the host operating system 302 to start. In some embodiments, the root hypervisor may 320 in the block 406 the host operating system 302 monitor and / or undergo an integrity check. The root hypervisor 320 can execute and monitor certain critical executable images, data structures or other storage locations, for example by checking checksums of the critical storage locations. The root hypervisor 320 can use any suitable technique to host the host system 302 to monitor or integrity check, including the use of virtualization capabilities of the processor 120 , For example, the root hypervisor 320 Monitor specific locations in memory by monitoring for VM outputs for changes by obtaining approvals for one or more EPTs 330 set or other virtualization features are used.

Im Block 408 beginnt die Rechenvorrichtung 100 mit der Ausführung des Non-Root-Hypervisors 306. Der Non-Root-Hypervisor 306 kann im VMX-Non-Root-Modus ausgeführt werden. Das Gastgeberbetriebssystem 302 kann den Non-Root-Hypervisor 306 im VMX-Non-Root-Modus als einen gewöhnlichen Prozess ausführen. Zusätzlich oder alternativ kann der Root-Hypervisor 320 die Ausführung des Non-Root-Hypervisors 306 im VMX-Non-Root-Modus beginnen. In einigen Ausführungsformen kann der Root-Hypervisor 320 im Block 410 den Non-Root-Hypervisor 306 überwachen und/oder einer Integritätsprüfung unterziehen. Der Root-Hypervisor 320 kann bestimmte kritische ausführbare Bilder, Datenstrukturen oder andere Speicherorte identifizieren und überwachen, beispielsweise durch Überprüfen von Prüfsummen der kritischen Speicherorte. Der Root-Hypervisor 320 kann jede geeignete Technik nutzen, um den Non-Root-Hypervisor 306 zu überwachen oder einer Integritätsprüfung zu unterziehen, einschließlich der Nutzung von Virtualisierungsfunktionen des Prozessors 120. Beispielsweise kann der Root-Hypervisor 320 bestimmte Orte im Speicher durch Überwachung auf VM-Ausgänge auf Veränderungen überwachen, indem Genehmigungen für eine oder mehrere EPTs 330 gesetzt oder andere Virtualisierungsfunktionen genutzt werden.In the block 408 the computing device starts 100 with the execution of the non-root hypervisor 306 , The non-root hypervisor 306 can be run in VMX non-root mode. The host operating system 302 can be the non-root hypervisor 306 run in VMX non-root mode as a normal process. Additionally or alternatively, the root hypervisor 320 the execution of the non-root hypervisor 306 start in VMX non-root mode. In some embodiments, the root hypervisor may 320 in block 410, the non-root hypervisor 306 monitor and / or undergo an integrity check. The root hypervisor 320 can identify and monitor certain critical executable images, data structures or other storage locations, for example, by checking checksums of the critical storage locations. The root hypervisor 320 can use any suitable technique to the non-root hypervisor 306 to monitor or integrity check, including the use of virtualization capabilities of the processor 120 , For example, the root hypervisor 320 Monitor specific locations in memory by monitoring for VM outputs for changes by obtaining approvals for one or more EPTs 330 set or other virtualization features are used.

Im Block 412 registriert der Root-Hypervisor 320 der Rechenvorrichtung 100 einen oder mehrere Callback-Handler 316 und zugehörige Auslösebedingungen 334, die vom Non-Root-Hypervisor 306 vorgelegt wurden. Jeder Callback-Handler 316 kann als eine Funktion, ein Verfahren, ein Vektor oder eine andere Routine des Non-Root-Hypervisors 306 verkörpert sein, die vom Root-Hypervisor 320 aktiviert werden können. Der Root-Hypervisor 320 kann einen Callback-Handler 316 für einen oder mehrere potenzielle Gründe für einen VM-Ausgang registrieren. Jede Auslösebedingung 334 kann als eine Strategie, ein Filter oder ein anderer konditionaler Test verkörpert sein, der von dem Root-Hypervisor 320 überprüft werden kann. Wie nachfolgend ausführlicher beschrieben, werden die Auslösebedingungen 334 überprüft um festzustellen, ob der zugeordnete Callback-Handler 316 aufgerufen werden soll. Der Root-Hypervisor 320 kann die Callback-Handler 316 und die Auslösebedingungen 334 in Reaktion auf einen oder mehrere Aufrufe an die Schnittstelle zur Anwendungsprogrammierung (API) 318 für den Root-Hypervisor registrieren. Beispielsweise kann der Non-Root-Hypervisor 306 einen oder mehrere Funktionsaufrufe, Hypercalls, Ausgänge einer virtuellen Maschine oder andere Schnittstellenelemente der API 318 aktivieren, um die Callback-Handler 316 und/oder Auslösebedingungen 334 zu registrieren. Beim Registrieren des Callback-Handlers 316 kann der Non-Root-Hypervisor 306 ebenfalls zusätzliche Informationen liefern, beispielsweise Pointer zu den virtuellen VMX-Objekten 308 oder Listen verlangter Feldaktualisierungen für die VMCS 328, die von dem Root-Hypervisor 320 auszuführen sind.In the block 412 registers the root hypervisor 320 the computing device 100 one or more callback handlers 316 and associated triggering conditions 334 by the non-root hypervisor 306 were submitted. Every callback handler 316 may function as a function, procedure, vector or other routine of the non-root hypervisor 306 be embodied by the root hypervisor 320 can be activated. The root hypervisor 320 may be a callback handler 316 register for one or more potential reasons for a VM exit. Each trigger condition 334 may be embodied as a strategy, filter, or other conditional test by the root hypervisor 320 can be checked. As described in more detail below, the trigger conditions 334 Checks to see if the associated callback handler 316 should be called. The root hypervisor 320 Can the callback handler 316 and the triggering conditions 334 in response to one or more calls to the Application Programming Interface (API) 318 register for the root hypervisor. For example, the non-root hypervisor 306 may include one or more function calls, hypercalls, outputs of a virtual machine, or other interface elements of the API 318 enable the callback handler 316 and / or triggering conditions 334 to register. When registering the callback handler 316 can be the non-root hypervisor 306 also provide additional information, such as pointers to the virtual VMX objects 308 or lists required Field updates for the VMCS 328 that from the root hypervisor 320 are to be executed.

Im Block 414 überwacht der Root-Hypervisor 320 der Rechenvorrichtung 100 auf vom VMX-Non-Root-Modul erzeugte VM-Ausgänge. Die VM-Ausgänge können beispielsweise von dem Gastgeberbetriebssystem 302, den virtuellen Maschinen 304 und/oder dem Non-Root-Hypervisor 306 erzeugt werden. Der Root-Hypervisor 320 kann zur Überwachung der VM-Ausgänge jede Technik einsetzen. Beispielsweise kann der Root-Hypervisor 320 in einigen Ausführungsformen schlafen, nachgeben oder anderweitig die Verarbeitung stoppen und darauf warten, dass der Prozessor 120 einen VM-Ausgangs-Handler 332 in Reaktion auf einen VM-Ausgang aktiviert. Während der Root-Hypervisor 320 eine Überwachung auf VM-Ausgänge durchführt, wird das Verfahren 400 abgeschlossen, doch das Gastgeberbetriebssystem 302, die virtuellen Maschinen 304 und der Non-Root-Hypervisor 306 können das Ausführen auf der Rechenvorrichtung 100 fortsetzen.In the block 414 monitors the root hypervisor 320 the computing device 100 on VM outputs generated by the VMX non-root module. For example, the VM outputs may be from the host operating system 302 , the virtual machines 304 and / or the non-root hypervisor 306 be generated. The root hypervisor 320 can use any technique to monitor the VM outputs. For example, the root hypervisor 320 in some embodiments, sleep, yield, or otherwise stop processing and wait for the processor 120 activates a VM output handler 332 in response to a VM output. During the root hypervisor 320 performs a monitoring on VM outputs, the procedure 400 completed, but the host operating system 302 , the virtual machines 304 and the non-root hypervisor 306 can run on the computing device 100 continue.

Nunmehr Bezug nehmend auf die 5, kann die Rechenvorrichtung 100 im Einsatz ein Verfahren 500 für das Verarbeiten des Ausgangs einer virtuellen Maschine ausführen. Das Verfahren 500 kann von dem Root-Hypervisor 320 ausgeführt und folglich im VMX-Root-Modus mit vollem Zugriff auf die Rechenvorrichtung 100 ausgeführt werden. Das Verfahren 500 beginnt im Block 502, in dem die Rechenvorrichtung 100 einen Ausgang einer virtuellen Maschine verarbeitet. Wie oben beschrieben, kann die Virtualisierungsunterstützung des Prozessors 120 in Reaktion auf den VM-Ausgang einen VM-Ausgangs-Handler 332 des Root-Hypervisors 320 aktivieren. Der VM-Ausgangs-Handler 332 wird im VMX-Root-Modus ausgeführt.Referring now to the 5 , the computing device can 100 in use a procedure 500 to process the output of a virtual machine. The procedure 500 can from the root hypervisor 320 executed and thus in VMX root mode with full access to the computing device 100 be executed. The procedure 500 starts in the block 502 in which the computing device 100 processed an output of a virtual machine. As described above, the virtualization support of the processor 120 in response to the VM output, a VM output handler 332 of the root hypervisor 320 activate. The VM output handler 332 is executed in VMX root mode.

Im Block 504 stellt die Rechenvorrichtung 100 fest, ob für den Grund des aktuellen VM-Ausgangs ein Callback-Handler 316 registriert wurde. Die Rechenvorrichtung 100 kann für viele Gründe VM-Ausgänge erzeugen, etwa für eine Unterbrechung, eine Störung, eine Softwareunterbrechung, eine EPT-Verletzung, einen ausdrücklichen VM-Ausgangs-Befehl oder einen anderen Grund für einen VM-Ausgang. Wie oben in Verbindung mit Block 412 beschrieben, kann der Non-Root-Hypervisor 306 beim Root-Hypervisor 320 Callback-Handler 316 für bestimmte Gründe für einen VM-Ausgang registrieren. Die Rechenvorrichtung 100 kann jede Technik nutzen, um den Ausgangsgrund des aktuellen VM-Ausgangs festzustellen. Beispielsweise kann die Rechenvorrichtung 100 ein oder mehrere Felder der VMCS 328 lesen. Im Block 506 prüft die Rechenvorrichtung 100, ob ein Callback-Handler 316 registriert ist. Ist dies der Fall, fährt das Verfahren 500 mit Block 510 fort, wie nachfolgend beschrieben. Wenn kein Callback-Handler 316 registriert ist, zweigt das Verfahren 500 zum Block 508 ab.In the block 504 represents the computing device 100 Determines whether a callback handler is responsible for the reason of the current VM outbox 316 was registered. The computing device 100 may generate VM outputs for many reasons such as an interrupt, a malfunction, a software interrupt, an EPT violation, an explicit VM output command, or another reason for a VM output. As above in connection with block 412 described, the non-root hypervisor 306 at the root hypervisor 320 Register callback handlers 316 for specific reasons for a VM exit. The computing device 100 can use any technique to determine the starting reason of the current VM output. For example, the computing device 100 one or more fields of the VMCS 328 read. In the block 506 checks the computing device 100 whether a callback handler 316 is registered. If this is the case, the procedure continues 500 with block 510 as described below. If not a callback handler 316 registered, the process branches 500 to the block 508 from.

Im Block 508 verarbeitet der Root-Hypervisor 320 der Rechenvorrichtung 100 den VM-Ausgang. Der Root-Hypervisor 320 kann eine geeignete Verarbeitung des VM-Ausgangs ausführen, einschließlich einer Veränderung von VMX-Objekten 326 oder der Ausführung anderer Virtualisierungsaufgaben. In einigen Ausführungsformen kann der Root-Hypervisor 320 generische oder standardmäßige Operation für das Verarbeiten von VM-Ausgängen ausführen. Folglich kann der Root-Hypervisor 320 bestimmte VM-Ausgänge ohne Einbeziehung des Non-Root-Hypervisors 306 verarbeiten. Beispielsweise kann ein durch Ausführen der CPUID-Anweisung verursachter VM-Ausgang in einigen Ausführungsformen vom Root-Hypervisor 320 ohne Aktivieren des Non-Root-Hypervisors 306 verarbeitet werden. Nach dem Verarbeiten des VM-Ausgangs verzweigt sich das Verfahren 500 nach vorn zum Block 530, in dem der Root-Hypervisor 320 einen VM-Eingang zu dem VMX-Non-Root-Modus ausführt, beispielsweise das Ausführen des Gastgeberbetriebssystems 302, der virtuellen Maschine 304 und/oder des Non-Root-Hypervisors 306 wieder aufnimmt.In the block 508 processes the root hypervisor 320 the computing device 100 the VM output. The root hypervisor 320 may perform appropriate processing of the VM output, including a modification of VMX objects 326 or the execution of other virtualization tasks. In some embodiments, the root hypervisor may 320 perform generic or standard operation for processing VM outputs. Consequently, the root hypervisor can 320 certain VM outputs without the inclusion of the non-root hypervisor 306 to process. For example, in some embodiments, a VM output caused by executing the CPUID instruction may be from the root hypervisor 320 without activating the non-root hypervisor 306 are processed. After processing the VM output, the process branches 500 forward to the block 530 in which the root hypervisor 320 performs a VM input to the VMX non-root mode, such as running the host operating system 302 , the virtual machine 304 and / or the non-root hypervisor 306 resumes.

Erneut Bezug nehmend auf Block 506, fährt das Verfahren 500 mit Block 510 fort, in dem der Root-Hypervisor 320 den VM-Ausgang verarbeitet, wenn für den Ausgangsgrund des VM-Ausgangs ein Callback-Handler 316 registriert wird. Wie weiter oben beschrieben, kann der Root-Hypervisor 320 ein jegliches geeignetes Verarbeiten des VM-Ausgangs ausführen, einschließlich einer Verarbeitung eines generischen oder standardmäßigen VM-Ausgangs. In einigen Ausführungsformen kann der Root-Hypervisor 320 im Block 512 ein oder mehrere VMX-Objekte 326 verändern (z. B. die VMCS 328 und/oder die EPT 330) und eine Liste 324 von Aktualisierungen erstellen, die vom Root-Hypervisor 320 ausgeführt werden. Die Root-Hypervisor-Aktualisierungsliste 324 kann bestimmte VMX-Objekte 326, Felder oder andere Daten identifizieren, die vom Root-Hypervisor 320 geändert wurden. Beispielsweise kann die Liste 324 als eine Bitmap verkörpert sein, die bestimmte Felder der VMCS 328 und/oder der EPT 330 identifiziert, welche vom Root-Hypervisor 320 geändert wurden. Ähnlich kann der Root-Hypervisor 320 in einigen Ausführungsformen im Block 514 auf ein oder mehrere VMX-Objekte 326 zugreifen, für die vom Non-Root-Hypervisor 306 Aktualisierungen angefordert wurden. Wie vorstehend in Verbindung mit Block 412 von 4 beschrieben, kann der Non-Root-Hypervisor 306 Aktualisierungen für bestimmte VMX-Objekte 326, Felder oder andere VMX-Daten anfordern. Der Root-Hypervisor 320 kann die angeforderten VMX-Objekte 326, Felder oder sonstige Daten in der Root-Hypervisor-Aktualisierungsliste 324 beinhalten. Der Root-Hypervisor 320 kann ein oder mehrere Bits in Verbindung mit den angeforderten Daten setzen, die angeforderten Daten kopieren oder die angeforderten Daten dem Non-Root-Hypervisor 306 anderweitig verfügbar machen.Again referring to Block 506 , the procedure continues 500 with block 510 in which the root hypervisor 320 processes the VM output if a callback handler is used for the output reason of the VM output 316 is registered. As described earlier, the root hypervisor can 320 perform any suitable processing of the VM output, including processing of a generic or standard VM output. In some embodiments, the root hypervisor may 320 in the block 512 one or more VMX objects 326 change (for example, the VMCS 328 and / or the EPT 330 ) and a list 324 of updates made by the root hypervisor 320 be executed. The root hypervisor update list 324 can use certain VMX objects 326 To identify fields, fields, or other data from the root hypervisor 320 was changed. For example, the list 324 be embodied as a bitmap containing the specific fields of the VMCS 328 and / or the EPT 330 identified by the root hypervisor 320 was changed. Similarly, the root hypervisor 320 in some embodiments in the block 514 on one or more VMX objects 326 for the non-root hypervisor 306 Updates were requested. As above in connection with block 412 from 4 described, the non-root hypervisor 306 Updates for specific VMX objects 326 Request fields, fields or other VMX data. The root hypervisor 320 can be the requested VMX objects 326 , Fields, or other data in the root hypervisor update list 324 include. The root hypervisor 320 can one or Set several bits in connection with the requested data, copy the requested data or the requested data to the non-root hypervisor 306 make it available elsewhere.

In Block 516 überprüft der Root-Hypervisor 320 der Rechenvorrichtung 100 eine oder mehrere Auslösebedingungen 334, die dem Callback-Handler 316 zugeordnet sind, der für den aktuellen VM-Ausgangsgrund registriert ist. Wie oben beschrieben, kann jede Auslösebedingung 334 als eine Strategie, ein Filter oder ein anderer konditionaler Test verkörpert sein, die bzw. der von dem Root-Hypervisor 320 überprüft werden kann. Da die Auslösebedingungen 334 von dem Non-Root-Hypervisor 306 spezifiziert, aber vom Root-Hypervisor 320 evaluiert wurden, gestatten die Auslösebedingungen 334 ein Delegieren der strategischen Entscheidungen vom Non-Root-Hypervisor 306 zum Root-Hypervisor 320. In Block 518 stellt der Root-Hypervisor 320 fest, ob die Auslösebedingung(en) 334 erfüllt wurde(n). Falls nicht, verzweigt sich das Verfahren 500 nach vorn zum Block 530, in dem der Root-Hypervisor 320 einen VM-Eingang zu dem VMX-Non-Root-Modus ausführt, beispielsweise das Ausführen des Gastgeberbetriebssystems 302, der virtuellen Maschine 304 und/oder des Non-Root-Hypervisors 306 wieder aufnimmt. Wenn die Auslösebedingung(en) 334 erfüllt wurde(n), wird das Verfahren 500 mit Block 520 fortgesetzt.In block 516 checks the root hypervisor 320 the computing device 100 one or more trigger conditions 334 that the callback handler 316 assigned to the current VM outgoing reason. As described above, each trigger condition 334 be embodied as a strategy, filter, or other conditional test from the root hypervisor 320 can be checked. As the trigger conditions 334 from the non-root hypervisor 306 specified, but from the root hypervisor 320 were evaluated, allow the trigger conditions 334 delegate the strategic decisions from the non-root hypervisor 306 to the root hypervisor 320 , In block 518 represents the root hypervisor 320 Determines if the trigger condition (s) 334 was fulfilled. If not, the process branches 500 forward to the block 530 in which the root hypervisor 320 performs a VM input to the VMX non-root mode, such as running the host operating system 302 , the virtual machine 304 and / or the non-root hypervisor 306 resumes. If the trigger condition (s) 334 has been met, the procedure will be 500 with block 520 continued.

Im Block 520 schaltet die Rechenvorrichtung 100 in einigen Ausführungsformen in den VMX-Non-Root-Modus um. Beispielsweise kann der Root-Hypervisor 320 einen VM-Eintrag ausführen oder anderweitig in den VMX-Non-Root-Modus umschalten. Das Umschalten in den VMX-Non-Root-Modus kann dem Root-Hypervisor 320 gestatten, die Sicherheit und/oder Integrität der Rechenvorrichtung 100 zu wahren, gleichzeitig aber den Callback-Handler 316 auszuführen, wie nachfolgend beschrieben. Zusätzlich oder alternativ kann die Rechenvorrichtung 100 in einigen Ausführungsformen - wenn der Non-Root-Hypervisor 306 vom Root-Hypervisor 320 als vertrauenswürdig betrachtet wird - im VMX-Root-Modus bleiben, während der Callback-Handler 316 ausgeführt wird, was die Leistung verbessern kann. Im Block 522 führt die Rechenvorrichtung 100 den Callback-Handler 316 des Non-Root-Hypervisors 306 aus. Wenn der Callback-Handler 316 ausgeführt wird, kann der Callback-Handler 316 eine oder mehrere virtuelle VMX-Objekte 308 verändern. Eine potenzielle Ausführungsform eines Callback-Handlers 316 wird nachfolgend unter Bezugnahme auf 7 ausführlicher beschrieben.In the block 520 turns on the computing device 100 in some embodiments, to VMX non-root mode. For example, the root hypervisor 320 execute a VM entry or otherwise switch to VMX non-root mode. Switching to VMX non-root mode allows the root hypervisor 320 allow the security and / or integrity of the computing device 100 while preserving the callback handler 316 perform as described below. Additionally or alternatively, the computing device 100 in some embodiments - if the non-root hypervisor 306 from the root hypervisor 320 is considered trusted - remain in VMX root mode while the callback handler 316 running, which can improve performance. In the block 522 leads the computing device 100 the callback handler 316 the non-root hypervisor 306 out. If the callback handler 316 Running the callback handler 316 one or more virtual VMX objects 308 change. A potential embodiment of a callback handler 316 is referred to below with reference to 7 described in more detail.

Nachdem die Ausführung des Callback-Handlers 316 abgeschlossen ist, wird die Ausführung des Verfahrens 500 im Block 524 im VMX-Root-Modus wieder aufgenommen. Im Block 524 führt die Rechenvorrichtung 100 eine Überprüfung auf Aktualisierungen an den virtuellen VMX-Objekten 308 durch (z. B. der virtuellen VMCS 310 und/oder der virtuellen EPT 312), ausgeführt vom Non-Root-Hypervisor 306 während der Ausführung des Callback-Handlers 316. Die Rechenvorrichtung 100 kann jede Technik nutzen, um festzustellen, ob die virtuellen VMX-Objekte 308 aktualisiert wurden. Beispielsweise kann der Root-Hypervisor 320 vom Non-Root-Hypervisor 306 eine Non-Root-Hypervisor-Aktualisierungsliste 314 erhalten. Die Non-Root-Hypervisor-Aktualisierungsliste 314 identifiziert - ähnlich der Root-Hypervisor-Aktualisierungsliste 324 - virtuelle VMX-Objekte 308, Felder oder andere Daten der virtuellen VMX-Objekte 308, die vom Non-Root-Hypervisor 306 verändert wurden. Die Liste 314 kann als eine Bitmap verkörpert sein, die Felder der virtuellen VMCS 310 und/oder der virtuellen EPT 312 identifiziert, welche vom Non-Root-Hypervisor 306 geändert wurden. Im Block 526 stellt die Rechenvorrichtung 100 fest, ob die virtuellen VMX-Objekte 308 vom Non-Root-Hypervisor 306 geändert wurden. Falls nicht, verzweigt sich das Verfahren 500 nach vorn zum Block 530, in dem der Root-Hypervisor 320 einen VM-Eingang zu dem VMX-Non-Root-Modus ausführt, beispielsweise das Ausführen des Gastgeberbetriebssystems 302, der virtuellen Maschine 304 und/oder des Non-Root-Hypervisors 306 wieder aufnimmt. Wenn die virtuellen VMX-Objekte 308 geändert wurden, fährt das Verfahren 500 mit Block 528 fort.After the execution of the callback handler 316 is completed, the execution of the procedure 500 in the block 524 resumed in VMX root mode. In the block 524 leads the computing device 100 a check for updates to the virtual VMX objects 308 through (eg the virtual VMCS 310 and / or the virtual EPT 312 ), executed by the non-root hypervisor 306 during the execution of the callback handler 316 , The computing device 100 can use any technique to determine if the virtual VMX objects 308 have been updated. For example, the root hypervisor 320 may be from the non-root hypervisor 306 a non-root hypervisor update list 314 receive. The non-root hypervisor update list 314 Identified - similar to the root hypervisor update list 324 - virtual VMX objects 308 , Fields or other data of the virtual VMX objects 308 by the non-root hypervisor 306 were changed. The list 314 may be embodied as a bitmap, the fields of the virtual VMCS 310 and / or the virtual EPT 312 identified by the non-root hypervisor 306 was changed. In the block 526 represents the computing device 100 determines if the virtual VMX objects 308 from the non-root hypervisor 306 was changed. If not, the process branches 500 forward to the block 530 in which the root hypervisor 320 performs a VM input to the VMX non-root mode, such as running the host operating system 302 , the virtual machine 304 and / or the non-root hypervisor 306 resumes. If the virtual VMX objects 308 have changed, the procedure continues 500 with block 528 continued.

Im Block 528 kopiert die Rechenvorrichtung 100 Aktualisierungen von den virtuellen VMX-Objekten 308 zu den VMX-Objekten 326. Die Rechenvorrichtung 100 kann nur jene virtuellen VMX-Objekte 308, Felder oder andere Daten kopieren, die verändert wurden, beispielsweise unter Verwendung der Non-Root-Hypervisor-Aktualisierungsliste 314. Wenn die Rechenvorrichtung 100 die aktualisierten Daten kopiert (oder noch vor dem Kopieren der aktualisierten Daten), kann der Root-Hypervisor 320 die Gültigkeit der Daten prüfen, die in den virtuellen VMX-Objekten 308 enthalten sind. Indem der Root-Hypervisor 320 nur gültige Daten kopiert, kann er somit die Sicherheit und Integrität der Virtualisierungsumgebung der Rechenvorrichtung 100 aufrechterhalten. Nach dem Kopieren der Aktualisierungen für die VMX-Objekte 326 fährt das Verfahren 500 mit Block 530 fort, in dem der Root-Hypervisor 320 einen VM-Eingang zu dem VMX-Non-Root-Modus ausführt, beispielsweise das Ausführen des Gastgeberbetriebssystems 302, der virtuellen Maschine 304 und/oder des Non-Root-Hypervisors 306 wieder aufnimmt. Nach dem Eintritt in den Non-Root-Modus wird das Verfahren 500 abgeschlossen.In the block 528 copies the computing device 100 Updates from the virtual VMX objects 308 to the VMX objects 326 , The computing device 100 can only those virtual VMX objects 308 Copy fields, or other data that has been changed, for example, using the non-root hypervisor update list 314 , When the computing device 100 The root hypervisor can copy the updated data (or even before copying the updated data) 320 check the validity of the data in the virtual VMX objects 308 are included. By the root hypervisor 320 Thus, copying only valid data, it can increase the security and integrity of the virtualization environment of the computing device 100 maintained. After copying the updates for the VMX objects 326 drives the procedure 500 with block 530 in which the root hypervisor 320 executes a VM input to the VMX non-root mode, such as running the host operating system 302 , the virtual machine 304 and / or the non-root hypervisor 306 resumes. After entering the non-root mode, the procedure becomes 500 completed.

Nunmehr Bezug nehmend auf 6, kann die Rechenvorrichtung 100 im Gebrauch ein Verfahren 600 zur Paravirtualisierung des Non-Root-Hypervisors ausführen. Das Verfahren 600 kann beispielsweise ausgeführt werden, wenn der Non-Root-Hypervisor 306 gestartet oder in Betrieb genommen wird oder anderweitig mit der Ausführung beginnt. Das Verfahren 600 beginnt im Block 602, in dem die Rechenvorrichtung 100 feststellt, ob der Non-Root-Hypervisor 306 im VMX-Non-Root-Modus unter der Kontrolle des Root-Hypervisors 320 ausgeführt wird. Beispielsweise wird der Non-Root-Hypervisor 306 in der Hypervisor-Umgebung 300 von 3 und im Verfahren 400 von 4 vom Gastgeberbetriebssystem 302 und/oder vom Root-Hypervisor 320 im VMX-Non-Root-Modus gestartet. In anderen Ausführungsformen kann der Non-Root-Hypervisor 306 jedoch ohne Präsenz des Root-Hypervisors 320 ausgeführt werden. Beispielsweise kann der Non-Root-Hypervisor 306 von einem Gastgeberbetriebssystem 302 gehostet werden, wenn der Root-Hypervisor 320 nicht aktiv ist, oder der Non-Root-Hypervisor 306 kann auf der Hardware der Rechenvorrichtung 100 als ein „Bare-Metal-Hypervisor“ ausgeführt werden. Der Non-Root-Hypervisor 306 kann jegliche Technik nutzen um festzustellen, ob der Non-Root-Hypervisor 306 im VMX-Non-Root-Modus unter der Kontrolle des Root-Hypervisors 320 ausgeführt wird. Beispielsweise kann der Non-Root-Hypervisor 306 feststellen, ob die Root-Hypervisor-API 318 verfügbar ist, oder der Non-Root-Hypervisor 306 kann eine oder mehrere Funktionen, Hypercalls, oder andere Routinen der Root-Hypervisor-API 318 aufrufen um festzustellen, ob der Root-Hypervisor 320 aktiv ist.Referring now to 6 , the computing device can 100 a procedure in use 600 for paravirtualization of the non-root Perform hypervisors. The procedure 600 For example, if the non-root hypervisor is running 306 started or put into operation or otherwise begins with the execution. The procedure 600 starts in the block 602 in which the computing device 100 determines if the non-root hypervisor 306 in VMX non-root mode under the control of root hypervisor 320. For example, the non-root hypervisor becomes 306 in the hypervisor environment 300 from 3 and in the process 400 from 4 from host operating system 302 and / or from the root hypervisor 320 started in VMX non-root mode. In other embodiments, the non-root hypervisor may 306 but without presence of the root hypervisor 320 be executed. For example, the non-root hypervisor 306 from a host operating system 302 be hosted when the root hypervisor 320 is not active, or the non-root hypervisor 306 can on the hardware of the computing device 100 as a "bare-metal hypervisor". The non-root hypervisor 306 can use any technique to determine if the non-root hypervisor 306 in VMX non-root mode under the control of the root hypervisor 320 is performed. For example, the non-root hypervisor 306 determine if the root hypervisor API 318 available, or the non-root hypervisor 306 can be one or more functions, hypercalls, or other routines of the root hypervisor API 318 Call to see if the root hypervisor 320 is active.

Im Block 604 prüft die Rechenvorrichtung 100, ob der Non-Root-Hypervisor 306 im VMX-Non-Root-Modus unter der Kontrolle des Root-Hypervisors 320 ausgeführt wird. Falls nicht, fährt das Verfahren 600 mit Block 606 fort, wo der Non-Root-Hypervisor 306 eine oder mehrere virtuelle Maschinen 304 im VMX-Root-Modus hosten kann. Folglich kann der Non-Root-Hypervisor 306 in bestimmten Ausführungsformen als älterer gehosteter Hypervisor agieren, der Teil der vertrauenswürdigen Rechenbasis der Rechenvorrichtung 100 ist. Erneut Bezug nehmend auf Block 604, fährt das Verfahren 600 mit Block 608 fort, wenn der Non-Root-Hypervisor 306 unter der Kontrolle des Root-Hypervisors 320 im VMX-Non-Root-Modus ausgeführt wird.In the block 604 checks the computing device 100 whether the non-root hypervisor 306 is in VMX non-root mode under the control of the root hypervisor 320 is performed. If not, the procedure continues 600 with block 606 gone where the non-root hypervisor 306 one or more virtual machines 304 can host in VMX root mode. Consequently, the non-root hypervisor 306 act as an older hosted hypervisor in certain embodiments, the part of the trusted computing base of the computing device 100 is. Again referring to Block 604 , the procedure continues 600 with block 608 if the non-root hypervisor 306 under the control of the root hypervisor 320 in VMX non-root mode.

Im Block 608 bereitet die Rechenvorrichtung 100 die virtuellen VMX-Objekte 308 (z. B. die virtuelle VMCS 310 und/oder die virtuelle EPT 312) vor. Der Non-Root-Hypervisor 306 kann die virtuellen VMX-Objekte 308 vorbereiten, als seien sie tatsächliche VMX-Objekte 326, die durch die Virtualisierungsunterstützung des Prozessors 120 genutzt werden. Beispielsweise kann der Non-Root-Hypervisor 306 eine virtuelle VMCS 310 für jede virtuelle CPU und eine virtuelle EPT 312 für jede virtuelle Maschine 304 vorbereiten.In the block 608 prepares the computing device 100 the virtual VMX objects 308 (e.g., the virtual VMCS 310 and / or the virtual EPT 312 ) in front. The non-root hypervisor 306 may be the virtual VMX objects 308 prepare as if they were actual VMX objects 326 caused by the virtualization support of the processor 120 be used. For example, the non-root hypervisor 306 a virtual VMCS 310 for each virtual CPU and a virtual EPT 312 for each virtual machine 304 to prepare.

Im Block 610 registriert die Rechenvorrichtung 100 einen oder mehrere Callback-Handler 316 und Auslösebedingungen 334 beim Root-Hypervisor 320. Wie vorstehend beschrieben, kann jeder Callback-Handler 316 als eine Funktion, ein Verfahren, ein Vektor oder eine andere Routine des Non-Root-Hypervisors 306 verkörpert sein, die vom Root-Hypervisor 320 aktiviert werden können. Der Non-Root-Hypervisor 306 kann einen Callback-Handler 316 für einen oder mehrere potenzielle Gründe für einen VM-Ausgang registrieren. Jede Auslösebedingung 334 kann als eine Strategie, ein Filter oder ein anderer konditionaler Test verkörpert sein, der von dem Root-Hypervisor 320 überprüft werden kann. Wie nachfolgend ausführlicher beschrieben, werden die Auslösebedingungen 334 überprüft um festzustellen, ob der zugeordnete Callback-Handler 316 aufgerufen werden soll. Der Non-Root-Hypervisor 306 kann die Callback-Handler 316 und die Auslösebedingungen 334 durch einen oder mehrere Aufrufe an die Root-Hypervisor-API 318 registrieren. Beispielsweise kann der Non-Root-Hypervisor 306 einen oder mehrere Funktionsaufrufe, Hypercalls, Ausgänge einer virtuellen Maschine oder andere Schnittstellenelemente der API 318 aktivieren, um die Callback-Handler 316 und/oder Auslösebedingungen 334 zu registrieren, beispielsweise durch Vorlage eines Funktions-Pointers in Verbindung mit jedem Callback-Handler 316, von Pointern zu virtuellen VMX-Objekten 308 (z. B. Pointern zu einer virtuellen VMCS 310 und/oder virtuellen EPT 312) oder von anderen Daten.In the block 610 registers the computing device 100 one or more callback handlers 316 and trip conditions 334 at the root hypervisor 320 , As described above, any callback handler 316 as a function, procedure, vector or other routine of the non-root hypervisor 306 be embodied by the root hypervisor 320 can be activated. The non-root hypervisor 306 can be a callback handler 316 register for one or more potential reasons for a VM exit. Each trigger condition 334 may be embodied as a strategy, filter, or other conditional test by the root hypervisor 320 can be checked. As described in more detail below, the trigger conditions 334 Checks to see if the associated callback handler 316 should be called. The non-root hypervisor 306 Can the callback handler 316 and the triggering conditions 334 through one or more calls to the root hypervisor API 318 to register. For example, the non-root hypervisor 306 one or more function calls, hypercalls, outputs of a virtual machine, or other interface elements of the API 318 enable the callback handler 316 and / or triggering conditions 334 to register, for example, by presenting a function pointer in conjunction with each callback handler 316 , from pointers to virtual VMX objects 308 (For example, pointers to a virtual VMCS 310 and / or virtual EPT 312 ) or other data.

Im Block 612 kann der Non-Root-Hypervisor 306 vom Root-Hypervisor 320 Aktualisierungen des VMX-Objekts 326 und/oder des VMX-Objektfeldes anfordern. Beispielsweise kann der Non-Root-Hypervisor 306 beim Registrieren des Callback-Handlers 316 ebenfalls zusätzliche Informationen liefern, wie Listen verlangter Feldaktualisierungen für die VMCS 328, die von dem Root-Hypervisor 320 auszuführen sind. Wie vorstehend in Verbindung mit 5 beschrieben, kann der Root-Hypervisor 320 während des Verarbeitens von VM-Ausgängen die angeforderten VMX-Objekte 326, Felder oder andere Daten kopieren oder dem Non-Root-Hypervisor 306 anderweitig verfügbar machen.In the block 612 can be the non-root hypervisor 306 from the root hypervisor 320 Updates to the VMX object 326 and / or the VMX object field. For example, the non-root hypervisor 306 when registering the callback handler 316 also provide additional information, such as lists of requested field updates for the VMCS 328 that from the root hypervisor 320 are to be executed. As above in connection with 5 described, may be the root hypervisor 320 while processing VM outputs, the requested VMX objects 326 Copy fields or other data or the non-root hypervisor 306 make it available elsewhere.

Im Block 614 hostet der Non-Root-Hypervisor 306 die virtuellen Maschinen 304 im VMX-Non-Root-Modus. Der Non-Root-Hypervisor 306 kann jede geeignete Technik nutzen, um die Ausführung der virtuellen Maschinen 304 zu starten. Beispielsweise kann der Non-Root-Hypervisor 306 einen VM-Eingang ausführen, der vom Root-Hypervisor 320 verarbeitet werden kann, um die virtuellen Maschinen 304 zu starten. Nach dem Starten der Ausführung der virtuellen Maschinen 304 ist das Verfahren 600 abgeschlossen. Wie vorstehend beschrieben, kann der Root-Hypervisor 320 während der Ausführung der virtuellen Maschinen 304 alle VM-Ausgänge verarbeiten, die von den virtuellen Maschinen 304 erzeugt wurden, und er kann wiederum ein oder mehrere Callback-Handler 316 aktivieren, wie nachfolgend ausführlicher in Verbindung mit 7 beschrieben wird.In the block 614 hosts the non-root hypervisor 306 the virtual machines 304 in VMX non-root mode. The non-root hypervisor 306 can use any suitable technique to run the virtual machines 304 to start. For example, the non-root hypervisor 306 execute a VM input from the root hypervisor 320 can be processed to the virtual machines 304 to start. After starting the execution of the virtual machines 304 is the procedure 600 completed. As described above, the root hypervisor can 320 during execution of the virtual machines 304 all VM outputs process by the virtual machines 304 and he can turn one or more callback handlers 316 activate, as described in more detail below in connection with 7 is described.

Nunmehr Bezug nehmend auf 7, kann die Rechenvorrichtung 100 im Einsatz ein Verfahren 700 zum Non-Root-Callback-Verarbeiten ausführen. Das Verfahren 700 kann von dem Non-Root-Hypervisor 306 ausgeführt und im VMX-Non-Root-Modus mit beschränktem Zugriff auf die Rechenvorrichtung 100 ausgeführt werden. Das Verfahren 700 beginnt im Block 702, in dem die Rechenvorrichtung 100 den Callback-Handler 316 aktiviert. Wie oben in Verbindung mit den Blocks 520, 522 von 5 beschrieben, kann der Root-Hypervisor 320 in den VMX-Non-Root-Modus umschalten und dann den Callback-Handler 316 im VMX-Non-Root-Modus aktivieren.Referring now to 7 , the computing device can 100 in use a procedure 700 to do non-root callback processing. The procedure 700 can from the non-root hypervisor 306 executed and in VMX non-root mode with limited access to the computing device 100 be executed. The procedure 700 starts in the block 702 in which the computing device 100 the callback handler 316 activated. As above in connection with the blocks 520 . 522 from 5 described, may be the root hypervisor 320 switch to VMX non-root mode and then enable callback handler 316 in VMX non-root mode.

Im Block 704 stellt die Rechenvorrichtung 100 fest, ob der Root-Hypervisor 320 Aktualisierungen für die VMX-Objekte 326 (z. B. die VMCS 328 und/oder die EPT 330) erzeugt hat. Die Rechenvorrichtung 100 kann jede Technik nutzen, um festzustellen, ob die VMX-Objekte 326 aktualisiert wurden. Beispielsweise kann der Non-Root-Hypervisor 306 die Root-Hypervisor-Aktualisierungsliste 324 vom Root-Hypervisor 320 erhalten oder anderweitig auf sie zugreifen. Wie vorstehend beschrieben, identifiziert die Root-Hypervisor-Aktualisierungsliste 324 VMX-Objekte 326, Felder oder andere Daten der VMX-Objekte 326, die vom Root-Hypervisor 320 verändert wurden. Die Liste 324 kann auch VMX-Objekte 326, Felder oder andere Daten identifizieren oder anderweitig beinhalten, zu deren Aktualisierung der Non-Root-Hypervisor 306 den Root-Hypervisor 320 aufgefordert hatte. Die Liste 324 kann als eine Bitmap verkörpert sein, die Felder der VMCS 328 und/oder der EPT 330 identifiziert, welche vom Root-Hypervisor 320 geändert wurden. Im Block 706 prüft die Rechenvorrichtung 100, ob VMX-Objekte 326 aktualisiert wurden. Falls nicht, fährt das Verfahren 700 mit Block 710 fort, wie nachfolgend beschrieben. Wenn die VMX-Objekte 326 aktualisiert wurden, wird das Verfahren 700 mit Block 708 fortgesetzt.In the block 704 represents the computing device 100 determines if the root hypervisor 320 Updates for the VMX objects 326 (eg the VMCS 328 and / or the EPT 330 ) has generated. The computing device 100 can use any technique to determine if the VMX objects 326 have been updated. For example, the non-root hypervisor 306 the root hypervisor update list 324 from the root hypervisor 320 receive or otherwise access them. As described above, the root hypervisor update list identifies 324 VMX objects 326 , Fields or other data of the VMX objects 326 that from the root hypervisor 320 were changed. The list 324 can also VMX objects 326 Identify, or otherwise include, fields or other data that the non-root hypervisor updates 306 the root hypervisor 320 had asked. The list 324 may be embodied as a bitmap, the fields of the VMCS 328 and / or the EPT 330 identified by the root hypervisor 320 was changed. In the block 706 the computing device 100 checks if VMX objects 326 have been updated. If not, the procedure continues 700 to block 710, as described below. If the VMX objects 326 have been updated, the procedure is 700 with block 708 continued.

Im Block 708 kopiert die Rechenvorrichtung 100 Aktualisierungen von den VMX-Objekten 326 zu den virtuellen VMX-Objekten 308. Die Rechenvorrichtung 100 kann nur jene VMX-Objekte 326, Felder oder andere Daten kopieren, die verändert wurden, beispielsweise unter Verwendung der Root-Hypervisor-Aktualisierungsliste 324. In einigen Ausführungsformen kann der Non-Root-Hypervisor 306 durch einen oder mehrere Aufrufe an die Root-Hypervisor-API 318 Daten von den VMX-Objekten 326 kopieren. Zusätzlich oder alternativ kann dem Non-Root-Hypervisor 306 durch den Root-Hypervisor 320 Zugriff auf die VMX-Objekte 326 gewährt werden, beispielsweise durch Ausführung einer speziellen Prozessoranweisung wie VMFUNC.In the block 708 copies the computing device 100 Updates from the VMX objects 326 to the virtual VMX objects 308 , The computing device 100 can only those VMX objects 326 Copy fields, or other data that has been altered, for example, using the root hypervisor update list 324 , In some embodiments, the non-root hypervisor may be 306 through one or more calls to the root hypervisor API 318 Data from the VMX objects 326 copy. Additionally or alternatively, the non-root hypervisor may 306 through the root hypervisor 320 Access to the VMX objects 326 granted, for example, by executing a special processor instruction such as VMFUNC.

In Block 710 führt die Rechenvorrichtung 100 ein Verarbeiten des VM-Ausgangs durch den Non-Root-Hypervisor 306 aus. Der Non-Root-Hypervisor 306 kann jedes geeignete Verarbeiten des VM-Ausgangs ausführen. Der Non-Root-Hypervisor 306 kann den VM-Ausgang unter Verwendung der virtuellen VMX-Objekte 308 so verarbeiten, als würde der Non-Root-Hypervisor 306 im VMX-Root-Modus ausgeführt. In einigen Ausführungsformen kann der Non-Root-Hypervisor 306 im Block 712 während des Verarbeitens des VM-Ausgangs ein oder mehrere virtuelle VMX-Objekte 308 verändern (z.B. die virtuelle VMCS 310 und/oder die virtuelle EPT 312).In block 710 leads the computing device 100 processing the VM output by the non-root hypervisor 306 out. The non-root hypervisor 306 can perform any suitable processing of the VM output. The non-root hypervisor 306 can use the virtual machine VMX output VMX objects 308 process as if the non-root hypervisor 306 executed in VMX root mode. In some embodiments, the non-root hypervisor may be 306 in the block 712 one or more virtual VMX objects during VM out processing 308 change (eg the virtual VMCS 310 and / or the virtual EPT 312 ).

Im Block 714, nach dem Verarbeiten des VM-Ausgangs, stellt die Rechenvorrichtung 100 fest, ob der Non-Root-Hypervisor 306 virtuelle VMX-Objekte 308 aktualisiert hat. Im Block 716 prüft die Rechenvorrichtung 100, ob die virtuellen VMX-Objekte 308 aktualisiert wurden. Falls nicht, verzweigt das Verfahren 700 vorwärts zum Block 720, in dem die Rechenvorrichtung 100 den Callback-Handler 316 verlässt und die Ausführung mit dem Root-Hypervisor 320 wieder aufnimmt; beispielsweise nimmt sie die Ausführung am Block 524 von 5 wieder auf. Erneut Bezug nehmend auf Block 716 - falls die virtuellen VMX-Objekte 308 aktualisiert wurden - fährt das Verfahren 700 mit Block 718 fort, in dem die Rechenvorrichtung 100 eine Non-Root-Hypervisor-Aktualisierungsliste 314 erstellt, die die virtuellen VMX-Objekte 308, Felder oder andere Daten identifiziert, die von dem Non-Root-Hypervisor 306 verändert wurden. Beispielsweise kann die Liste 314 als eine Bitmap verkörpert sein, die bestimmte Felder der virtuellen VMCS 310 und/oder der virtuellen EPT 312 identifiziert, welche vom Non-Root-Hypervisor 306 geändert wurden. Nach dem Erarbeiten der Liste 314 wird das Verfahren 700 bei Block 720 fortgesetzt, in dem die Rechenvorrichtung 100 den Callback-Handler 316 verlässt und die Ausführung mit dem Root-Hypervisor 320 wieder aufnimmt, wie oben beschrieben. Beispielsweise kann die Rechenvorrichtung 100 in einigen Ausführungsformen einen Eingang einer virtuellen Maschine ausführen, um den Callback-Handler 316 zu verlassen und im VMX-Root-Modus zum Root-Hypervisor 320 zurückzukehren. Nach der Wiederaufnahme der Ausführung mit dem Root-Hypervisor 320 ist das Verfahren 700 abgeschlossen.In the block 714 after processing the VM output, sets the computing device 100 determine if the non-root hypervisor 306 virtual VMX objects 308 has updated. In the block 716 checks the computing device 100 whether the virtual VMX objects 308 have been updated. If not, the procedure branches 700 forward to the block 720 in which the computing device 100 the callback handler 316 leaves and running with the root hypervisor 320 resumes; for example, it takes the execution at the block 524 from 5 back up. Again referring to Block 716 - if the virtual VMX objects 308 have been updated - the procedure continues 700 with block 718 in which the computing device 100 a non-root hypervisor update list 314 created the virtual VMX objects 308 , Fields, or other data identified by the non-root hypervisor 306 were changed. For example, the list 314 be embodied as a bitmap containing specific fields of the virtual VMCS 310 and / or the virtual EPT 312 identified by the non-root hypervisor 306 was changed. After working out the list 314 becomes the procedure 700 at block 720 continued in which the computing device 100 the callback handler 316 leaves and running with the root hypervisor 320 resumes, as described above. For example, the computing device 100 in some embodiments, make an input to a virtual machine to the callback handler 316 and in VMX root mode to the root hypervisor 320 to return. After resuming execution with the root hypervisor 320 is the procedure 700 completed.

BEISPIELEEXAMPLES

Nachfolgend werden illustrative Beispiele der hierin offenbarten Technologien aufgeführt. Eine Ausführungsform der Technologien kann eines oder mehrere der nachfolgend beschriebenen Beispiele und jegliche Kombinationen von ihnen beinhalten.The following are illustrative examples of the technologies disclosed herein. One embodiment of the technologies may include one or more of the examples described below and any combinations thereof.

Beispiel 1 beinhaltet eine Rechenvorrichtung für mehrstufige Virtualisierung, wobei die Rechenvorrichtung einen Prozessor beinhaltet, der Unterstützung im Root-Virtualisierungsmodus und Unterstützung im Non-Root-Virtualisierungsmodus bietet; und eine oder mehrere Speichervorrichtungen, in denen eine Vielzahl von Anweisungen gespeichert ist, die, wenn sie durch den Prozessor ausgeführt werden, veranlassen, dass die Rechenvorrichtung durch einem Root-Hypervisor der Rechenvorrichtung einen virtuellen Maschinenausgang empfängt, der von einer virtuellen Maschine der Rechenvorrichtung erzeugt wurde, wobei die virtuelle Maschine von einem Non-Root-Hypervisor der Rechenvorrichtung gehostet wird; durch den Root-Hypervisor im Root-Virtualisierungsmodus feststellt, ob ein Callback-Handler des Non-Root-Hypervisors für einen Ausgangsgrund des Ausgangs der virtuellen Maschine in Reaktion auf einen Empfang des Ausgangs der virtuellen Maschine registriert ist; in Reaktion auf eine Feststellung, dass der Callback-Handler registriert ist durch den Root-Hypervisor im Root-Virtualisierungsmodus feststellt, ob eine Auslösebedingung im Zusammenhang mit dem Callback-Handler erfüllt ist; und den Callback-Handler des Non-Root-Hypervisors in Reaktion auf eine Feststellung, dass die Auslösebedingung erfüllt ist, ausführt. Example 1 includes a multilevel virtualization computing device, the computing device including a processor that provides support in root virtualization mode and support in non-root virtualization mode; and one or more memory devices storing a plurality of instructions that, when executed by the processor, cause the computing device to receive, by a root hypervisor of the computing device, a virtual machine output that originates from a virtual machine of the computing device where the virtual machine is hosted by a non-root hypervisor of the computing device; by the root hypervisor in the root virtualization mode, determines whether a non-root hypervisor callback handler is registered for an output root of the virtual machine in response to receiving the output of the virtual machine; in response to a determination that the callback handler is registered by the root hypervisor in root virtualization mode, determines whether a trigger condition associated with the callback handler is met; and execute the callback handler of the non-root hypervisor in response to a determination that the trigger condition is met.

Beispiel 2 beinhaltet den Gegenstand von Beispiel 1, wobei die Vielzahl von Anweisungen, wenn sie durch den Prozessor ausgeführt werden, die Rechenvorrichtung ferner veranlassen, durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf eine Feststellung, dass ein Callback-Handler des Non-Root-Hypervisors für den Ausgangsgrund des Ausgangs der virtuellen Maschinen nicht registriert ist, den Ausgang der virtuellen Maschine zu verarbeiten; und die Ausführung der virtuellen Maschine in Reaktion auf das Verarbeiten des Ausgangs der virtuellen Maschine durch den Root-Hypervisor wieder aufzunehmen.Example 2 includes the subject matter of Example 1, wherein the plurality of instructions, when executed by the processor, further cause the computing device to poll through the root hypervisor in root virtualization mode in response to a determination that a callback handler of the non -Root hypervisor is not registered for the output reason of the output of the virtual machines to process the output of the virtual machine; and resume execution of the virtual machine in response to the processing of the virtual machine's output by the root hypervisor.

Beispiel 3 beinhaltet den Gegenstand von einem der Beispiele 1 und 2, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor die Rechenvorrichtung ferner veranlassen, in Reaktion auf eine Feststellung, dass die Auslösebedingung nicht erfüllt ist, das Ausführen der virtuellen Maschine durch den Root-Hypervisor wieder aufzunehmen.Example 3 includes the subject matter of any of Examples 1 and 2, wherein the multiple instructions, when executed by the processor, further cause the computing device to execute the virtual machine by the root hypervisor in response to a determination that the trigger condition is not met to resume.

Beispiel 4 beinhaltet den Gegenstand von einem der Beispiele 1-3, wobei die mehreren Anweisungen, wenn sie durch den Prozessor ausgeführt werden, ferner die Rechenvorrichtung veranlassen, durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf den Empfang des Ausgangs der virtuellen Maschine das Virtualisierungsunterstützungsobjekt zu verändern; und in Reaktion auf eine Veränderung des Virtualisierungsunterstützungsobjekts eine Liste von Veränderungen am Virtualisierungsunterstützungsobjekt durch den Root-Hypervisor im Root-Virtualisierungsmodus zu erzeugen; wobei das Ausführen des Callback-Handlers des Non-Root-Hypervisors das Bereitstellen der Liste von Veränderungen am Virtualisierungsunterstützungsobjekt für den Non-Root-Hypervisor umfasst.Example 4 includes the subject matter of any of Examples 1-3, wherein the multiple instructions, when executed by the processor, further cause the computing device to pass through the root hypervisor in root virtualization mode in response to receiving the output of the virtual machine modify the virtualization support object; and in response to a change in the virtualization support object, generate a list of changes to the virtualization support object by the root hypervisor in the root virtualization mode; wherein executing the non-root hypervisor callback handler comprises providing the list of virtualization support object changes to the non-root hypervisor.

Beispiel 5 beinhaltet den Gegenstand von einem der Beispiele 1-4, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor ferner die Rechenvorrichtung veranlassen, durch den Non-Root-Hypervisor das virtuelle Virtualisierungsunterstützungsobjekt auf der Grundlage des Virtualisierungsunterstützungsobjekts durch die Liste von Veränderungen an dem Virtualisierungsunterstützungsobjekt zu aktualisieren.Example 5 includes the subject matter of any one of Examples 1-4, wherein the multiple instructions, when executed by the processor, further cause the computing device, through the non-root hypervisor, the virtualization support virtualization object based on the virtualization support object through the list of changes to the virtualization support object to update.

Beispiel 6 beinhaltet den Gegenstand von einem der Beispiele 1-5, wobei das Virtualisierungsunterstützungsobjekt eine Struktur zur Steuerung einer virtuellen Maschine (VMCS) umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle VMCS umfasst.Example 6 includes the subject matter of any one of Examples 1-5, wherein the virtualization support object comprises a virtual machine control structure (VMCS); and the virtualization virtualization support object comprises a virtual VMCS.

Beispiel 7 beinhaltet den Gegenstand von einem der Beispiele 1-6, wobei das Virtualisierungsunterstützungsobjekt eine Extended Page Table umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle Extended Page Table umfasst.Example 7 includes the subject matter of any one of Examples 1-6, wherein the virtualization support object comprises an extended page table; and the virtualization virtualization support object comprises a virtual extended page table.

Beispiel 8 beinhaltet den Gegenstand von einem der Beispiele 1-7, wobei die mehreren Answeisungen, wenn sie von dem Prozessor ausgeführt werden, ferner die Rechenvorrichtung veranlassen, durch den Root-Hypervisor im Root-Virtualisierungsmodus festzustellen, ob in Reaktion auf die Ausführung des Callback-Handlers ein virtuelles Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors verändert wurde; in Reaktion auf eine Feststellung, dass das virtuelle Virtualisierungsunterstützungsobjekt verändert wurde, ein Virtualisierungsunterstützungsobjekt der Rechenvorrichtung auf der Grundlage des virtuellen Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor im Root-Virtualisierungsmodus zu aktualisieren; und die Ausführung der virtuellen Maschine in Reaktion auf eine Aktualisierung des Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor wieder aufzunehmen.Example 8 includes the subject matter of any one of Examples 1-7, wherein the multiple instructions, when executed by the processor, further cause the computing device to determine, by the root hypervisor in the root virtualization mode, whether in response to the execution of the callback -Had changed a virtual virtualization support object of the non-root hypervisor; in response to a determination that the virtualization support virtualization object has been modified, updating a virtualization support object of the computing device based on the virtualization support virtual object by the root hypervisor in the root virtualization mode; and resume execution of the virtual machine in response to an updating of the virtualization support object by the root hypervisor.

Beispiel 9 beinhaltet den Gegenstand von einem der Beispiele 1-8, wobei das Aktualisieren des Virtualisierungsunterstützungsobjekts ferner das Überprüfen der Gültigkeit des virtuellen Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor umfasst.Example 9 includes the subject matter of any one of Examples 1-8, wherein updating the virtualization support object further comprises verifying the validity of the virtual virtualization support object by the root hypervisor.

Beispiel 10 beinhaltet den Gegenstand von einem der Beispiele 1-9, wobei die mehreren Anweisungen, wenn sie durch den Prozessor ausgeführt werden, ferner die Rechenvorrichtung veranlassen, durch den Non-Root-Hypervisor in Reaktion auf die Ausführung des Callback-Handlers das virtuelle Virtualisierungsunterstützungsobjekt zu verändern; und in Reaktion auf eine Veränderung des virtuellen Virtualisierungsunterstützungsobjekts eine Liste von Veränderungen am virtuellen Virtualisierungsunterstützungsobjekt durch den Non-Root-Hypervisor zu erzeugen; wobei das Feststellen, ob das virtuelle Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors verändert wurde, die Feststellung durch den Root-Hypervisor umfasst, ob das virtuelle Virtualisierungsunterstützungsobjekt auf der Grundlage einer Liste von Veränderungen am virtuellen Virtualisierungsunterstützungsobjekt verändert wurde.Example 10 includes the subject matter of any one of Examples 1-9, wherein the plurality Instructions, when executed by the processor, further cause the computing device to alter the virtualization support virtualization object by the non-root hypervisor in response to the execution of the callback handler; and in response to a change in the virtual virtualization support object, generate a list of changes to the virtual virtualization support object by the non-root hypervisor; wherein determining whether the virtual-virtualization support object of the non-root hypervisor has changed has the determination by the root hypervisor as to whether the virtualization-virtualization support object has been modified based on a list of changes to the virtual virtualization support object.

Beispiel 11 beinhaltet den Gegenstand von einem der Beispiele 1-10, wobei das Virtualisierungsunterstützungsobjekt eine Struktur zur Steuerung einer virtuellen Maschine (VMCS) umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle VMCS umfasst.Example 11 includes the subject matter of any one of Examples 1-10, wherein the virtualization support object comprises a virtual machine control structure (VMCS); and the virtualization virtualization support object comprises a virtual VMCS.

Beispiel 12 beinhaltet den Gegenstand von einem der Beispiele 1-11, wobei das Virtualisierungsunterstützungsobjekt eine Extended Page Table umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle Extended Page Table umfasst.Example 12 includes the subject matter of any one of Examples 1-11, wherein the virtualization support object comprises an extended page table; and the virtualization virtualization support object comprises a virtual extended page table.

Beispiel 13 beinhaltet den Gegenstand von einem der Beispiele 1-12, wobei das Ausführen des Callback-Handlers des Non-Root-Hypervisors das Ausführen des Callback-Handlers des Non-Root-Hypervisors im Non-Root-Virtualisierungsmodus des Prozessors umfasst.Example 13 includes the subject matter of any one of Examples 1-12, wherein executing the non-root hypervisor callback handler comprises executing the non-root hypervisor callback handler in the non-root virtualization mode of the processor.

Beispiel 14 beinhaltet den Gegenstand von einem der Beispiele 1-13, wobei die mehreren Answeisungen bei Ausführung durch den Prozessor ferner die Rechenvorrichtung veranlassen, durch den Non-Root-Hypervisor festzustellen, ob der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus ausgeführt wird; und durch den Non-Root-Hypervisor den Callback-Handler und die zugeordnete Auslösebedingung beim Root-Hypervisor zu registrieren, in Reaktion auf eine Feststellung, dass der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus ausgeführt wird.Example 14 includes the subject matter of any of Examples 1-13, wherein the multiple instructions, when executed by the processor, further cause the computing device to determine, by the non-root hypervisor, whether the non-root hypervisor is running in non-root virtualization mode becomes; and registering, by the non-root hypervisor, the callback handler and the associated trigger condition with the root hypervisor, in response to a determination that the non-root hypervisor is running in non-root virtualization mode.

Beispiel 15 beinhaltet den Gegenstand von einem der Beispiele 1-14, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor ferner die Rechenvorrichtung veranlassen, in Reaktion auf eine Feststellung, dass der Non-Root-Hypervisor nicht im Non-Root-Virtualisierungsmodus ausgeführt wird, die virtuelle Maschine durch den Non-Root-Hypervisor im Root-Virtualisierungsmodus zu hosten.Example 15 includes the subject matter of any one of Examples 1-14, wherein the multiple instructions, when executed by the processor, further cause the computing device to respond in response to a determination that the non-root hypervisor is not executing in the non-root virtualization mode. host the virtual machine through the non-root hypervisor in root virtualization mode.

Beispiel 16 beinhaltet den Gegenstand von einem der Beispiele 1-15, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor ferner die Rechenvorrichtung veranlassen, durch den Root-Hypervisor im Root-Virtualisierungsmodus das Ausführen des Non-Root-Hypervisors zu überwachen.Example 16 includes the subject matter of any one of Examples 1-15, wherein the multiple instructions, when executed by the processor, further cause the computing device to monitor execution of the non-root hypervisor by the root hypervisor in the root virtualization mode.

Beispiel 17 beinhaltet den Gegenstand von einem der Beispiele 1-16, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor ferner die Rechenvorrichtung veranlassen, durch den Root-Hypervisor im Root-Virtualisierungsmodus das Ausführen eines Gastgeberbetriebssystems der Rechenvorrichtung zu überwachen, wobei das Gastgeberbetriebssystem den Non-Root-Hypervisor hostet.Example 17 includes the subject matter of any of Examples 1-16, wherein the multiple instructions, when executed by the processor, further cause the computing device to monitor execution of a host operating system of the computing device by the root hypervisor in root virtualization mode, the host operating system hosting the non-host Root hypervisor hosts.

Beispiel 18 beinhaltet ein Verfahren für mehrstufige Virtualisierung, wobei das Verfahren das Empfangen eines von einer virtuellen Maschine der Rechenvorrichtung erzeugten Ausgangs einer virtuellen Maschine durch einen Root-Hypervisor einer Rechenvorrichtung, wobei die virtuelle Maschine von einem Non-Root-Hypervisor der Rechenvorrichtung gehostet wird; das Feststellen =, durch den Root-Hypervisor in einem Root-Virtualisierungsmodus eines Prozessors der Rechenvorrichtung, ob ein Callback-Handler des Non-Root-Hypervisors für einen Ausgangsgrund des Ausgangs der virtuellen Maschine in Reaktion auf einen Empfang des Ausgangs der virtuellen Maschine registriert ist; in Reaktion auf eine Feststellung, dass der Callback-Handler registriert ist, das Feststellen, durch den Root-Hypervisor im Root-Virtualisierungsmodus, ob eine Auslösebedingung im Zusammenhang mit dem Callback-Handler erfüllt ist; und das Ausführen des Callback-Handlers des Non-Root-Hypervisors in Reaktion auf eine Feststellung, dass die Auslösebedingung erfüllt ist, durch die Rechenvorrichtung umfasst.Example 18 includes a method for tiered virtualization, the method comprising receiving a virtual machine output from a virtual machine of the computing device through a root hypervisor of a computing device, wherein the virtual machine is hosted by a non-root hypervisor of the computing device; determining, by the root hypervisor in a root virtualization mode of a processor of the computing device, whether a callback handler of the non-root hypervisor is registered for an output root of the virtual machine in response to receiving the output of the virtual machine ; in response to a determination that the callback handler is registered, determining, by the root hypervisor in the root virtualization mode, whether a triggering condition associated with the callback handler is met; and executing, by the computing device, the callback handler of the non-root hypervisor in response to a determination that the trigger condition is met.

Beispiel 19 beinhaltet den Gegenstand von Beispiel 18, und durch den Root-Hypervisor im Root-Virtualisierungsmodus Ausgang der virtuellen Maschine in Reaktion auf eine Feststellung, dass ein Callback-Handler des Non-Root-Hypervisors für den Ausgangsgrund des Ausgangs der virtuellen Maschine nicht registriert ist; und Wiederaufnahme der Ausführung der virtuellen Maschine in Reaktion auf das Verarbeiten des Ausgangs der virtuellen Maschine durch den Root-Hypervisor.Example 19 includes the subject matter of Example 18, and by the root hypervisor in root virtualization mode, the virtual machine output in response to a determination that a callback handler of the non-root hypervisor is not registering for the source root of the virtual machine output is; and resuming execution of the virtual machine in response to processing by the root hypervisor of the virtual machine's exit.

Beispiel 20 beinhaltet den Gegenstand von einem der Beispiele 18 und 19, und beinhaltet ferner die Wiederaufnahme des Ausführens der virtuellen Maschine in Reaktion auf die Feststellung, dass die Auslösebedingung nicht erfüllt ist, durch den Root-Hypervisor.Example 20 includes the subject matter of any of Examples 18 and 19, and further includes resuming execution of the virtual machine by the root hypervisor in response to determining that the trigger condition is not met.

Beispiel 21 beinhaltet den Gegenstand von einem der Beispiele 18-20 und beinhaltet ferner das Verändern eines Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf den Empfang des Ausgangs der virtuellen Maschine; und Erzeugen einer Liste von Veränderungen am Virtualisierungsunterstützungsobjekt durch den Root-Hypervisor im Root-Virtualisierungsmodus; wobei das Ausführen des Callback-Handlers des Non-Root-Hypervisors das Bereitstellen der Liste von Veränderungen am Virtualisierungsunterstützungsobjekt für den Non-Root-Hypervisor umfasst.Example 21 includes the subject matter of any of Examples 18-20 and further includes altering a Virtualization support object through the root hypervisor in root virtualization mode in response to receiving the output of the virtual machine; and generating a list of changes to the virtualization support object by the root hypervisor in the root virtualization mode; wherein executing the non-root hypervisor callback handler comprises providing the list of virtualization support object changes to the non-root hypervisor.

Beispiel 22 beinhaltet den Gegenstand von einem der Beispiele 18-21 und beinhaltet ferner das Aktualisieren eines virtuellen Virtualisierungsunterstützungsobjekts auf der Grundlage des Virtualisierungsunterstützungsobjekts unter Verwendung einer Liste von Veränderungen an dem Virtualisierungsunterstützungsobjekt durch den Non-Root-Hypervisor.Example 22 includes the subject matter of any of Examples 18-21 and further includes updating a virtualization virtualization support object based on the virtualization support object using a list of changes to the virtualization support object by the non-root hypervisor.

Beispiel 23 beinhaltet den Gegenstand von einem der Beispiele 18-22, wobei das Virtualisierungsunterstützungsobjekt eine Struktur zur Steuerung einer virtuellen Maschine (VMCS) umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle VMCS umfasst.Example 23 includes the subject matter of any of Examples 18-22, wherein the virtualization support object comprises a virtual machine control structure (VMCS); and the virtualization virtualization support object comprises a virtual VMCS.

Beispiel 24 beinhaltet den Gegenstand von einem der Beispiele 18-23, wobei das Virtualisierungsunterstützungsobjekt eine Extended Page Table umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle Extended Page Table umfasst.Example 24 includes the subject matter of any one of Examples 18-23, wherein the virtualization support object comprises an extended page table; and the virtualization virtualization support object comprises a virtual extended page table.

Beispiel 25 beinhaltet den Gegenstand von einem der Beispiele 18-24 und beinhaltet ferner die Feststellung durch den Root-Hypervisor im Root-Virtualisierungsmodus, ob in Reaktion auf die Ausführung des Callback-Handlers ein virtuelles Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors verändert wurde; in Reaktion auf eine Feststellung, dass das virtuelle Virtualisierungsunterstützungsobjekt verändert wurde, Aktualisieren eines Virtualisierungsunterstützungsobjekts der Rechenvorrichtung auf der Grundlage des virtuellen Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor im Root-Virtualisierungsmodus; und Wiederaufnahme der Ausführung der virtuellen Maschine in Reaktion auf eine Aktualisierung des Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor.Example 25 includes the subject matter of any of Examples 18-24 and further includes determining by the root hypervisor in the root virtualization mode whether a virtual virtualization support object of the non-root hypervisor has been modified in response to the execution of the callback handler; in response to a determination that the virtualization support virtual object has been changed, updating a virtualization support object of the computing device based on the virtual virtualization support object by the root hypervisor in the root virtualization mode; and resuming execution of the virtual machine in response to the root hypervisor updating the virtualization support object.

Beispiel 26 beinhaltet den Gegenstand von einem der Beispiele 18-25, wobei das Aktualisieren des Virtualisierungsunterstützungsobjekts ferner das Überprüfen der Gültigkeit des virtuellen Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor umfasst.Example 26 includes the subject matter of any one of Examples 18-25, wherein updating the virtualization support object further comprises verifying the validity of the virtual virtualization support object by the root hypervisor.

Beispiel 27 beinhaltet den Gegenstand von einem der Beispiele 18-26 und beinhaltet ferner, durch den Non-Root-Hypervisor in Reaktion auf die Ausführung des Callback-Handlers das Verändern des virtuellen Virtualisierungsunterstützungsobjekts; und in Reaktion auf eine Veränderung des virtuellen Virtualisierungsunterstützungsobjekts das Erzeugen einer Liste von Veränderungen am virtuellen Virtualisierungsunterstützungsobjekt durch den Non-Root-Hypervisor; wobei das Feststellen, ob das virtuelle Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors verändert wurde, umfasst, durch den Root-Hypervisor festzustellen, ob das virtuelle Virtualisierungsunterstützungsobjekt auf der Grundlage der Liste von Veränderungen am virtuellen Virtualisierungsunterstützungsobjekt verändert wurde.Example 27 includes the subject matter of any of Examples 18-26 and further includes altering the virtualization support virtual object by the non-root hypervisor in response to the execution of the callback handler; and in response to a change in the virtualization support virtual object, generating a list of changes to the virtualization support virtualization object by the non-root hypervisor; wherein determining whether the virtual-virtualization support object of the non-root hypervisor has been modified comprises, by the root hypervisor, determining whether the virtualization-virtualization support object has been modified based on the list of changes to the virtualization-support virtual object.

Beispiel 28 beinhaltet den Gegenstand von einem der Beispiele 18-27, wobei das Virtualisierungsunterstützungsobjekt eine Struktur zur Steuerung einer virtuellen Maschine (VMCS) umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle VMCS umfasst.Example 28 includes the subject matter of any one of Examples 18-27, wherein the virtualization support object comprises a virtual machine control structure (VMCS); and the virtualization virtualization support object comprises a virtual VMCS.

Beispiel 29 beinhaltet den Gegenstand von einem der Beispiele 18-28, wobei das Virtualisierungsunterstützungsobjekt eine Extended Page Table umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle Extended Page Table umfasst.Example 29 includes the subject matter of any of Examples 18-28, wherein the virtualization support object comprises an extended page table; and the virtualization virtualization support object comprises a virtual extended page table.

Beispiel 30 beinhaltet den Gegenstand von einem der Beispiele 18-29, wobei das Ausführen des Callback-Handlers des Non-Root-Hypervisors das Ausführen des Callback-Handlers des Non-Root-Hypervisors in einem Non-Root-Virtualisierungsmodus des Prozessors der Rechenvorrichtung umfasst.Example 30 includes the subject matter of any one of Examples 18-29, wherein executing the non-root hypervisor callback handler comprises executing the non-root hypervisor callback handler in a non-root virtualization mode of the processor of the computing device ,

Beispiel 31 beinhaltet den Gegenstand von einem der Beispiele 18-30 und beinhaltet ferner, durch den Non-Root-Hypervisor festzustellen, ob der Non-Root-Hypervisor in einem Non-Root-Virtualisierungsmodus des Prozessors der Rechenvorrichtung ausgeführt wird; und durch den Non-Root-Hypervisor Registrieren des Callback-Handlers und der zugeordneten Auslösebedingung beim Root-Hypervisor in Reaktion auf eine Feststellung, dass der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus ausgeführt wird.Example 31 includes the subject matter of any of Examples 18-30 and further includes determining, by the non-root hypervisor, whether the non-root hypervisor is executing in a non-root virtualization mode of the processor of the computing device; and by the non-root hypervisor, registering the callback handler and the associated trigger condition with the root hypervisor in response to a determination that the non-root hypervisor is executing in the non-root virtualization mode.

Beispiel 32 beinhaltet den Gegenstand von einem der Beispiele 18-31 und beinhaltet ferner ein Hosting der virtuellen Maschine durch den Non-Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf die Feststellung, dass der Non-Root-Hypervisor nicht im Non-Root-Virtualisierungsmodus ausgeführt wird.Example 32 includes the subject matter of any of Examples 18-31 and further includes hosting the virtual machine by the non-root hypervisor in root virtualization mode in response to determining that the non-root hypervisor is not in the non-root hypervisor. Virtualization mode is running.

Beispiel 33 beinhaltet den Gegenstand von einem der Beispiele 18-32 und beinhaltet ferner das Überwachen der Ausführung des Non-Root-Hypervisors durch den Root-Hypervisor im Root-Virtualisierungsmodus.Example 33 includes the subject matter of any of Examples 18-32 and further includes monitoring execution of the non-root hypervisor by the root hypervisor in the root virtualization mode.

Beispiel 34 beinhaltet den Gegenstand von einem der Beispiele 18-33 und beinhaltet ferner das Überwachen der Ausführung eines Gastgeberbetriebssystems der Rechenvorrichtung durch den Root-Hypervisor im Root-Virtualisierungsmodus, wobei das Gastgeberbetriebssystem den Non-Root-Hypervisor hostet. Example 34 includes the subject matter of any of Examples 18-33, and further includes monitoring, by the root hypervisor, the execution of a host operating system of the computing device in the root virtualization mode, the host operating system hosting the non-root hypervisor.

Beispiel 35 beinhaltet eine Rechenvorrichtung, die einen Prozessor; und einen Speicher umfasst, in dem mehrere Anweisungen gespeichert sind, die bei Ausführung durch den Prozessor die Rechenvorrichtung veranlassen, das Verfahren von einem der Beispiele 18-34 auszuführen.Example 35 includes a computing device that includes a processor; and a memory storing a plurality of instructions which, when executed by the processor, cause the computing device to perform the method of any one of Examples 18-34.

Beispiel 36 beinhaltet ein oder mehrere maschinenlesbare Speichermedien, die mehrere Anweisungen umfassen, die auf ihnen gespeichert sind und die in Reaktion auf ihr Ausführen darin resultieren, dass eine Rechenvorrichtung das Verfahren aus einem der Beispiele 18-34 ausführt.Example 36 includes one or more machine-readable storage media including a plurality of instructions stored thereon that, in response to their execution, result in a computing device executing the method of any one of Examples 18-34.

Beispiel 37 beinhaltet eine Rechenvorrichtung, die ein Mittel zum Ausführen des Verfahrens von einem der Beispiele 18-34 umfasst.Example 37 includes a computing device that includes means for carrying out the method of any one of Examples 18-34.

Beispiel 38 beinhaltet eine Rechenvorrichtung für mehrstufige Virtualisierung, wobei die Rechenvorrichtung Mittel zum Empfangen eines von einer virtuellen Maschine der Rechenvorrichtung erzeugten Ausgangs einer virtuellen Maschine durch einen Root-Hypervisor der Rechenvorrichtung, wobei die virtuelle Maschine von einem Non-Root-Hypervisor der Rechenvorrichtung gehostet wird; Mittel, um durch den Root-Hypervisor in einem Root-Virtualisierungsmodus eines Prozessors der Rechenvorrichtung festzustellen, ob ein Callback-Handler des Non-Root-Hypervisors für einen Ausgangsgrund des Ausgangs der virtuellen Maschine in Reaktion auf einen Empfang des Ausgangs der virtuellen Maschine registriert ist; Mittel, um in Reaktion auf eine Feststellung, dass der Callback-Handler registriert ist, durch den Root-Hypervisor im Root-Virtualisierungsmodus festzustellen, ob eine Auslösebedingung im Zusammenhang mit dem Callback-Handler erfüllt ist; und Mittel zum Ausführen des Callback-Handlers des Non-Root-Hypervisors in Reaktion auf eine Feststellung, dass die Auslösebedingung erfüllt ist, umfasst.Example 38 includes a multilevel virtualization computing device, wherein the computing device includes means for receiving a virtual machine output from a virtual machine of the computing device through a root hypervisor of the computing device, wherein the virtual machine is hosted by a non-root hypervisor of the computing device ; Means for determining, by the root hypervisor in a root virtualization mode of a processor of the computing device, whether a non-root hypervisor callback handler is registered for an output root of the virtual machine in response to receiving the output of the virtual machine ; Means for, in response to a determination that the callback handler is registered, determining by the root hypervisor in the root virtualization mode whether a triggering condition associated with the callback handler is met; and means for executing the callback handler of the non-root hypervisor in response to a determination that the trigger condition is met.

Beispiel 39 beinhaltet den Gegenstand von Beispiel 38 und beinhaltet ferner Mittel zum Verarbeiten des Ausgangs der virtuellen Maschine durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf eine Feststellung, dass ein Callback-Handler des Non-Root-Hypervisors für den Ausgangsgrund des Ausgangs der virtuellen Maschine nicht registriert ist; und Mittel zur Wiederaufnahme der Ausführung der virtuellen Maschine in Reaktion auf das Verarbeiten des Ausgangs der virtuellen Maschine durch den Root-Hypervisor.Example 39 includes the subject matter of Example 38 and further includes means for processing the virtual machine output by the root hypervisor in the root virtualization mode in response to a determination that a non-root hypervisor callback handler for the output root the virtual machine is not registered; and means for resuming execution of the virtual machine in response to the root hypervisor processing the output of the virtual machine.

Beispiel 40 beinhaltet den Gegenstand von einem der Beispiele 38 und 39, und beinhaltet ferner Mittel zum Wiederaufnehmen des Ausführens der virtuellen Maschine in Reaktion auf die Feststellung, dass die Auslösebedingung nicht erfüllt ist, durch den Root-Hypervisor.Example 40 includes the subject matter of any of Examples 38 and 39, and further includes means for resuming execution of the virtual machine by the root hypervisor in response to determining that the trigger condition is not met.

Beispiel 41 beinhaltet den Gegenstand von einem der Beispiele 38-40 und beinhaltet ferner Mittel zum Verändern eines Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf den Empfang des Ausgangs der virtuellen Maschine; und Mittel zum Erzeugen einer Liste von Veränderungen am Virtualisierungsunterstützungsobjekt durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf eine Veränderung des Virtualisierungsunterstützungsobjekts; wobei das Mittel zum Ausführen des Callback-Handlers des Non-Root-Hypervisors Mittel zum Bereitstellen der Liste von Veränderungen am Virtualisierungsunterstützungsobjekt für den Non-Root-Hypervisor umfasst.Example 41 includes the subject matter of any of Examples 38-40 and further includes means for modifying a virtualization support object by the root hypervisor in the root virtualization mode in response to receiving the output of the virtual machine; and means for generating a list of changes to the virtualization support object by the root hypervisor in the root virtualization mode in response to a change in the virtualization support object; wherein the means for executing the non-root hypervisor callback handler comprises means for providing the list of virtualization support object changes to the non-root hypervisor.

Beispiel 42 beinhaltet den Gegenstand von einem der Beispiele 38-41 und beinhaltet ferner Mittel zum Aktualisieren eines virtuellen Virtualisierungsunterstützungsobjekts auf der Grundlage des Virtualisierungsunterstützungsobjekts unter Verwendung einer Liste von Veränderungen an dem Virtualisierungsunterstützungsobjekt durch den Non-Root-Hypervisor.Example 42 includes the subject matter of any of Examples 38-41 and further includes means for updating a virtualization support virtualization object based on the virtualization support object using a list of changes to the virtualization support object by the non-root hypervisor.

Beispiel 43 beinhaltet den Gegenstand von einem der Beispiele 38-42, wobei das Virtualisierungsunterstützungsobjekt eine Struktur zur Steuerung einer virtuellen Maschine (VMCS) umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle VMCS umfasst.Example 43 includes the subject matter of any of Examples 38-42, wherein the virtualization support object comprises a virtual machine control structure (VMCS); and the virtualization virtualization support object comprises a virtual VMCS.

Beispiel 44 beinhaltet den Gegenstand von einem der Beispiele 38-43, wobei das Virtualisierungsunterstützungsobjekt eine Extended Page Table umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle Extended Page Table umfasst.Example 44 includes the subject matter of any of Examples 38-43, wherein the virtualization support object comprises an extended page table; and the virtualization virtualization support object comprises a virtual extended page table.

Beispiel 45 beinhaltet den Gegenstand von einem der Beispiele 38-44 und beinhaltet ferner Mittel, um durch den Root-Hypervisor im Root-Virtualisierungsmodus festzustellen, ob in Reaktion auf die Ausführung des Callback-Handlers ein virtuelles Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors verändert wurde; Mittel, um in Reaktion auf eine Feststellung, dass das virtuelle Virtualisierungsunterstützungsobjekt verändert wurde, ein Virtualisierungsunterstützungsobjekt der Rechenvorrichtung auf der Grundlage des virtuellen Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor im Root-Virtualisierungsmodus zu aktualisieren; und Mittel für die Wiederaufnahme der Ausführung der virtuellen Maschine in Reaktion auf das Aktualisieren des Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor.Example 45 includes the subject matter of any of Examples 38-44 and further includes means for determining, by the root hypervisor in the root virtualization mode, whether a virtual virtualization support object of the non-root hypervisor has been modified in response to the execution of the callback handler ; Means, in response to a determination that the virtualization support virtual object has been changed, updating a virtualization support object of the computing device based on the virtualization support virtual object by the root hypervisor in the root virtualization mode; and means for resuming execution of the virtual machine in response to the root hypervisor updating the virtualization support object.

Beispiel 46 beinhaltet den Gegenstand von einem der Beispiele 38-45, wobei das Mittel zum Aktualisieren des Virtualisierungsunterstützungsobjekts ferner Mittel zum Überprüfen der Gültigkeit des virtuellen Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor umfasst.Example 46 includes the subject matter of any of Examples 38-45, wherein the means for updating the virtualization support object further comprises means for verifying the validity of the virtualization support virtual object by the root hypervisor.

Beispiel 47 beinhaltet den Gegenstand von einem der Beispiele 38-46 und beinhaltet ferner Mittel, um durch den Non-Root-Hypervisor in Reaktion auf die Ausführung des Callback-Handlers das virtuelle Virtualisierungsunterstützungsobjekt zu verändern; und Mittel, um in Reaktion auf eine Veränderung des virtuellen Virtualisierungsunterstützungsobjekts eine Liste von Veränderungen am virtuellen Virtualisierungsunterstützungsobjekt durch den Non-Root-Hypervisor zu erzeugen; wobei das Mittel um festzustellen, ob das virtuelle Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors verändert wurde, Mittel umfasst, um durch den Root-Hypervisor festzustellen, ob das virtuelle Virtualisierungsunterstützungsobjekt auf der Grundlage der Liste von Veränderungen am virtuellen Virtualisierungsunterstützungsobjekt verändert wurde.Example 47 includes the subject matter of one of Examples 38-46 and further includes means for altering the virtualization support virtualization object by the non-root hypervisor in response to the execution of the callback handler; and means for generating, in response to a change in the virtual virtualization support object, a list of changes to the virtual virtualization support object by the non-root hypervisor; wherein the means for determining if the virtual virtualization support object of the non-root hypervisor has been modified comprises means for determining, by the root hypervisor, whether the virtualization support virtualization object has been modified based on the list of changes to the virtualization support virtual object.

Beispiel 48 beinhaltet den Gegenstand von einem der Beispiele 38-47, wobei das Virtualisierungsunterstützungsobjekt eine Struktur zur Steuerung einer virtuellen Maschine (VMCS) umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle VMCS umfasst.Example 48 includes the subject matter of any of Examples 38-47, wherein the virtualization support object comprises a virtual machine control structure (VMCS); and the virtualization virtualization support object comprises a virtual VMCS.

Beispiel 49 beinhaltet den Gegenstand von einem der Beispiele 38-48, wobei das Virtualisierungsunterstützungsobjekt eine Extended Page Table umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle Extended Page Table umfasst.Example 49 includes the subject matter of any of Examples 38-48, wherein the virtualization support object comprises an extended page table; and the virtualization virtualization support object comprises a virtual extended page table.

Beispiel 50 beinhaltet den Gegenstand von einem der Beispiele 38-49, wobei das Mittel zum Ausführen des Callback-Handlers des Non-Root-Hypervisors Mittel zum Ausführen des Callback-Handlers des Non-Root-Hypervisors in einem Non-Root-Virtualisierungsmodus des Prozessors der Rechenvorrichtung umfasst.Example 50 includes the subject matter of any one of Examples 38-49, wherein the means for executing the non-root hypervisor callback handler comprises means for executing the non-root hypervisor callback handler in a non-root virtualization mode of the processor the computing device includes.

Beispiel 51 beinhaltet den Gegenstand von einem der Beispiele 38-50 und beinhaltet ferner Mittel, um durch den Non-Root-Hypervisor festzustellen, ob der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus des Prozessors der Rechenvorrichtung ausgeführt wird; und Mittel zum Registrieren des Callback-Handlers und der zugeordneten Auslösebedingung beim Root-Hypervisor in Reaktion auf eine Feststellung, dass der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus ausgeführt wird, durch den Non-Root-Hypervisor.Example 51 includes the subject matter of any of Examples 38-50 and further includes means for determining, by the non-root hypervisor, whether the non-root hypervisor is executing in the non-root virtualization mode of the processor of the computing device; and means for registering the callback handler and the associated trigger condition with the root hypervisor in response to a determination that the non-root hypervisor is executing in non-root virtualization mode by the non-root hypervisor.

Beispiel 52 beinhaltet den Gegenstand von einem der Beispiele 38-51 und beinhaltet ferner Mittel für ein Hosting der virtuellen Maschine durch den Non-Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf die Feststellung, dass der Non-Root-Hypervisor nicht im Non-Root-Virtualisierungsmodus ausgeführt wird.Example 52 includes the subject matter of any of Examples 38-51 and further includes means for hosting the virtual machine by the non-root hypervisor in root virtualization mode in response to determining that the non-root hypervisor is not in non-root hypervisor. Root virtualization mode is running.

Beispiel 53 beinhaltet den Gegenstand von einem der Beispiele 38-52 und beinhaltet ferner Mittel zum Überwachen der Ausführung des Non-Root-Hypervisors durch den Root-Hypervisor im Root-Virtualisierungsmodus.Example 53 includes the subject matter of any of Examples 38-52 and further includes means for monitoring non-root hypervisor execution by the root hypervisor in root virtualization mode.

Beispiel 54 beinhaltet den Gegenstand von einem der Beispiele 38-53 und beinhaltet ferner Mittel zum Überwachen der Ausführung eines Gastgeberbetriebssystems der Rechenvorrichtung durch den Root-Hypervisor im Root-Virtualisierungsmodus, wobei das Gastgeberbetriebssystem den Non-Root-Hypervisor hostet.Example 54 includes the subject matter of any of Examples 38-53 and further includes means for monitoring the execution of a host operating system of the computing device by the root hypervisor in the root virtualization mode, the host operating system hosting the non-root hypervisor.

Claims (25)

Rechenvorrichtung für mehrstufige Virtualisierung, wobei die Rechenvorrichtung Folgendes umfasst: einen Prozessor mit Unterstützung für den Root-Virtualisierungsmodus und Unterstützung für den Non-Root-Virtualisierungsmodus; und eine oder mehrere Speichervorrichtungen, in denen mehrere Anweisungen gespeichert sind, die bei Ausführung durch den Prozessor die Rechenvorrichtung veranlassen: durch einen Root-Hypervisor der Rechenvorrichtung einen Ausgang einer virtuellen Maschine zu empfangen, der erzeugt wurde durch eine virtuelle Maschine der Rechenvorrichtung, wobei die virtuelle Maschine von einem Non-Root-Hypervisor der Rechenvorrichtung gehostet wird; durch den Root-Hypervisor im Root-Virtualisierungsmodus festzustellen, ob ein Callback-Handler des Non-Root-Hypervisors für einen Ausgangsgrund des Ausgangs der virtuellen Maschine in Reaktion auf den Empfang des Ausgangs der virtuellen Maschine registriert ist; durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf eine Feststellung, dass der Callback-Handler registriert ist, festzustellen, ob eine Auslösebedingung in Verbindung mit dem Callback-Handler erfüllt ist; und den Callback-Handler des Non-Root-Hypervisors in Reaktion auf eine Feststellung, dass die Auslösebedingung erfüllt ist, auszuführen.Multi-stage virtualization computing device, the computing device comprising: a processor with support for the root virtualization mode and support for the non-root virtualization mode; and one or more memory devices storing a plurality of instructions that, when executed by the processor, cause the computing device: receiving, by a root hypervisor of the computing device, an output of a virtual machine created by a virtual machine of the computing device, the virtual machine being hosted by a non-root hypervisor of the computing device; determining, by the root hypervisor in root virtualization mode, whether a non-root hypervisor callback handler is registered for an output root of the virtual machine output in response to receiving the output of the virtual machine; by the root hypervisor in root virtualization mode, in response to a determination that the callback handler is registered, determining whether a triggering condition associated with the callback handler is met; and execute the callback handler of the non-root hypervisor in response to a determination that the trigger condition is met. Rechenvorrichtung nach Anspruch 1, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor die Rechenvorrichtung ferner veranlassen: durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf eine Feststellung, dass ein Callback-Handler des Non-Root-Hypervisors für den Ausgangsgrund des Ausgangs der virtuellen Maschine nicht registriert ist, den Ausgang der virtuellen Maschine zu verarbeiten; und durch den Root-Hypervisor in Reaktion auf das Verarbeiten des Ausgangs der virtuellen Maschine das Ausführen der virtuellen Maschine wieder aufzunehmen.Computing device after Claim 1 , where the multiple instructions are executed by the The processor further causes the computing device to: suspend the virtual machine output by the root hypervisor in the root virtualization mode in response to a determination that a non-root hypervisor callback handler is not registered for the output root of the virtual machine to process; and resume execution of the virtual machine by the root hypervisor in response to processing the output of the virtual machine. Rechenvorrichtung nach Anspruch 1, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor die Rechenvorrichtung ferner veranlassen, in Reaktion auf eine Feststellung, dass die Auslösebedingung nicht erfüllt ist, das Ausführen der virtuellen Maschine durch den Root-Hypervisor wieder aufzunehmen.Computing device after Claim 1 wherein the multiple instructions, when executed by the processor, further cause the computing device to resume execution of the virtual machine by the root hypervisor in response to a determination that the trigger condition is not met. Rechenvorrichtung nach Anspruch 1, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor die Rechenvorrichtung ferner veranlassen: durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf den Empfang des Ausgangs der virtuellen Maschine das Virtualisierungsunterstützungsobjekt zu verändern; und durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf ein Verändern des Virtualisierungsunterstützungsobjekts eine Liste von Veränderungen am Virtualisierungsunterstützungsobjekt zu erzeugen; wobei das Ausführen des Callback-Handlers des Non-Root-Hypervisors umfasst, dem Non-Root-Hypervisor die Liste von Veränderungen an dem Virtualisierungsunterstützungsobjekt zur Verfügung zu stellen.Computing device after Claim 1 wherein the multiple instructions, when executed by the processor, further cause the computing device to: change the virtualization support object by the root hypervisor in the root virtualization mode in response to receiving the output of the virtual machine; and generate, by the root hypervisor in the root virtualization mode, a list of changes to the virtualization support object in response to modifying the virtualization support object; wherein executing the non-root hypervisor callback handler comprises providing the non-root hypervisor with the list of changes to the virtualization support object. Rechenvorrichtung nach Anspruch 4, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor die Rechenvorrichtung ferner veranlassen, durch den Non-Root-Hypervisor das virtuelle Virtualisierungsunterstützungsobjekt auf der Grundlage des Virtualisierungsunterstützungsobjekts durch die Liste von Veränderungen an dem Virtualisierungsunterstützungsobjekt zu aktualisieren.Computing device after Claim 4 wherein, when executed by the processor, the plurality of instructions further cause the computing device to update, by the non-root hypervisor, the virtualization support virtual object based on the virtualization support object through the list of changes to the virtualization support object. Rechenvorrichtung nach Anspruch 5, wobei: das Virtualisierungsunterstützungsobjekt eine Struktur zur Steuerung einer virtuellen Maschine (Virtual Machine Control Structure, VMCS) oder eine Extended Page Table umfasst; und das virtuelle Virtualisierungsunterstützungsobjekt eine virtuelle VMCS oder eine virtuelle Extended Page Table umfasst.Computing device after Claim 5 wherein: the virtualization support object comprises a virtual machine control structure (VMCS) or an extended page table structure; and the virtualization virtualization support object comprises a virtual VMCS or a virtual extended page table. Rechenvorrichtung nach einem der Ansprüche 1-6, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor die Rechenvorrichtung ferner veranlassen: durch den Root-Hypervisor im Root-Virtualisierungsmodus festzustellen, ob ein virtuelles Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors in Reaktion auf das Ausführen des Callback-Handlers verändert wurde; durch den Root-Hypervisor im Root-Virtualisierungsmodus ein Virtualisierungsunterstützungsobjekt der Rechenvorrichtung zu aktualisieren, basierend auf dem virtuellen Virtualisierungsunterstützungsobjekt in Reaktion auf eine Feststellung, dass das virtuelle Virtualisierungsunterstützungsobjekt verändert wurde; und durch den Root-Hypervisor in Reaktion auf eine Aktualisierung des Virtualisierungsunterstützungsobjekts das Ausführen der virtuellen Maschine wieder aufzunehmen.Computing device according to one of Claims 1 - 6 wherein the multiple instructions, when executed by the processor, further cause the computing device to: determine, by the root hypervisor in the root virtualization mode, whether a virtual virtualization support object of the non-root hypervisor has changed in response to the callback handler being executed; update, by the root hypervisor in root virtualization mode, a computing device virtualization support object based on the virtual virtualization support object in response to a determination that the virtualization virtualization support object has changed; and resume execution of the virtual machine by the root hypervisor in response to updating the virtualization support object. Rechenvorrichtung nach Anspruch 7, wobei das Aktualisieren des Virtualisierungsunterstützungsobjekts ferner das Überprüfen der Gültigkeit des virtuellen Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor umfasst.Computing device after Claim 7 wherein updating the virtualization support object further comprises verifying the validity of the virtualization virtual support object by the root hypervisor. Rechenvorrichtung nach Anspruch 7, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor die Rechenvorrichtung ferner veranlassen: das virtuelle Virtualisierungsunterstützungsobjekt in Reaktion auf das Ausführen des Callback-Handlers durch den Non-Root-Hypervisor zu verändern; und in Reaktion auf das Verändern des virtuellen Virtualisierungsunterstützungsobjekts durch den Non-Root-Hypervisor eine Liste von Veränderungen am virtuellen Virtualisierungsunterstützungsobjekt zu erzeugen; wobei die Feststellung, ob das virtuelle Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors verändert wurde, die Feststellung durch den Root-Hypervisor umfasst, ob das virtuelle Virtualisierungsunterstützungsobjekt auf der Grundlage der Liste von Veränderungen an dem virtuellen Virtualisierungsunterstützungsobjekt verändert wurde.Computing device after Claim 7 wherein, upon execution by the processor, the plurality of instructions further cause the computing device to: modify the virtualization support virtual object in response to the non-root hypervisor executing the callback handler; and in response to changing the virtual virtualization support object by the non-root hypervisor to generate a list of changes to the virtual virtualization support object; wherein the determination as to whether the virtual virtualization support object of the non-root hypervisor has been altered comprises the determination by the root hypervisor as to whether the virtualization support virtual object has been modified based on the list of changes to the virtualization support virtual object. Rechenvorrichtung nach einem der Ansprüche 1-6, wobei das Ausführen des Callback-Handlers des Non-Root-Hypervisors das Ausführen des Callback-Handlers des Non-Root-Hypervisors im Non-Root-Virtualisierungsmodus des Prozessors umfasst.Computing device according to one of Claims 1 - 6 wherein executing the non-root hypervisor callback handler comprises executing the non-root hypervisor callback handler in the non-root virtualization mode of the processor. Rechenvorrichtung nach einem der Ansprüche 1-6, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor die Rechenvorrichtung ferner veranlassen: durch den Non-Root-Hypervisor festzustellen, ob der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus ausgeführt wird; durch den Non-Root-Hypervisor den Callback-Handler und die zugehörige Auslösebedingung beim Root-Hypervisor in Reaktion auf eine Feststellung zu registrieren, dass der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus ausgeführt wird; und im Root-Virtualisierungsmodus in Reaktion auf eine Feststellung, dass der Non-Root-Hypervisor nicht im Non-Root-Virtualisierungsmodus ausgeführt wird, die virtuelle Maschine durch den Non-Root-Hypervisor zu hosten.Computing device according to one of Claims 1 - 6 wherein the multiple instructions, when executed by the processor, further cause the computing device to: determine, by the non-root hypervisor, whether the non-root hypervisor is running in non-root virtualization mode; through the non-root hypervisor the callback handler and the associated trigger condition at the root Register hypervisor in response to a determination that the non-root hypervisor is running in non-root virtualization mode; and in root virtualization mode, in response to a determination that the non-root hypervisor is not running in non-root virtualization mode, hosting the virtual machine through the non-root hypervisor. Rechenvorrichtung nach einem der Ansprüche 1-6, wobei die mehreren Anweisungen bei Ausführung durch den Prozessor die Rechenvorrichtung ferner veranlassen: durch den Root-Hypervisor im Root-Virtualisierungsmodus die Ausführung des Non-Root-Hypervisors zu überwachen; und die Ausführung eines Gastgeberbetriebssystems der Rechenvorrichtung durch den Root-Hypervisor im Root-Virtualisierungsmodus zu überwachen, wobei das Gastgeberbetriebssystem den Non-Root-Hypervisor hostet.Computing device according to one of Claims 1 - 6 wherein the multiple instructions, when executed by the processor, further cause the computing device to: monitor the execution of the non-root hypervisor by the root hypervisor in the root virtualization mode; and monitor execution of a host operating system of the computing device by the root hypervisor in the root virtualization mode, the host operating system hosting the non-root hypervisor. Verfahren für mehrstufige Virtualisierung, wobei das Verfahren Folgendes umfasst: durch einen Root-Hypervisor einer Rechenvorrichtung das Empfangen eines Ausgangs einer virtuellen Maschine, der erzeugt wurde durch eine virtuelle Maschine der Rechenvorrichtung, wobei die virtuelle Maschine von einem Non-Root-Hypervisor der Rechenvorrichtung gehostet wird; durch den Root-Hypervisor in einem Root-Virtualisierungsmodus eines Prozessors der Rechenvorrichtung das Feststellen, ob ein Callback-Handler des Non-Root-Hypervisors für einen Ausgangsgrund des Ausgangs der virtuellen Maschine in Reaktion auf den Empfang des Ausgangs der virtuellen Maschine registriert ist; durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf eine Feststellung, dass der Callback-Handler registriert ist, das Feststellen, ob eine Auslösebedingung in Verbindung mit dem Callback-Handler erfüllt ist; und durch die Rechenvorrichtung in Reaktion auf die Feststellung, dass die Auslösebedingung erfüllt ist, das Ausführen des Callback-Handlers des Non-Root-Hypervisors.A multi-stage virtualization method, the method comprising: by a root hypervisor of a computing device, receiving an output of a virtual machine generated by a virtual machine of the computing device, the virtual machine being hosted by a non-root hypervisor of the computing device; by the root hypervisor in a root virtualization mode of a processor of the computing device, determining if a callback handler of the non-root hypervisor is registered for an output root of the virtual machine output in response to receiving the output of the virtual machine; by the root hypervisor in the root virtualization mode, in response to a determination that the callback handler is registered, determining if a trigger condition associated with the callback handler is met; and by the computing device in response to determining that the trigger condition is met, executing the non-root hypervisor callback handler. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf die Feststellung, dass ein Callback-Handler des Non-Root-Hypervisors für den Ausgangsgrund des Ausgangs der virtuellen Maschine nicht registriert ist, das Verarbeiten des Ausgangs der virtuellen Maschine; und durch den Root-Hypervisor in Reaktion auf das Verarbeiten des Ausgangs der virtuellen Maschine das Wiederaufnehmen des Ausführens der virtuellen Maschine.Method according to Claim 13 and further comprising: by the root hypervisor in the root virtualization mode, in response to determining that a non-root hypervisor callback handler is not registered for the root cause of the virtual machine output, processing the output of the virtual one Machine; and resuming the execution of the virtual machine by the root hypervisor in response to processing the output of the virtual machine. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Verändern eines Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf den Empfang des Ausgangs der virtuellen Maschine; und Erzeugen einer Liste von Veränderungen am Virtualisierungsunterstützungsobjekt durch den Root-Hypervisor im Root-Virtualisierungsmodus in Reaktion auf das Verändern des Virtualisierungsunterstützungsobjekts; wobei das Ausführen des Callback-Handlers des Non-Root-Hypervisors umfasst, dem Non-Root-Hypervisor die Liste von Veränderungen an dem Virtualisierungsunterstützungsobjekt zur Verfügung zu stellen.Method according to Claim 13 further comprising: changing a virtualization support object by the root hypervisor in root virtualization mode in response to receiving the output of the virtual machine; and generating a list of changes to the virtualization support object by the root hypervisor in the root virtualization mode in response to changing the virtualization support object; wherein executing the non-root hypervisor callback handler comprises providing the non-root hypervisor with the list of changes to the virtualization support object. Verfahren nach Anspruch 15, das ferner das Aktualisieren eines virtuellen Virtualisierungsunterstützungsobjekts auf der Grundlage des Virtualisierungsunterstützungsobjekts unter Verwendung der Liste von Veränderungen an dem Virtualisierungsunterstützungsobjekt durch den Non-Root-Hypervisor umfasst.Method according to Claim 15 further comprising updating a virtualization support virtual object based on the virtualization support object using the list of changes to the virtualization support object by the non-root hypervisor. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: die Feststellung durch den Root-Hypervisor im Root-Virtualisierungsmodus, ob ein virtuelles Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors in Reaktion auf das Ausführen des Callback-Handlers verändert wurde; das Aktualisieren eines Virtualisierungsunterstützungsobjekts der Rechenvorrichtung durch den Root-Hypervisor im Root-Virtualisierungsmodus, basierend auf dem virtuellen Virtualisierungsunterstützungsobjekt in Reaktion auf die Feststellung, dass das virtuelle Virtualisierungsunterstützungsobjekt verändert wurde; und das Wiederaufnehmen des Ausführens der virtuellen Maschine durch den Root-Hypervisor in Reaktion auf das Aktualisieren des Virtualisierungsunterstützungsobjekts.Method according to Claim 13 further comprising: the root hypervisor discovery in the root virtualization mode whether a virtual virtualization support object of the non-root hypervisor has changed in response to the callback handler being executed; updating a virtualization support object of the computing device by the root hypervisor in the root virtualization mode based on the virtual virtualization support object in response to determining that the virtualization virtualization support object has changed; and resuming execution of the virtual machine by the root hypervisor in response to updating the virtualization support object. Verfahren nach Anspruch 17, wobei das Aktualisieren des Virtualisierungsunterstützungsobjekts ferner das Überprüfen der Gültigkeit des virtuellen Virtualisierungsunterstützungsobjekts durch den Root-Hypervisor umfasst.Method according to Claim 17 wherein updating the virtualization support object further comprises verifying the validity of the virtualization virtual support object by the root hypervisor. Verfahren nach Anspruch 17, das ferner Folgendes umfasst: Verändern des virtuellen Virtualisierungsunterstützungsobjekts in Reaktion auf das Ausführen des Callback-Handlers durch den Non-Root-Hypervisor; und Erzeugen einer Liste von Veränderungen am virtuellen Virtualisierungsunterstützungsobjekt in Reaktion auf das Verändern des virtuellen Virtualisierungsunterstützungsobjekts durch den Non-Root-Hypervisor; wobei die Feststellung, ob das virtuelle Virtualisierungsunterstützungsobjekt des Non-Root-Hypervisors verändert wurde, die Feststellung durch den Root-Hypervisor umfasst, ob das virtuelle Virtualisierungsunterstützungsobjekt auf der Grundlage der Liste von Veränderungen an dem virtuellen Virtualisierungsunterstützungsobjekt verändert wurde.Method according to Claim 17 further comprising: altering the virtualization virtual support object in response to the non-root hypervisor executing the callback handler; and generating a list of changes to the virtual virtualization support object in response to changing the virtual virtualization support object by the non-root hypervisor; wherein the determination as to whether the virtual virtualization support object of the non-root hypervisor has been altered comprises the determination by the root hypervisor as to whether the virtualization support virtual object has been modified based on the list of changes to the virtualization support virtual object. Verfahren nach Anspruch 13, wobei das Ausführen des Callback-Handlers des Non-Root-Hypervisors das Ausführen des Callback-Handlers des Non-Root-Hypervisors in einem Non-Root-Virtualisierungsmodus des Prozessors der Rechenvorrichtung umfasst.Method according to Claim 13 wherein executing the non-root hypervisor callback handler comprises executing the non-root hypervisor callback handler in a non-root virtualization mode of the processor of the computing device. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Feststellen durch den Non-Root-Hypervisor, ob der Non-Root-Hypervisor in einem Non-Root-Virtualisierungsmodus des Prozessors der Rechenvorrichtung ausgeführt wird; und Registrieren des Callback-Handlers und der zugehörigen Auslösebedingung durch den Non-Root-Hypervisor beim Root-Hypervisor in Reaktion auf die Feststellung, dass der Non-Root-Hypervisor im Non-Root-Virtualisierungsmodus ausgeführt wird.Method according to Claim 13 further comprising: determining by the non-root hypervisor whether the non-root hypervisor is executing in a non-root virtualization mode of the processor of the computing device; and registering the callback handler and associated trigger condition with the non-root hypervisor at the root hypervisor in response to determining that the non-root hypervisor is running in non-root virtualization mode. Verfahren nach Anspruch 13, das ferner ein Überwachen der Ausführung des Non-Root-Hypervisors durch den Root-Hypervisor im Root-Virtualisierungsmodus umfasst.Method according to Claim 13 further comprising monitoring by the root hypervisor in root virtualization mode execution of the non-root hypervisor. Rechenvorrichtung, die Folgendes umfasst: einen Prozessor, und einen Speicher, in dem mehrere Anweisungen gespeichert sind, die bei Ausführung durch den Prozessor die Rechenvorrichtung veranlassen, das Verfahren nach einem der Ansprüche 13-22 auszuführen.A computing device, comprising: a processor; and a memory storing a plurality of instructions that, when executed by the processor, cause the computing device to perform the method of any of Claims 13 - 22 perform. Maschinenlesbares Speichermedium oder mehrere maschinenlesbare Speichermedien, die mehrere Anweisungen umfassen, die auf ihnen gespeichert sind und die in Reaktion auf ihr Ausführen darin resultieren, dass eine Rechenvorrichtung das Verfahren nach einem der Ansprüche 13-22 ausführt.A machine readable storage medium or a plurality of machine readable storage media comprising a plurality of instructions stored thereon and resulting in response to their execution in that a computing device performs the method of any one of Claims 13 - 22 performs. Rechenvorrichtung, die Mittel zum Ausführen des Verfahrens nach einem der Ansprüche 13-22 umfasst.Calculating device, the means for carrying out the method according to one of Claims 13 - 22 includes.
DE112016004297.3T 2015-09-25 2016-08-25 TECHNOLOGIES FOR MULTI-STAGE VIRTUALIZATION Pending DE112016004297T5 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/866,187 2015-09-25
US14/866,187 US9747123B2 (en) 2015-09-25 2015-09-25 Technologies for multi-level virtualization
PCT/US2016/048681 WO2017052972A1 (en) 2015-09-25 2016-08-25 Technologies for multi-level virtualization

Publications (1)

Publication Number Publication Date
DE112016004297T5 true DE112016004297T5 (en) 2018-06-14

Family

ID=58386754

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016004297.3T Pending DE112016004297T5 (en) 2015-09-25 2016-08-25 TECHNOLOGIES FOR MULTI-STAGE VIRTUALIZATION

Country Status (4)

Country Link
US (1) US9747123B2 (en)
CN (1) CN107924325B (en)
DE (1) DE112016004297T5 (en)
WO (1) WO2017052972A1 (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274823B1 (en) * 2014-12-24 2016-03-01 Parallels IP Holdings GmbH Thin hypervisor for native execution of unsafe code
US20170329622A1 (en) * 2016-05-11 2017-11-16 Microsoft Technology Licensing, Llc Shared virtual data structure of nested hypervisors
US11726807B2 (en) * 2017-05-05 2023-08-15 Vmware, Inc. Safe execution of virtual machine callbacks in a hypervisor
US10936353B2 (en) * 2017-05-16 2021-03-02 Dell Products L.P. Systems and methods for hypervisor-assisted hardware accelerator offloads in a virtualized information handling system environment
US11016798B2 (en) 2018-06-01 2021-05-25 The Research Foundation for the State University Multi-hypervisor virtual machines that run on multiple co-located hypervisors
US11182184B2 (en) 2019-10-23 2021-11-23 Red Hat, Inc. Implementing high-performance virtual machines for bare metal simulation
US11144419B2 (en) * 2019-10-25 2021-10-12 Red Hat, Inc. Controlled use of a memory monitor instruction and memory wait instruction in a virtualized environment
US20230066447A1 (en) * 2021-08-24 2023-03-02 Hewlett-Packard Development Company, L.P. Execution of code in system memory
US20230305854A1 (en) * 2022-03-25 2023-09-28 Sap Se Reducing downtime during operating system patching

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US8479195B2 (en) 2007-05-16 2013-07-02 Vmware, Inc. Dynamic selection and application of multiple virtualization techniques
US8032680B2 (en) * 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
JP5405799B2 (en) 2008-10-30 2014-02-05 株式会社日立製作所 Virtual computer control method, virtualization program, and virtual computer system
US9747118B2 (en) * 2009-01-06 2017-08-29 Intel Corporation Guest-specific microcode
US8495628B2 (en) * 2009-08-23 2013-07-23 International Business Machines Corporation Para-virtualization in a nested virtualization environment using reduced number of nested VM exits
US8479196B2 (en) 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
US8327059B2 (en) * 2009-09-30 2012-12-04 Vmware, Inc. System and method to enhance memory protection for programs in a virtual machine environment
JP5493125B2 (en) 2010-02-05 2014-05-14 株式会社日立製作所 Virtualization method and computer
US8819677B2 (en) * 2010-11-23 2014-08-26 International Business Machines Corporation Virtual machine data structures corresponding to nested virtualization levels
US8578080B2 (en) * 2011-07-01 2013-11-05 Intel Corporation Secure handling of interrupted events utilizing a virtual interrupt definition table
US10467033B2 (en) * 2011-12-22 2019-11-05 Intel Corporation Enabling efficient nested virtualization
CN104067218B (en) * 2011-12-28 2019-06-18 英特尔公司 Distribute memory access control strategy
EP2867770B1 (en) * 2012-06-29 2020-05-27 Intel Corporation Methods, systems and apparatus to capture error conditions in lightweight virtual machine managers
US9384024B2 (en) * 2012-12-18 2016-07-05 Dynavisor, Inc. Dynamic device virtualization
US9268707B2 (en) * 2012-12-29 2016-02-23 Intel Corporation Low overhead paged memory runtime protection
CN104424034A (en) * 2013-09-04 2015-03-18 华为技术有限公司 Hardware resource access method and hardware resource access device
US9454676B2 (en) * 2014-06-27 2016-09-27 Intel Corporation Technologies for preventing hook-skipping attacks using processor virtualization features

Also Published As

Publication number Publication date
US9747123B2 (en) 2017-08-29
WO2017052972A1 (en) 2017-03-30
CN107924325B (en) 2022-02-18
CN107924325A (en) 2018-04-17
US20170090963A1 (en) 2017-03-30

Similar Documents

Publication Publication Date Title
DE112016004297T5 (en) TECHNOLOGIES FOR MULTI-STAGE VIRTUALIZATION
DE102006061939B4 (en) Method and apparatus for accessing a memory-mapped device by a guest
DE102007063946B4 (en) Guest-host address translation for device access to storage in a partitioned system
DE112004003080B4 (en) Use multiple monitors of virtual machines to handle privileged events
DE112015006934T5 (en) Nested virtualization for virtual machine exits
DE102014003798B4 (en) Method of booting a heterogeneous system and presenting a symmetric core view
Abels et al. An overview of xen virtualization
DE102018115670A1 (en) Technologies for running untrusted code with processor sandbox support
DE102012218379A1 (en) Paravirtualized virtual GPU
DE112007001714T5 (en) Virtualize Performance Counters
DE112012005209T5 (en) Bridge function between virtual machine monitor and bare-metal boot process
DE112011103845B4 (en) Manage a nested virtualized environment
DE112020000280B4 (en) TRANSPARENT INTERPRETATION OF GUEST COMMANDS IN A SECURE VIRTUAL MACHINE ENVIRONMENT
DE112007001988T5 (en) Sharing information with guests in a virtual machine environment
US10853259B2 (en) Exitless extended page table switching for nested hypervisors
DE112004001652B4 (en) Vectoring an interrupt or an exception when resuming the operation of a virtual machine
DE112016005823T5 (en) MONITORING THE OPERATION OF A PROCESSOR
US10698713B2 (en) Virtual processor state switching virtual machine functions
DE202017007430U1 (en) Detecting bus lock conditions and avoiding bus locks
US20190227834A1 (en) Application memory protection using an extended page table switching virtual machine function
DE112017003332T5 (en) OPENING ACCESSORIES, PROCESSES, SYSTEMS AND COMMANDS
DE112015001502T5 (en) Exit from multiple threads in a computer
DE102021103041A1 (en) VIRTUAL TRUSTED PLATFORM MODULES
DE102009060299A1 (en) Introduce transactions to help virtualize a physical device controller
DE202019005683U1 (en) Processor core with support of an instruction set architecture for heterogeneous systems

Legal Events

Date Code Title Description
R012 Request for examination validly filed