Lines Matching refs:fi
681 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_machine_check() local
687 spin_lock(&fi->lock); in __deliver_machine_check()
709 if (test_and_clear_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in __deliver_machine_check()
710 mchk.mcic |= fi->mchk.mcic; in __deliver_machine_check()
711 mchk.cr14 |= fi->mchk.cr14; in __deliver_machine_check()
712 memset(&fi->mchk, 0, sizeof(mchk)); in __deliver_machine_check()
716 spin_unlock(&fi->lock); in __deliver_machine_check()
1002 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_service() local
1005 spin_lock(&fi->lock); in __deliver_service()
1006 if (test_bit(IRQ_PEND_EXT_SERVICE, &fi->masked_irqs) || in __deliver_service()
1007 !(test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs))) { in __deliver_service()
1008 spin_unlock(&fi->lock); in __deliver_service()
1011 ext = fi->srv_signal; in __deliver_service()
1012 memset(&fi->srv_signal, 0, sizeof(ext)); in __deliver_service()
1013 clear_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __deliver_service()
1014 clear_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs); in __deliver_service()
1016 set_bit(IRQ_PEND_EXT_SERVICE, &fi->masked_irqs); in __deliver_service()
1017 spin_unlock(&fi->lock); in __deliver_service()
1030 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_service_ev() local
1033 spin_lock(&fi->lock); in __deliver_service_ev()
1034 if (!(test_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs))) { in __deliver_service_ev()
1035 spin_unlock(&fi->lock); in __deliver_service_ev()
1038 ext = fi->srv_signal; in __deliver_service_ev()
1040 fi->srv_signal.ext_params &= ~SCCB_EVENT_PENDING; in __deliver_service_ev()
1041 clear_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs); in __deliver_service_ev()
1042 spin_unlock(&fi->lock); in __deliver_service_ev()
1054 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_pfault_done() local
1058 spin_lock(&fi->lock); in __deliver_pfault_done()
1059 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT], in __deliver_pfault_done()
1064 fi->counters[FIRQ_CNTR_PFAULT] -= 1; in __deliver_pfault_done()
1066 if (list_empty(&fi->lists[FIRQ_LIST_PFAULT])) in __deliver_pfault_done()
1067 clear_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __deliver_pfault_done()
1068 spin_unlock(&fi->lock); in __deliver_pfault_done()
1096 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_virtio() local
1100 spin_lock(&fi->lock); in __deliver_virtio()
1101 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO], in __deliver_virtio()
1114 fi->counters[FIRQ_CNTR_VIRTIO] -= 1; in __deliver_virtio()
1116 if (list_empty(&fi->lists[FIRQ_LIST_VIRTIO])) in __deliver_virtio()
1117 clear_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __deliver_virtio()
1118 spin_unlock(&fi->lock); in __deliver_virtio()
1170 struct kvm_s390_float_interrupt *fi; in __deliver_io() local
1177 fi = &vcpu->kvm->arch.float_int; in __deliver_io()
1179 spin_lock(&fi->lock); in __deliver_io()
1181 isc_list = &fi->lists[isc]; in __deliver_io()
1202 fi->counters[FIRQ_CNTR_IO] -= 1; in __deliver_io()
1205 clear_bit(irq_type, &fi->pending_irqs); in __deliver_io()
1206 spin_unlock(&fi->lock); in __deliver_io()
1702 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in get_io_int() local
1703 struct list_head *isc_list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in get_io_int()
1708 spin_lock(&fi->lock); in get_io_int()
1715 fi->counters[FIRQ_CNTR_IO] -= 1; in get_io_int()
1717 clear_bit(isc_to_irq_type(isc), &fi->pending_irqs); in get_io_int()
1718 spin_unlock(&fi->lock); in get_io_int()
1721 spin_unlock(&fi->lock); in get_io_int()
1813 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_service() local
1816 spin_lock(&fi->lock); in __inject_service()
1817 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING; in __inject_service()
1820 if (fi->srv_signal.ext_params & SCCB_EVENT_PENDING) in __inject_service()
1821 set_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs); in __inject_service()
1831 if (fi->srv_signal.ext_params & SCCB_MASK) in __inject_service()
1833 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK; in __inject_service()
1834 set_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __inject_service()
1836 spin_unlock(&fi->lock); in __inject_service()
1844 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_virtio() local
1847 spin_lock(&fi->lock); in __inject_virtio()
1848 if (fi->counters[FIRQ_CNTR_VIRTIO] >= KVM_S390_MAX_VIRTIO_IRQS) { in __inject_virtio()
1849 spin_unlock(&fi->lock); in __inject_virtio()
1852 fi->counters[FIRQ_CNTR_VIRTIO] += 1; in __inject_virtio()
1853 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]); in __inject_virtio()
1854 set_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __inject_virtio()
1855 spin_unlock(&fi->lock); in __inject_virtio()
1862 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_pfault_done() local
1865 spin_lock(&fi->lock); in __inject_pfault_done()
1866 if (fi->counters[FIRQ_CNTR_PFAULT] >= in __inject_pfault_done()
1868 spin_unlock(&fi->lock); in __inject_pfault_done()
1871 fi->counters[FIRQ_CNTR_PFAULT] += 1; in __inject_pfault_done()
1872 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]); in __inject_pfault_done()
1873 set_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __inject_pfault_done()
1874 spin_unlock(&fi->lock); in __inject_pfault_done()
1882 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_float_mchk() local
1885 spin_lock(&fi->lock); in __inject_float_mchk()
1886 fi->mchk.cr14 |= inti->mchk.cr14 & (1UL << CR_PENDING_SUBCLASS); in __inject_float_mchk()
1887 fi->mchk.mcic |= inti->mchk.mcic; in __inject_float_mchk()
1888 set_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs); in __inject_float_mchk()
1889 spin_unlock(&fi->lock); in __inject_float_mchk()
1897 struct kvm_s390_float_interrupt *fi; in __inject_io() local
1917 fi = &kvm->arch.float_int; in __inject_io()
1918 spin_lock(&fi->lock); in __inject_io()
1919 if (fi->counters[FIRQ_CNTR_IO] >= KVM_S390_MAX_FLOAT_IRQS) { in __inject_io()
1920 spin_unlock(&fi->lock); in __inject_io()
1923 fi->counters[FIRQ_CNTR_IO] += 1; in __inject_io()
1932 list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in __inject_io()
1934 set_bit(isc_to_irq_type(isc), &fi->pending_irqs); in __inject_io()
1935 spin_unlock(&fi->lock); in __inject_io()
2222 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in kvm_s390_clear_float_irqs() local
2227 fi->masked_irqs = 0; in kvm_s390_clear_float_irqs()
2229 spin_lock(&fi->lock); in kvm_s390_clear_float_irqs()
2230 fi->pending_irqs = 0; in kvm_s390_clear_float_irqs()
2231 memset(&fi->srv_signal, 0, sizeof(fi->srv_signal)); in kvm_s390_clear_float_irqs()
2232 memset(&fi->mchk, 0, sizeof(fi->mchk)); in kvm_s390_clear_float_irqs()
2234 clear_irq_list(&fi->lists[i]); in kvm_s390_clear_float_irqs()
2236 fi->counters[i] = 0; in kvm_s390_clear_float_irqs()
2237 spin_unlock(&fi->lock); in kvm_s390_clear_float_irqs()
2245 struct kvm_s390_float_interrupt *fi; in get_all_floating_irqs() local
2282 fi = &kvm->arch.float_int; in get_all_floating_irqs()
2283 spin_lock(&fi->lock); in get_all_floating_irqs()
2285 list_for_each_entry(inti, &fi->lists[i], list) { in get_all_floating_irqs()
2295 if (test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs) || in get_all_floating_irqs()
2296 test_bit(IRQ_PEND_EXT_SERVICE_EV, &fi->pending_irqs)) { in get_all_floating_irqs()
2304 irq->u.ext = fi->srv_signal; in get_all_floating_irqs()
2307 if (test_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in get_all_floating_irqs()
2315 irq->u.mchk = fi->mchk; in get_all_floating_irqs()
2320 spin_unlock(&fi->lock); in get_all_floating_irqs()
2333 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in flic_ais_mode_get_all() local
2342 mutex_lock(&fi->ais_lock); in flic_ais_mode_get_all()
2343 ais.simm = fi->simm; in flic_ais_mode_get_all()
2344 ais.nimm = fi->nimm; in flic_ais_mode_get_all()
2345 mutex_unlock(&fi->ais_lock); in flic_ais_mode_get_all()
2569 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in modify_ais_mode() local
2583 (fi->simm & AIS_MODE_MASK(req.isc)) ? in modify_ais_mode()
2584 (fi->nimm & AIS_MODE_MASK(req.isc)) ? in modify_ais_mode()
2588 mutex_lock(&fi->ais_lock); in modify_ais_mode()
2591 fi->simm &= ~AIS_MODE_MASK(req.isc); in modify_ais_mode()
2592 fi->nimm &= ~AIS_MODE_MASK(req.isc); in modify_ais_mode()
2595 fi->simm |= AIS_MODE_MASK(req.isc); in modify_ais_mode()
2596 fi->nimm &= ~AIS_MODE_MASK(req.isc); in modify_ais_mode()
2601 mutex_unlock(&fi->ais_lock); in modify_ais_mode()
2609 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in kvm_s390_inject_airq() local
2620 mutex_lock(&fi->ais_lock); in kvm_s390_inject_airq()
2621 if (fi->nimm & AIS_MODE_MASK(adapter->isc)) { in kvm_s390_inject_airq()
2627 if (!ret && (fi->simm & AIS_MODE_MASK(adapter->isc))) { in kvm_s390_inject_airq()
2628 fi->nimm |= AIS_MODE_MASK(adapter->isc); in kvm_s390_inject_airq()
2633 mutex_unlock(&fi->ais_lock); in kvm_s390_inject_airq()
2650 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in flic_ais_mode_set_all() local
2659 mutex_lock(&fi->ais_lock); in flic_ais_mode_set_all()
2660 fi->simm = ais.simm; in flic_ais_mode_set_all()
2661 fi->nimm = ais.nimm; in flic_ais_mode_set_all()
2662 mutex_unlock(&fi->ais_lock); in flic_ais_mode_set_all()