Lines Matching refs:inti
1056 struct kvm_s390_interrupt_info *inti; in __deliver_pfault_done() local
1060 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT], in __deliver_pfault_done()
1063 if (inti) { in __deliver_pfault_done()
1064 list_del(&inti->list); in __deliver_pfault_done()
1071 if (inti) { in __deliver_pfault_done()
1074 inti->ext.ext_params2); in __deliver_pfault_done()
1076 inti->ext.ext_params2); in __deliver_pfault_done()
1088 rc |= put_guest_lc(vcpu, inti->ext.ext_params2, in __deliver_pfault_done()
1090 kfree(inti); in __deliver_pfault_done()
1098 struct kvm_s390_interrupt_info *inti; in __deliver_virtio() local
1102 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO], in __deliver_virtio()
1105 if (inti) { in __deliver_virtio()
1108 inti->ext.ext_params, inti->ext.ext_params2); in __deliver_virtio()
1111 inti->type, in __deliver_virtio()
1112 inti->ext.ext_params, in __deliver_virtio()
1113 inti->ext.ext_params2); in __deliver_virtio()
1114 list_del(&inti->list); in __deliver_virtio()
1121 if (inti) { in __deliver_virtio()
1132 rc |= put_guest_lc(vcpu, inti->ext.ext_params, in __deliver_virtio()
1134 rc |= put_guest_lc(vcpu, inti->ext.ext_params2, in __deliver_virtio()
1136 kfree(inti); in __deliver_virtio()
1173 struct kvm_s390_interrupt_info *inti = NULL; in __deliver_io() local
1183 inti = list_first_entry_or_null(isc_list, in __deliver_io()
1186 if (inti) { in __deliver_io()
1187 if (inti->type & KVM_S390_INT_IO_AI_MASK) in __deliver_io()
1191 inti->io.subchannel_id >> 8, in __deliver_io()
1192 inti->io.subchannel_id >> 1 & 0x3, in __deliver_io()
1193 inti->io.subchannel_nr); in __deliver_io()
1197 inti->type, in __deliver_io()
1198 ((__u32)inti->io.subchannel_id << 16) | in __deliver_io()
1199 inti->io.subchannel_nr, in __deliver_io()
1200 ((__u64)inti->io.io_int_parm << 32) | in __deliver_io()
1201 inti->io.io_int_word); in __deliver_io()
1202 list_del(&inti->list); in __deliver_io()
1209 if (inti) { in __deliver_io()
1210 rc = __do_deliver_io(vcpu, &(inti->io)); in __deliver_io()
1211 kfree(inti); in __deliver_io()
1729 struct kvm_s390_interrupt_info *inti = NULL; in get_top_io_int() local
1732 for (isc = 0; isc <= MAX_ISC && !inti; isc++) { in get_top_io_int()
1734 inti = get_io_int(kvm, isc, schid); in get_top_io_int()
1736 return inti; in get_top_io_int()
1777 struct kvm_s390_interrupt_info *inti, *tmp_inti; in kvm_s390_get_io_int() local
1780 inti = get_top_io_int(kvm, isc_mask, schid); in kvm_s390_get_io_int()
1787 if (!inti) in kvm_s390_get_io_int()
1792 if (int_word_to_isc(inti->io.io_int_word) <= isc) { in kvm_s390_get_io_int()
1798 tmp_inti = kzalloc(sizeof(*inti), GFP_KERNEL_ACCOUNT); in kvm_s390_get_io_int()
1802 if (inti) in kvm_s390_get_io_int()
1803 kvm_s390_reinject_io_int(kvm, inti); in kvm_s390_get_io_int()
1804 inti = tmp_inti; in kvm_s390_get_io_int()
1808 return inti; in kvm_s390_get_io_int()
1812 struct kvm_s390_interrupt_info *inti) in __inject_service() argument
1818 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING; in __inject_service()
1834 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK; in __inject_service()
1838 kfree(inti); in __inject_service()
1843 struct kvm_s390_interrupt_info *inti) in __inject_virtio() argument
1854 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]); in __inject_virtio()
1861 struct kvm_s390_interrupt_info *inti) in __inject_pfault_done() argument
1873 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]); in __inject_pfault_done()
1881 struct kvm_s390_interrupt_info *inti) in __inject_float_mchk() argument
1887 fi->mchk.cr14 |= inti->mchk.cr14 & (1UL << CR_PENDING_SUBCLASS); in __inject_float_mchk()
1888 fi->mchk.mcic |= inti->mchk.mcic; in __inject_float_mchk()
1891 kfree(inti); in __inject_float_mchk()
1895 static int __inject_io(struct kvm *kvm, struct kvm_s390_interrupt_info *inti) in __inject_io() argument
1903 isc = int_word_to_isc(inti->io.io_int_word); in __inject_io()
1911 if (gi->origin && inti->type & KVM_S390_INT_IO_AI_MASK) { in __inject_io()
1914 kfree(inti); in __inject_io()
1926 if (inti->type & KVM_S390_INT_IO_AI_MASK) in __inject_io()
1930 inti->io.subchannel_id >> 8, in __inject_io()
1931 inti->io.subchannel_id >> 1 & 0x3, in __inject_io()
1932 inti->io.subchannel_nr); in __inject_io()
1934 list_add_tail(&inti->list, list); in __inject_io()
1983 static int __inject_vm(struct kvm *kvm, struct kvm_s390_interrupt_info *inti) in __inject_vm() argument
1985 u64 type = READ_ONCE(inti->type); in __inject_vm()
1990 rc = __inject_float_mchk(kvm, inti); in __inject_vm()
1993 rc = __inject_virtio(kvm, inti); in __inject_vm()
1996 rc = __inject_service(kvm, inti); in __inject_vm()
1999 rc = __inject_pfault_done(kvm, inti); in __inject_vm()
2002 rc = __inject_io(kvm, inti); in __inject_vm()
2017 struct kvm_s390_interrupt_info *inti; in kvm_s390_inject_vm() local
2020 inti = kzalloc(sizeof(*inti), GFP_KERNEL_ACCOUNT); in kvm_s390_inject_vm()
2021 if (!inti) in kvm_s390_inject_vm()
2024 inti->type = s390int->type; in kvm_s390_inject_vm()
2025 switch (inti->type) { in kvm_s390_inject_vm()
2029 inti->ext.ext_params = s390int->parm; in kvm_s390_inject_vm()
2030 inti->ext.ext_params2 = s390int->parm64; in kvm_s390_inject_vm()
2034 inti->ext.ext_params = s390int->parm; in kvm_s390_inject_vm()
2037 inti->ext.ext_params2 = s390int->parm64; in kvm_s390_inject_vm()
2042 inti->mchk.cr14 = s390int->parm; /* upper bits are not used */ in kvm_s390_inject_vm()
2043 inti->mchk.mcic = s390int->parm64; in kvm_s390_inject_vm()
2046 inti->io.subchannel_id = s390int->parm >> 16; in kvm_s390_inject_vm()
2047 inti->io.subchannel_nr = s390int->parm & 0x0000ffffu; in kvm_s390_inject_vm()
2048 inti->io.io_int_parm = s390int->parm64 >> 32; in kvm_s390_inject_vm()
2049 inti->io.io_int_word = s390int->parm64 & 0x00000000ffffffffull; in kvm_s390_inject_vm()
2052 kfree(inti); in kvm_s390_inject_vm()
2058 rc = __inject_vm(kvm, inti); in kvm_s390_inject_vm()
2060 kfree(inti); in kvm_s390_inject_vm()
2065 struct kvm_s390_interrupt_info *inti) in kvm_s390_reinject_io_int() argument
2067 return __inject_vm(kvm, inti); in kvm_s390_reinject_io_int()
2197 struct kvm_s390_interrupt_info *inti, *n; in clear_irq_list() local
2199 list_for_each_entry_safe(inti, n, _list, list) { in clear_irq_list()
2200 list_del(&inti->list); in clear_irq_list()
2201 kfree(inti); in clear_irq_list()
2205 static void inti_to_irq(struct kvm_s390_interrupt_info *inti, in inti_to_irq() argument
2208 irq->type = inti->type; in inti_to_irq()
2209 switch (inti->type) { in inti_to_irq()
2213 irq->u.ext = inti->ext; in inti_to_irq()
2216 irq->u.io = inti->io; in inti_to_irq()
2245 struct kvm_s390_interrupt_info *inti; in get_all_floating_irqs() local
2286 list_for_each_entry(inti, &fi->lists[i], list) { in get_all_floating_irqs()
2292 inti_to_irq(inti, &buf[n]); in get_all_floating_irqs()
2373 static inline int copy_irq_from_user(struct kvm_s390_interrupt_info *inti, in copy_irq_from_user() argument
2381 if (get_user(inti->type, (u64 __user *)addr)) in copy_irq_from_user()
2384 switch (inti->type) { in copy_irq_from_user()
2389 target = (void *) &inti->ext; in copy_irq_from_user()
2391 size = sizeof(inti->ext); in copy_irq_from_user()
2394 target = (void *) &inti->io; in copy_irq_from_user()
2396 size = sizeof(inti->io); in copy_irq_from_user()
2399 target = (void *) &inti->mchk; in copy_irq_from_user()
2401 size = sizeof(inti->mchk); in copy_irq_from_user()
2416 struct kvm_s390_interrupt_info *inti = NULL; in enqueue_floating_irq() local
2426 inti = kzalloc(sizeof(*inti), GFP_KERNEL_ACCOUNT); in enqueue_floating_irq()
2427 if (!inti) in enqueue_floating_irq()
2430 r = copy_irq_from_user(inti, attr->addr); in enqueue_floating_irq()
2432 kfree(inti); in enqueue_floating_irq()
2435 r = __inject_vm(dev->kvm, inti); in enqueue_floating_irq()
2437 kfree(inti); in enqueue_floating_irq()
2857 struct kvm_s390_interrupt_info inti; in kvm_s390_reinject_machine_check() local
2872 mchk = mci.ck ? &inti.mchk : &irq.u.mchk; in kvm_s390_reinject_machine_check()
2879 inti.type = KVM_S390_MCHK; in kvm_s390_reinject_machine_check()
2880 rc = __inject_vm(vcpu->kvm, &inti); in kvm_s390_reinject_machine_check()