diff options
author | David Hildenbrand <dahi@linux.vnet.ibm.com> | 2015-09-28 08:27:51 -0400 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2015-10-13 09:50:33 -0400 |
commit | 5f94c58ed0a6db016528d8555f1b655ad354f7bb (patch) | |
tree | ccb8596eb3a88cefa4285bf882dbc1a05275f2e7 /arch/s390/kvm | |
parent | fee0e0fdb2b9c221a3621bede722aa9f9c9f0d39 (diff) |
KVM: s390: set interception requests for all floating irqs
No need to separate pending and floating irqs when setting interception
requests. Let's do it for all equally.
Reviewed-by: Christian Borntraeger <borntraeger@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/kvm')
-rw-r--r-- | arch/s390/kvm/interrupt.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 1058240b3db3..4f05520efbae 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c | |||
@@ -107,14 +107,10 @@ static inline u8 int_word_to_isc(u32 int_word) | |||
107 | return (int_word & 0x38000000) >> 27; | 107 | return (int_word & 0x38000000) >> 27; |
108 | } | 108 | } |
109 | 109 | ||
110 | static inline unsigned long pending_floating_irqs(struct kvm_vcpu *vcpu) | 110 | static inline unsigned long pending_irqs(struct kvm_vcpu *vcpu) |
111 | { | 111 | { |
112 | return vcpu->kvm->arch.float_int.pending_irqs; | 112 | return vcpu->kvm->arch.float_int.pending_irqs | |
113 | } | 113 | vcpu->arch.local_int.pending_irqs; |
114 | |||
115 | static inline unsigned long pending_local_irqs(struct kvm_vcpu *vcpu) | ||
116 | { | ||
117 | return vcpu->arch.local_int.pending_irqs; | ||
118 | } | 114 | } |
119 | 115 | ||
120 | static unsigned long disable_iscs(struct kvm_vcpu *vcpu, | 116 | static unsigned long disable_iscs(struct kvm_vcpu *vcpu, |
@@ -133,8 +129,7 @@ static unsigned long deliverable_irqs(struct kvm_vcpu *vcpu) | |||
133 | { | 129 | { |
134 | unsigned long active_mask; | 130 | unsigned long active_mask; |
135 | 131 | ||
136 | active_mask = pending_local_irqs(vcpu); | 132 | active_mask = pending_irqs(vcpu); |
137 | active_mask |= pending_floating_irqs(vcpu); | ||
138 | if (!active_mask) | 133 | if (!active_mask) |
139 | return 0; | 134 | return 0; |
140 | 135 | ||
@@ -202,7 +197,7 @@ static void __set_cpuflag(struct kvm_vcpu *vcpu, u32 flag) | |||
202 | 197 | ||
203 | static void set_intercept_indicators_io(struct kvm_vcpu *vcpu) | 198 | static void set_intercept_indicators_io(struct kvm_vcpu *vcpu) |
204 | { | 199 | { |
205 | if (!(pending_floating_irqs(vcpu) & IRQ_PEND_IO_MASK)) | 200 | if (!(pending_irqs(vcpu) & IRQ_PEND_IO_MASK)) |
206 | return; | 201 | return; |
207 | else if (psw_ioint_disabled(vcpu)) | 202 | else if (psw_ioint_disabled(vcpu)) |
208 | __set_cpuflag(vcpu, CPUSTAT_IO_INT); | 203 | __set_cpuflag(vcpu, CPUSTAT_IO_INT); |
@@ -212,7 +207,7 @@ static void set_intercept_indicators_io(struct kvm_vcpu *vcpu) | |||
212 | 207 | ||
213 | static void set_intercept_indicators_ext(struct kvm_vcpu *vcpu) | 208 | static void set_intercept_indicators_ext(struct kvm_vcpu *vcpu) |
214 | { | 209 | { |
215 | if (!(pending_local_irqs(vcpu) & IRQ_PEND_EXT_MASK)) | 210 | if (!(pending_irqs(vcpu) & IRQ_PEND_EXT_MASK)) |
216 | return; | 211 | return; |
217 | if (psw_extint_disabled(vcpu)) | 212 | if (psw_extint_disabled(vcpu)) |
218 | __set_cpuflag(vcpu, CPUSTAT_EXT_INT); | 213 | __set_cpuflag(vcpu, CPUSTAT_EXT_INT); |
@@ -222,7 +217,7 @@ static void set_intercept_indicators_ext(struct kvm_vcpu *vcpu) | |||
222 | 217 | ||
223 | static void set_intercept_indicators_mchk(struct kvm_vcpu *vcpu) | 218 | static void set_intercept_indicators_mchk(struct kvm_vcpu *vcpu) |
224 | { | 219 | { |
225 | if (!(pending_local_irqs(vcpu) & IRQ_PEND_MCHK_MASK)) | 220 | if (!(pending_irqs(vcpu) & IRQ_PEND_MCHK_MASK)) |
226 | return; | 221 | return; |
227 | if (psw_mchk_disabled(vcpu)) | 222 | if (psw_mchk_disabled(vcpu)) |
228 | vcpu->arch.sie_block->ictl |= ICTL_LPSW; | 223 | vcpu->arch.sie_block->ictl |= ICTL_LPSW; |