Lines Matching refs:inti

1050 	struct kvm_s390_interrupt_info *inti;  in __deliver_pfault_done()  local
1054 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT], in __deliver_pfault_done()
1057 if (inti) { in __deliver_pfault_done()
1058 list_del(&inti->list); in __deliver_pfault_done()
1065 if (inti) { in __deliver_pfault_done()
1068 inti->ext.ext_params2); in __deliver_pfault_done()
1070 inti->ext.ext_params2); in __deliver_pfault_done()
1082 rc |= put_guest_lc(vcpu, inti->ext.ext_params2, in __deliver_pfault_done()
1084 kfree(inti); in __deliver_pfault_done()
1092 struct kvm_s390_interrupt_info *inti; in __deliver_virtio() local
1096 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO], in __deliver_virtio()
1099 if (inti) { in __deliver_virtio()
1102 inti->ext.ext_params, inti->ext.ext_params2); in __deliver_virtio()
1105 inti->type, in __deliver_virtio()
1106 inti->ext.ext_params, in __deliver_virtio()
1107 inti->ext.ext_params2); in __deliver_virtio()
1108 list_del(&inti->list); in __deliver_virtio()
1115 if (inti) { in __deliver_virtio()
1126 rc |= put_guest_lc(vcpu, inti->ext.ext_params, in __deliver_virtio()
1128 rc |= put_guest_lc(vcpu, inti->ext.ext_params2, in __deliver_virtio()
1130 kfree(inti); in __deliver_virtio()
1167 struct kvm_s390_interrupt_info *inti = NULL; in __deliver_io() local
1177 inti = list_first_entry_or_null(isc_list, in __deliver_io()
1180 if (inti) { in __deliver_io()
1181 if (inti->type & KVM_S390_INT_IO_AI_MASK) in __deliver_io()
1185 inti->io.subchannel_id >> 8, in __deliver_io()
1186 inti->io.subchannel_id >> 1 & 0x3, in __deliver_io()
1187 inti->io.subchannel_nr); in __deliver_io()
1191 inti->type, in __deliver_io()
1192 ((__u32)inti->io.subchannel_id << 16) | in __deliver_io()
1193 inti->io.subchannel_nr, in __deliver_io()
1194 ((__u64)inti->io.io_int_parm << 32) | in __deliver_io()
1195 inti->io.io_int_word); in __deliver_io()
1196 list_del(&inti->list); in __deliver_io()
1203 if (inti) { in __deliver_io()
1204 rc = __do_deliver_io(vcpu, &(inti->io)); in __deliver_io()
1205 kfree(inti); in __deliver_io()
1737 struct kvm_s390_interrupt_info *inti = NULL; in get_top_io_int() local
1740 for (isc = 0; isc <= MAX_ISC && !inti; isc++) { in get_top_io_int()
1742 inti = get_io_int(kvm, isc, schid); in get_top_io_int()
1744 return inti; in get_top_io_int()
1785 struct kvm_s390_interrupt_info *inti, *tmp_inti; in kvm_s390_get_io_int() local
1788 inti = get_top_io_int(kvm, isc_mask, schid); in kvm_s390_get_io_int()
1795 if (!inti) in kvm_s390_get_io_int()
1800 if (int_word_to_isc(inti->io.io_int_word) <= isc) { in kvm_s390_get_io_int()
1806 tmp_inti = kzalloc(sizeof(*inti), GFP_KERNEL_ACCOUNT); in kvm_s390_get_io_int()
1810 if (inti) in kvm_s390_get_io_int()
1811 kvm_s390_reinject_io_int(kvm, inti); in kvm_s390_get_io_int()
1812 inti = tmp_inti; in kvm_s390_get_io_int()
1816 return inti; in kvm_s390_get_io_int()
1820 struct kvm_s390_interrupt_info *inti) in __inject_service() argument
1826 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING; in __inject_service()
1842 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK; in __inject_service()
1846 kfree(inti); in __inject_service()
1851 struct kvm_s390_interrupt_info *inti) in __inject_virtio() argument
1862 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]); in __inject_virtio()
1869 struct kvm_s390_interrupt_info *inti) in __inject_pfault_done() argument
1881 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]); in __inject_pfault_done()
1889 struct kvm_s390_interrupt_info *inti) in __inject_float_mchk() argument
1895 fi->mchk.cr14 |= inti->mchk.cr14 & (1UL << CR_PENDING_SUBCLASS); in __inject_float_mchk()
1896 fi->mchk.mcic |= inti->mchk.mcic; in __inject_float_mchk()
1899 kfree(inti); in __inject_float_mchk()
1903 static int __inject_io(struct kvm *kvm, struct kvm_s390_interrupt_info *inti) in __inject_io() argument
1911 isc = int_word_to_isc(inti->io.io_int_word); in __inject_io()
1919 if (gi->origin && inti->type & KVM_S390_INT_IO_AI_MASK) { in __inject_io()
1922 kfree(inti); in __inject_io()
1934 if (inti->type & KVM_S390_INT_IO_AI_MASK) in __inject_io()
1938 inti->io.subchannel_id >> 8, in __inject_io()
1939 inti->io.subchannel_id >> 1 & 0x3, in __inject_io()
1940 inti->io.subchannel_nr); in __inject_io()
1942 list_add_tail(&inti->list, list); in __inject_io()
1991 static int __inject_vm(struct kvm *kvm, struct kvm_s390_interrupt_info *inti) in __inject_vm() argument
1993 u64 type = READ_ONCE(inti->type); in __inject_vm()
1998 rc = __inject_float_mchk(kvm, inti); in __inject_vm()
2001 rc = __inject_virtio(kvm, inti); in __inject_vm()
2004 rc = __inject_service(kvm, inti); in __inject_vm()
2007 rc = __inject_pfault_done(kvm, inti); in __inject_vm()
2010 rc = __inject_io(kvm, inti); in __inject_vm()
2025 struct kvm_s390_interrupt_info *inti; in kvm_s390_inject_vm() local
2028 inti = kzalloc(sizeof(*inti), GFP_KERNEL_ACCOUNT); in kvm_s390_inject_vm()
2029 if (!inti) in kvm_s390_inject_vm()
2032 inti->type = s390int->type; in kvm_s390_inject_vm()
2033 switch (inti->type) { in kvm_s390_inject_vm()
2037 inti->ext.ext_params = s390int->parm; in kvm_s390_inject_vm()
2038 inti->ext.ext_params2 = s390int->parm64; in kvm_s390_inject_vm()
2042 inti->ext.ext_params = s390int->parm; in kvm_s390_inject_vm()
2045 inti->ext.ext_params2 = s390int->parm64; in kvm_s390_inject_vm()
2050 inti->mchk.cr14 = s390int->parm; /* upper bits are not used */ in kvm_s390_inject_vm()
2051 inti->mchk.mcic = s390int->parm64; in kvm_s390_inject_vm()
2054 inti->io.subchannel_id = s390int->parm >> 16; in kvm_s390_inject_vm()
2055 inti->io.subchannel_nr = s390int->parm & 0x0000ffffu; in kvm_s390_inject_vm()
2056 inti->io.io_int_parm = s390int->parm64 >> 32; in kvm_s390_inject_vm()
2057 inti->io.io_int_word = s390int->parm64 & 0x00000000ffffffffull; in kvm_s390_inject_vm()
2060 kfree(inti); in kvm_s390_inject_vm()
2066 rc = __inject_vm(kvm, inti); in kvm_s390_inject_vm()
2068 kfree(inti); in kvm_s390_inject_vm()
2073 struct kvm_s390_interrupt_info *inti) in kvm_s390_reinject_io_int() argument
2075 return __inject_vm(kvm, inti); in kvm_s390_reinject_io_int()
2205 struct kvm_s390_interrupt_info *inti, *n; in clear_irq_list() local
2207 list_for_each_entry_safe(inti, n, _list, list) { in clear_irq_list()
2208 list_del(&inti->list); in clear_irq_list()
2209 kfree(inti); in clear_irq_list()
2213 static void inti_to_irq(struct kvm_s390_interrupt_info *inti, in inti_to_irq() argument
2216 irq->type = inti->type; in inti_to_irq()
2217 switch (inti->type) { in inti_to_irq()
2221 irq->u.ext = inti->ext; in inti_to_irq()
2224 irq->u.io = inti->io; in inti_to_irq()
2253 struct kvm_s390_interrupt_info *inti; in get_all_floating_irqs() local
2294 list_for_each_entry(inti, &fi->lists[i], list) { in get_all_floating_irqs()
2300 inti_to_irq(inti, &buf[n]); in get_all_floating_irqs()
2381 static inline int copy_irq_from_user(struct kvm_s390_interrupt_info *inti, in copy_irq_from_user() argument
2389 if (get_user(inti->type, (u64 __user *)addr)) in copy_irq_from_user()
2392 switch (inti->type) { in copy_irq_from_user()
2397 target = (void *) &inti->ext; in copy_irq_from_user()
2399 size = sizeof(inti->ext); in copy_irq_from_user()
2402 target = (void *) &inti->io; in copy_irq_from_user()
2404 size = sizeof(inti->io); in copy_irq_from_user()
2407 target = (void *) &inti->mchk; in copy_irq_from_user()
2409 size = sizeof(inti->mchk); in copy_irq_from_user()
2424 struct kvm_s390_interrupt_info *inti = NULL; in enqueue_floating_irq() local
2434 inti = kzalloc(sizeof(*inti), GFP_KERNEL_ACCOUNT); in enqueue_floating_irq()
2435 if (!inti) in enqueue_floating_irq()
2438 r = copy_irq_from_user(inti, attr->addr); in enqueue_floating_irq()
2440 kfree(inti); in enqueue_floating_irq()
2443 r = __inject_vm(dev->kvm, inti); in enqueue_floating_irq()
2445 kfree(inti); in enqueue_floating_irq()
2865 struct kvm_s390_interrupt_info inti; in kvm_s390_reinject_machine_check() local
2880 mchk = mci.ck ? &inti.mchk : &irq.u.mchk; in kvm_s390_reinject_machine_check()
2887 inti.type = KVM_S390_MCHK; in kvm_s390_reinject_machine_check()
2888 rc = __inject_vm(vcpu->kvm, &inti); in kvm_s390_reinject_machine_check()