101 lines
3.0 KiB
ReStructuredText
101 lines
3.0 KiB
ReStructuredText
|
Paravirtualized KVM features
|
||
|
============================
|
||
|
|
||
|
Description
|
||
|
-----------
|
||
|
|
||
|
In some cases when implementing hardware interfaces in software is slow, ``KVM``
|
||
|
implements its own paravirtualized interfaces.
|
||
|
|
||
|
Setup
|
||
|
-----
|
||
|
|
||
|
Paravirtualized ``KVM`` features are represented as CPU flags. The following
|
||
|
features are enabled by default for any CPU model when ``KVM`` acceleration is
|
||
|
enabled:
|
||
|
|
||
|
- ``kvmclock``
|
||
|
- ``kvm-nopiodelay``
|
||
|
- ``kvm-asyncpf``
|
||
|
- ``kvm-steal-time``
|
||
|
- ``kvm-pv-eoi``
|
||
|
- ``kvmclock-stable-bit``
|
||
|
|
||
|
``kvm-msi-ext-dest-id`` feature is enabled by default in x2apic mode with split
|
||
|
irqchip (e.g. "-machine ...,kernel-irqchip=split -cpu ...,x2apic").
|
||
|
|
||
|
Note: when CPU model ``host`` is used, QEMU passes through all supported
|
||
|
paravirtualized ``KVM`` features to the guest.
|
||
|
|
||
|
Existing features
|
||
|
-----------------
|
||
|
|
||
|
``kvmclock``
|
||
|
Expose a ``KVM`` specific paravirtualized clocksource to the guest. Supported
|
||
|
since Linux v2.6.26.
|
||
|
|
||
|
``kvm-nopiodelay``
|
||
|
The guest doesn't need to perform delays on PIO operations. Supported since
|
||
|
Linux v2.6.26.
|
||
|
|
||
|
``kvm-mmu``
|
||
|
This feature is deprecated.
|
||
|
|
||
|
``kvm-asyncpf``
|
||
|
Enable asynchronous page fault mechanism. Supported since Linux v2.6.38.
|
||
|
Note: since Linux v5.10 the feature is deprecated and not enabled by ``KVM``.
|
||
|
Use ``kvm-asyncpf-int`` instead.
|
||
|
|
||
|
``kvm-steal-time``
|
||
|
Enable stolen (when guest vCPU is not running) time accounting. Supported
|
||
|
since Linux v3.1.
|
||
|
|
||
|
``kvm-pv-eoi``
|
||
|
Enable paravirtualized end-of-interrupt signaling. Supported since Linux
|
||
|
v3.10.
|
||
|
|
||
|
``kvm-pv-unhalt``
|
||
|
Enable paravirtualized spinlocks support. Supported since Linux v3.12.
|
||
|
|
||
|
``kvm-pv-tlb-flush``
|
||
|
Enable paravirtualized TLB flush mechanism. Supported since Linux v4.16.
|
||
|
|
||
|
``kvm-pv-ipi``
|
||
|
Enable paravirtualized IPI mechanism. Supported since Linux v4.19.
|
||
|
|
||
|
``kvm-poll-control``
|
||
|
Enable host-side polling on HLT control from the guest. Supported since Linux
|
||
|
v5.10.
|
||
|
|
||
|
``kvm-pv-sched-yield``
|
||
|
Enable paravirtualized sched yield feature. Supported since Linux v5.10.
|
||
|
|
||
|
``kvm-asyncpf-int``
|
||
|
Enable interrupt based asynchronous page fault mechanism. Supported since Linux
|
||
|
v5.10.
|
||
|
|
||
|
``kvm-msi-ext-dest-id``
|
||
|
Support 'Extended Destination ID' for external interrupts. The feature allows
|
||
|
to use up to 32768 CPUs without IRQ remapping (but other limits may apply making
|
||
|
the number of supported vCPUs for a given configuration lower). Supported since
|
||
|
Linux v5.10.
|
||
|
|
||
|
``kvmclock-stable-bit``
|
||
|
Tell the guest that guest visible TSC value can be fully trusted for kvmclock
|
||
|
computations and no warps are expected. Supported since Linux v2.6.35.
|
||
|
|
||
|
Supplementary features
|
||
|
----------------------
|
||
|
|
||
|
``kvm-pv-enforce-cpuid``
|
||
|
Limit the supported paravirtualized feature set to the exposed features only.
|
||
|
Note, by default, ``KVM`` allows the guest to use all currently supported
|
||
|
paravirtualized features even when they were not announced in guest visible
|
||
|
CPUIDs. Supported since Linux v5.10.
|
||
|
|
||
|
|
||
|
Useful links
|
||
|
------------
|
||
|
|
||
|
Please refer to Documentation/virt/kvm in Linux for additional details.
|