History

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.

Jens Freimann committed 11 years ago

Commit 816c7661 parent 79e87a15 files · +252 −0Browse files

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

Unified · Split

include/uapi/linux/kvm.h+11−0
@@ -558,6 +558,13 @@ struct kvm_s390_irq { · 557 unmodified lines
558558 } u;
559559 };
560560
561+struct kvm_s390_irq_state {
562+ __u64 buf;
563+ __u32 flags;
564+ __u32 len;
565+ __u32 reserved[4];
566+};
567+
561568 /* for KVM_SET_GUEST_DEBUG */
562569
563570 #define KVM_GUESTDBG_ENABLE 0x00000001
@@ -803,6 +810,7 @@ struct kvm_ppc_smmu_info { · 239 unmodified lines
803810 #define KVM_CAP_S390_USER_STSI 109
804811 #define KVM_CAP_S390_SKEYS 110
805812 #define KVM_CAP_S390_INJECT_IRQ 113
813+#define KVM_CAP_S390_IRQ_STATE 114
806814
807815 #ifdef KVM_CAP_IRQ_ROUTING
808816
@@ -1185,6 +1193,9 @@ struct kvm_s390_ucas_mapping { · 376 unmodified lines
11851193 #define KVM_S390_SET_SKEYS _IOW(KVMIO, 0xb3, struct kvm_s390_skeys)
11861194 /* Available with KVM_CAP_S390_INJECT_IRQ */
11871195 #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)
11881199
11891200 #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
11901201 #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t