History

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 ...

Linus Torvalds committed 13 years ago

Commit 01227a82 parents 9e68794 db6ae61110 files · +8522 −2270Browse files

Showing the changes to include/uapi (1 of 110 files). Show all

Unified · Split

include/uapi/linux/kvm.h+39−6
@@ -449,12 +449,15 @@ enum { · 448 unmodified lines
449449 kvm_ioeventfd_flag_nr_datamatch,
450450 kvm_ioeventfd_flag_nr_pio,
451451 kvm_ioeventfd_flag_nr_deassign,
452+ kvm_ioeventfd_flag_nr_virtio_ccw_notify,
452453 kvm_ioeventfd_flag_nr_max,
453454 };
454455
455456 #define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch)
456457 #define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio)
457458 #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)
458461
459462 #define KVM_IOEVENTFD_VALID_FLAG_MASK ((1 << kvm_ioeventfd_flag_nr_max) - 1)
460463
@@ -558,9 +561,7 @@ struct kvm_ppc_smmu_info { · 97 unmodified lines
558561 #define KVM_CAP_MP_STATE 14
559562 #define KVM_CAP_COALESCED_MMIO 15
560563 #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */
561−#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
562564 #define KVM_CAP_DEVICE_ASSIGNMENT 17
563−#endif
564565 #define KVM_CAP_IOMMU 18
565566 #ifdef __KVM_HAVE_MSI
566567 #define KVM_CAP_DEVICE_MSI 20
@@ -576,13 +577,9 @@ struct kvm_ppc_smmu_info { · 9 unmodified lines
576577 #ifdef __KVM_HAVE_PIT
577578 #define KVM_CAP_REINJECT_CONTROL 24
578579 #endif
579−#ifdef __KVM_HAVE_IOAPIC
580580 #define KVM_CAP_IRQ_ROUTING 25
581−#endif
582581 #define KVM_CAP_IRQ_INJECT_STATUS 26
583−#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
584582 #define KVM_CAP_DEVICE_DEASSIGNMENT 27
585−#endif
586583 #ifdef __KVM_HAVE_MSIX
587584 #define KVM_CAP_DEVICE_MSIX 28
588585 #endif
@@ -665,6 +662,10 @@ struct kvm_ppc_smmu_info { · 76 unmodified lines
665662 #define KVM_CAP_PPC_EPR 86
666663 #define KVM_CAP_ARM_PSCI 87
667664 #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
668669
669670 #ifdef KVM_CAP_IRQ_ROUTING
670671
@@ -817,6 +818,28 @@ struct kvm_arm_device_addr { · 146 unmodified lines
817818 __u64 addr;
818819 };
819820
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+
820843 /*
821844 * ioctls for VM fds
822845 */
@@ -904,6 +927,16 @@ struct kvm_s390_ucas_mapping { · 81 unmodified lines
904927 #define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd)
905928 /* Available with KVM_CAP_ARM_SET_DEVICE_ADDR */
906929 #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)
907940
908941 /*
909942 * ioctls for vcpu fds