diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-04 15:16:46 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-04 15:16:46 -0400 |
commit | 8533ce72718871fb528d853391746f36243273af (patch) | |
tree | a3ac06520e45cb6a472ed83979b0d48b6c2cec15 /Documentation | |
parent | c9b88e9581828bb8bba06c5e7ee8ed1761172b6e (diff) | |
parent | 42cbc04fd3b5e3f9b011bf9fa3ce0b3d1e10b58b (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.txt | 345 |
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 */ | ||
301 | struct 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 | ||
301 | 4.12 KVM_SET_REGS | 310 | 4.12 KVM_SET_REGS |
302 | 311 | ||
@@ -378,7 +387,7 @@ struct kvm_translation { | |||
378 | 4.16 KVM_INTERRUPT | 387 | 4.16 KVM_INTERRUPT |
379 | 388 | ||
380 | Capability: basic | 389 | Capability: basic |
381 | Architectures: x86, ppc | 390 | Architectures: x86, ppc, mips |
382 | Type: vcpu ioctl | 391 | Type: vcpu ioctl |
383 | Parameters: struct kvm_interrupt (in) | 392 | Parameters: struct kvm_interrupt (in) |
384 | Returns: 0 on success, -1 on error | 393 | Returns: 0 on success, -1 on error |
@@ -423,6 +432,11 @@ c) KVM_INTERRUPT_SET_LEVEL | |||
423 | Note that any value for 'irq' other than the ones stated above is invalid | 432 | Note that any value for 'irq' other than the ones stated above is invalid |
424 | and incurs unexpected behavior. | 433 | and incurs unexpected behavior. |
425 | 434 | ||
435 | MIPS: | ||
436 | |||
437 | Queues an external interrupt to be injected into the virtual CPU. A negative | ||
438 | interrupt number dequeues the interrupt. | ||
439 | |||
426 | 440 | ||
427 | 4.17 KVM_DEBUG_GUEST | 441 | 4.17 KVM_DEBUG_GUEST |
428 | 442 | ||
@@ -512,7 +526,7 @@ struct kvm_cpuid { | |||
512 | 4.21 KVM_SET_SIGNAL_MASK | 526 | 4.21 KVM_SET_SIGNAL_MASK |
513 | 527 | ||
514 | Capability: basic | 528 | Capability: basic |
515 | Architectures: x86 | 529 | Architectures: all |
516 | Type: vcpu ioctl | 530 | Type: vcpu ioctl |
517 | Parameters: struct kvm_signal_mask (in) | 531 | Parameters: struct kvm_signal_mask (in) |
518 | Returns: 0 on success, -1 on error | 532 | Returns: 0 on success, -1 on error |
@@ -974,7 +988,7 @@ for vm-wide capabilities. | |||
974 | 4.38 KVM_GET_MP_STATE | 988 | 4.38 KVM_GET_MP_STATE |
975 | 989 | ||
976 | Capability: KVM_CAP_MP_STATE | 990 | Capability: KVM_CAP_MP_STATE |
977 | Architectures: x86, ia64 | 991 | Architectures: x86, ia64, s390 |
978 | Type: vcpu ioctl | 992 | Type: vcpu ioctl |
979 | Parameters: struct kvm_mp_state (out) | 993 | Parameters: struct kvm_mp_state (out) |
980 | Returns: 0 on success; -1 on error | 994 | Returns: 0 on success; -1 on error |
@@ -988,24 +1002,32 @@ uniprocessor guests). | |||
988 | 1002 | ||
989 | Possible values are: | 1003 | Possible 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 | ||
1001 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel | 1022 | On x86 and ia64, this ioctl is only useful after KVM_CREATE_IRQCHIP. Without an |
1002 | irqchip, the multiprocessing state must be maintained by userspace. | 1023 | in-kernel irqchip, the multiprocessing state must be maintained by userspace on |
1024 | these architectures. | ||
1003 | 1025 | ||
1004 | 1026 | ||
1005 | 4.39 KVM_SET_MP_STATE | 1027 | 4.39 KVM_SET_MP_STATE |
1006 | 1028 | ||
1007 | Capability: KVM_CAP_MP_STATE | 1029 | Capability: KVM_CAP_MP_STATE |
1008 | Architectures: x86, ia64 | 1030 | Architectures: x86, ia64, s390 |
1009 | Type: vcpu ioctl | 1031 | Type: vcpu ioctl |
1010 | Parameters: struct kvm_mp_state (in) | 1032 | Parameters: struct kvm_mp_state (in) |
1011 | Returns: 0 on success; -1 on error | 1033 | Returns: 0 on success; -1 on error |
@@ -1013,8 +1035,9 @@ Returns: 0 on success; -1 on error | |||
1013 | Sets the vcpu's current "multiprocessing state"; see KVM_GET_MP_STATE for | 1035 | Sets the vcpu's current "multiprocessing state"; see KVM_GET_MP_STATE for |
1014 | arguments. | 1036 | arguments. |
1015 | 1037 | ||
1016 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel | 1038 | On x86 and ia64, this ioctl is only useful after KVM_CREATE_IRQCHIP. Without an |
1017 | irqchip, the multiprocessing state must be maintained by userspace. | 1039 | in-kernel irqchip, the multiprocessing state must be maintained by userspace on |
1040 | these architectures. | ||
1018 | 1041 | ||
1019 | 1042 | ||
1020 | 4.40 KVM_SET_IDENTITY_MAP_ADDR | 1043 | 4.40 KVM_SET_IDENTITY_MAP_ADDR |
@@ -1774,122 +1797,151 @@ and architecture specific registers. Each have their own range of operation | |||
1774 | and their own constants and width. To keep track of the implemented | 1797 | and their own constants and width. To keep track of the implemented |
1775 | registers, find a list below: | 1798 | registers, 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 | ||
1894 | ARM registers are mapped using the lower 32 bits. The upper 16 of that | 1946 | ARM registers are mapped using the lower 32 bits. The upper 16 of that |
1895 | is the register group type, or coprocessor number: | 1947 | is the register group type, or coprocessor number: |
@@ -1928,6 +1980,22 @@ arm64 CCSIDR registers are demultiplexed by CSSELR value: | |||
1928 | arm64 system registers have the following id bit patterns: | 1980 | arm64 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 | |||
1984 | MIPS registers are mapped using the lower 32 bits. The upper 16 of that is | ||
1985 | the register group type: | ||
1986 | |||
1987 | MIPS core registers (see above) have the following id bit patterns: | ||
1988 | 0x7030 0000 0000 <reg:16> | ||
1989 | |||
1990 | MIPS CP0 registers (see KVM_REG_MIPS_CP0_* above) have the following id bit | ||
1991 | patterns 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 | |||
1995 | MIPS KVM control registers (see above) have the following id bit patterns: | ||
1996 | 0x7030 0000 0002 <reg:16> | ||
1997 | |||
1998 | |||
1931 | 4.69 KVM_GET_ONE_REG | 1999 | 4.69 KVM_GET_ONE_REG |
1932 | 2000 | ||
1933 | Capability: KVM_CAP_ONE_REG | 2001 | Capability: KVM_CAP_ONE_REG |
@@ -2415,7 +2483,7 @@ in VCPU matching underlying host. | |||
2415 | 4.84 KVM_GET_REG_LIST | 2483 | 4.84 KVM_GET_REG_LIST |
2416 | 2484 | ||
2417 | Capability: basic | 2485 | Capability: basic |
2418 | Architectures: arm, arm64 | 2486 | Architectures: arm, arm64, mips |
2419 | Type: vcpu ioctl | 2487 | Type: vcpu ioctl |
2420 | Parameters: struct kvm_reg_list (in/out) | 2488 | Parameters: struct kvm_reg_list (in/out) |
2421 | Returns: 0 on success; -1 on error | 2489 | Returns: 0 on success; -1 on error |
@@ -2866,15 +2934,18 @@ The fields in each entry are defined as follows: | |||
2866 | 6. Capabilities that can be enabled | 2934 | 6. Capabilities that can be enabled |
2867 | ----------------------------------- | 2935 | ----------------------------------- |
2868 | 2936 | ||
2869 | There are certain capabilities that change the behavior of the virtual CPU when | 2937 | There are certain capabilities that change the behavior of the virtual CPU or |
2870 | enabled. To enable them, please see section 4.37. Below you can find a list of | 2938 | the virtual machine when enabled. To enable them, please see section 4.37. |
2871 | capabilities and what their effect on the vCPU is when enabling them. | 2939 | Below you can find a list of capabilities and what their effect on the vCPU or |
2940 | the virtual machine is when enabling them. | ||
2872 | 2941 | ||
2873 | The following information is provided along with the description: | 2942 | The 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: | |||
2884 | 6.1 KVM_CAP_PPC_OSI | 2955 | 6.1 KVM_CAP_PPC_OSI |
2885 | 2956 | ||
2886 | Architectures: ppc | 2957 | Architectures: ppc |
2958 | Target: vcpu | ||
2887 | Parameters: none | 2959 | Parameters: none |
2888 | Returns: 0 on success; -1 on error | 2960 | Returns: 0 on success; -1 on error |
2889 | 2961 | ||
@@ -2898,6 +2970,7 @@ When this capability is enabled, KVM_EXIT_OSI can occur. | |||
2898 | 6.2 KVM_CAP_PPC_PAPR | 2970 | 6.2 KVM_CAP_PPC_PAPR |
2899 | 2971 | ||
2900 | Architectures: ppc | 2972 | Architectures: ppc |
2973 | Target: vcpu | ||
2901 | Parameters: none | 2974 | Parameters: none |
2902 | Returns: 0 on success; -1 on error | 2975 | Returns: 0 on success; -1 on error |
2903 | 2976 | ||
@@ -2917,6 +2990,7 @@ When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur. | |||
2917 | 6.3 KVM_CAP_SW_TLB | 2990 | 6.3 KVM_CAP_SW_TLB |
2918 | 2991 | ||
2919 | Architectures: ppc | 2992 | Architectures: ppc |
2993 | Target: vcpu | ||
2920 | Parameters: args[0] is the address of a struct kvm_config_tlb | 2994 | Parameters: args[0] is the address of a struct kvm_config_tlb |
2921 | Returns: 0 on success; -1 on error | 2995 | Returns: 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: | |||
2959 | 6.4 KVM_CAP_S390_CSS_SUPPORT | 3033 | 6.4 KVM_CAP_S390_CSS_SUPPORT |
2960 | 3034 | ||
2961 | Architectures: s390 | 3035 | Architectures: s390 |
3036 | Target: vcpu | ||
2962 | Parameters: none | 3037 | Parameters: none |
2963 | Returns: 0 on success; -1 on error | 3038 | Returns: 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. | |||
2970 | When this capability is enabled, KVM_EXIT_S390_TSCH will occur on TEST | 3045 | When this capability is enabled, KVM_EXIT_S390_TSCH will occur on TEST |
2971 | SUBCHANNEL intercepts. | 3046 | SUBCHANNEL intercepts. |
2972 | 3047 | ||
3048 | Note that even though this capability is enabled per-vcpu, the complete | ||
3049 | virtual machine is affected. | ||
3050 | |||
2973 | 6.5 KVM_CAP_PPC_EPR | 3051 | 6.5 KVM_CAP_PPC_EPR |
2974 | 3052 | ||
2975 | Architectures: ppc | 3053 | Architectures: ppc |
3054 | Target: vcpu | ||
2976 | Parameters: args[0] defines whether the proxy facility is active | 3055 | Parameters: args[0] defines whether the proxy facility is active |
2977 | Returns: 0 on success; -1 on error | 3056 | Returns: 0 on success; -1 on error |
2978 | 3057 | ||
@@ -2998,7 +3077,17 @@ This capability connects the vcpu to an in-kernel MPIC device. | |||
2998 | 6.7 KVM_CAP_IRQ_XICS | 3077 | 6.7 KVM_CAP_IRQ_XICS |
2999 | 3078 | ||
3000 | Architectures: ppc | 3079 | Architectures: ppc |
3080 | Target: vcpu | ||
3001 | Parameters: args[0] is the XICS device fd | 3081 | Parameters: 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 | ||
3004 | This capability connects the vcpu to an in-kernel XICS device. | 3084 | This capability connects the vcpu to an in-kernel XICS device. |
3085 | |||
3086 | 6.8 KVM_CAP_S390_IRQCHIP | ||
3087 | |||
3088 | Architectures: s390 | ||
3089 | Target: vm | ||
3090 | Parameters: none | ||
3091 | |||
3092 | This capability enables the in-kernel irqchip for s390. Please refer to | ||
3093 | "4.24 KVM_CREATE_IRQCHIP" for details. | ||