diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-04 11:47:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-04 11:47:12 -0400 |
commit | b05d59dfceaea72565b1648af929b037b0f96d7f (patch) | |
tree | bbe92714be468ed8783bce6ac2c305c0aedf8eb5 /Documentation/virtual | |
parent | daf342af2f7856fd2f5c66b9fb39a8f24986ca53 (diff) | |
parent | 820b3fcdeb80d30410f4427d2cbf9161c35fdeef (diff) |
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm into next
Pull KVM updates from Paolo Bonzini:
"At over 200 commits, covering almost all supported architectures, this
was a pretty active cycle for KVM. Changes include:
- a lot of s390 changes: optimizations, support for migration, GDB
support and more
- ARM changes are pretty small: support for the PSCI 0.2 hypercall
interface on both the guest and the host (the latter acked by
Catalin)
- initial POWER8 and little-endian host support
- support for running u-boot on embedded POWER targets
- pretty large changes to MIPS too, completing the userspace
interface and improving the handling of virtualized timer hardware
- for x86, a larger set of changes is scheduled for 3.17. Still, we
have a few emulator bugfixes and support for running nested
fully-virtualized Xen guests (para-virtualized Xen guests have
always worked). And some optimizations too.
The only missing architecture here is ia64. It's not a coincidence
that support for KVM on ia64 is scheduled for removal in 3.17"
* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (203 commits)
KVM: add missing cleanup_srcu_struct
KVM: PPC: Book3S PR: Rework SLB switching code
KVM: PPC: Book3S PR: Use SLB entry 0
KVM: PPC: Book3S HV: Fix machine check delivery to guest
KVM: PPC: Book3S HV: Work around POWER8 performance monitor bugs
KVM: PPC: Book3S HV: Make sure we don't miss dirty pages
KVM: PPC: Book3S HV: Fix dirty map for hugepages
KVM: PPC: Book3S HV: Put huge-page HPTEs in rmap chain for base address
KVM: PPC: Book3S HV: Fix check for running inside guest in global_invalidates()
KVM: PPC: Book3S: Move KVM_REG_PPC_WORT to an unused register number
KVM: PPC: Book3S: Add ONE_REG register names that were missed
KVM: PPC: Add CAP to indicate hcall fixes
KVM: PPC: MPIC: Reset IRQ source private members
KVM: PPC: Graciously fail broken LE hypercalls
PPC: ePAPR: Fix hypercall on LE guest
KVM: PPC: BOOK3S: Remove open coded make_dsisr in alignment handler
KVM: PPC: BOOK3S: Always use the saved DAR value
PPC: KVM: Make NX bit available with magic page
KVM: PPC: Disable NX for old magic page using guests
KVM: PPC: BOOK3S: HV: Add mixed page-size support for guest
...
Diffstat (limited to 'Documentation/virtual')
-rw-r--r-- | Documentation/virtual/kvm/api.txt | 33 | ||||
-rw-r--r-- | Documentation/virtual/kvm/devices/vm.txt | 26 | ||||
-rw-r--r-- | Documentation/virtual/kvm/ppc-pv.txt | 14 | ||||
-rw-r--r-- | Documentation/virtual/kvm/s390-diag.txt | 2 |
4 files changed, 71 insertions, 4 deletions
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index b4f53653c106..75f20c6038a9 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -1794,6 +1794,11 @@ registers, find a list below: | |||
1794 | PPC | KVM_REG_PPC_MMCR0 | 64 | 1794 | PPC | KVM_REG_PPC_MMCR0 | 64 |
1795 | PPC | KVM_REG_PPC_MMCR1 | 64 | 1795 | PPC | KVM_REG_PPC_MMCR1 | 64 |
1796 | PPC | KVM_REG_PPC_MMCRA | 64 | 1796 | PPC | KVM_REG_PPC_MMCRA | 64 |
1797 | PPC | KVM_REG_PPC_MMCR2 | 64 | ||
1798 | PPC | KVM_REG_PPC_MMCRS | 64 | ||
1799 | PPC | KVM_REG_PPC_SIAR | 64 | ||
1800 | PPC | KVM_REG_PPC_SDAR | 64 | ||
1801 | PPC | KVM_REG_PPC_SIER | 64 | ||
1797 | PPC | KVM_REG_PPC_PMC1 | 32 | 1802 | PPC | KVM_REG_PPC_PMC1 | 32 |
1798 | PPC | KVM_REG_PPC_PMC2 | 32 | 1803 | PPC | KVM_REG_PPC_PMC2 | 32 |
1799 | PPC | KVM_REG_PPC_PMC3 | 32 | 1804 | PPC | KVM_REG_PPC_PMC3 | 32 |
@@ -1868,6 +1873,7 @@ registers, find a list below: | |||
1868 | PPC | KVM_REG_PPC_PPR | 64 | 1873 | PPC | KVM_REG_PPC_PPR | 64 |
1869 | PPC | KVM_REG_PPC_ARCH_COMPAT 32 | 1874 | PPC | KVM_REG_PPC_ARCH_COMPAT 32 |
1870 | PPC | KVM_REG_PPC_DABRX | 32 | 1875 | PPC | KVM_REG_PPC_DABRX | 32 |
1876 | PPC | KVM_REG_PPC_WORT | 64 | ||
1871 | PPC | KVM_REG_PPC_TM_GPR0 | 64 | 1877 | PPC | KVM_REG_PPC_TM_GPR0 | 64 |
1872 | ... | 1878 | ... |
1873 | PPC | KVM_REG_PPC_TM_GPR31 | 64 | 1879 | PPC | KVM_REG_PPC_TM_GPR31 | 64 |
@@ -2211,6 +2217,8 @@ KVM_S390_SIGP_STOP (vcpu) - sigp restart | |||
2211 | KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm | 2217 | KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm |
2212 | KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm | 2218 | KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm |
2213 | KVM_S390_RESTART (vcpu) - restart | 2219 | KVM_S390_RESTART (vcpu) - restart |
2220 | KVM_S390_INT_CLOCK_COMP (vcpu) - clock comparator interrupt | ||
2221 | KVM_S390_INT_CPU_TIMER (vcpu) - CPU timer interrupt | ||
2214 | KVM_S390_INT_VIRTIO (vm) - virtio external interrupt; external interrupt | 2222 | KVM_S390_INT_VIRTIO (vm) - virtio external interrupt; external interrupt |
2215 | parameters in parm and parm64 | 2223 | parameters in parm and parm64 |
2216 | KVM_S390_INT_SERVICE (vm) - sclp external interrupt; sclp parameter in parm | 2224 | KVM_S390_INT_SERVICE (vm) - sclp external interrupt; sclp parameter in parm |
@@ -2314,8 +2322,8 @@ struct kvm_create_device { | |||
2314 | 2322 | ||
2315 | 4.80 KVM_SET_DEVICE_ATTR/KVM_GET_DEVICE_ATTR | 2323 | 4.80 KVM_SET_DEVICE_ATTR/KVM_GET_DEVICE_ATTR |
2316 | 2324 | ||
2317 | Capability: KVM_CAP_DEVICE_CTRL | 2325 | Capability: KVM_CAP_DEVICE_CTRL, KVM_CAP_VM_ATTRIBUTES for vm device |
2318 | Type: device ioctl | 2326 | Type: device ioctl, vm ioctl |
2319 | Parameters: struct kvm_device_attr | 2327 | Parameters: struct kvm_device_attr |
2320 | Returns: 0 on success, -1 on error | 2328 | Returns: 0 on success, -1 on error |
2321 | Errors: | 2329 | Errors: |
@@ -2340,8 +2348,8 @@ struct kvm_device_attr { | |||
2340 | 2348 | ||
2341 | 4.81 KVM_HAS_DEVICE_ATTR | 2349 | 4.81 KVM_HAS_DEVICE_ATTR |
2342 | 2350 | ||
2343 | Capability: KVM_CAP_DEVICE_CTRL | 2351 | Capability: KVM_CAP_DEVICE_CTRL, KVM_CAP_VM_ATTRIBUTES for vm device |
2344 | Type: device ioctl | 2352 | Type: device ioctl, vm ioctl |
2345 | Parameters: struct kvm_device_attr | 2353 | Parameters: struct kvm_device_attr |
2346 | Returns: 0 on success, -1 on error | 2354 | Returns: 0 on success, -1 on error |
2347 | Errors: | 2355 | Errors: |
@@ -2376,6 +2384,8 @@ Possible features: | |||
2376 | Depends on KVM_CAP_ARM_PSCI. | 2384 | Depends on KVM_CAP_ARM_PSCI. |
2377 | - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode. | 2385 | - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode. |
2378 | Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only). | 2386 | Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only). |
2387 | - KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 for the CPU. | ||
2388 | Depends on KVM_CAP_ARM_PSCI_0_2. | ||
2379 | 2389 | ||
2380 | 2390 | ||
2381 | 4.83 KVM_ARM_PREFERRED_TARGET | 2391 | 4.83 KVM_ARM_PREFERRED_TARGET |
@@ -2738,6 +2748,21 @@ It gets triggered whenever both KVM_CAP_PPC_EPR are enabled and an | |||
2738 | external interrupt has just been delivered into the guest. User space | 2748 | external interrupt has just been delivered into the guest. User space |
2739 | should put the acknowledged interrupt vector into the 'epr' field. | 2749 | should put the acknowledged interrupt vector into the 'epr' field. |
2740 | 2750 | ||
2751 | /* KVM_EXIT_SYSTEM_EVENT */ | ||
2752 | struct { | ||
2753 | #define KVM_SYSTEM_EVENT_SHUTDOWN 1 | ||
2754 | #define KVM_SYSTEM_EVENT_RESET 2 | ||
2755 | __u32 type; | ||
2756 | __u64 flags; | ||
2757 | } system_event; | ||
2758 | |||
2759 | If exit_reason is KVM_EXIT_SYSTEM_EVENT then the vcpu has triggered | ||
2760 | a system-level event using some architecture specific mechanism (hypercall | ||
2761 | or some special instruction). In case of ARM/ARM64, this is triggered using | ||
2762 | HVC instruction based PSCI call from the vcpu. The 'type' field describes | ||
2763 | the system-level event type. The 'flags' field describes architecture | ||
2764 | specific flags for the system-level event. | ||
2765 | |||
2741 | /* Fix the size of the union. */ | 2766 | /* Fix the size of the union. */ |
2742 | char padding[256]; | 2767 | char padding[256]; |
2743 | }; | 2768 | }; |
diff --git a/Documentation/virtual/kvm/devices/vm.txt b/Documentation/virtual/kvm/devices/vm.txt new file mode 100644 index 000000000000..0d16f96c0eac --- /dev/null +++ b/Documentation/virtual/kvm/devices/vm.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | Generic vm interface | ||
2 | ==================================== | ||
3 | |||
4 | The virtual machine "device" also accepts the ioctls KVM_SET_DEVICE_ATTR, | ||
5 | KVM_GET_DEVICE_ATTR, and KVM_HAS_DEVICE_ATTR. The interface uses the same | ||
6 | struct kvm_device_attr as other devices, but targets VM-wide settings | ||
7 | and controls. | ||
8 | |||
9 | The groups and attributes per virtual machine, if any, are architecture | ||
10 | specific. | ||
11 | |||
12 | 1. GROUP: KVM_S390_VM_MEM_CTRL | ||
13 | Architectures: s390 | ||
14 | |||
15 | 1.1. ATTRIBUTE: KVM_S390_VM_MEM_CTRL | ||
16 | Parameters: none | ||
17 | Returns: -EBUSY if already a vcpus is defined, otherwise 0 | ||
18 | |||
19 | Enables CMMA for the virtual machine | ||
20 | |||
21 | 1.2. ATTRIBUTE: KVM_S390_VM_CLR_CMMA | ||
22 | Parameteres: none | ||
23 | Returns: 0 | ||
24 | |||
25 | Clear the CMMA status for all guest pages, so any pages the guest marked | ||
26 | as unused are again used any may not be reclaimed by the host. | ||
diff --git a/Documentation/virtual/kvm/ppc-pv.txt b/Documentation/virtual/kvm/ppc-pv.txt index 4643cde517c4..319560646f32 100644 --- a/Documentation/virtual/kvm/ppc-pv.txt +++ b/Documentation/virtual/kvm/ppc-pv.txt | |||
@@ -94,10 +94,24 @@ a bitmap of available features inside the magic page. | |||
94 | The following enhancements to the magic page are currently available: | 94 | The following enhancements to the magic page are currently available: |
95 | 95 | ||
96 | KVM_MAGIC_FEAT_SR Maps SR registers r/w in the magic page | 96 | KVM_MAGIC_FEAT_SR Maps SR registers r/w in the magic page |
97 | KVM_MAGIC_FEAT_MAS0_TO_SPRG7 Maps MASn, ESR, PIR and high SPRGs | ||
97 | 98 | ||
98 | For enhanced features in the magic page, please check for the existence of the | 99 | For enhanced features in the magic page, please check for the existence of the |
99 | feature before using them! | 100 | feature before using them! |
100 | 101 | ||
102 | Magic page flags | ||
103 | ================ | ||
104 | |||
105 | In addition to features that indicate whether a host is capable of a particular | ||
106 | feature we also have a channel for a guest to tell the guest whether it's capable | ||
107 | of something. This is what we call "flags". | ||
108 | |||
109 | Flags are passed to the host in the low 12 bits of the Effective Address. | ||
110 | |||
111 | The following flags are currently available for a guest to expose: | ||
112 | |||
113 | MAGIC_PAGE_FLAG_NOT_MAPPED_NX Guest handles NX bits correclty wrt magic page | ||
114 | |||
101 | MSR bits | 115 | MSR bits |
102 | ======== | 116 | ======== |
103 | 117 | ||
diff --git a/Documentation/virtual/kvm/s390-diag.txt b/Documentation/virtual/kvm/s390-diag.txt index f1de4fbade15..48c4921794ed 100644 --- a/Documentation/virtual/kvm/s390-diag.txt +++ b/Documentation/virtual/kvm/s390-diag.txt | |||
@@ -78,3 +78,5 @@ DIAGNOSE function code 'X'501 - KVM breakpoint | |||
78 | 78 | ||
79 | If the function code specifies 0x501, breakpoint functions may be performed. | 79 | If the function code specifies 0x501, breakpoint functions may be performed. |
80 | This function code is handled by userspace. | 80 | This function code is handled by userspace. |
81 | |||
82 | This diagnose function code has no subfunctions and uses no parameters. | ||