[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 01/12] i386: docs: Briefly describe KVM PV features
From: |
Paolo Bonzini |
Subject: |
[PULL 01/12] i386: docs: Briefly describe KVM PV features |
Date: |
Tue, 5 Oct 2021 18:43:57 +0200 |
From: Vitaly Kuznetsov <vkuznets@redhat.com>
KVM PV features don't seem to be documented anywhere, in particular, the
fact that some of the features are enabled by default and some are not can
only be figured out from the code.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Message-Id: <20211004140445.624875-1-vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
docs/system/i386/kvm-pv.rst | 100 ++++++++++++++++++++++++++++++++++++
docs/system/target-i386.rst | 1 +
2 files changed, 101 insertions(+)
create mode 100644 docs/system/i386/kvm-pv.rst
diff --git a/docs/system/i386/kvm-pv.rst b/docs/system/i386/kvm-pv.rst
new file mode 100644
index 0000000000..1e5a9923ef
--- /dev/null
+++ b/docs/system/i386/kvm-pv.rst
@@ -0,0 +1,100 @@
+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.
diff --git a/docs/system/target-i386.rst b/docs/system/target-i386.rst
index 6a86d63863..4daa53c35d 100644
--- a/docs/system/target-i386.rst
+++ b/docs/system/target-i386.rst
@@ -26,6 +26,7 @@ Architectural features
:maxdepth: 1
i386/cpu
+ i386/kvm-pv
i386/sgx
.. _pcsys_005freq:
--
2.31.1
- [PULL 00/12] Misc changes for 2021-10-05, Paolo Bonzini, 2021/10/05
- [PULL 02/12] sev/i386: Introduce sev_add_kernel_loader_hashes for measured linux boot, Paolo Bonzini, 2021/10/05
- [PULL 04/12] hw/misc: applesmc: use host osk as default on macs, Paolo Bonzini, 2021/10/05
- [PULL 07/12] migration: add missing qemu_mutex_lock_iothread in migration_completion, Paolo Bonzini, 2021/10/05
- [PULL 01/12] i386: docs: Briefly describe KVM PV features,
Paolo Bonzini <=
- [PULL 03/12] x86/sev: generate SEV kernel loader hashes in x86_load_linux, Paolo Bonzini, 2021/10/05
- [PULL 05/12] configure, meson: move CPU_CFLAGS out of QEMU_CFLAGS, Paolo Bonzini, 2021/10/05
- [PULL 08/12] meson: bump submodule to 0.59.2, Paolo Bonzini, 2021/10/05
- [PULL 11/12] target/xtensa: list cores in a text file, Paolo Bonzini, 2021/10/05
- [PULL 10/12] hexagon: use env keyword argument to pass PYTHONPATH, Paolo Bonzini, 2021/10/05
- [PULL 09/12] meson: switch minimum meson version to 0.58.2, minimum recommended to 0.59.2, Paolo Bonzini, 2021/10/05
- [PULL 12/12] meson: show library versions in the summary, Paolo Bonzini, 2021/10/05