Lines Matching refs:fi
557 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_machine_check() local
563 spin_lock(&fi->lock); in __deliver_machine_check()
585 if (test_and_clear_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in __deliver_machine_check()
586 mchk.mcic |= fi->mchk.mcic; in __deliver_machine_check()
587 mchk.cr14 |= fi->mchk.cr14; in __deliver_machine_check()
588 memset(&fi->mchk, 0, sizeof(mchk)); in __deliver_machine_check()
592 spin_unlock(&fi->lock); in __deliver_machine_check()
817 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_service() local
821 spin_lock(&fi->lock); in __deliver_service()
822 if (!(test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs))) { in __deliver_service()
823 spin_unlock(&fi->lock); in __deliver_service()
826 ext = fi->srv_signal; in __deliver_service()
827 memset(&fi->srv_signal, 0, sizeof(ext)); in __deliver_service()
828 clear_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __deliver_service()
829 spin_unlock(&fi->lock); in __deliver_service()
851 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_pfault_done() local
855 spin_lock(&fi->lock); in __deliver_pfault_done()
856 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT], in __deliver_pfault_done()
861 fi->counters[FIRQ_CNTR_PFAULT] -= 1; in __deliver_pfault_done()
863 if (list_empty(&fi->lists[FIRQ_LIST_PFAULT])) in __deliver_pfault_done()
864 clear_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __deliver_pfault_done()
865 spin_unlock(&fi->lock); in __deliver_pfault_done()
893 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_virtio() local
897 spin_lock(&fi->lock); in __deliver_virtio()
898 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO], in __deliver_virtio()
911 fi->counters[FIRQ_CNTR_VIRTIO] -= 1; in __deliver_virtio()
913 if (list_empty(&fi->lists[FIRQ_LIST_VIRTIO])) in __deliver_virtio()
914 clear_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __deliver_virtio()
915 spin_unlock(&fi->lock); in __deliver_virtio()
958 struct kvm_s390_float_interrupt *fi; in __deliver_io() local
964 fi = &vcpu->kvm->arch.float_int; in __deliver_io()
966 spin_lock(&fi->lock); in __deliver_io()
968 isc_list = &fi->lists[isc]; in __deliver_io()
989 fi->counters[FIRQ_CNTR_IO] -= 1; in __deliver_io()
992 clear_bit(irq_type, &fi->pending_irqs); in __deliver_io()
993 spin_unlock(&fi->lock); in __deliver_io()
1498 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in get_io_int() local
1499 struct list_head *isc_list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in get_io_int()
1504 spin_lock(&fi->lock); in get_io_int()
1511 fi->counters[FIRQ_CNTR_IO] -= 1; in get_io_int()
1513 clear_bit(isc_to_irq_type(isc), &fi->pending_irqs); in get_io_int()
1514 spin_unlock(&fi->lock); in get_io_int()
1517 spin_unlock(&fi->lock); in get_io_int()
1610 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_service() local
1613 spin_lock(&fi->lock); in __inject_service()
1614 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING; in __inject_service()
1623 if (fi->srv_signal.ext_params & SCCB_MASK) in __inject_service()
1625 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK; in __inject_service()
1626 set_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __inject_service()
1628 spin_unlock(&fi->lock); in __inject_service()
1636 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_virtio() local
1639 spin_lock(&fi->lock); in __inject_virtio()
1640 if (fi->counters[FIRQ_CNTR_VIRTIO] >= KVM_S390_MAX_VIRTIO_IRQS) { in __inject_virtio()
1641 spin_unlock(&fi->lock); in __inject_virtio()
1644 fi->counters[FIRQ_CNTR_VIRTIO] += 1; in __inject_virtio()
1645 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]); in __inject_virtio()
1646 set_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __inject_virtio()
1647 spin_unlock(&fi->lock); in __inject_virtio()
1654 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_pfault_done() local
1657 spin_lock(&fi->lock); in __inject_pfault_done()
1658 if (fi->counters[FIRQ_CNTR_PFAULT] >= in __inject_pfault_done()
1660 spin_unlock(&fi->lock); in __inject_pfault_done()
1663 fi->counters[FIRQ_CNTR_PFAULT] += 1; in __inject_pfault_done()
1664 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]); in __inject_pfault_done()
1665 set_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __inject_pfault_done()
1666 spin_unlock(&fi->lock); in __inject_pfault_done()
1674 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_float_mchk() local
1677 spin_lock(&fi->lock); in __inject_float_mchk()
1678 fi->mchk.cr14 |= inti->mchk.cr14 & (1UL << CR_PENDING_SUBCLASS); in __inject_float_mchk()
1679 fi->mchk.mcic |= inti->mchk.mcic; in __inject_float_mchk()
1680 set_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs); in __inject_float_mchk()
1681 spin_unlock(&fi->lock); in __inject_float_mchk()
1688 struct kvm_s390_float_interrupt *fi; in __inject_io() local
1702 fi = &kvm->arch.float_int; in __inject_io()
1703 spin_lock(&fi->lock); in __inject_io()
1704 if (fi->counters[FIRQ_CNTR_IO] >= KVM_S390_MAX_FLOAT_IRQS) { in __inject_io()
1705 spin_unlock(&fi->lock); in __inject_io()
1708 fi->counters[FIRQ_CNTR_IO] += 1; in __inject_io()
1717 list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in __inject_io()
1719 set_bit(isc_to_irq_type(isc), &fi->pending_irqs); in __inject_io()
1720 spin_unlock(&fi->lock); in __inject_io()
1729 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __floating_irq_kick() local
1738 sigcpu = find_first_bit(fi->idle_mask, online_vcpus); in __floating_irq_kick()
1741 sigcpu = fi->next_rr_cpu; in __floating_irq_kick()
1742 fi->next_rr_cpu = (fi->next_rr_cpu + 1) % online_vcpus; in __floating_irq_kick()
1989 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in kvm_s390_clear_float_irqs() local
1992 spin_lock(&fi->lock); in kvm_s390_clear_float_irqs()
1993 fi->pending_irqs = 0; in kvm_s390_clear_float_irqs()
1994 memset(&fi->srv_signal, 0, sizeof(fi->srv_signal)); in kvm_s390_clear_float_irqs()
1995 memset(&fi->mchk, 0, sizeof(fi->mchk)); in kvm_s390_clear_float_irqs()
1997 clear_irq_list(&fi->lists[i]); in kvm_s390_clear_float_irqs()
1999 fi->counters[i] = 0; in kvm_s390_clear_float_irqs()
2000 spin_unlock(&fi->lock); in kvm_s390_clear_float_irqs()
2007 struct kvm_s390_float_interrupt *fi; in get_all_floating_irqs() local
2045 fi = &kvm->arch.float_int; in get_all_floating_irqs()
2046 spin_lock(&fi->lock); in get_all_floating_irqs()
2048 list_for_each_entry(inti, &fi->lists[i], list) { in get_all_floating_irqs()
2058 if (test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs)) { in get_all_floating_irqs()
2066 irq->u.ext = fi->srv_signal; in get_all_floating_irqs()
2069 if (test_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in get_all_floating_irqs()
2077 irq->u.mchk = fi->mchk; in get_all_floating_irqs()
2082 spin_unlock(&fi->lock); in get_all_floating_irqs()
2095 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in flic_ais_mode_get_all() local
2104 mutex_lock(&fi->ais_lock); in flic_ais_mode_get_all()
2105 ais.simm = fi->simm; in flic_ais_mode_get_all()
2106 ais.nimm = fi->nimm; in flic_ais_mode_get_all()
2107 mutex_unlock(&fi->ais_lock); in flic_ais_mode_get_all()
2400 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in modify_ais_mode() local
2414 (fi->simm & AIS_MODE_MASK(req.isc)) ? in modify_ais_mode()
2415 (fi->nimm & AIS_MODE_MASK(req.isc)) ? in modify_ais_mode()
2419 mutex_lock(&fi->ais_lock); in modify_ais_mode()
2422 fi->simm &= ~AIS_MODE_MASK(req.isc); in modify_ais_mode()
2423 fi->nimm &= ~AIS_MODE_MASK(req.isc); in modify_ais_mode()
2426 fi->simm |= AIS_MODE_MASK(req.isc); in modify_ais_mode()
2427 fi->nimm &= ~AIS_MODE_MASK(req.isc); in modify_ais_mode()
2432 mutex_unlock(&fi->ais_lock); in modify_ais_mode()
2440 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in kvm_s390_inject_airq() local
2451 mutex_lock(&fi->ais_lock); in kvm_s390_inject_airq()
2452 if (fi->nimm & AIS_MODE_MASK(adapter->isc)) { in kvm_s390_inject_airq()
2458 if (!ret && (fi->simm & AIS_MODE_MASK(adapter->isc))) { in kvm_s390_inject_airq()
2459 fi->nimm |= AIS_MODE_MASK(adapter->isc); in kvm_s390_inject_airq()
2464 mutex_unlock(&fi->ais_lock); in kvm_s390_inject_airq()
2481 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in flic_ais_mode_set_all() local
2490 mutex_lock(&fi->ais_lock); in flic_ais_mode_set_all()
2491 fi->simm = ais.simm; in flic_ais_mode_set_all()
2492 fi->nimm = ais.nimm; in flic_ais_mode_set_all()
2493 mutex_unlock(&fi->ais_lock); in flic_ais_mode_set_all()