diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-05 17:47:31 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-05 17:47:31 -0400 |
| commit | 01227a889ed56ae53aeebb9f93be9d54dd8b2de8 (patch) | |
| tree | d5eba9359a9827e84d4112b84d48c54df5c5acde /include/uapi/linux | |
| parent | 9e6879460c8edb0cd3c24c09b83d06541b5af0dc (diff) | |
| parent | db6ae6158186a17165ef990bda2895ae7594b039 (diff) | |
Merge tag 'kvm-3.10-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull kvm updates from Gleb Natapov:
"Highlights of the updates are:
general:
- new emulated device API
- legacy device assignment is now optional
- irqfd interface is more generic and can be shared between arches
x86:
- VMCS shadow support and other nested VMX improvements
- APIC virtualization and Posted Interrupt hardware support
- Optimize mmio spte zapping
ppc:
- BookE: in-kernel MPIC emulation with irqfd support
- Book3S: in-kernel XICS emulation (incomplete)
- Book3S: HV: migration fixes
- BookE: more debug support preparation
- BookE: e6500 support
ARM:
- reworking of Hyp idmaps
s390:
- ioeventfd for virtio-ccw
And many other bug fixes, cleanups and improvements"
* tag 'kvm-3.10-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (204 commits)
kvm: Add compat_ioctl for device control API
KVM: x86: Account for failing enable_irq_window for NMI window request
KVM: PPC: Book3S: Add API for in-kernel XICS emulation
kvm/ppc/mpic: fix missing unlock in set_base_addr()
kvm/ppc: Hold srcu lock when calling kvm_io_bus_read/write
kvm/ppc/mpic: remove users
kvm/ppc/mpic: fix mmio region lists when multiple guests used
kvm/ppc/mpic: remove default routes from documentation
kvm: KVM_CAP_IOMMU only available with device assignment
ARM: KVM: iterate over all CPUs for CPU compatibility check
KVM: ARM: Fix spelling in error message
ARM: KVM: define KVM_ARM_MAX_VCPUS unconditionally
KVM: ARM: Fix API documentation for ONE_REG encoding
ARM: KVM: promote vfp_host pointer to generic host cpu context
ARM: KVM: add architecture specific hook for capabilities
ARM: KVM: perform HYP initilization for hotplugged CPUs
ARM: KVM: switch to a dual-step HYP init code
ARM: KVM: rework HYP page table freeing
ARM: KVM: enforce maximum size for identity mapped code
ARM: KVM: move to a KVM provided HYP idmap
...
Diffstat (limited to 'include/uapi/linux')
| -rw-r--r-- | include/uapi/linux/kvm.h | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 3c56ba3d80c1..a5c86fc34a37 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h | |||
| @@ -449,12 +449,15 @@ enum { | |||
| 449 | kvm_ioeventfd_flag_nr_datamatch, | 449 | kvm_ioeventfd_flag_nr_datamatch, |
| 450 | kvm_ioeventfd_flag_nr_pio, | 450 | kvm_ioeventfd_flag_nr_pio, |
| 451 | kvm_ioeventfd_flag_nr_deassign, | 451 | kvm_ioeventfd_flag_nr_deassign, |
| 452 | kvm_ioeventfd_flag_nr_virtio_ccw_notify, | ||
| 452 | kvm_ioeventfd_flag_nr_max, | 453 | kvm_ioeventfd_flag_nr_max, |
| 453 | }; | 454 | }; |
| 454 | 455 | ||
| 455 | #define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch) | 456 | #define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch) |
| 456 | #define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio) | 457 | #define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio) |
| 457 | #define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign) | 458 | #define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign) |
| 459 | #define KVM_IOEVENTFD_FLAG_VIRTIO_CCW_NOTIFY \ | ||
| 460 | (1 << kvm_ioeventfd_flag_nr_virtio_ccw_notify) | ||
| 458 | 461 | ||
| 459 | #define KVM_IOEVENTFD_VALID_FLAG_MASK ((1 << kvm_ioeventfd_flag_nr_max) - 1) | 462 | #define KVM_IOEVENTFD_VALID_FLAG_MASK ((1 << kvm_ioeventfd_flag_nr_max) - 1) |
| 460 | 463 | ||
| @@ -558,9 +561,7 @@ struct kvm_ppc_smmu_info { | |||
| 558 | #define KVM_CAP_MP_STATE 14 | 561 | #define KVM_CAP_MP_STATE 14 |
| 559 | #define KVM_CAP_COALESCED_MMIO 15 | 562 | #define KVM_CAP_COALESCED_MMIO 15 |
| 560 | #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */ | 563 | #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */ |
| 561 | #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT | ||
| 562 | #define KVM_CAP_DEVICE_ASSIGNMENT 17 | 564 | #define KVM_CAP_DEVICE_ASSIGNMENT 17 |
| 563 | #endif | ||
| 564 | #define KVM_CAP_IOMMU 18 | 565 | #define KVM_CAP_IOMMU 18 |
| 565 | #ifdef __KVM_HAVE_MSI | 566 | #ifdef __KVM_HAVE_MSI |
| 566 | #define KVM_CAP_DEVICE_MSI 20 | 567 | #define KVM_CAP_DEVICE_MSI 20 |
| @@ -576,13 +577,9 @@ struct kvm_ppc_smmu_info { | |||
| 576 | #ifdef __KVM_HAVE_PIT | 577 | #ifdef __KVM_HAVE_PIT |
| 577 | #define KVM_CAP_REINJECT_CONTROL 24 | 578 | #define KVM_CAP_REINJECT_CONTROL 24 |
| 578 | #endif | 579 | #endif |
| 579 | #ifdef __KVM_HAVE_IOAPIC | ||
| 580 | #define KVM_CAP_IRQ_ROUTING 25 | 580 | #define KVM_CAP_IRQ_ROUTING 25 |
| 581 | #endif | ||
| 582 | #define KVM_CAP_IRQ_INJECT_STATUS 26 | 581 | #define KVM_CAP_IRQ_INJECT_STATUS 26 |
| 583 | #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT | ||
| 584 | #define KVM_CAP_DEVICE_DEASSIGNMENT 27 | 582 | #define KVM_CAP_DEVICE_DEASSIGNMENT 27 |
| 585 | #endif | ||
| 586 | #ifdef __KVM_HAVE_MSIX | 583 | #ifdef __KVM_HAVE_MSIX |
| 587 | #define KVM_CAP_DEVICE_MSIX 28 | 584 | #define KVM_CAP_DEVICE_MSIX 28 |
| 588 | #endif | 585 | #endif |
| @@ -665,6 +662,10 @@ struct kvm_ppc_smmu_info { | |||
| 665 | #define KVM_CAP_PPC_EPR 86 | 662 | #define KVM_CAP_PPC_EPR 86 |
| 666 | #define KVM_CAP_ARM_PSCI 87 | 663 | #define KVM_CAP_ARM_PSCI 87 |
| 667 | #define KVM_CAP_ARM_SET_DEVICE_ADDR 88 | 664 | #define KVM_CAP_ARM_SET_DEVICE_ADDR 88 |
| 665 | #define KVM_CAP_DEVICE_CTRL 89 | ||
| 666 | #define KVM_CAP_IRQ_MPIC 90 | ||
| 667 | #define KVM_CAP_PPC_RTAS 91 | ||
| 668 | #define KVM_CAP_IRQ_XICS 92 | ||
| 668 | 669 | ||
| 669 | #ifdef KVM_CAP_IRQ_ROUTING | 670 | #ifdef KVM_CAP_IRQ_ROUTING |
| 670 | 671 | ||
| @@ -818,6 +819,28 @@ struct kvm_arm_device_addr { | |||
| 818 | }; | 819 | }; |
| 819 | 820 | ||
| 820 | /* | 821 | /* |
| 822 | * Device control API, available with KVM_CAP_DEVICE_CTRL | ||
| 823 | */ | ||
| 824 | #define KVM_CREATE_DEVICE_TEST 1 | ||
| 825 | |||
| 826 | struct kvm_create_device { | ||
| 827 | __u32 type; /* in: KVM_DEV_TYPE_xxx */ | ||
| 828 | __u32 fd; /* out: device handle */ | ||
| 829 | __u32 flags; /* in: KVM_CREATE_DEVICE_xxx */ | ||
| 830 | }; | ||
| 831 | |||
| 832 | struct kvm_device_attr { | ||
| 833 | __u32 flags; /* no flags currently defined */ | ||
| 834 | __u32 group; /* device-defined */ | ||
| 835 | __u64 attr; /* group-defined */ | ||
| 836 | __u64 addr; /* userspace address of attr data */ | ||
| 837 | }; | ||
| 838 | |||
| 839 | #define KVM_DEV_TYPE_FSL_MPIC_20 1 | ||
| 840 | #define KVM_DEV_TYPE_FSL_MPIC_42 2 | ||
| 841 | #define KVM_DEV_TYPE_XICS 3 | ||
| 842 | |||
| 843 | /* | ||
| 821 | * ioctls for VM fds | 844 | * ioctls for VM fds |
| 822 | */ | 845 | */ |
| 823 | #define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region) | 846 | #define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region) |
| @@ -904,6 +927,16 @@ struct kvm_s390_ucas_mapping { | |||
| 904 | #define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd) | 927 | #define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd) |
| 905 | /* Available with KVM_CAP_ARM_SET_DEVICE_ADDR */ | 928 | /* Available with KVM_CAP_ARM_SET_DEVICE_ADDR */ |
| 906 | #define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, struct kvm_arm_device_addr) | 929 | #define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, struct kvm_arm_device_addr) |
| 930 | /* Available with KVM_CAP_PPC_RTAS */ | ||
| 931 | #define KVM_PPC_RTAS_DEFINE_TOKEN _IOW(KVMIO, 0xac, struct kvm_rtas_token_args) | ||
| 932 | |||
| 933 | /* ioctl for vm fd */ | ||
| 934 | #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device) | ||
| 935 | |||
| 936 | /* ioctls for fds returned by KVM_CREATE_DEVICE */ | ||
| 937 | #define KVM_SET_DEVICE_ATTR _IOW(KVMIO, 0xe1, struct kvm_device_attr) | ||
| 938 | #define KVM_GET_DEVICE_ATTR _IOW(KVMIO, 0xe2, struct kvm_device_attr) | ||
| 939 | #define KVM_HAS_DEVICE_ATTR _IOW(KVMIO, 0xe3, struct kvm_device_attr) | ||
| 907 | 940 | ||
| 908 | /* | 941 | /* |
| 909 | * ioctls for vcpu fds | 942 | * ioctls for vcpu fds |
