Lines Matching refs:fi
680 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_machine_check() local
686 spin_lock(&fi->lock); in __deliver_machine_check()
708 if (test_and_clear_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in __deliver_machine_check()
709 mchk.mcic |= fi->mchk.mcic; in __deliver_machine_check()
710 mchk.cr14 |= fi->mchk.cr14; in __deliver_machine_check()
711 memset(&fi->mchk, 0, sizeof(mchk)); in __deliver_machine_check()
715 spin_unlock(&fi->lock); in __deliver_machine_check()
1001 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_service() local
1004 spin_lock(&fi->lock); in __deliver_service()
1005 if (test_bit(IRQ_PEND_EXT_SERVICE, &fi->masked_irqs) || in __deliver_service()
1006 !(test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs))) { in __deliver_service()
1007 spin_unlock(&fi->lock); in __deliver_service()
1010 ext = fi->srv_signal; in __deliver_service()
1011 memset(&fi->srv_signal, 0, sizeof(ext)); in __deliver_service()
1012 clear_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __deliver_service()
1013 clear_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs); in __deliver_service()
1015 set_bit(IRQ_PEND_EXT_SERVICE, &fi->masked_irqs); in __deliver_service()
1016 spin_unlock(&fi->lock); in __deliver_service()
1029 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_service_ev() local
1032 spin_lock(&fi->lock); in __deliver_service_ev()
1033 if (!(test_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs))) { in __deliver_service_ev()
1034 spin_unlock(&fi->lock); in __deliver_service_ev()
1037 ext = fi->srv_signal; in __deliver_service_ev()
1039 fi->srv_signal.ext_params &= ~SCCB_EVENT_PENDING; in __deliver_service_ev()
1040 clear_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs); in __deliver_service_ev()
1041 spin_unlock(&fi->lock); in __deliver_service_ev()
1053 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_pfault_done() local
1057 spin_lock(&fi->lock); in __deliver_pfault_done()
1058 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT], in __deliver_pfault_done()
1063 fi->counters[FIRQ_CNTR_PFAULT] -= 1; in __deliver_pfault_done()
1065 if (list_empty(&fi->lists[FIRQ_LIST_PFAULT])) in __deliver_pfault_done()
1066 clear_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __deliver_pfault_done()
1067 spin_unlock(&fi->lock); in __deliver_pfault_done()
1095 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_virtio() local
1099 spin_lock(&fi->lock); in __deliver_virtio()
1100 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO], in __deliver_virtio()
1113 fi->counters[FIRQ_CNTR_VIRTIO] -= 1; in __deliver_virtio()
1115 if (list_empty(&fi->lists[FIRQ_LIST_VIRTIO])) in __deliver_virtio()
1116 clear_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __deliver_virtio()
1117 spin_unlock(&fi->lock); in __deliver_virtio()
1169 struct kvm_s390_float_interrupt *fi; in __deliver_io() local
1176 fi = &vcpu->kvm->arch.float_int; in __deliver_io()
1178 spin_lock(&fi->lock); in __deliver_io()
1180 isc_list = &fi->lists[isc]; in __deliver_io()
1201 fi->counters[FIRQ_CNTR_IO] -= 1; in __deliver_io()
1204 clear_bit(irq_type, &fi->pending_irqs); in __deliver_io()
1205 spin_unlock(&fi->lock); in __deliver_io()
1700 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in get_io_int() local
1701 struct list_head *isc_list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in get_io_int()
1706 spin_lock(&fi->lock); in get_io_int()
1713 fi->counters[FIRQ_CNTR_IO] -= 1; in get_io_int()
1715 clear_bit(isc_to_irq_type(isc), &fi->pending_irqs); in get_io_int()
1716 spin_unlock(&fi->lock); in get_io_int()
1719 spin_unlock(&fi->lock); in get_io_int()
1811 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_service() local
1814 spin_lock(&fi->lock); in __inject_service()
1815 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING; in __inject_service()
1818 if (fi->srv_signal.ext_params & SCCB_EVENT_PENDING) in __inject_service()
1819 set_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs); in __inject_service()
1829 if (fi->srv_signal.ext_params & SCCB_MASK) in __inject_service()
1831 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK; in __inject_service()
1832 set_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __inject_service()
1834 spin_unlock(&fi->lock); in __inject_service()
1842 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_virtio() local
1845 spin_lock(&fi->lock); in __inject_virtio()
1846 if (fi->counters[FIRQ_CNTR_VIRTIO] >= KVM_S390_MAX_VIRTIO_IRQS) { in __inject_virtio()
1847 spin_unlock(&fi->lock); in __inject_virtio()
1850 fi->counters[FIRQ_CNTR_VIRTIO] += 1; in __inject_virtio()
1851 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]); in __inject_virtio()
1852 set_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __inject_virtio()
1853 spin_unlock(&fi->lock); in __inject_virtio()
1860 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_pfault_done() local
1863 spin_lock(&fi->lock); in __inject_pfault_done()
1864 if (fi->counters[FIRQ_CNTR_PFAULT] >= in __inject_pfault_done()
1866 spin_unlock(&fi->lock); in __inject_pfault_done()
1869 fi->counters[FIRQ_CNTR_PFAULT] += 1; in __inject_pfault_done()
1870 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]); in __inject_pfault_done()
1871 set_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __inject_pfault_done()
1872 spin_unlock(&fi->lock); in __inject_pfault_done()
1880 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_float_mchk() local
1883 spin_lock(&fi->lock); in __inject_float_mchk()
1884 fi->mchk.cr14 |= inti->mchk.cr14 & (1UL << CR_PENDING_SUBCLASS); in __inject_float_mchk()
1885 fi->mchk.mcic |= inti->mchk.mcic; in __inject_float_mchk()
1886 set_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs); in __inject_float_mchk()
1887 spin_unlock(&fi->lock); in __inject_float_mchk()
1895 struct kvm_s390_float_interrupt *fi; in __inject_io() local
1916 fi = &kvm->arch.float_int; in __inject_io()
1917 spin_lock(&fi->lock); in __inject_io()
1918 if (fi->counters[FIRQ_CNTR_IO] >= KVM_S390_MAX_FLOAT_IRQS) { in __inject_io()
1919 spin_unlock(&fi->lock); in __inject_io()
1922 fi->counters[FIRQ_CNTR_IO] += 1; in __inject_io()
1931 list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in __inject_io()
1933 set_bit(isc_to_irq_type(isc), &fi->pending_irqs); in __inject_io()
1934 spin_unlock(&fi->lock); in __inject_io()
2214 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in kvm_s390_clear_float_irqs() local
2219 fi->masked_irqs = 0; in kvm_s390_clear_float_irqs()
2221 spin_lock(&fi->lock); in kvm_s390_clear_float_irqs()
2222 fi->pending_irqs = 0; in kvm_s390_clear_float_irqs()
2223 memset(&fi->srv_signal, 0, sizeof(fi->srv_signal)); in kvm_s390_clear_float_irqs()
2224 memset(&fi->mchk, 0, sizeof(fi->mchk)); in kvm_s390_clear_float_irqs()
2226 clear_irq_list(&fi->lists[i]); in kvm_s390_clear_float_irqs()
2228 fi->counters[i] = 0; in kvm_s390_clear_float_irqs()
2229 spin_unlock(&fi->lock); in kvm_s390_clear_float_irqs()
2237 struct kvm_s390_float_interrupt *fi; in get_all_floating_irqs() local
2274 fi = &kvm->arch.float_int; in get_all_floating_irqs()
2275 spin_lock(&fi->lock); in get_all_floating_irqs()
2277 list_for_each_entry(inti, &fi->lists[i], list) { in get_all_floating_irqs()
2287 if (test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs) || in get_all_floating_irqs()
2288 test_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs)) { in get_all_floating_irqs()
2296 irq->u.ext = fi->srv_signal; in get_all_floating_irqs()
2299 if (test_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in get_all_floating_irqs()
2307 irq->u.mchk = fi->mchk; in get_all_floating_irqs()
2312 spin_unlock(&fi->lock); in get_all_floating_irqs()
2325 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in flic_ais_mode_get_all() local
2334 mutex_lock(&fi->ais_lock); in flic_ais_mode_get_all()
2335 ais.simm = fi->simm; in flic_ais_mode_get_all()
2336 ais.nimm = fi->nimm; in flic_ais_mode_get_all()
2337 mutex_unlock(&fi->ais_lock); in flic_ais_mode_get_all()
2561 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in modify_ais_mode() local
2575 (fi->simm & AIS_MODE_MASK(req.isc)) ? in modify_ais_mode()
2576 (fi->nimm & AIS_MODE_MASK(req.isc)) ? in modify_ais_mode()
2580 mutex_lock(&fi->ais_lock); in modify_ais_mode()
2583 fi->simm &= ~AIS_MODE_MASK(req.isc); in modify_ais_mode()
2584 fi->nimm &= ~AIS_MODE_MASK(req.isc); in modify_ais_mode()
2587 fi->simm |= AIS_MODE_MASK(req.isc); in modify_ais_mode()
2588 fi->nimm &= ~AIS_MODE_MASK(req.isc); in modify_ais_mode()
2593 mutex_unlock(&fi->ais_lock); in modify_ais_mode()
2601 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in kvm_s390_inject_airq() local
2612 mutex_lock(&fi->ais_lock); in kvm_s390_inject_airq()
2613 if (fi->nimm & AIS_MODE_MASK(adapter->isc)) { in kvm_s390_inject_airq()
2619 if (!ret && (fi->simm & AIS_MODE_MASK(adapter->isc))) { in kvm_s390_inject_airq()
2620 fi->nimm |= AIS_MODE_MASK(adapter->isc); in kvm_s390_inject_airq()
2625 mutex_unlock(&fi->ais_lock); in kvm_s390_inject_airq()
2642 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in flic_ais_mode_set_all() local
2651 mutex_lock(&fi->ais_lock); in flic_ais_mode_set_all()
2652 fi->simm = ais.simm; in flic_ais_mode_set_all()
2653 fi->nimm = ais.nimm; in flic_ais_mode_set_all()
2654 mutex_unlock(&fi->ais_lock); in flic_ais_mode_set_all()