Lines Matching refs:irq
307 ext = li->irq.ext; in __deliver_pfault_init()
309 li->irq.ext.ext_params2 = 0; in __deliver_pfault_init()
347 mchk = li->irq.mchk; in __deliver_machine_check()
350 memset(&li->irq.mchk, 0, sizeof(mchk)); in __deliver_machine_check()
423 prefix = li->irq.prefix; in __deliver_set_prefix()
424 li->irq.prefix.address = 0; in __deliver_set_prefix()
473 extcall = li->irq.extcall; in __deliver_external_call()
474 li->irq.extcall.code = 0; in __deliver_external_call()
502 pgm_info = li->irq.pgm; in __deliver_prog()
504 memset(&li->irq.pgm, 0, sizeof(pgm_info)); in __deliver_prog()
916 memset(&li->irq, 0, sizeof(li->irq)); in kvm_s390_clear_local_irqs()
970 static int __inject_prog(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) in __inject_prog() argument
974 li->irq.pgm = irq->u.pgm; in __inject_prog()
982 struct kvm_s390_irq irq; in kvm_s390_inject_program_int() local
988 irq.u.pgm.code = code; in kvm_s390_inject_program_int()
989 __inject_prog(vcpu, &irq); in kvm_s390_inject_program_int()
999 struct kvm_s390_irq irq; in kvm_s390_inject_prog_irq() local
1007 irq.u.pgm = *pgm_info; in kvm_s390_inject_prog_irq()
1008 rc = __inject_prog(vcpu, &irq); in kvm_s390_inject_prog_irq()
1014 static int __inject_pfault_init(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) in __inject_pfault_init() argument
1019 irq->u.ext.ext_params, irq->u.ext.ext_params2); in __inject_pfault_init()
1021 irq->u.ext.ext_params, in __inject_pfault_init()
1022 irq->u.ext.ext_params2, 2); in __inject_pfault_init()
1024 li->irq.ext = irq->u.ext; in __inject_pfault_init()
1045 static int __inject_extcall(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) in __inject_extcall() argument
1048 struct kvm_s390_extcall_info *extcall = &li->irq.extcall; in __inject_extcall()
1049 uint16_t src_id = irq->u.extcall.code; in __inject_extcall()
1065 *extcall = irq->u.extcall; in __inject_extcall()
1070 static int __inject_set_prefix(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) in __inject_set_prefix() argument
1073 struct kvm_s390_prefix_info *prefix = &li->irq.prefix; in __inject_set_prefix()
1076 irq->u.prefix.address); in __inject_set_prefix()
1078 irq->u.prefix.address, 0, 2); in __inject_set_prefix()
1083 *prefix = irq->u.prefix; in __inject_set_prefix()
1089 static int __inject_sigp_stop(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) in __inject_sigp_stop() argument
1092 struct kvm_s390_stop_info *stop = &li->irq.stop; in __inject_sigp_stop()
1097 if (irq->u.stop.flags & ~KVM_S390_STOP_SUPP_FLAGS) in __inject_sigp_stop()
1101 if (irq->u.stop.flags & KVM_S390_STOP_FLAG_STORE_STATUS) in __inject_sigp_stop()
1109 stop->flags = irq->u.stop.flags; in __inject_sigp_stop()
1115 struct kvm_s390_irq *irq) in __inject_sigp_restart() argument
1119 VCPU_EVENT(vcpu, 3, "inject: restart type %llx", irq->type); in __inject_sigp_restart()
1127 struct kvm_s390_irq *irq) in __inject_sigp_emergency() argument
1132 irq->u.emerg.code); in __inject_sigp_emergency()
1134 irq->u.emerg.code, 0, 2); in __inject_sigp_emergency()
1137 if (kvm_get_vcpu_by_id(vcpu->kvm, irq->u.emerg.code) == NULL) in __inject_sigp_emergency()
1140 set_bit(irq->u.emerg.code, li->sigp_emerg_pending); in __inject_sigp_emergency()
1146 static int __inject_mchk(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) in __inject_mchk() argument
1149 struct kvm_s390_mchk_info *mchk = &li->irq.mchk; in __inject_mchk()
1152 irq->u.mchk.mcic); in __inject_mchk()
1154 irq->u.mchk.mcic, 2); in __inject_mchk()
1164 mchk->cr14 |= irq->u.mchk.cr14; in __inject_mchk()
1165 mchk->mcic |= irq->u.mchk.mcic; in __inject_mchk()
1166 mchk->ext_damage_code |= irq->u.mchk.ext_damage_code; in __inject_mchk()
1167 mchk->failing_storage_address = irq->u.mchk.failing_storage_address; in __inject_mchk()
1168 memcpy(&mchk->fixed_logout, &irq->u.mchk.fixed_logout, in __inject_mchk()
1471 struct kvm_s390_irq *irq) in s390int_to_s390irq() argument
1473 irq->type = s390int->type; in s390int_to_s390irq()
1474 switch (irq->type) { in s390int_to_s390irq()
1478 irq->u.pgm.code = s390int->parm; in s390int_to_s390irq()
1481 irq->u.prefix.address = s390int->parm; in s390int_to_s390irq()
1484 irq->u.stop.flags = s390int->parm; in s390int_to_s390irq()
1489 irq->u.extcall.code = s390int->parm; in s390int_to_s390irq()
1494 irq->u.emerg.code = s390int->parm; in s390int_to_s390irq()
1497 irq->u.mchk.mcic = s390int->parm64; in s390int_to_s390irq()
1515 li->irq.stop.flags = 0; in kvm_s390_clear_stop_irq()
1520 static int do_inject_vcpu(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) in do_inject_vcpu() argument
1524 switch (irq->type) { in do_inject_vcpu()
1527 irq->u.pgm.code); in do_inject_vcpu()
1528 rc = __inject_prog(vcpu, irq); in do_inject_vcpu()
1531 rc = __inject_set_prefix(vcpu, irq); in do_inject_vcpu()
1534 rc = __inject_sigp_stop(vcpu, irq); in do_inject_vcpu()
1537 rc = __inject_sigp_restart(vcpu, irq); in do_inject_vcpu()
1546 rc = __inject_extcall(vcpu, irq); in do_inject_vcpu()
1549 rc = __inject_sigp_emergency(vcpu, irq); in do_inject_vcpu()
1552 rc = __inject_mchk(vcpu, irq); in do_inject_vcpu()
1555 rc = __inject_pfault_init(vcpu, irq); in do_inject_vcpu()
1567 int kvm_s390_inject_vcpu(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) in kvm_s390_inject_vcpu() argument
1573 rc = do_inject_vcpu(vcpu, irq); in kvm_s390_inject_vcpu()
1591 struct kvm_s390_irq *irq) in inti_to_irq() argument
1593 irq->type = inti->type; in inti_to_irq()
1598 irq->u.ext = inti->ext; in inti_to_irq()
1601 irq->u.io = inti->io; in inti_to_irq()
1627 struct kvm_s390_irq *irq; in get_all_floating_irqs() local
1666 irq = (struct kvm_s390_irq *) &buf[n]; in get_all_floating_irqs()
1667 irq->type = KVM_S390_INT_SERVICE; in get_all_floating_irqs()
1668 irq->u.ext = fi->srv_signal; in get_all_floating_irqs()
1677 irq = (struct kvm_s390_irq *) &buf[n]; in get_all_floating_irqs()
1678 irq->type = KVM_S390_MCHK; in get_all_floating_irqs()
1679 irq->u.mchk = fi->mchk; in get_all_floating_irqs()
2174 struct kvm_s390_irq *irq, in store_local_irq() argument
2180 irq->type = KVM_S390_MCHK; in store_local_irq()
2181 irq->u.mchk = li->irq.mchk; in store_local_irq()
2184 irq->type = KVM_S390_PROGRAM_INT; in store_local_irq()
2185 irq->u.pgm = li->irq.pgm; in store_local_irq()
2188 irq->type = KVM_S390_INT_PFAULT_INIT; in store_local_irq()
2189 irq->u.ext = li->irq.ext; in store_local_irq()
2192 irq->type = KVM_S390_INT_EXTERNAL_CALL; in store_local_irq()
2193 irq->u.extcall = li->irq.extcall; in store_local_irq()
2196 irq->type = KVM_S390_INT_CLOCK_COMP; in store_local_irq()
2199 irq->type = KVM_S390_INT_CPU_TIMER; in store_local_irq()
2202 irq->type = KVM_S390_SIGP_STOP; in store_local_irq()
2203 irq->u.stop = li->irq.stop; in store_local_irq()
2206 irq->type = KVM_S390_RESTART; in store_local_irq()
2209 irq->type = KVM_S390_SIGP_SET_PREFIX; in store_local_irq()
2210 irq->u.prefix = li->irq.prefix; in store_local_irq()
2221 struct kvm_s390_irq irq; in kvm_s390_get_irq_state() local
2233 memset(&irq, 0, sizeof(irq)); in kvm_s390_get_irq_state()
2236 if (n + sizeof(irq) > len) in kvm_s390_get_irq_state()
2238 store_local_irq(&vcpu->arch.local_int, &irq, irq_type); in kvm_s390_get_irq_state()
2239 if (copy_to_user(&buf[n], &irq, sizeof(irq))) in kvm_s390_get_irq_state()
2241 n += sizeof(irq); in kvm_s390_get_irq_state()
2246 memset(&irq, 0, sizeof(irq)); in kvm_s390_get_irq_state()
2247 if (n + sizeof(irq) > len) in kvm_s390_get_irq_state()
2249 irq.type = KVM_S390_INT_EMERGENCY; in kvm_s390_get_irq_state()
2250 irq.u.emerg.code = cpuaddr; in kvm_s390_get_irq_state()
2251 if (copy_to_user(&buf[n], &irq, sizeof(irq))) in kvm_s390_get_irq_state()
2253 n += sizeof(irq); in kvm_s390_get_irq_state()
2260 if (n + sizeof(irq) > len) in kvm_s390_get_irq_state()
2262 memset(&irq, 0, sizeof(irq)); in kvm_s390_get_irq_state()
2263 irq.type = KVM_S390_INT_EXTERNAL_CALL; in kvm_s390_get_irq_state()
2264 irq.u.extcall.code = sigp_ctrl & SIGP_CTRL_SCN_MASK; in kvm_s390_get_irq_state()
2265 if (copy_to_user(&buf[n], &irq, sizeof(irq))) in kvm_s390_get_irq_state()
2267 n += sizeof(irq); in kvm_s390_get_irq_state()