diff options
-rw-r--r-- | target-s390x/kvm.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c index 8f46fd0f10..f108cd3875 100644 --- a/target-s390x/kvm.c +++ b/target-s390x/kvm.c @@ -2071,8 +2071,9 @@ void kvm_s390_io_interrupt(uint16_t subchannel_id, if (io_int_word & IO_INT_WORD_AI) { irq.type = KVM_S390_INT_IO(1, 0, 0, 0); } else { - irq.type = ((subchannel_id & 0xff00) << 24) | - ((subchannel_id & 0x00060) << 22) | (subchannel_nr << 16); + irq.type = KVM_S390_INT_IO(0, (subchannel_id & 0xff00) >> 8, + (subchannel_id & 0x0006), + subchannel_nr); } kvm_s390_floating_interrupt(&irq); } |