aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux/kvm.h
diff options
context:
space:
mode:
authorJens Freimann <jfrei@linux.vnet.ibm.com>2014-11-24 11:13:46 -0500
committerChristian Borntraeger <borntraeger@de.ibm.com>2015-03-31 15:07:31 -0400
commit816c7667ea97c61884e014cfeedaede5b67b0e58 (patch)
tree0be000b61900a44f9dabe81405b145cbb87b761d /include/uapi/linux/kvm.h
parent79e87a103de1eda0cb4d726cd8581798e2d38f3e (diff)
KVM: s390: migrate vcpu interrupt state
This patch adds support to migrate vcpu interrupts. Two new vcpu ioctls are added which get/set the complete status of pending interrupts in one go. The ioctls are marked as available with the new capability KVM_CAP_S390_IRQ_STATE. We can not use a ONEREG, as the number of pending local interrupts is not constant and depends on the number of CPUs. To retrieve the interrupt state we add an ioctl KVM_S390_GET_IRQ_STATE. Its input parameter is a pointer to a struct kvm_s390_irq_state which has a buffer and length. For all currently pending interrupts, we copy a struct kvm_s390_irq into the buffer and pass it to userspace. To store interrupt state into a buffer provided by userspace, we add an ioctl KVM_S390_SET_IRQ_STATE. It passes a struct kvm_s390_irq_state into the kernel and injects all interrupts contained in the buffer. Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'include/uapi/linux/kvm.h')
-rw-r--r--include/uapi/linux/kvm.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index c0632e87a00f..c045c725e521 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -558,6 +558,13 @@ struct kvm_s390_irq {
558 } u; 558 } u;
559}; 559};
560 560
561struct kvm_s390_irq_state {
562 __u64 buf;
563 __u32 flags;
564 __u32 len;
565 __u32 reserved[4];
566};
567
561/* for KVM_SET_GUEST_DEBUG */ 568/* for KVM_SET_GUEST_DEBUG */
562 569
563#define KVM_GUESTDBG_ENABLE 0x00000001 570#define KVM_GUESTDBG_ENABLE 0x00000001
@@ -803,6 +810,7 @@ struct kvm_ppc_smmu_info {
803#define KVM_CAP_S390_USER_STSI 109 810#define KVM_CAP_S390_USER_STSI 109
804#define KVM_CAP_S390_SKEYS 110 811#define KVM_CAP_S390_SKEYS 110
805#define KVM_CAP_S390_INJECT_IRQ 113 812#define KVM_CAP_S390_INJECT_IRQ 113
813#define KVM_CAP_S390_IRQ_STATE 114
806 814
807#ifdef KVM_CAP_IRQ_ROUTING 815#ifdef KVM_CAP_IRQ_ROUTING
808 816
@@ -1185,6 +1193,9 @@ struct kvm_s390_ucas_mapping {
1185#define KVM_S390_SET_SKEYS _IOW(KVMIO, 0xb3, struct kvm_s390_skeys) 1193#define KVM_S390_SET_SKEYS _IOW(KVMIO, 0xb3, struct kvm_s390_skeys)
1186/* Available with KVM_CAP_S390_INJECT_IRQ */ 1194/* Available with KVM_CAP_S390_INJECT_IRQ */
1187#define KVM_S390_IRQ _IOW(KVMIO, 0xb4, struct kvm_s390_irq) 1195#define KVM_S390_IRQ _IOW(KVMIO, 0xb4, struct kvm_s390_irq)
1196/* Available with KVM_CAP_S390_IRQ_STATE */
1197#define KVM_S390_SET_IRQ_STATE _IOW(KVMIO, 0xb5, struct kvm_s390_irq_state)
1198#define KVM_S390_GET_IRQ_STATE _IOW(KVMIO, 0xb6, struct kvm_s390_irq_state)
1188 1199
1189#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) 1200#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
1190#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) 1201#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)