static int vcpu_post_run_fault_in_sie(struct kvm_vcpu *vcpu)
{
- u8 opcode;
+ struct kvm_s390_pgm_info pgm_info = {
+ .code = PGM_ADDRESSING,
+ };
+ u8 opcode, ilen;
int rc;
VCPU_EVENT(vcpu, 3, "%s", "fault in sie instruction");
rc = read_guest_instr(vcpu, &opcode, 1);
if (rc)
return kvm_s390_inject_prog_cond(vcpu, rc);
- kvm_s390_forward_psw(vcpu, insn_length(opcode));
-
- return kvm_s390_inject_program_int(vcpu, PGM_ADDRESSING);
+ ilen = insn_length(opcode);
+ pgm_info.flags = ilen | KVM_S390_PGM_FLAGS_ILC_VALID;
+ kvm_s390_forward_psw(vcpu, ilen);
+ return kvm_s390_inject_prog_irq(vcpu, &pgm_info);
}
static int vcpu_post_run(struct kvm_vcpu *vcpu, int exit_reason)