summaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-08-04 15:16:46 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-08-04 15:16:46 -0400
commit8533ce72718871fb528d853391746f36243273af (patch)
treea3ac06520e45cb6a472ed83979b0d48b6c2cec15 /Documentation
parentc9b88e9581828bb8bba06c5e7ee8ed1761172b6e (diff)
parent42cbc04fd3b5e3f9b011bf9fa3ce0b3d1e10b58b (diff)
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull KVM changes from Paolo Bonzini: "These are the x86, MIPS and s390 changes; PPC and ARM will come in a few days. MIPS and s390 have little going on this release; just bugfixes, some small, some larger. The highlights for x86 are nested VMX improvements (Jan Kiszka), optimizations for old processor (up to Nehalem, by me and Bandan Das), and a lot of x86 emulator bugfixes (Nadav Amit). Stephen Rothwell reported a trivial conflict with the tracing branch" * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (104 commits) x86/kvm: Resolve shadow warnings in macro expansion KVM: s390: rework broken SIGP STOP interrupt handling KVM: x86: always exit on EOIs for interrupts listed in the IOAPIC redir table KVM: vmx: remove duplicate vmx_mpx_supported() prototype KVM: s390: Fix memory leak on busy SIGP stop x86/kvm: Resolve shadow warning from min macro kvm: Resolve missing-field-initializers warnings Replace NR_VMX_MSR with its definition KVM: x86: Assertions to check no overrun in MSR lists KVM: x86: set rflags.rf during fault injection KVM: x86: Setting rflags.rf during rep-string emulation KVM: x86: DR6/7.RTM cannot be written KVM: nVMX: clean up nested_release_vmcs12 and code around it KVM: nVMX: fix lifetime issues for vmcs02 KVM: x86: Defining missing x86 vectors KVM: x86: emulator injects #DB when RFLAGS.RF is set KVM: x86: Cleanup of rflags.rf cleaning KVM: x86: Clear rflags.rf on emulated instructions KVM: x86: popf emulation should not change RF KVM: x86: Clearing rflags.rf upon skipped emulated instruction ...
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/virtual/kvm/api.txt345
1 files changed, 217 insertions, 128 deletions
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index 0fe36497642c..68cda1fc3d52 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -297,6 +297,15 @@ struct kvm_regs {
297 __u64 rip, rflags; 297 __u64 rip, rflags;
298}; 298};
299 299
300/* mips */
301struct kvm_regs {
302 /* out (KVM_GET_REGS) / in (KVM_SET_REGS) */
303 __u64 gpr[32];
304 __u64 hi;
305 __u64 lo;
306 __u64 pc;
307};
308
300 309
3014.12 KVM_SET_REGS 3104.12 KVM_SET_REGS
302 311
@@ -378,7 +387,7 @@ struct kvm_translation {
3784.16 KVM_INTERRUPT 3874.16 KVM_INTERRUPT
379 388
380Capability: basic 389Capability: basic
381Architectures: x86, ppc 390Architectures: x86, ppc, mips
382Type: vcpu ioctl 391Type: vcpu ioctl
383Parameters: struct kvm_interrupt (in) 392Parameters: struct kvm_interrupt (in)
384Returns: 0 on success, -1 on error 393Returns: 0 on success, -1 on error
@@ -423,6 +432,11 @@ c) KVM_INTERRUPT_SET_LEVEL
423Note that any value for 'irq' other than the ones stated above is invalid 432Note that any value for 'irq' other than the ones stated above is invalid
424and incurs unexpected behavior. 433and incurs unexpected behavior.
425 434
435MIPS:
436
437Queues an external interrupt to be injected into the virtual CPU. A negative
438interrupt number dequeues the interrupt.
439
426 440
4274.17 KVM_DEBUG_GUEST 4414.17 KVM_DEBUG_GUEST
428 442
@@ -512,7 +526,7 @@ struct kvm_cpuid {
5124.21 KVM_SET_SIGNAL_MASK 5264.21 KVM_SET_SIGNAL_MASK
513 527
514Capability: basic 528Capability: basic
515Architectures: x86 529Architectures: all
516Type: vcpu ioctl 530Type: vcpu ioctl
517Parameters: struct kvm_signal_mask (in) 531Parameters: struct kvm_signal_mask (in)
518Returns: 0 on success, -1 on error 532Returns: 0 on success, -1 on error
@@ -974,7 +988,7 @@ for vm-wide capabilities.
9744.38 KVM_GET_MP_STATE 9884.38 KVM_GET_MP_STATE
975 989
976Capability: KVM_CAP_MP_STATE 990Capability: KVM_CAP_MP_STATE
977Architectures: x86, ia64 991Architectures: x86, ia64, s390
978Type: vcpu ioctl 992Type: vcpu ioctl
979Parameters: struct kvm_mp_state (out) 993Parameters: struct kvm_mp_state (out)
980Returns: 0 on success; -1 on error 994Returns: 0 on success; -1 on error
@@ -988,24 +1002,32 @@ uniprocessor guests).
988 1002
989Possible values are: 1003Possible values are:
990 1004
991 - KVM_MP_STATE_RUNNABLE: the vcpu is currently running 1005 - KVM_MP_STATE_RUNNABLE: the vcpu is currently running [x86, ia64]
992 - KVM_MP_STATE_UNINITIALIZED: the vcpu is an application processor (AP) 1006 - KVM_MP_STATE_UNINITIALIZED: the vcpu is an application processor (AP)
993 which has not yet received an INIT signal 1007 which has not yet received an INIT signal [x86,
1008 ia64]
994 - KVM_MP_STATE_INIT_RECEIVED: the vcpu has received an INIT signal, and is 1009 - KVM_MP_STATE_INIT_RECEIVED: the vcpu has received an INIT signal, and is
995 now ready for a SIPI 1010 now ready for a SIPI [x86, ia64]
996 - KVM_MP_STATE_HALTED: the vcpu has executed a HLT instruction and 1011 - KVM_MP_STATE_HALTED: the vcpu has executed a HLT instruction and
997 is waiting for an interrupt 1012 is waiting for an interrupt [x86, ia64]
998 - KVM_MP_STATE_SIPI_RECEIVED: the vcpu has just received a SIPI (vector 1013 - KVM_MP_STATE_SIPI_RECEIVED: the vcpu has just received a SIPI (vector
999 accessible via KVM_GET_VCPU_EVENTS) 1014 accessible via KVM_GET_VCPU_EVENTS) [x86, ia64]
1015 - KVM_MP_STATE_STOPPED: the vcpu is stopped [s390]
1016 - KVM_MP_STATE_CHECK_STOP: the vcpu is in a special error state [s390]
1017 - KVM_MP_STATE_OPERATING: the vcpu is operating (running or halted)
1018 [s390]
1019 - KVM_MP_STATE_LOAD: the vcpu is in a special load/startup state
1020 [s390]
1000 1021
1001This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel 1022On x86 and ia64, this ioctl is only useful after KVM_CREATE_IRQCHIP. Without an
1002irqchip, the multiprocessing state must be maintained by userspace. 1023in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1024these architectures.
1003 1025
1004 1026
10054.39 KVM_SET_MP_STATE 10274.39 KVM_SET_MP_STATE
1006 1028
1007Capability: KVM_CAP_MP_STATE 1029Capability: KVM_CAP_MP_STATE
1008Architectures: x86, ia64 1030Architectures: x86, ia64, s390
1009Type: vcpu ioctl 1031Type: vcpu ioctl
1010Parameters: struct kvm_mp_state (in) 1032Parameters: struct kvm_mp_state (in)
1011Returns: 0 on success; -1 on error 1033Returns: 0 on success; -1 on error
@@ -1013,8 +1035,9 @@ Returns: 0 on success; -1 on error
1013Sets the vcpu's current "multiprocessing state"; see KVM_GET_MP_STATE for 1035Sets the vcpu's current "multiprocessing state"; see KVM_GET_MP_STATE for
1014arguments. 1036arguments.
1015 1037
1016This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel 1038On x86 and ia64, this ioctl is only useful after KVM_CREATE_IRQCHIP. Without an
1017irqchip, the multiprocessing state must be maintained by userspace. 1039in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1040these architectures.
1018 1041
1019 1042
10204.40 KVM_SET_IDENTITY_MAP_ADDR 10434.40 KVM_SET_IDENTITY_MAP_ADDR
@@ -1774,122 +1797,151 @@ and architecture specific registers. Each have their own range of operation
1774and their own constants and width. To keep track of the implemented 1797and their own constants and width. To keep track of the implemented
1775registers, find a list below: 1798registers, find a list below:
1776 1799
1777 Arch | Register | Width (bits) 1800 Arch | Register | Width (bits)
1778 | | 1801 | |
1779 PPC | KVM_REG_PPC_HIOR | 64 1802 PPC | KVM_REG_PPC_HIOR | 64
1780 PPC | KVM_REG_PPC_IAC1 | 64 1803 PPC | KVM_REG_PPC_IAC1 | 64
1781 PPC | KVM_REG_PPC_IAC2 | 64 1804 PPC | KVM_REG_PPC_IAC2 | 64
1782 PPC | KVM_REG_PPC_IAC3 | 64 1805 PPC | KVM_REG_PPC_IAC3 | 64
1783 PPC | KVM_REG_PPC_IAC4 | 64 1806 PPC | KVM_REG_PPC_IAC4 | 64
1784 PPC | KVM_REG_PPC_DAC1 | 64 1807 PPC | KVM_REG_PPC_DAC1 | 64
1785 PPC | KVM_REG_PPC_DAC2 | 64 1808 PPC | KVM_REG_PPC_DAC2 | 64
1786 PPC | KVM_REG_PPC_DABR | 64 1809 PPC | KVM_REG_PPC_DABR | 64
1787 PPC | KVM_REG_PPC_DSCR | 64 1810 PPC | KVM_REG_PPC_DSCR | 64
1788 PPC | KVM_REG_PPC_PURR | 64 1811 PPC | KVM_REG_PPC_PURR | 64
1789 PPC | KVM_REG_PPC_SPURR | 64 1812 PPC | KVM_REG_PPC_SPURR | 64
1790 PPC | KVM_REG_PPC_DAR | 64 1813 PPC | KVM_REG_PPC_DAR | 64
1791 PPC | KVM_REG_PPC_DSISR | 32 1814 PPC | KVM_REG_PPC_DSISR | 32
1792 PPC | KVM_REG_PPC_AMR | 64 1815 PPC | KVM_REG_PPC_AMR | 64
1793 PPC | KVM_REG_PPC_UAMOR | 64 1816 PPC | KVM_REG_PPC_UAMOR | 64
1794 PPC | KVM_REG_PPC_MMCR0 | 64 1817 PPC | KVM_REG_PPC_MMCR0 | 64
1795 PPC | KVM_REG_PPC_MMCR1 | 64 1818 PPC | KVM_REG_PPC_MMCR1 | 64
1796 PPC | KVM_REG_PPC_MMCRA | 64 1819 PPC | KVM_REG_PPC_MMCRA | 64
1797 PPC | KVM_REG_PPC_MMCR2 | 64 1820 PPC | KVM_REG_PPC_MMCR2 | 64
1798 PPC | KVM_REG_PPC_MMCRS | 64 1821 PPC | KVM_REG_PPC_MMCRS | 64
1799 PPC | KVM_REG_PPC_SIAR | 64 1822 PPC | KVM_REG_PPC_SIAR | 64
1800 PPC | KVM_REG_PPC_SDAR | 64 1823 PPC | KVM_REG_PPC_SDAR | 64
1801 PPC | KVM_REG_PPC_SIER | 64 1824 PPC | KVM_REG_PPC_SIER | 64
1802 PPC | KVM_REG_PPC_PMC1 | 32 1825 PPC | KVM_REG_PPC_PMC1 | 32
1803 PPC | KVM_REG_PPC_PMC2 | 32 1826 PPC | KVM_REG_PPC_PMC2 | 32
1804 PPC | KVM_REG_PPC_PMC3 | 32 1827 PPC | KVM_REG_PPC_PMC3 | 32
1805 PPC | KVM_REG_PPC_PMC4 | 32 1828 PPC | KVM_REG_PPC_PMC4 | 32
1806 PPC | KVM_REG_PPC_PMC5 | 32 1829 PPC | KVM_REG_PPC_PMC5 | 32
1807 PPC | KVM_REG_PPC_PMC6 | 32 1830 PPC | KVM_REG_PPC_PMC6 | 32
1808 PPC | KVM_REG_PPC_PMC7 | 32 1831 PPC | KVM_REG_PPC_PMC7 | 32
1809 PPC | KVM_REG_PPC_PMC8 | 32 1832 PPC | KVM_REG_PPC_PMC8 | 32
1810 PPC | KVM_REG_PPC_FPR0 | 64 1833 PPC | KVM_REG_PPC_FPR0 | 64
1834 ...
1835 PPC | KVM_REG_PPC_FPR31 | 64
1836 PPC | KVM_REG_PPC_VR0 | 128
1811 ... 1837 ...
1812 PPC | KVM_REG_PPC_FPR31 | 64 1838 PPC | KVM_REG_PPC_VR31 | 128
1813 PPC | KVM_REG_PPC_VR0 | 128 1839 PPC | KVM_REG_PPC_VSR0 | 128
1814 ... 1840 ...
1815 PPC | KVM_REG_PPC_VR31 | 128 1841 PPC | KVM_REG_PPC_VSR31 | 128
1816 PPC | KVM_REG_PPC_VSR0 | 128 1842 PPC | KVM_REG_PPC_FPSCR | 64
1843 PPC | KVM_REG_PPC_VSCR | 32
1844 PPC | KVM_REG_PPC_VPA_ADDR | 64
1845 PPC | KVM_REG_PPC_VPA_SLB | 128
1846 PPC | KVM_REG_PPC_VPA_DTL | 128
1847 PPC | KVM_REG_PPC_EPCR | 32
1848 PPC | KVM_REG_PPC_EPR | 32
1849 PPC | KVM_REG_PPC_TCR | 32
1850 PPC | KVM_REG_PPC_TSR | 32
1851 PPC | KVM_REG_PPC_OR_TSR | 32
1852 PPC | KVM_REG_PPC_CLEAR_TSR | 32
1853 PPC | KVM_REG_PPC_MAS0 | 32
1854 PPC | KVM_REG_PPC_MAS1 | 32
1855 PPC | KVM_REG_PPC_MAS2 | 64
1856 PPC | KVM_REG_PPC_MAS7_3 | 64
1857 PPC | KVM_REG_PPC_MAS4 | 32
1858 PPC | KVM_REG_PPC_MAS6 | 32
1859 PPC | KVM_REG_PPC_MMUCFG | 32
1860 PPC | KVM_REG_PPC_TLB0CFG | 32
1861 PPC | KVM_REG_PPC_TLB1CFG | 32
1862 PPC | KVM_REG_PPC_TLB2CFG | 32
1863 PPC | KVM_REG_PPC_TLB3CFG | 32
1864 PPC | KVM_REG_PPC_TLB0PS | 32
1865 PPC | KVM_REG_PPC_TLB1PS | 32
1866 PPC | KVM_REG_PPC_TLB2PS | 32
1867 PPC | KVM_REG_PPC_TLB3PS | 32
1868 PPC | KVM_REG_PPC_EPTCFG | 32
1869 PPC | KVM_REG_PPC_ICP_STATE | 64
1870 PPC | KVM_REG_PPC_TB_OFFSET | 64
1871 PPC | KVM_REG_PPC_SPMC1 | 32
1872 PPC | KVM_REG_PPC_SPMC2 | 32
1873 PPC | KVM_REG_PPC_IAMR | 64
1874 PPC | KVM_REG_PPC_TFHAR | 64
1875 PPC | KVM_REG_PPC_TFIAR | 64
1876 PPC | KVM_REG_PPC_TEXASR | 64
1877 PPC | KVM_REG_PPC_FSCR | 64
1878 PPC | KVM_REG_PPC_PSPB | 32
1879 PPC | KVM_REG_PPC_EBBHR | 64
1880 PPC | KVM_REG_PPC_EBBRR | 64
1881 PPC | KVM_REG_PPC_BESCR | 64
1882 PPC | KVM_REG_PPC_TAR | 64
1883 PPC | KVM_REG_PPC_DPDES | 64
1884 PPC | KVM_REG_PPC_DAWR | 64
1885 PPC | KVM_REG_PPC_DAWRX | 64
1886 PPC | KVM_REG_PPC_CIABR | 64
1887 PPC | KVM_REG_PPC_IC | 64
1888 PPC | KVM_REG_PPC_VTB | 64
1889 PPC | KVM_REG_PPC_CSIGR | 64
1890 PPC | KVM_REG_PPC_TACR | 64
1891 PPC | KVM_REG_PPC_TCSCR | 64
1892 PPC | KVM_REG_PPC_PID | 64
1893 PPC | KVM_REG_PPC_ACOP | 64
1894 PPC | KVM_REG_PPC_VRSAVE | 32
1895 PPC | KVM_REG_PPC_LPCR | 64
1896 PPC | KVM_REG_PPC_PPR | 64
1897 PPC | KVM_REG_PPC_ARCH_COMPAT | 32
1898 PPC | KVM_REG_PPC_DABRX | 32
1899 PPC | KVM_REG_PPC_WORT | 64
1900 PPC | KVM_REG_PPC_TM_GPR0 | 64
1817 ... 1901 ...
1818 PPC | KVM_REG_PPC_VSR31 | 128 1902 PPC | KVM_REG_PPC_TM_GPR31 | 64
1819 PPC | KVM_REG_PPC_FPSCR | 64 1903 PPC | KVM_REG_PPC_TM_VSR0 | 128
1820 PPC | KVM_REG_PPC_VSCR | 32
1821 PPC | KVM_REG_PPC_VPA_ADDR | 64
1822 PPC | KVM_REG_PPC_VPA_SLB | 128
1823 PPC | KVM_REG_PPC_VPA_DTL | 128
1824 PPC | KVM_REG_PPC_EPCR | 32
1825 PPC | KVM_REG_PPC_EPR | 32
1826 PPC | KVM_REG_PPC_TCR | 32
1827 PPC | KVM_REG_PPC_TSR | 32
1828 PPC | KVM_REG_PPC_OR_TSR | 32
1829 PPC | KVM_REG_PPC_CLEAR_TSR | 32
1830 PPC | KVM_REG_PPC_MAS0 | 32
1831 PPC | KVM_REG_PPC_MAS1 | 32
1832 PPC | KVM_REG_PPC_MAS2 | 64
1833 PPC | KVM_REG_PPC_MAS7_3 | 64
1834 PPC | KVM_REG_PPC_MAS4 | 32
1835 PPC | KVM_REG_PPC_MAS6 | 32
1836 PPC | KVM_REG_PPC_MMUCFG | 32
1837 PPC | KVM_REG_PPC_TLB0CFG | 32
1838 PPC | KVM_REG_PPC_TLB1CFG | 32
1839 PPC | KVM_REG_PPC_TLB2CFG | 32
1840 PPC | KVM_REG_PPC_TLB3CFG | 32
1841 PPC | KVM_REG_PPC_TLB0PS | 32
1842 PPC | KVM_REG_PPC_TLB1PS | 32
1843 PPC | KVM_REG_PPC_TLB2PS | 32
1844 PPC | KVM_REG_PPC_TLB3PS | 32
1845 PPC | KVM_REG_PPC_EPTCFG | 32
1846 PPC | KVM_REG_PPC_ICP_STATE | 64
1847 PPC | KVM_REG_PPC_TB_OFFSET | 64
1848 PPC | KVM_REG_PPC_SPMC1 | 32
1849 PPC | KVM_REG_PPC_SPMC2 | 32
1850 PPC | KVM_REG_PPC_IAMR | 64
1851 PPC | KVM_REG_PPC_TFHAR | 64
1852 PPC | KVM_REG_PPC_TFIAR | 64
1853 PPC | KVM_REG_PPC_TEXASR | 64
1854 PPC | KVM_REG_PPC_FSCR | 64
1855 PPC | KVM_REG_PPC_PSPB | 32
1856 PPC | KVM_REG_PPC_EBBHR | 64
1857 PPC | KVM_REG_PPC_EBBRR | 64
1858 PPC | KVM_REG_PPC_BESCR | 64
1859 PPC | KVM_REG_PPC_TAR | 64
1860 PPC | KVM_REG_PPC_DPDES | 64
1861 PPC | KVM_REG_PPC_DAWR | 64
1862 PPC | KVM_REG_PPC_DAWRX | 64
1863 PPC | KVM_REG_PPC_CIABR | 64
1864 PPC | KVM_REG_PPC_IC | 64
1865 PPC | KVM_REG_PPC_VTB | 64
1866 PPC | KVM_REG_PPC_CSIGR | 64
1867 PPC | KVM_REG_PPC_TACR | 64
1868 PPC | KVM_REG_PPC_TCSCR | 64
1869 PPC | KVM_REG_PPC_PID | 64
1870 PPC | KVM_REG_PPC_ACOP | 64
1871 PPC | KVM_REG_PPC_VRSAVE | 32
1872 PPC | KVM_REG_PPC_LPCR | 64
1873 PPC | KVM_REG_PPC_PPR | 64
1874 PPC | KVM_REG_PPC_ARCH_COMPAT 32
1875 PPC | KVM_REG_PPC_DABRX | 32
1876 PPC | KVM_REG_PPC_WORT | 64
1877 PPC | KVM_REG_PPC_TM_GPR0 | 64
1878 ... 1904 ...
1879 PPC | KVM_REG_PPC_TM_GPR31 | 64 1905 PPC | KVM_REG_PPC_TM_VSR63 | 128
1880 PPC | KVM_REG_PPC_TM_VSR0 | 128 1906 PPC | KVM_REG_PPC_TM_CR | 64
1907 PPC | KVM_REG_PPC_TM_LR | 64
1908 PPC | KVM_REG_PPC_TM_CTR | 64
1909 PPC | KVM_REG_PPC_TM_FPSCR | 64
1910 PPC | KVM_REG_PPC_TM_AMR | 64
1911 PPC | KVM_REG_PPC_TM_PPR | 64
1912 PPC | KVM_REG_PPC_TM_VRSAVE | 64
1913 PPC | KVM_REG_PPC_TM_VSCR | 32
1914 PPC | KVM_REG_PPC_TM_DSCR | 64
1915 PPC | KVM_REG_PPC_TM_TAR | 64
1916 | |
1917 MIPS | KVM_REG_MIPS_R0 | 64
1881 ... 1918 ...
1882 PPC | KVM_REG_PPC_TM_VSR63 | 128 1919 MIPS | KVM_REG_MIPS_R31 | 64
1883 PPC | KVM_REG_PPC_TM_CR | 64 1920 MIPS | KVM_REG_MIPS_HI | 64
1884 PPC | KVM_REG_PPC_TM_LR | 64 1921 MIPS | KVM_REG_MIPS_LO | 64
1885 PPC | KVM_REG_PPC_TM_CTR | 64 1922 MIPS | KVM_REG_MIPS_PC | 64
1886 PPC | KVM_REG_PPC_TM_FPSCR | 64 1923 MIPS | KVM_REG_MIPS_CP0_INDEX | 32
1887 PPC | KVM_REG_PPC_TM_AMR | 64 1924 MIPS | KVM_REG_MIPS_CP0_CONTEXT | 64
1888 PPC | KVM_REG_PPC_TM_PPR | 64 1925 MIPS | KVM_REG_MIPS_CP0_USERLOCAL | 64
1889 PPC | KVM_REG_PPC_TM_VRSAVE | 64 1926 MIPS | KVM_REG_MIPS_CP0_PAGEMASK | 32
1890 PPC | KVM_REG_PPC_TM_VSCR | 32 1927 MIPS | KVM_REG_MIPS_CP0_WIRED | 32
1891 PPC | KVM_REG_PPC_TM_DSCR | 64 1928 MIPS | KVM_REG_MIPS_CP0_HWRENA | 32
1892 PPC | KVM_REG_PPC_TM_TAR | 64 1929 MIPS | KVM_REG_MIPS_CP0_BADVADDR | 64
1930 MIPS | KVM_REG_MIPS_CP0_COUNT | 32
1931 MIPS | KVM_REG_MIPS_CP0_ENTRYHI | 64
1932 MIPS | KVM_REG_MIPS_CP0_COMPARE | 32
1933 MIPS | KVM_REG_MIPS_CP0_STATUS | 32
1934 MIPS | KVM_REG_MIPS_CP0_CAUSE | 32
1935 MIPS | KVM_REG_MIPS_CP0_EPC | 64
1936 MIPS | KVM_REG_MIPS_CP0_CONFIG | 32
1937 MIPS | KVM_REG_MIPS_CP0_CONFIG1 | 32
1938 MIPS | KVM_REG_MIPS_CP0_CONFIG2 | 32
1939 MIPS | KVM_REG_MIPS_CP0_CONFIG3 | 32
1940 MIPS | KVM_REG_MIPS_CP0_CONFIG7 | 32
1941 MIPS | KVM_REG_MIPS_CP0_ERROREPC | 64
1942 MIPS | KVM_REG_MIPS_COUNT_CTL | 64
1943 MIPS | KVM_REG_MIPS_COUNT_RESUME | 64
1944 MIPS | KVM_REG_MIPS_COUNT_HZ | 64
1893 1945
1894ARM registers are mapped using the lower 32 bits. The upper 16 of that 1946ARM registers are mapped using the lower 32 bits. The upper 16 of that
1895is the register group type, or coprocessor number: 1947is the register group type, or coprocessor number:
@@ -1928,6 +1980,22 @@ arm64 CCSIDR registers are demultiplexed by CSSELR value:
1928arm64 system registers have the following id bit patterns: 1980arm64 system registers have the following id bit patterns:
1929 0x6030 0000 0013 <op0:2> <op1:3> <crn:4> <crm:4> <op2:3> 1981 0x6030 0000 0013 <op0:2> <op1:3> <crn:4> <crm:4> <op2:3>
1930 1982
1983
1984MIPS registers are mapped using the lower 32 bits. The upper 16 of that is
1985the register group type:
1986
1987MIPS core registers (see above) have the following id bit patterns:
1988 0x7030 0000 0000 <reg:16>
1989
1990MIPS CP0 registers (see KVM_REG_MIPS_CP0_* above) have the following id bit
1991patterns depending on whether they're 32-bit or 64-bit registers:
1992 0x7020 0000 0001 00 <reg:5> <sel:3> (32-bit)
1993 0x7030 0000 0001 00 <reg:5> <sel:3> (64-bit)
1994
1995MIPS KVM control registers (see above) have the following id bit patterns:
1996 0x7030 0000 0002 <reg:16>
1997
1998
19314.69 KVM_GET_ONE_REG 19994.69 KVM_GET_ONE_REG
1932 2000
1933Capability: KVM_CAP_ONE_REG 2001Capability: KVM_CAP_ONE_REG
@@ -2415,7 +2483,7 @@ in VCPU matching underlying host.
24154.84 KVM_GET_REG_LIST 24834.84 KVM_GET_REG_LIST
2416 2484
2417Capability: basic 2485Capability: basic
2418Architectures: arm, arm64 2486Architectures: arm, arm64, mips
2419Type: vcpu ioctl 2487Type: vcpu ioctl
2420Parameters: struct kvm_reg_list (in/out) 2488Parameters: struct kvm_reg_list (in/out)
2421Returns: 0 on success; -1 on error 2489Returns: 0 on success; -1 on error
@@ -2866,15 +2934,18 @@ The fields in each entry are defined as follows:
28666. Capabilities that can be enabled 29346. Capabilities that can be enabled
2867----------------------------------- 2935-----------------------------------
2868 2936
2869There are certain capabilities that change the behavior of the virtual CPU when 2937There are certain capabilities that change the behavior of the virtual CPU or
2870enabled. To enable them, please see section 4.37. Below you can find a list of 2938the virtual machine when enabled. To enable them, please see section 4.37.
2871capabilities and what their effect on the vCPU is when enabling them. 2939Below you can find a list of capabilities and what their effect on the vCPU or
2940the virtual machine is when enabling them.
2872 2941
2873The following information is provided along with the description: 2942The following information is provided along with the description:
2874 2943
2875 Architectures: which instruction set architectures provide this ioctl. 2944 Architectures: which instruction set architectures provide this ioctl.
2876 x86 includes both i386 and x86_64. 2945 x86 includes both i386 and x86_64.
2877 2946
2947 Target: whether this is a per-vcpu or per-vm capability.
2948
2878 Parameters: what parameters are accepted by the capability. 2949 Parameters: what parameters are accepted by the capability.
2879 2950
2880 Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) 2951 Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
@@ -2884,6 +2955,7 @@ The following information is provided along with the description:
28846.1 KVM_CAP_PPC_OSI 29556.1 KVM_CAP_PPC_OSI
2885 2956
2886Architectures: ppc 2957Architectures: ppc
2958Target: vcpu
2887Parameters: none 2959Parameters: none
2888Returns: 0 on success; -1 on error 2960Returns: 0 on success; -1 on error
2889 2961
@@ -2898,6 +2970,7 @@ When this capability is enabled, KVM_EXIT_OSI can occur.
28986.2 KVM_CAP_PPC_PAPR 29706.2 KVM_CAP_PPC_PAPR
2899 2971
2900Architectures: ppc 2972Architectures: ppc
2973Target: vcpu
2901Parameters: none 2974Parameters: none
2902Returns: 0 on success; -1 on error 2975Returns: 0 on success; -1 on error
2903 2976
@@ -2917,6 +2990,7 @@ When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur.
29176.3 KVM_CAP_SW_TLB 29906.3 KVM_CAP_SW_TLB
2918 2991
2919Architectures: ppc 2992Architectures: ppc
2993Target: vcpu
2920Parameters: args[0] is the address of a struct kvm_config_tlb 2994Parameters: args[0] is the address of a struct kvm_config_tlb
2921Returns: 0 on success; -1 on error 2995Returns: 0 on success; -1 on error
2922 2996
@@ -2959,6 +3033,7 @@ For mmu types KVM_MMU_FSL_BOOKE_NOHV and KVM_MMU_FSL_BOOKE_HV:
29596.4 KVM_CAP_S390_CSS_SUPPORT 30336.4 KVM_CAP_S390_CSS_SUPPORT
2960 3034
2961Architectures: s390 3035Architectures: s390
3036Target: vcpu
2962Parameters: none 3037Parameters: none
2963Returns: 0 on success; -1 on error 3038Returns: 0 on success; -1 on error
2964 3039
@@ -2970,9 +3045,13 @@ handled in-kernel, while the other I/O instructions are passed to userspace.
2970When this capability is enabled, KVM_EXIT_S390_TSCH will occur on TEST 3045When this capability is enabled, KVM_EXIT_S390_TSCH will occur on TEST
2971SUBCHANNEL intercepts. 3046SUBCHANNEL intercepts.
2972 3047
3048Note that even though this capability is enabled per-vcpu, the complete
3049virtual machine is affected.
3050
29736.5 KVM_CAP_PPC_EPR 30516.5 KVM_CAP_PPC_EPR
2974 3052
2975Architectures: ppc 3053Architectures: ppc
3054Target: vcpu
2976Parameters: args[0] defines whether the proxy facility is active 3055Parameters: args[0] defines whether the proxy facility is active
2977Returns: 0 on success; -1 on error 3056Returns: 0 on success; -1 on error
2978 3057
@@ -2998,7 +3077,17 @@ This capability connects the vcpu to an in-kernel MPIC device.
29986.7 KVM_CAP_IRQ_XICS 30776.7 KVM_CAP_IRQ_XICS
2999 3078
3000Architectures: ppc 3079Architectures: ppc
3080Target: vcpu
3001Parameters: args[0] is the XICS device fd 3081Parameters: args[0] is the XICS device fd
3002 args[1] is the XICS CPU number (server ID) for this vcpu 3082 args[1] is the XICS CPU number (server ID) for this vcpu
3003 3083
3004This capability connects the vcpu to an in-kernel XICS device. 3084This capability connects the vcpu to an in-kernel XICS device.
3085
30866.8 KVM_CAP_S390_IRQCHIP
3087
3088Architectures: s390
3089Target: vm
3090Parameters: none
3091
3092This capability enables the in-kernel irqchip for s390. Please refer to
3093"4.24 KVM_CREATE_IRQCHIP" for details.