Lines Matching refs:fi

323 	struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int;  in __deliver_machine_check()  local
330 spin_lock(&fi->lock); in __deliver_machine_check()
352 if (test_and_clear_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in __deliver_machine_check()
353 mchk.mcic |= fi->mchk.mcic; in __deliver_machine_check()
354 mchk.cr14 |= fi->mchk.cr14; in __deliver_machine_check()
355 memset(&fi->mchk, 0, sizeof(mchk)); in __deliver_machine_check()
359 spin_unlock(&fi->lock); in __deliver_machine_check()
601 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_service() local
605 spin_lock(&fi->lock); in __deliver_service()
606 if (!(test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs))) { in __deliver_service()
607 spin_unlock(&fi->lock); in __deliver_service()
610 ext = fi->srv_signal; in __deliver_service()
611 memset(&fi->srv_signal, 0, sizeof(ext)); in __deliver_service()
612 clear_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __deliver_service()
613 spin_unlock(&fi->lock); in __deliver_service()
635 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_pfault_done() local
639 spin_lock(&fi->lock); in __deliver_pfault_done()
640 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT], in __deliver_pfault_done()
645 fi->counters[FIRQ_CNTR_PFAULT] -= 1; in __deliver_pfault_done()
647 if (list_empty(&fi->lists[FIRQ_LIST_PFAULT])) in __deliver_pfault_done()
648 clear_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __deliver_pfault_done()
649 spin_unlock(&fi->lock); in __deliver_pfault_done()
677 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_virtio() local
681 spin_lock(&fi->lock); in __deliver_virtio()
682 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO], in __deliver_virtio()
695 fi->counters[FIRQ_CNTR_VIRTIO] -= 1; in __deliver_virtio()
697 if (list_empty(&fi->lists[FIRQ_LIST_VIRTIO])) in __deliver_virtio()
698 clear_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __deliver_virtio()
699 spin_unlock(&fi->lock); in __deliver_virtio()
725 struct kvm_s390_float_interrupt *fi; in __deliver_io() local
729 fi = &vcpu->kvm->arch.float_int; in __deliver_io()
731 spin_lock(&fi->lock); in __deliver_io()
732 isc_list = &fi->lists[irq_type - IRQ_PEND_IO_ISC_0]; in __deliver_io()
746 fi->counters[FIRQ_CNTR_IO] -= 1; in __deliver_io()
749 clear_bit(irq_type, &fi->pending_irqs); in __deliver_io()
750 spin_unlock(&fi->lock); in __deliver_io()
1182 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in get_io_int() local
1183 struct list_head *isc_list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in get_io_int()
1188 spin_lock(&fi->lock); in get_io_int()
1195 fi->counters[FIRQ_CNTR_IO] -= 1; in get_io_int()
1197 clear_bit(IRQ_PEND_IO_ISC_0 + isc, &fi->pending_irqs); in get_io_int()
1198 spin_unlock(&fi->lock); in get_io_int()
1201 spin_unlock(&fi->lock); in get_io_int()
1228 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_service() local
1230 spin_lock(&fi->lock); in __inject_service()
1231 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING; in __inject_service()
1240 if (fi->srv_signal.ext_params & SCCB_MASK) in __inject_service()
1242 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK; in __inject_service()
1243 set_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __inject_service()
1245 spin_unlock(&fi->lock); in __inject_service()
1253 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_virtio() local
1255 spin_lock(&fi->lock); in __inject_virtio()
1256 if (fi->counters[FIRQ_CNTR_VIRTIO] >= KVM_S390_MAX_VIRTIO_IRQS) { in __inject_virtio()
1257 spin_unlock(&fi->lock); in __inject_virtio()
1260 fi->counters[FIRQ_CNTR_VIRTIO] += 1; in __inject_virtio()
1261 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]); in __inject_virtio()
1262 set_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __inject_virtio()
1263 spin_unlock(&fi->lock); in __inject_virtio()
1270 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_pfault_done() local
1272 spin_lock(&fi->lock); in __inject_pfault_done()
1273 if (fi->counters[FIRQ_CNTR_PFAULT] >= in __inject_pfault_done()
1275 spin_unlock(&fi->lock); in __inject_pfault_done()
1278 fi->counters[FIRQ_CNTR_PFAULT] += 1; in __inject_pfault_done()
1279 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]); in __inject_pfault_done()
1280 set_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __inject_pfault_done()
1281 spin_unlock(&fi->lock); in __inject_pfault_done()
1289 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_float_mchk() local
1291 spin_lock(&fi->lock); in __inject_float_mchk()
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()
1294 set_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs); in __inject_float_mchk()
1295 spin_unlock(&fi->lock); in __inject_float_mchk()
1302 struct kvm_s390_float_interrupt *fi; in __inject_io() local
1306 fi = &kvm->arch.float_int; in __inject_io()
1307 spin_lock(&fi->lock); in __inject_io()
1308 if (fi->counters[FIRQ_CNTR_IO] >= KVM_S390_MAX_FLOAT_IRQS) { in __inject_io()
1309 spin_unlock(&fi->lock); in __inject_io()
1312 fi->counters[FIRQ_CNTR_IO] += 1; in __inject_io()
1315 list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in __inject_io()
1317 set_bit(IRQ_PEND_IO_ISC_0 + isc, &fi->pending_irqs); in __inject_io()
1318 spin_unlock(&fi->lock); in __inject_io()
1327 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __floating_irq_kick() local
1337 sigcpu = find_first_bit(fi->idle_mask, online_vcpus); in __floating_irq_kick()
1340 sigcpu = fi->next_rr_cpu; in __floating_irq_kick()
1341 fi->next_rr_cpu = (fi->next_rr_cpu + 1) % online_vcpus; in __floating_irq_kick()
1597 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in kvm_s390_clear_float_irqs() local
1600 spin_lock(&fi->lock); in kvm_s390_clear_float_irqs()
1601 fi->pending_irqs = 0; in kvm_s390_clear_float_irqs()
1602 memset(&fi->srv_signal, 0, sizeof(fi->srv_signal)); in kvm_s390_clear_float_irqs()
1603 memset(&fi->mchk, 0, sizeof(fi->mchk)); in kvm_s390_clear_float_irqs()
1605 clear_irq_list(&fi->lists[i]); in kvm_s390_clear_float_irqs()
1607 fi->counters[i] = 0; in kvm_s390_clear_float_irqs()
1608 spin_unlock(&fi->lock); in kvm_s390_clear_float_irqs()
1614 struct kvm_s390_float_interrupt *fi; in get_all_floating_irqs() local
1636 fi = &kvm->arch.float_int; in get_all_floating_irqs()
1637 spin_lock(&fi->lock); in get_all_floating_irqs()
1639 list_for_each_entry(inti, &fi->lists[i], list) { in get_all_floating_irqs()
1649 if (test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs)) { in get_all_floating_irqs()
1657 irq->u.ext = fi->srv_signal; in get_all_floating_irqs()
1660 if (test_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in get_all_floating_irqs()
1668 irq->u.mchk = fi->mchk; in get_all_floating_irqs()
1673 spin_unlock(&fi->lock); in get_all_floating_irqs()