Lines Matching refs:inti
1058 struct kvm_s390_interrupt_info *inti;
1062 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT],
1065 if (inti) {
1066 list_del(&inti->list);
1073 if (inti) {
1076 inti->ext.ext_params2);
1078 inti->ext.ext_params2);
1090 rc |= put_guest_lc(vcpu, inti->ext.ext_params2,
1092 kfree(inti);
1100 struct kvm_s390_interrupt_info *inti;
1104 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO],
1107 if (inti) {
1110 inti->ext.ext_params, inti->ext.ext_params2);
1113 inti->type,
1114 inti->ext.ext_params,
1115 inti->ext.ext_params2);
1116 list_del(&inti->list);
1123 if (inti) {
1134 rc |= put_guest_lc(vcpu, inti->ext.ext_params,
1136 rc |= put_guest_lc(vcpu, inti->ext.ext_params2,
1138 kfree(inti);
1175 struct kvm_s390_interrupt_info *inti = NULL;
1185 inti = list_first_entry_or_null(isc_list,
1188 if (inti) {
1189 if (inti->type & KVM_S390_INT_IO_AI_MASK)
1193 inti->io.subchannel_id >> 8,
1194 inti->io.subchannel_id >> 1 & 0x3,
1195 inti->io.subchannel_nr);
1199 inti->type,
1200 ((__u32)inti->io.subchannel_id << 16) |
1201 inti->io.subchannel_nr,
1202 ((__u64)inti->io.io_int_parm << 32) |
1203 inti->io.io_int_word);
1204 list_del(&inti->list);
1211 if (inti) {
1212 rc = __do_deliver_io(vcpu, &(inti->io));
1213 kfree(inti);
1730 struct kvm_s390_interrupt_info *inti = NULL;
1733 for (isc = 0; isc <= MAX_ISC && !inti; isc++) {
1735 inti = get_io_int(kvm, isc, schid);
1737 return inti;
1778 struct kvm_s390_interrupt_info *inti, *tmp_inti;
1781 inti = get_top_io_int(kvm, isc_mask, schid);
1788 if (!inti)
1793 if (int_word_to_isc(inti->io.io_int_word) <= isc) {
1799 tmp_inti = kzalloc(sizeof(*inti), GFP_KERNEL);
1803 if (inti)
1804 kvm_s390_reinject_io_int(kvm, inti);
1805 inti = tmp_inti;
1809 return inti;
1813 struct kvm_s390_interrupt_info *inti)
1819 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING;
1835 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK;
1839 kfree(inti);
1844 struct kvm_s390_interrupt_info *inti)
1855 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]);
1862 struct kvm_s390_interrupt_info *inti)
1874 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]);
1882 struct kvm_s390_interrupt_info *inti)
1888 fi->mchk.cr14 |= inti->mchk.cr14 & (1UL << CR_PENDING_SUBCLASS);
1889 fi->mchk.mcic |= inti->mchk.mcic;
1892 kfree(inti);
1896 static int __inject_io(struct kvm *kvm, struct kvm_s390_interrupt_info *inti)
1904 isc = int_word_to_isc(inti->io.io_int_word);
1913 gi->origin && inti->type & KVM_S390_INT_IO_AI_MASK) {
1916 kfree(inti);
1928 if (inti->type & KVM_S390_INT_IO_AI_MASK)
1932 inti->io.subchannel_id >> 8,
1933 inti->io.subchannel_id >> 1 & 0x3,
1934 inti->io.subchannel_nr);
1936 list_add_tail(&inti->list, list);
1985 static int __inject_vm(struct kvm *kvm, struct kvm_s390_interrupt_info *inti)
1987 u64 type = READ_ONCE(inti->type);
1992 rc = __inject_float_mchk(kvm, inti);
1995 rc = __inject_virtio(kvm, inti);
1998 rc = __inject_service(kvm, inti);
2001 rc = __inject_pfault_done(kvm, inti);
2004 rc = __inject_io(kvm, inti);
2019 struct kvm_s390_interrupt_info *inti;
2022 inti = kzalloc(sizeof(*inti), GFP_KERNEL);
2023 if (!inti)
2026 inti->type = s390int->type;
2027 switch (inti->type) {
2031 inti->ext.ext_params = s390int->parm;
2032 inti->ext.ext_params2 = s390int->parm64;
2036 inti->ext.ext_params = s390int->parm;
2039 inti->ext.ext_params2 = s390int->parm64;
2044 inti->mchk.cr14 = s390int->parm; /* upper bits are not used */
2045 inti->mchk.mcic = s390int->parm64;
2048 inti->io.subchannel_id = s390int->parm >> 16;
2049 inti->io.subchannel_nr = s390int->parm & 0x0000ffffu;
2050 inti->io.io_int_parm = s390int->parm64 >> 32;
2051 inti->io.io_int_word = s390int->parm64 & 0x00000000ffffffffull;
2054 kfree(inti);
2060 rc = __inject_vm(kvm, inti);
2062 kfree(inti);
2067 struct kvm_s390_interrupt_info *inti)
2069 return __inject_vm(kvm, inti);
2199 struct kvm_s390_interrupt_info *inti, *n;
2201 list_for_each_entry_safe(inti, n, _list, list) {
2202 list_del(&inti->list);
2203 kfree(inti);
2207 static void inti_to_irq(struct kvm_s390_interrupt_info *inti,
2210 irq->type = inti->type;
2211 switch (inti->type) {
2215 irq->u.ext = inti->ext;
2218 irq->u.io = inti->io;
2247 struct kvm_s390_interrupt_info *inti;
2288 list_for_each_entry(inti, &fi->lists[i], list) {
2294 inti_to_irq(inti, &buf[n]);
2375 static inline int copy_irq_from_user(struct kvm_s390_interrupt_info *inti,
2383 if (get_user(inti->type, (u64 __user *)addr))
2386 switch (inti->type) {
2391 target = (void *) &inti->ext;
2393 size = sizeof(inti->ext);
2396 target = (void *) &inti->io;
2398 size = sizeof(inti->io);
2401 target = (void *) &inti->mchk;
2403 size = sizeof(inti->mchk);
2418 struct kvm_s390_interrupt_info *inti = NULL;
2428 inti = kzalloc(sizeof(*inti), GFP_KERNEL);
2429 if (!inti)
2432 r = copy_irq_from_user(inti, attr->addr);
2434 kfree(inti);
2437 r = __inject_vm(dev->kvm, inti);
2439 kfree(inti);
2859 struct kvm_s390_interrupt_info inti;
2874 mchk = mci.ck ? &inti.mchk : &irq.u.mchk;
2881 inti.type = KVM_S390_MCHK;
2882 rc = __inject_vm(vcpu->kvm, &inti);