Lines Matching refs:inti

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