Professional Documents
Culture Documents
Maryrita Steinhour
Program Manager
Windows Virtualization
Microsoft Corporation
Goals
Understand Windows hypervisor APIs
Apply this knowledge to build
solutions based on Windows
virtualization
Peek at Windows hypervisor future
hardware support
Agenda
Hypervisor Overview
Hypercall Overview
Making a Hypercall (or, What’s Under the
Wrapper?)
Hypercall Functions
Example: Inter-partition Communication
Future Support for Hardware Features
Windows Virtualization Architecture
Parent Child Child
Partition Partition Partition
Windows
Server
WMI Provider
Virtualization
Stack
Operating Operating
System 1 System 2
IHV
Drivers
Windows hypervisor
Operating
System 1
Operating Operating
System 2 System 3
Hypercall
Hypercall
Processing
Windows hypervisor
HV_STATUS
HvAssignWidgets(
__in HV_PARTITION_ID PartitionId,
__in UINT64 Flags,
__inout PUINT32 RepCount,
__inout PUINT32 StartIndex,
__in PCHV_WIDGET WidgetList
);
Set Up the Hypercall Environment
Receiver Sender
Port Connection
Partitions
Hypervisor
Event Interface
Hypercall
Sets up communication
Signals event by setting a bit
Interrupt
Posted (through SynIC) to notify receiver that
the bit is set
Send and Receive Events
Event posted with HvSignalEvent sets bit in
guest page
Guests map their per-VP SynIC event page into
their address space
Receiver Sender
Receiver VP’s SynIC Event Page
Connection
SINT0 events 2048 bits
VP Port
SINT1 events 2048 bits Partitions
Hypervisor
… Routing info from port:
SINTx number
Valid receiver VP’s
SINT15 events 2048 bits
Message Interfaces
Hypercall
Sets up communication
Posts message
Interrupts
Posted (through SynIC) to notify recipient of
message arrival
Send Messages
HvPostMessage issued
Messages are copied to a per-receiver message buffer
Hypervisor queues messages for future delivery to
message page
Receiver Sender
Message Page
Connection
Message slot 0 256 bytes
VP Port
Message slot 1 256 bytes Message
Partitions
… …
Message slot 15 256 bytes Hypervisor
Message Buffers
Buffer 1 – busy
Buffer 2 – busy
Buffer 3
…
Buffer n – free
Send Messages
Sender uses Post and Cancel hypercalls
Messages are copied to a per-receiver message buffer
Hypervisor queues messages for future delivery to
message page
Receiver Sender
Message Page
Connection
Message slot 0 256 bytes
VP Port
Message slot 1 256 bytes
Partitions
… …
Message slot 15 256 bytes Hypervisor
Message Buffers
Buffer 1 – busy
Buffer 2 – busy
Message
…
Buffer n – free
Agenda
Hypervisor Overview
Hypercall Overview
Making a Hypercall
(or, What’s Under the Wrapper?)
Hypercall Functions
Example: Inter-partition Communication
Future Support for Hardware Features
Future Support For
Hardware Features
Items on the following slides are hardware
features for which we’re considering
support
Some committed
Some still under investigation
Feedback is welcome
Committed Hardware Features
Authenticated (measured) launch of the hypervisor
“This IS the hypervisor you’re looking for …”
Uses secure hardware features
LT (LaGrande Technology) or SVM (Secure Virtual Machine)
TPM (Trusted Platform Module)
DMAr (Direct Memory Access remapping) protection of
the hypervisor
Provides additional protection for the hypervisor from guest
memory accesses for I/O operations
Uses AMD IOMMU (I/O Memory Management Unit)
Uses Intel VT-d (Vanderpool Technology – Directed I/O)
Hardware Features Under Investigation