KVM: s390: abstract adapter interruption word generation from ISC
authorMichael Mueller <mimu@linux.vnet.ibm.com>
Thu, 31 Aug 2017 09:10:28 +0000 (11:10 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Fri, 26 Jan 2018 10:12:09 +0000 (11:12 +0100)
The function isc_to_int_word() allows the generation of interruption
words for adapter interrupts.

Signed-off-by: Michael Mueller <mimu@linux.vnet.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/kvm/interrupt.c

index f293c956e6dbb860bd8c6ded0418bcbc1bc9b807..a0ded3a23a5e0c4f2b845d2e052622f487d559f3 100644 (file)
@@ -198,6 +198,11 @@ static uint64_t isc_to_isc_bits(int isc)
        return (0x80 >> isc) << 24;
 }
 
+static inline u32 isc_to_int_word(u8 isc)
+{
+       return ((u32)isc << 27) | 0x80000000;
+}
+
 static inline u8 int_word_to_isc(u32 int_word)
 {
        return (int_word & 0x38000000) >> 27;
@@ -992,7 +997,7 @@ static int __must_check __deliver_io(struct kvm_vcpu *vcpu,
                 */
                VCPU_EVENT(vcpu, 4, "%s isc %u", "deliver: I/O (AI/gisa)", isc);
                memset(&io, 0, sizeof(io));
-               io.io_int_word = (isc << 27) | 0x80000000;
+               io.io_int_word = isc_to_int_word(isc);
                vcpu->stat.deliver_io_int++;
                trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id,
                        KVM_S390_INT_IO(1, 0, 0, 0),
@@ -2299,7 +2304,7 @@ static int kvm_s390_inject_airq(struct kvm *kvm,
        struct kvm_s390_interrupt s390int = {
                .type = KVM_S390_INT_IO(1, 0, 0, 0),
                .parm = 0,
-               .parm64 = (adapter->isc << 27) | 0x80000000,
+               .parm64 = isc_to_int_word(adapter->isc),
        };
        int ret = 0;