-
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.
Documentation: KVM: add virtual CPU errata documentation
Add a file to document all the different ways in which the virtual CPU emulation is imperfect. Include an example to show how to document such errata. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Jim Mattson <jmattson@google.com> Reviewed-by: Oliver Upton <oupton@google.com> Message-Id: <20220322110712.222449-3-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
- Loading branch information
Paolo Bonzini
committed
Mar 29, 2022
1 parent
daec8d4
commit 4501672
Showing
2 changed files
with
40 additions
and
0 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
|
||
======================================= | ||
Known limitations of CPU virtualization | ||
======================================= | ||
|
||
Whenever perfect emulation of a CPU feature is impossible or too hard, KVM | ||
has to choose between not implementing the feature at all or introducing | ||
behavioral differences between virtual machines and bare metal systems. | ||
|
||
This file documents some of the known limitations that KVM has in | ||
virtualizing CPU features. | ||
|
||
x86 | ||
=== | ||
|
||
``KVM_GET_SUPPORTED_CPUID`` issues | ||
---------------------------------- | ||
|
||
x87 features | ||
~~~~~~~~~~~~ | ||
|
||
Unlike most other CPUID feature bits, CPUID[EAX=7,ECX=0]:EBX[6] | ||
(FDP_EXCPTN_ONLY) and CPUID[EAX=7,ECX=0]:EBX]13] (ZERO_FCS_FDS) are | ||
clear if the features are present and set if the features are not present. | ||
|
||
Clearing these bits in CPUID has no effect on the operation of the guest; | ||
if these bits are set on hardware, the features will not be present on | ||
any virtual machine that runs on that hardware. | ||
|
||
**Workaround:** It is recommended to always set these bits in guest CPUID. | ||
Note however that any software (e.g ``WIN87EM.DLL``) expecting these features | ||
to be present likely predates these CPUID feature bits, and therefore | ||
doesn't know to check for them anyway. | ||
|
||
Nested virtualization features | ||
------------------------------ | ||
|
||
TBD | ||
|
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 |
---|---|---|
|
@@ -9,6 +9,7 @@ KVM for x86 systems | |
|
||
amd-memory-encryption | ||
cpuid | ||
errata | ||
halt-polling | ||
hypercalls | ||
mmu | ||
|