Lines Matching refs:inti
1054 struct kvm_s390_interrupt_info *inti; in __deliver_pfault_done() local
1058 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT], in __deliver_pfault_done()
1061 if (inti) { in __deliver_pfault_done()
1062 list_del(&inti->list); in __deliver_pfault_done()
1069 if (inti) { in __deliver_pfault_done()
1072 inti->ext.ext_params2); in __deliver_pfault_done()
1074 inti->ext.ext_params2); in __deliver_pfault_done()
1086 rc |= put_guest_lc(vcpu, inti->ext.ext_params2, in __deliver_pfault_done()
1088 kfree(inti); in __deliver_pfault_done()
1096 struct kvm_s390_interrupt_info *inti; in __deliver_virtio() local
1100 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO], in __deliver_virtio()
1103 if (inti) { in __deliver_virtio()
1106 inti->ext.ext_params, inti->ext.ext_params2); in __deliver_virtio()
1109 inti->type, in __deliver_virtio()
1110 inti->ext.ext_params, in __deliver_virtio()
1111 inti->ext.ext_params2); in __deliver_virtio()
1112 list_del(&inti->list); in __deliver_virtio()
1119 if (inti) { in __deliver_virtio()
1130 rc |= put_guest_lc(vcpu, inti->ext.ext_params, in __deliver_virtio()
1132 rc |= put_guest_lc(vcpu, inti->ext.ext_params2, in __deliver_virtio()
1134 kfree(inti); in __deliver_virtio()
1171 struct kvm_s390_interrupt_info *inti = NULL; in __deliver_io() local
1181 inti = list_first_entry_or_null(isc_list, in __deliver_io()
1184 if (inti) { in __deliver_io()
1185 if (inti->type & KVM_S390_INT_IO_AI_MASK) in __deliver_io()
1189 inti->io.subchannel_id >> 8, in __deliver_io()
1190 inti->io.subchannel_id >> 1 & 0x3, in __deliver_io()
1191 inti->io.subchannel_nr); in __deliver_io()
1195 inti->type, in __deliver_io()
1196 ((__u32)inti->io.subchannel_id << 16) | in __deliver_io()
1197 inti->io.subchannel_nr, in __deliver_io()
1198 ((__u64)inti->io.io_int_parm << 32) | in __deliver_io()
1199 inti->io.io_int_word); in __deliver_io()
1200 list_del(&inti->list); in __deliver_io()
1207 if (inti) { in __deliver_io()
1208 rc = __do_deliver_io(vcpu, &(inti->io)); in __deliver_io()
1209 kfree(inti); in __deliver_io()
1726 struct kvm_s390_interrupt_info *inti = NULL; in get_top_io_int() local
1729 for (isc = 0; isc <= MAX_ISC && !inti; isc++) { in get_top_io_int()
1731 inti = get_io_int(kvm, isc, schid); in get_top_io_int()
1733 return inti; in get_top_io_int()
1774 struct kvm_s390_interrupt_info *inti, *tmp_inti; in kvm_s390_get_io_int() local
1777 inti = get_top_io_int(kvm, isc_mask, schid); in kvm_s390_get_io_int()
1784 if (!inti) in kvm_s390_get_io_int()
1789 if (int_word_to_isc(inti->io.io_int_word) <= isc) { in kvm_s390_get_io_int()
1795 tmp_inti = kzalloc(sizeof(*inti), GFP_KERNEL); in kvm_s390_get_io_int()
1799 if (inti) in kvm_s390_get_io_int()
1800 kvm_s390_reinject_io_int(kvm, inti); in kvm_s390_get_io_int()
1801 inti = tmp_inti; in kvm_s390_get_io_int()
1805 return inti; in kvm_s390_get_io_int()
1809 struct kvm_s390_interrupt_info *inti) in __inject_service() argument
1815 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING; in __inject_service()
1831 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK; in __inject_service()
1835 kfree(inti); in __inject_service()
1840 struct kvm_s390_interrupt_info *inti) in __inject_virtio() argument
1851 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]); in __inject_virtio()
1858 struct kvm_s390_interrupt_info *inti) in __inject_pfault_done() argument
1870 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]); in __inject_pfault_done()
1878 struct kvm_s390_interrupt_info *inti) in __inject_float_mchk() argument
1884 fi->mchk.cr14 |= inti->mchk.cr14 & (1UL << CR_PENDING_SUBCLASS); in __inject_float_mchk()
1885 fi->mchk.mcic |= inti->mchk.mcic; in __inject_float_mchk()
1888 kfree(inti); in __inject_float_mchk()
1892 static int __inject_io(struct kvm *kvm, struct kvm_s390_interrupt_info *inti) in __inject_io() argument
1900 isc = int_word_to_isc(inti->io.io_int_word); in __inject_io()
1909 gi->origin && inti->type & KVM_S390_INT_IO_AI_MASK) { in __inject_io()
1912 kfree(inti); in __inject_io()
1924 if (inti->type & KVM_S390_INT_IO_AI_MASK) in __inject_io()
1928 inti->io.subchannel_id >> 8, in __inject_io()
1929 inti->io.subchannel_id >> 1 & 0x3, in __inject_io()
1930 inti->io.subchannel_nr); in __inject_io()
1932 list_add_tail(&inti->list, list); in __inject_io()
1981 static int __inject_vm(struct kvm *kvm, struct kvm_s390_interrupt_info *inti) in __inject_vm() argument
1983 u64 type = READ_ONCE(inti->type); in __inject_vm()
1988 rc = __inject_float_mchk(kvm, inti); in __inject_vm()
1991 rc = __inject_virtio(kvm, inti); in __inject_vm()
1994 rc = __inject_service(kvm, inti); in __inject_vm()
1997 rc = __inject_pfault_done(kvm, inti); in __inject_vm()
2000 rc = __inject_io(kvm, inti); in __inject_vm()
2015 struct kvm_s390_interrupt_info *inti; in kvm_s390_inject_vm() local
2018 inti = kzalloc(sizeof(*inti), GFP_KERNEL); in kvm_s390_inject_vm()
2019 if (!inti) in kvm_s390_inject_vm()
2022 inti->type = s390int->type; in kvm_s390_inject_vm()
2023 switch (inti->type) { in kvm_s390_inject_vm()
2027 inti->ext.ext_params = s390int->parm; in kvm_s390_inject_vm()
2028 inti->ext.ext_params2 = s390int->parm64; in kvm_s390_inject_vm()
2032 inti->ext.ext_params = s390int->parm; in kvm_s390_inject_vm()
2035 inti->ext.ext_params2 = s390int->parm64; in kvm_s390_inject_vm()
2040 inti->mchk.cr14 = s390int->parm; /* upper bits are not used */ in kvm_s390_inject_vm()
2041 inti->mchk.mcic = s390int->parm64; in kvm_s390_inject_vm()
2044 inti->io.subchannel_id = s390int->parm >> 16; in kvm_s390_inject_vm()
2045 inti->io.subchannel_nr = s390int->parm & 0x0000ffffu; in kvm_s390_inject_vm()
2046 inti->io.io_int_parm = s390int->parm64 >> 32; in kvm_s390_inject_vm()
2047 inti->io.io_int_word = s390int->parm64 & 0x00000000ffffffffull; in kvm_s390_inject_vm()
2050 kfree(inti); in kvm_s390_inject_vm()
2056 rc = __inject_vm(kvm, inti); in kvm_s390_inject_vm()
2058 kfree(inti); in kvm_s390_inject_vm()
2063 struct kvm_s390_interrupt_info *inti) in kvm_s390_reinject_io_int() argument
2065 return __inject_vm(kvm, inti); in kvm_s390_reinject_io_int()
2195 struct kvm_s390_interrupt_info *inti, *n; in clear_irq_list() local
2197 list_for_each_entry_safe(inti, n, _list, list) { in clear_irq_list()
2198 list_del(&inti->list); in clear_irq_list()
2199 kfree(inti); in clear_irq_list()
2203 static void inti_to_irq(struct kvm_s390_interrupt_info *inti, in inti_to_irq() argument
2206 irq->type = inti->type; in inti_to_irq()
2207 switch (inti->type) { in inti_to_irq()
2211 irq->u.ext = inti->ext; in inti_to_irq()
2214 irq->u.io = inti->io; in inti_to_irq()
2243 struct kvm_s390_interrupt_info *inti; in get_all_floating_irqs() local
2284 list_for_each_entry(inti, &fi->lists[i], list) { in get_all_floating_irqs()
2290 inti_to_irq(inti, &buf[n]); in get_all_floating_irqs()
2371 static inline int copy_irq_from_user(struct kvm_s390_interrupt_info *inti, in copy_irq_from_user() argument
2379 if (get_user(inti->type, (u64 __user *)addr)) in copy_irq_from_user()
2382 switch (inti->type) { in copy_irq_from_user()
2387 target = (void *) &inti->ext; in copy_irq_from_user()
2389 size = sizeof(inti->ext); in copy_irq_from_user()
2392 target = (void *) &inti->io; in copy_irq_from_user()
2394 size = sizeof(inti->io); in copy_irq_from_user()
2397 target = (void *) &inti->mchk; in copy_irq_from_user()
2399 size = sizeof(inti->mchk); in copy_irq_from_user()
2414 struct kvm_s390_interrupt_info *inti = NULL; in enqueue_floating_irq() local
2424 inti = kzalloc(sizeof(*inti), GFP_KERNEL); in enqueue_floating_irq()
2425 if (!inti) in enqueue_floating_irq()
2428 r = copy_irq_from_user(inti, attr->addr); in enqueue_floating_irq()
2430 kfree(inti); in enqueue_floating_irq()
2433 r = __inject_vm(dev->kvm, inti); in enqueue_floating_irq()
2435 kfree(inti); in enqueue_floating_irq()
2855 struct kvm_s390_interrupt_info inti; in kvm_s390_reinject_machine_check() local
2870 mchk = mci.ck ? &inti.mchk : &irq.u.mchk; in kvm_s390_reinject_machine_check()
2877 inti.type = KVM_S390_MCHK; in kvm_s390_reinject_machine_check()
2878 rc = __inject_vm(vcpu->kvm, &inti); in kvm_s390_reinject_machine_check()