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 ...
Showing the changes to include/uapi (1 of 110 files). Show all
Unified · Split
| @@ -449,12 +449,15 @@ enum { · 448 unmodified lines | ||
| 449 | 449 | kvm_ioeventfd_flag_nr_datamatch, |
| 450 | 450 | kvm_ioeventfd_flag_nr_pio, |
| 451 | 451 | kvm_ioeventfd_flag_nr_deassign, |
| 452 | + kvm_ioeventfd_flag_nr_virtio_ccw_notify, | |
| 452 | 453 | kvm_ioeventfd_flag_nr_max, |
| 453 | 454 | }; |
| 454 | 455 | |
| 455 | 456 | #define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch) |
| 456 | 457 | #define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio) |
| 457 | 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 | 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 { · 97 unmodified lines | ||
| 558 | 561 | #define KVM_CAP_MP_STATE 14 |
| 559 | 562 | #define KVM_CAP_COALESCED_MMIO 15 |
| 560 | 563 | #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */ |
| 561 | −#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT | |
| 562 | 564 | #define KVM_CAP_DEVICE_ASSIGNMENT 17 |
| 563 | −#endif | |
| 564 | 565 | #define KVM_CAP_IOMMU 18 |
| 565 | 566 | #ifdef __KVM_HAVE_MSI |
| 566 | 567 | #define KVM_CAP_DEVICE_MSI 20 |
| @@ -576,13 +577,9 @@ struct kvm_ppc_smmu_info { · 9 unmodified lines | ||
| 576 | 577 | #ifdef __KVM_HAVE_PIT |
| 577 | 578 | #define KVM_CAP_REINJECT_CONTROL 24 |
| 578 | 579 | #endif |
| 579 | −#ifdef __KVM_HAVE_IOAPIC | |
| 580 | 580 | #define KVM_CAP_IRQ_ROUTING 25 |
| 581 | −#endif | |
| 582 | 581 | #define KVM_CAP_IRQ_INJECT_STATUS 26 |
| 583 | −#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT | |
| 584 | 582 | #define KVM_CAP_DEVICE_DEASSIGNMENT 27 |
| 585 | −#endif | |
| 586 | 583 | #ifdef __KVM_HAVE_MSIX |
| 587 | 584 | #define KVM_CAP_DEVICE_MSIX 28 |
| 588 | 585 | #endif |
| @@ -665,6 +662,10 @@ struct kvm_ppc_smmu_info { · 76 unmodified lines | ||
| 665 | 662 | #define KVM_CAP_PPC_EPR 86 |
| 666 | 663 | #define KVM_CAP_ARM_PSCI 87 |
| 667 | 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 | 670 | #ifdef KVM_CAP_IRQ_ROUTING |
| 670 | 671 | |
| @@ -817,6 +818,28 @@ struct kvm_arm_device_addr { · 146 unmodified lines | ||
| 817 | 818 | __u64 addr; |
| 818 | 819 | }; |
| 819 | 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 | + | |
| 820 | 843 | /* |
| 821 | 844 | * ioctls for VM fds |
| 822 | 845 | */ |
| @@ -904,6 +927,16 @@ struct kvm_s390_ucas_mapping { · 81 unmodified lines | ||
| 904 | 927 | #define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd) |
| 905 | 928 | /* Available with KVM_CAP_ARM_SET_DEVICE_ADDR */ |
| 906 | 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 | 942 | * ioctls for vcpu fds |