diff options
author | David Hildenbrand <dahi@linux.vnet.ibm.com> | 2014-10-14 09:29:30 -0400 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2015-01-23 07:25:36 -0500 |
commit | ea5f496925755bc5e13adbdcfcb841bc2848913b (patch) | |
tree | dd36477016aef39db6ab17926f0ff488b79ebd5b /arch/s390/include/asm/kvm_host.h | |
parent | d614be05c8b73033fa141c2f4559c117578b9171 (diff) |
KVM: s390: only one external call may be pending at a time
Only one external call may be pending at a vcpu at a time. For this
reason, we have to detect whether the SIGP externcal call interpretation
facility is available. If so, all external calls have to be injected
using this mechanism.
SIGP EXTERNAL CALL orders have to return whether another external
call is already pending. This check was missing until now.
SIGP SENSE hasn't returned yet in all conditions whether an external
call was pending.
If a SIGP EXTERNAL CALL irq is to be injected and one is already
pending, -EBUSY is returned.
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/kvm_host.h')
-rw-r--r-- | arch/s390/include/asm/kvm_host.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h index 02e42480609d..4de479e47f71 100644 --- a/arch/s390/include/asm/kvm_host.h +++ b/arch/s390/include/asm/kvm_host.h | |||
@@ -35,11 +35,13 @@ | |||
35 | #define KVM_NR_IRQCHIPS 1 | 35 | #define KVM_NR_IRQCHIPS 1 |
36 | #define KVM_IRQCHIP_NUM_PINS 4096 | 36 | #define KVM_IRQCHIP_NUM_PINS 4096 |
37 | 37 | ||
38 | #define SIGP_CTRL_C 0x00800000 | 38 | #define SIGP_CTRL_C 0x80 |
39 | #define SIGP_CTRL_SCN_MASK 0x3f | ||
39 | 40 | ||
40 | struct sca_entry { | 41 | struct sca_entry { |
41 | atomic_t ctrl; | 42 | __u8 reserved0; |
42 | __u32 reserved; | 43 | __u8 sigp_ctrl; |
44 | __u16 reserved[3]; | ||
43 | __u64 sda; | 45 | __u64 sda; |
44 | __u64 reserved2[2]; | 46 | __u64 reserved2[2]; |
45 | } __attribute__((packed)); | 47 | } __attribute__((packed)); |