Documentation: KVM: add API issues section
Add a section to document all the different ways in which the KVM API sucks. I am sure there are way more, give people a place to vent so that userspace authors are aware. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20220322110712.222449-4-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
45016721de
commit
cde363ab7c
|
@ -7719,3 +7719,49 @@ only be invoked on a VM prior to the creation of VCPUs.
|
||||||
At this time, KVM_PMU_CAP_DISABLE is the only capability. Setting
|
At this time, KVM_PMU_CAP_DISABLE is the only capability. Setting
|
||||||
this capability will disable PMU virtualization for that VM. Usermode
|
this capability will disable PMU virtualization for that VM. Usermode
|
||||||
should adjust CPUID leaf 0xA to reflect that the PMU is disabled.
|
should adjust CPUID leaf 0xA to reflect that the PMU is disabled.
|
||||||
|
|
||||||
|
9. Known KVM API problems
|
||||||
|
=========================
|
||||||
|
|
||||||
|
In some cases, KVM's API has some inconsistencies or common pitfalls
|
||||||
|
that userspace need to be aware of. This section details some of
|
||||||
|
these issues.
|
||||||
|
|
||||||
|
Most of them are architecture specific, so the section is split by
|
||||||
|
architecture.
|
||||||
|
|
||||||
|
9.1. x86
|
||||||
|
--------
|
||||||
|
|
||||||
|
``KVM_GET_SUPPORTED_CPUID`` issues
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
In general, ``KVM_GET_SUPPORTED_CPUID`` is designed so that it is possible
|
||||||
|
to take its result and pass it directly to ``KVM_SET_CPUID2``. This section
|
||||||
|
documents some cases in which that requires some care.
|
||||||
|
|
||||||
|
Local APIC features
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
CPU[EAX=1]:ECX[21] (X2APIC) is reported by ``KVM_GET_SUPPORTED_CPUID``,
|
||||||
|
but it can only be enabled if ``KVM_CREATE_IRQCHIP`` or
|
||||||
|
``KVM_ENABLE_CAP(KVM_CAP_IRQCHIP_SPLIT)`` are used to enable in-kernel emulation of
|
||||||
|
the local APIC.
|
||||||
|
|
||||||
|
The same is true for the ``KVM_FEATURE_PV_UNHALT`` paravirtualized feature.
|
||||||
|
|
||||||
|
CPU[EAX=1]:ECX[24] (TSC_DEADLINE) is not reported by ``KVM_GET_SUPPORTED_CPUID``.
|
||||||
|
It can be enabled if ``KVM_CAP_TSC_DEADLINE_TIMER`` is present and the kernel
|
||||||
|
has enabled in-kernel emulation of the local APIC.
|
||||||
|
|
||||||
|
Obsolete ioctls and capabilities
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
KVM_CAP_DISABLE_QUIRKS does not let userspace know which quirks are actually
|
||||||
|
available. Use ``KVM_CHECK_EXTENSION(KVM_CAP_DISABLE_QUIRKS2)`` instead if
|
||||||
|
available.
|
||||||
|
|
||||||
|
Ordering of KVM_GET_*/KVM_SET_* ioctls
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
TBD
|
||||||
|
|
Loading…
Reference in New Issue