Lines Matching refs:inti

636 	struct kvm_s390_interrupt_info *inti;  in __deliver_pfault_done()  local
640 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT], in __deliver_pfault_done()
643 if (inti) { in __deliver_pfault_done()
644 list_del(&inti->list); in __deliver_pfault_done()
651 if (inti) { in __deliver_pfault_done()
654 inti->ext.ext_params2); in __deliver_pfault_done()
656 inti->ext.ext_params2); in __deliver_pfault_done()
668 rc |= put_guest_lc(vcpu, inti->ext.ext_params2, in __deliver_pfault_done()
670 kfree(inti); in __deliver_pfault_done()
678 struct kvm_s390_interrupt_info *inti; in __deliver_virtio() local
682 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO], in __deliver_virtio()
685 if (inti) { in __deliver_virtio()
688 inti->ext.ext_params, inti->ext.ext_params2); in __deliver_virtio()
691 inti->type, in __deliver_virtio()
692 inti->ext.ext_params, in __deliver_virtio()
693 inti->ext.ext_params2); in __deliver_virtio()
694 list_del(&inti->list); in __deliver_virtio()
701 if (inti) { in __deliver_virtio()
712 rc |= put_guest_lc(vcpu, inti->ext.ext_params, in __deliver_virtio()
714 rc |= put_guest_lc(vcpu, inti->ext.ext_params2, in __deliver_virtio()
716 kfree(inti); in __deliver_virtio()
726 struct kvm_s390_interrupt_info *inti = NULL; in __deliver_io() local
733 inti = list_first_entry_or_null(isc_list, in __deliver_io()
736 if (inti) { in __deliver_io()
737 VCPU_EVENT(vcpu, 4, "deliver: I/O 0x%llx", inti->type); in __deliver_io()
740 inti->type, in __deliver_io()
741 ((__u32)inti->io.subchannel_id << 16) | in __deliver_io()
742 inti->io.subchannel_nr, in __deliver_io()
743 ((__u64)inti->io.io_int_parm << 32) | in __deliver_io()
744 inti->io.io_int_word); in __deliver_io()
745 list_del(&inti->list); in __deliver_io()
752 if (inti) { in __deliver_io()
753 rc = put_guest_lc(vcpu, inti->io.subchannel_id, in __deliver_io()
755 rc |= put_guest_lc(vcpu, inti->io.subchannel_nr, in __deliver_io()
757 rc |= put_guest_lc(vcpu, inti->io.io_int_parm, in __deliver_io()
759 rc |= put_guest_lc(vcpu, inti->io.io_int_word, in __deliver_io()
767 kfree(inti); in __deliver_io()
1212 struct kvm_s390_interrupt_info *inti = NULL; in kvm_s390_get_io_int() local
1215 for (isc = 0; isc <= MAX_ISC && !inti; isc++) { in kvm_s390_get_io_int()
1217 inti = get_io_int(kvm, isc, schid); in kvm_s390_get_io_int()
1219 return inti; in kvm_s390_get_io_int()
1226 struct kvm_s390_interrupt_info *inti) in __inject_service() argument
1231 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING; in __inject_service()
1242 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK; in __inject_service()
1246 kfree(inti); in __inject_service()
1251 struct kvm_s390_interrupt_info *inti) in __inject_virtio() argument
1261 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]); in __inject_virtio()
1268 struct kvm_s390_interrupt_info *inti) in __inject_pfault_done() argument
1279 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]); in __inject_pfault_done()
1287 struct kvm_s390_interrupt_info *inti) in __inject_float_mchk() argument
1292 fi->mchk.cr14 |= inti->mchk.cr14 & (1UL << CR_PENDING_SUBCLASS); in __inject_float_mchk()
1293 fi->mchk.mcic |= inti->mchk.mcic; in __inject_float_mchk()
1296 kfree(inti); in __inject_float_mchk()
1300 static int __inject_io(struct kvm *kvm, struct kvm_s390_interrupt_info *inti) in __inject_io() argument
1314 isc = int_word_to_isc(inti->io.io_int_word); in __inject_io()
1316 list_add_tail(&inti->list, list); in __inject_io()
1367 static int __inject_vm(struct kvm *kvm, struct kvm_s390_interrupt_info *inti) in __inject_vm() argument
1369 u64 type = READ_ONCE(inti->type); in __inject_vm()
1374 rc = __inject_float_mchk(kvm, inti); in __inject_vm()
1377 rc = __inject_virtio(kvm, inti); in __inject_vm()
1380 rc = __inject_service(kvm, inti); in __inject_vm()
1383 rc = __inject_pfault_done(kvm, inti); in __inject_vm()
1386 rc = __inject_io(kvm, inti); in __inject_vm()
1401 struct kvm_s390_interrupt_info *inti; in kvm_s390_inject_vm() local
1404 inti = kzalloc(sizeof(*inti), GFP_KERNEL); in kvm_s390_inject_vm()
1405 if (!inti) in kvm_s390_inject_vm()
1408 inti->type = s390int->type; in kvm_s390_inject_vm()
1409 switch (inti->type) { in kvm_s390_inject_vm()
1413 inti->ext.ext_params = s390int->parm; in kvm_s390_inject_vm()
1414 inti->ext.ext_params2 = s390int->parm64; in kvm_s390_inject_vm()
1418 inti->ext.ext_params = s390int->parm; in kvm_s390_inject_vm()
1421 inti->ext.ext_params2 = s390int->parm64; in kvm_s390_inject_vm()
1426 inti->mchk.cr14 = s390int->parm; /* upper bits are not used */ in kvm_s390_inject_vm()
1427 inti->mchk.mcic = s390int->parm64; in kvm_s390_inject_vm()
1430 if (inti->type & KVM_S390_INT_IO_AI_MASK) in kvm_s390_inject_vm()
1437 inti->io.subchannel_id = s390int->parm >> 16; in kvm_s390_inject_vm()
1438 inti->io.subchannel_nr = s390int->parm & 0x0000ffffu; in kvm_s390_inject_vm()
1439 inti->io.io_int_parm = s390int->parm64 >> 32; in kvm_s390_inject_vm()
1440 inti->io.io_int_word = s390int->parm64 & 0x00000000ffffffffull; in kvm_s390_inject_vm()
1443 kfree(inti); in kvm_s390_inject_vm()
1449 rc = __inject_vm(kvm, inti); in kvm_s390_inject_vm()
1451 kfree(inti); in kvm_s390_inject_vm()
1456 struct kvm_s390_interrupt_info *inti) in kvm_s390_reinject_io_int() argument
1458 return __inject_vm(kvm, inti); in kvm_s390_reinject_io_int()
1571 struct kvm_s390_interrupt_info *inti, *n; in clear_irq_list() local
1573 list_for_each_entry_safe(inti, n, _list, list) { in clear_irq_list()
1574 list_del(&inti->list); in clear_irq_list()
1575 kfree(inti); in clear_irq_list()
1579 static void inti_to_irq(struct kvm_s390_interrupt_info *inti, in inti_to_irq() argument
1582 irq->type = inti->type; in inti_to_irq()
1583 switch (inti->type) { in inti_to_irq()
1587 irq->u.ext = inti->ext; in inti_to_irq()
1590 irq->u.io = inti->io; in inti_to_irq()
1613 struct kvm_s390_interrupt_info *inti; in get_all_floating_irqs() local
1639 list_for_each_entry(inti, &fi->lists[i], list) { in get_all_floating_irqs()
1645 inti_to_irq(inti, &buf[n]); in get_all_floating_irqs()
1699 static inline int copy_irq_from_user(struct kvm_s390_interrupt_info *inti, in copy_irq_from_user() argument
1707 if (get_user(inti->type, (u64 __user *)addr)) in copy_irq_from_user()
1710 switch (inti->type) { in copy_irq_from_user()
1715 target = (void *) &inti->ext; in copy_irq_from_user()
1717 size = sizeof(inti->ext); in copy_irq_from_user()
1720 target = (void *) &inti->io; in copy_irq_from_user()
1722 size = sizeof(inti->io); in copy_irq_from_user()
1725 target = (void *) &inti->mchk; in copy_irq_from_user()
1727 size = sizeof(inti->mchk); in copy_irq_from_user()
1742 struct kvm_s390_interrupt_info *inti = NULL; in enqueue_floating_irq() local
1752 inti = kzalloc(sizeof(*inti), GFP_KERNEL); in enqueue_floating_irq()
1753 if (!inti) in enqueue_floating_irq()
1756 r = copy_irq_from_user(inti, attr->addr); in enqueue_floating_irq()
1758 kfree(inti); in enqueue_floating_irq()
1761 r = __inject_vm(dev->kvm, inti); in enqueue_floating_irq()
1763 kfree(inti); in enqueue_floating_irq()