forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
s390: * add an interface to provide a hypervisor dump for secure guests * improve selftests to show tests x86: * Intel IPI virtualization * Allow getting/setting pending triple fault with KVM_GET/SET_VCPU_EVENTS * PEBS virtualization * Simplify PMU emulation by just using PERF_TYPE_RAW events * More accurate event reinjection on SVM (avoid retrying instructions) * Allow getting/setting the state of the speaker port data bit * Rewrite gfn-pfn cache refresh * Refuse starting the module if VM-Entry/VM-Exit controls are inconsistent * "Notify" VM exit
- Loading branch information
Showing
71 changed files
with
3,123 additions
and
712 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,3 +10,4 @@ KVM for s390 systems | |
s390-diag | ||
s390-pv | ||
s390-pv-boot | ||
s390-pv-dump |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
.. SPDX-License-Identifier: GPL-2.0 | ||
=========================================== | ||
s390 (IBM Z) Protected Virtualization dumps | ||
=========================================== | ||
|
||
Summary | ||
------- | ||
|
||
Dumping a VM is an essential tool for debugging problems inside | ||
it. This is especially true when a protected VM runs into trouble as | ||
there's no way to access its memory and registers from the outside | ||
while it's running. | ||
|
||
However when dumping a protected VM we need to maintain its | ||
confidentiality until the dump is in the hands of the VM owner who | ||
should be the only one capable of analysing it. | ||
|
||
The confidentiality of the VM dump is ensured by the Ultravisor who | ||
provides an interface to KVM over which encrypted CPU and memory data | ||
can be requested. The encryption is based on the Customer | ||
Communication Key which is the key that's used to encrypt VM data in a | ||
way that the customer is able to decrypt. | ||
|
||
|
||
Dump process | ||
------------ | ||
|
||
A dump is done in 3 steps: | ||
|
||
**Initiation** | ||
|
||
This step initializes the dump process, generates cryptographic seeds | ||
and extracts dump keys with which the VM dump data will be encrypted. | ||
|
||
**Data gathering** | ||
|
||
Currently there are two types of data that can be gathered from a VM: | ||
the memory and the vcpu state. | ||
|
||
The vcpu state contains all the important registers, general, floating | ||
point, vector, control and tod/timers of a vcpu. The vcpu dump can | ||
contain incomplete data if a vcpu is dumped while an instruction is | ||
emulated with help of the hypervisor. This is indicated by a flag bit | ||
in the dump data. For the same reason it is very important to not only | ||
write out the encrypted vcpu state, but also the unencrypted state | ||
from the hypervisor. | ||
|
||
The memory state is further divided into the encrypted memory and its | ||
metadata comprised of the encryption tweaks and status flags. The | ||
encrypted memory can simply be read once it has been exported. The | ||
time of the export does not matter as no re-encryption is | ||
needed. Memory that has been swapped out and hence was exported can be | ||
read from the swap and written to the dump target without need for any | ||
special actions. | ||
|
||
The tweaks / status flags for the exported pages need to be requested | ||
from the Ultravisor. | ||
|
||
**Finalization** | ||
|
||
The finalization step will provide the data needed to be able to | ||
decrypt the vcpu and memory data and end the dump process. When this | ||
step completes successfully a new dump initiation can be started. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.