Lines Matching refs:fi

330 	struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int;  in __deliver_machine_check()  local
337 spin_lock(&fi->lock); in __deliver_machine_check()
359 if (test_and_clear_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in __deliver_machine_check()
360 mchk.mcic |= fi->mchk.mcic; in __deliver_machine_check()
361 mchk.cr14 |= fi->mchk.cr14; in __deliver_machine_check()
362 memset(&fi->mchk, 0, sizeof(mchk)); in __deliver_machine_check()
366 spin_unlock(&fi->lock); in __deliver_machine_check()
609 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_service() local
613 spin_lock(&fi->lock); in __deliver_service()
614 if (!(test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs))) { in __deliver_service()
615 spin_unlock(&fi->lock); in __deliver_service()
618 ext = fi->srv_signal; in __deliver_service()
619 memset(&fi->srv_signal, 0, sizeof(ext)); in __deliver_service()
620 clear_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __deliver_service()
621 spin_unlock(&fi->lock); in __deliver_service()
643 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_pfault_done() local
647 spin_lock(&fi->lock); in __deliver_pfault_done()
648 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_PFAULT], in __deliver_pfault_done()
656 fi->counters[FIRQ_CNTR_PFAULT] -= 1; in __deliver_pfault_done()
658 if (list_empty(&fi->lists[FIRQ_LIST_PFAULT])) in __deliver_pfault_done()
659 clear_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __deliver_pfault_done()
660 spin_unlock(&fi->lock); in __deliver_pfault_done()
682 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; in __deliver_virtio() local
686 spin_lock(&fi->lock); in __deliver_virtio()
687 inti = list_first_entry_or_null(&fi->lists[FIRQ_LIST_VIRTIO], in __deliver_virtio()
700 fi->counters[FIRQ_CNTR_VIRTIO] -= 1; in __deliver_virtio()
702 if (list_empty(&fi->lists[FIRQ_LIST_VIRTIO])) in __deliver_virtio()
703 clear_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __deliver_virtio()
704 spin_unlock(&fi->lock); in __deliver_virtio()
730 struct kvm_s390_float_interrupt *fi; in __deliver_io() local
734 fi = &vcpu->kvm->arch.float_int; in __deliver_io()
736 spin_lock(&fi->lock); in __deliver_io()
737 isc_list = &fi->lists[irq_type - IRQ_PEND_IO_ISC_0]; in __deliver_io()
751 fi->counters[FIRQ_CNTR_IO] -= 1; in __deliver_io()
754 clear_bit(irq_type, &fi->pending_irqs); in __deliver_io()
755 spin_unlock(&fi->lock); in __deliver_io()
1206 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in get_io_int() local
1207 struct list_head *isc_list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in get_io_int()
1212 spin_lock(&fi->lock); in get_io_int()
1219 fi->counters[FIRQ_CNTR_IO] -= 1; in get_io_int()
1221 clear_bit(IRQ_PEND_IO_ISC_0 + isc, &fi->pending_irqs); in get_io_int()
1222 spin_unlock(&fi->lock); in get_io_int()
1225 spin_unlock(&fi->lock); in get_io_int()
1252 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_service() local
1254 spin_lock(&fi->lock); in __inject_service()
1255 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_EVENT_PENDING; in __inject_service()
1264 if (fi->srv_signal.ext_params & SCCB_MASK) in __inject_service()
1266 fi->srv_signal.ext_params |= inti->ext.ext_params & SCCB_MASK; in __inject_service()
1267 set_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs); in __inject_service()
1269 spin_unlock(&fi->lock); in __inject_service()
1277 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_virtio() local
1279 spin_lock(&fi->lock); in __inject_virtio()
1280 if (fi->counters[FIRQ_CNTR_VIRTIO] >= KVM_S390_MAX_VIRTIO_IRQS) { in __inject_virtio()
1281 spin_unlock(&fi->lock); in __inject_virtio()
1284 fi->counters[FIRQ_CNTR_VIRTIO] += 1; in __inject_virtio()
1285 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_VIRTIO]); in __inject_virtio()
1286 set_bit(IRQ_PEND_VIRTIO, &fi->pending_irqs); in __inject_virtio()
1287 spin_unlock(&fi->lock); in __inject_virtio()
1294 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_pfault_done() local
1296 spin_lock(&fi->lock); in __inject_pfault_done()
1297 if (fi->counters[FIRQ_CNTR_PFAULT] >= in __inject_pfault_done()
1299 spin_unlock(&fi->lock); in __inject_pfault_done()
1302 fi->counters[FIRQ_CNTR_PFAULT] += 1; in __inject_pfault_done()
1303 list_add_tail(&inti->list, &fi->lists[FIRQ_LIST_PFAULT]); in __inject_pfault_done()
1304 set_bit(IRQ_PEND_PFAULT_DONE, &fi->pending_irqs); in __inject_pfault_done()
1305 spin_unlock(&fi->lock); in __inject_pfault_done()
1313 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in __inject_float_mchk() local
1315 spin_lock(&fi->lock); in __inject_float_mchk()
1316 fi->mchk.cr14 |= inti->mchk.cr14 & (1UL << CR_PENDING_SUBCLASS); in __inject_float_mchk()
1317 fi->mchk.mcic |= inti->mchk.mcic; in __inject_float_mchk()
1318 set_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs); in __inject_float_mchk()
1319 spin_unlock(&fi->lock); in __inject_float_mchk()
1326 struct kvm_s390_float_interrupt *fi; in __inject_io() local
1330 fi = &kvm->arch.float_int; in __inject_io()
1331 spin_lock(&fi->lock); in __inject_io()
1332 if (fi->counters[FIRQ_CNTR_IO] >= KVM_S390_MAX_FLOAT_IRQS) { in __inject_io()
1333 spin_unlock(&fi->lock); in __inject_io()
1336 fi->counters[FIRQ_CNTR_IO] += 1; in __inject_io()
1339 list = &fi->lists[FIRQ_LIST_IO_ISC_0 + isc]; in __inject_io()
1341 set_bit(IRQ_PEND_IO_ISC_0 + isc, &fi->pending_irqs); in __inject_io()
1342 spin_unlock(&fi->lock); in __inject_io()
1349 struct kvm_s390_float_interrupt *fi; in __inject_vm() local
1355 fi = &kvm->arch.float_int; in __inject_vm()
1379 sigcpu = find_first_bit(fi->idle_mask, KVM_MAX_VCPUS); in __inject_vm()
1382 sigcpu = fi->next_rr_cpu++; in __inject_vm()
1384 sigcpu = fi->next_rr_cpu = 0; in __inject_vm()
1608 struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int; in kvm_s390_clear_float_irqs() local
1611 spin_lock(&fi->lock); in kvm_s390_clear_float_irqs()
1612 fi->pending_irqs = 0; in kvm_s390_clear_float_irqs()
1613 memset(&fi->srv_signal, 0, sizeof(fi->srv_signal)); in kvm_s390_clear_float_irqs()
1614 memset(&fi->mchk, 0, sizeof(fi->mchk)); in kvm_s390_clear_float_irqs()
1616 clear_irq_list(&fi->lists[i]); in kvm_s390_clear_float_irqs()
1618 fi->counters[i] = 0; in kvm_s390_clear_float_irqs()
1619 spin_unlock(&fi->lock); in kvm_s390_clear_float_irqs()
1625 struct kvm_s390_float_interrupt *fi; in get_all_floating_irqs() local
1647 fi = &kvm->arch.float_int; in get_all_floating_irqs()
1648 spin_lock(&fi->lock); in get_all_floating_irqs()
1650 list_for_each_entry(inti, &fi->lists[i], list) { in get_all_floating_irqs()
1660 if (test_bit(IRQ_PEND_EXT_SERVICE, &fi->pending_irqs)) { in get_all_floating_irqs()
1668 irq->u.ext = fi->srv_signal; in get_all_floating_irqs()
1671 if (test_bit(IRQ_PEND_MCHK_REP, &fi->pending_irqs)) { in get_all_floating_irqs()
1679 irq->u.mchk = fi->mchk; in get_all_floating_irqs()
1684 spin_unlock(&fi->lock); in get_all_floating_irqs()