On 13.02.2018 13:28, Christian Borntraeger wrote: > If GISA is available, we do not have to kick CPUs out of SIE to deliver > interrupts. The hardware can deliver such interrupts while running. > > Cc: Michael Mueller <mimu@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> > --- > arch/s390/kvm/interrupt.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c > index 337a69bc04db..e399495001ca 100644 > --- a/arch/s390/kvm/interrupt.c > +++ b/arch/s390/kvm/interrupt.c > @@ -236,10 +236,15 @@ static inline int kvm_s390_gisa_tac_ipm_gisc(struct kvm_s390_gisa *gisa, u32 gis > return test_and_clear_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *) gisa); > } > > -static inline unsigned long pending_irqs(struct kvm_vcpu *vcpu) > +static inline unsigned long pending_irqs_no_gisa(struct kvm_vcpu *vcpu) > { > return vcpu->kvm->arch.float_int.pending_irqs | > - vcpu->arch.local_int.pending_irqs | > + vcpu->arch.local_int.pending_irqs; > +} > + > +static inline unsigned long pending_irqs(struct kvm_vcpu *vcpu) > +{ > + return pending_irqs_no_gisa(vcpu) | > kvm_s390_gisa_get_ipm(vcpu->kvm->arch.gisa) << IRQ_PEND_IO_ISC_7; > } > > @@ -337,7 +342,7 @@ static void __reset_intercept_indicators(struct kvm_vcpu *vcpu) > > static void set_intercept_indicators_io(struct kvm_vcpu *vcpu) > { > - if (!(pending_irqs(vcpu) & IRQ_PEND_IO_MASK)) > + if (!(pending_irqs_no_gisa(vcpu) & IRQ_PEND_IO_MASK)) > return; > else if (psw_ioint_disabled(vcpu)) > kvm_s390_set_cpuflags(vcpu, CPUSTAT_IO_INT); > Reviewed-by: David Hildenbrand <david@xxxxxxxxxx> -- Thanks, David / dhildenb -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html