aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/include
diff options
context:
space:
mode:
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>2014-10-15 10:48:53 -0400
committerChristian Borntraeger <borntraeger@de.ibm.com>2015-01-23 07:25:33 -0500
commit6cddd432e3da5e25eccbc13844d03c871674a62e (patch)
tree67c0c9cc7d4c8687de88310f78222cec6673622f /arch/s390/include
parent2822545f9fe264ec62d4abc69c17ae759eafe4ce (diff)
KVM: s390: handle stop irqs without action_bits
This patch removes the famous action_bits and moves the handling of SIGP STOP AND STORE STATUS directly into the SIGP STOP interrupt. The new local interrupt infrastructure is used to track pending stop requests. STOP irqs are the only irqs that don't get actively delivered. They remain pending until the stop function is executed (=stop intercept). If another STOP irq is already pending, -EBUSY will now be returned (needed for the SIGP handling code). Migration of pending SIGP STOP (AND STORE STATUS) orders should now be supported out of the box. Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'arch/s390/include')
-rw-r--r--arch/s390/include/asm/kvm_host.h5
1 files changed, 0 insertions, 5 deletions
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
index 5eafe84a7b3d..02e42480609d 100644
--- a/arch/s390/include/asm/kvm_host.h
+++ b/arch/s390/include/asm/kvm_host.h
@@ -383,10 +383,6 @@ struct kvm_s390_interrupt_info {
383 }; 383 };
384}; 384};
385 385
386/* for local_interrupt.action_flags */
387#define ACTION_STORE_ON_STOP (1<<0)
388#define ACTION_STOP_ON_STOP (1<<1)
389
390struct kvm_s390_irq_payload { 386struct kvm_s390_irq_payload {
391 struct kvm_s390_io_info io; 387 struct kvm_s390_io_info io;
392 struct kvm_s390_ext_info ext; 388 struct kvm_s390_ext_info ext;
@@ -403,7 +399,6 @@ struct kvm_s390_local_interrupt {
403 struct kvm_s390_float_interrupt *float_int; 399 struct kvm_s390_float_interrupt *float_int;
404 wait_queue_head_t *wq; 400 wait_queue_head_t *wq;
405 atomic_t *cpuflags; 401 atomic_t *cpuflags;
406 unsigned int action_bits;
407 DECLARE_BITMAP(sigp_emerg_pending, KVM_MAX_VCPUS); 402 DECLARE_BITMAP(sigp_emerg_pending, KVM_MAX_VCPUS);
408 struct kvm_s390_irq_payload irq; 403 struct kvm_s390_irq_payload irq;
409 unsigned long pending_irqs; 404 unsigned long pending_irqs;