docs/system/i386/kvm-pv.rst
In some cases when implementing hardware interfaces in software is slow, KVM
implements its own paravirtualized interfaces.
Paravirtualized KVM features are represented as CPU flags. The following
features are enabled by default for any CPU model when KVM acceleration is
enabled:
kvmclockkvm-nopiodelaykvm-asyncpfkvm-steal-timekvm-pv-eoikvmclock-stable-bitkvm-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.
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.
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.
Please refer to Documentation/virt/kvm in Linux for additional details.