aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGleb Natapov <gleb@redhat.com>2013-04-28 05:50:07 -0400
committerGleb Natapov <gleb@redhat.com>2013-04-28 05:50:07 -0400
commit064d1afaa5a60fc391d0b4b77599fc8f63f99cd3 (patch)
tree2e640cdfa50b0048c52e021f07a8b24560251b26
parent730dca42c1d363c939da18c1499c7327c66e2b37 (diff)
parent8b78645c93b5d469e8006d68dbc92edc2640c654 (diff)
Merge git://github.com/agraf/linux-2.6.git kvm-ppc-next into queue
-rw-r--r--Documentation/virtual/kvm/api.txt114
-rw-r--r--Documentation/virtual/kvm/devices/README1
-rw-r--r--Documentation/virtual/kvm/devices/mpic.txt56
-rw-r--r--arch/ia64/include/asm/kvm_host.h1
-rw-r--r--arch/ia64/kvm/Kconfig1
-rw-r--r--arch/ia64/kvm/Makefile2
-rw-r--r--arch/powerpc/include/asm/hvcall.h3
-rw-r--r--arch/powerpc/include/asm/kvm_book3s.h5
-rw-r--r--arch/powerpc/include/asm/kvm_book3s_64.h13
-rw-r--r--arch/powerpc/include/asm/kvm_book3s_asm.h8
-rw-r--r--arch/powerpc/include/asm/kvm_host.h40
-rw-r--r--arch/powerpc/include/asm/kvm_ppc.h107
-rw-r--r--arch/powerpc/include/asm/reg.h1
-rw-r--r--arch/powerpc/include/uapi/asm/kvm.h73
-rw-r--r--arch/powerpc/kernel/asm-offsets.c3
-rw-r--r--arch/powerpc/kvm/44x.c12
-rw-r--r--arch/powerpc/kvm/Kconfig26
-rw-r--r--arch/powerpc/kvm/Makefile12
-rw-r--r--arch/powerpc/kvm/book3s.c27
-rw-r--r--arch/powerpc/kvm/book3s_64_mmu_hv.c120
-rw-r--r--arch/powerpc/kvm/book3s_emulate.c4
-rw-r--r--arch/powerpc/kvm/book3s_hv.c88
-rw-r--r--arch/powerpc/kvm/book3s_hv_rm_mmu.c11
-rw-r--r--arch/powerpc/kvm/book3s_hv_rm_xics.c406
-rw-r--r--arch/powerpc/kvm/book3s_hv_rmhandlers.S228
-rw-r--r--arch/powerpc/kvm/book3s_pr.c5
-rw-r--r--arch/powerpc/kvm/book3s_pr_papr.c21
-rw-r--r--arch/powerpc/kvm/book3s_rtas.c274
-rw-r--r--arch/powerpc/kvm/book3s_xics.c1130
-rw-r--r--arch/powerpc/kvm/book3s_xics.h129
-rw-r--r--arch/powerpc/kvm/booke.c123
-rw-r--r--arch/powerpc/kvm/e500.c14
-rw-r--r--arch/powerpc/kvm/e500.h22
-rw-r--r--arch/powerpc/kvm/e500_emulate.c19
-rw-r--r--arch/powerpc/kvm/e500_mmu.c192
-rw-r--r--arch/powerpc/kvm/e500mc.c16
-rw-r--r--arch/powerpc/kvm/irq.h17
-rw-r--r--arch/powerpc/kvm/mpic.c1843
-rw-r--r--arch/powerpc/kvm/powerpc.c72
-rw-r--r--arch/powerpc/sysdev/xics/icp-native.c8
-rw-r--r--arch/x86/include/asm/kvm_host.h2
-rw-r--r--arch/x86/kvm/Kconfig1
-rw-r--r--arch/x86/kvm/Makefile2
-rw-r--r--arch/x86/kvm/x86.c1
-rw-r--r--include/linux/kvm_host.h54
-rw-r--r--include/trace/events/kvm.h12
-rw-r--r--include/uapi/linux/kvm.h36
-rw-r--r--virt/kvm/Kconfig3
-rw-r--r--virt/kvm/assigned-dev.c30
-rw-r--r--virt/kvm/eventfd.c6
-rw-r--r--virt/kvm/irq_comm.c194
-rw-r--r--virt/kvm/irqchip.c237
-rw-r--r--virt/kvm/kvm_main.c173
53 files changed, 5549 insertions, 449 deletions
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index 976eb650e7ef..c09d1832e935 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -1792,6 +1792,23 @@ registers, find a list below:
1792 PPC | KVM_REG_PPC_TSR | 32 1792 PPC | KVM_REG_PPC_TSR | 32
1793 PPC | KVM_REG_PPC_OR_TSR | 32 1793 PPC | KVM_REG_PPC_OR_TSR | 32
1794 PPC | KVM_REG_PPC_CLEAR_TSR | 32 1794 PPC | KVM_REG_PPC_CLEAR_TSR | 32
1795 PPC | KVM_REG_PPC_MAS0 | 32
1796 PPC | KVM_REG_PPC_MAS1 | 32
1797 PPC | KVM_REG_PPC_MAS2 | 64
1798 PPC | KVM_REG_PPC_MAS7_3 | 64
1799 PPC | KVM_REG_PPC_MAS4 | 32
1800 PPC | KVM_REG_PPC_MAS6 | 32
1801 PPC | KVM_REG_PPC_MMUCFG | 32
1802 PPC | KVM_REG_PPC_TLB0CFG | 32
1803 PPC | KVM_REG_PPC_TLB1CFG | 32
1804 PPC | KVM_REG_PPC_TLB2CFG | 32
1805 PPC | KVM_REG_PPC_TLB3CFG | 32
1806 PPC | KVM_REG_PPC_TLB0PS | 32
1807 PPC | KVM_REG_PPC_TLB1PS | 32
1808 PPC | KVM_REG_PPC_TLB2PS | 32
1809 PPC | KVM_REG_PPC_TLB3PS | 32
1810 PPC | KVM_REG_PPC_EPTCFG | 32
1811 PPC | KVM_REG_PPC_ICP_STATE | 64
1795 1812
1796ARM registers are mapped using the lower 32 bits. The upper 16 of that 1813ARM registers are mapped using the lower 32 bits. The upper 16 of that
1797is the register group type, or coprocessor number: 1814is the register group type, or coprocessor number:
@@ -2173,6 +2190,76 @@ header; first `n_valid' valid entries with contents from the data
2173written, then `n_invalid' invalid entries, invalidating any previously 2190written, then `n_invalid' invalid entries, invalidating any previously
2174valid entries found. 2191valid entries found.
2175 2192
21934.79 KVM_CREATE_DEVICE
2194
2195Capability: KVM_CAP_DEVICE_CTRL
2196Type: vm ioctl
2197Parameters: struct kvm_create_device (in/out)
2198Returns: 0 on success, -1 on error
2199Errors:
2200 ENODEV: The device type is unknown or unsupported
2201 EEXIST: Device already created, and this type of device may not
2202 be instantiated multiple times
2203
2204 Other error conditions may be defined by individual device types or
2205 have their standard meanings.
2206
2207Creates an emulated device in the kernel. The file descriptor returned
2208in fd can be used with KVM_SET/GET/HAS_DEVICE_ATTR.
2209
2210If the KVM_CREATE_DEVICE_TEST flag is set, only test whether the
2211device type is supported (not necessarily whether it can be created
2212in the current vm).
2213
2214Individual devices should not define flags. Attributes should be used
2215for specifying any behavior that is not implied by the device type
2216number.
2217
2218struct kvm_create_device {
2219 __u32 type; /* in: KVM_DEV_TYPE_xxx */
2220 __u32 fd; /* out: device handle */
2221 __u32 flags; /* in: KVM_CREATE_DEVICE_xxx */
2222};
2223
22244.80 KVM_SET_DEVICE_ATTR/KVM_GET_DEVICE_ATTR
2225
2226Capability: KVM_CAP_DEVICE_CTRL
2227Type: device ioctl
2228Parameters: struct kvm_device_attr
2229Returns: 0 on success, -1 on error
2230Errors:
2231 ENXIO: The group or attribute is unknown/unsupported for this device
2232 EPERM: The attribute cannot (currently) be accessed this way
2233 (e.g. read-only attribute, or attribute that only makes
2234 sense when the device is in a different state)
2235
2236 Other error conditions may be defined by individual device types.
2237
2238Gets/sets a specified piece of device configuration and/or state. The
2239semantics are device-specific. See individual device documentation in
2240the "devices" directory. As with ONE_REG, the size of the data
2241transferred is defined by the particular attribute.
2242
2243struct kvm_device_attr {
2244 __u32 flags; /* no flags currently defined */
2245 __u32 group; /* device-defined */
2246 __u64 attr; /* group-defined */
2247 __u64 addr; /* userspace address of attr data */
2248};
2249
22504.81 KVM_HAS_DEVICE_ATTR
2251
2252Capability: KVM_CAP_DEVICE_CTRL
2253Type: device ioctl
2254Parameters: struct kvm_device_attr
2255Returns: 0 on success, -1 on error
2256Errors:
2257 ENXIO: The group or attribute is unknown/unsupported for this device
2258
2259Tests whether a device supports a particular attribute. A successful
2260return indicates the attribute is implemented. It does not necessarily
2261indicate that the attribute can be read or written in the device's
2262current state. "addr" is ignored.
2176 2263
21774.77 KVM_ARM_VCPU_INIT 22644.77 KVM_ARM_VCPU_INIT
2178 2265
@@ -2255,6 +2342,25 @@ and distributor interface, the ioctl must be called after calling