From: Michael Mueller <mimu@xxxxxxxxxxxxx> Similar to external interrupts, the hypervisor can inject machine checks by providing the right data in the interrupt injection controls. Signed-off-by: Michael Mueller <mimu@xxxxxxxxxxxxx> --- arch/s390/kvm/interrupt.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index c919dfe4dfd3..1f87c7d3fa3e 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c @@ -568,6 +568,14 @@ static int __write_machine_check(struct kvm_vcpu *vcpu, union mci mci; int rc; + if (kvm_s390_pv_is_protected(vcpu->kvm)) { + vcpu->arch.sie_block->iictl = IICTL_CODE_MCHK; + vcpu->arch.sie_block->mcic = mchk->mcic; + vcpu->arch.sie_block->faddr = mchk->failing_storage_address; + vcpu->arch.sie_block->edc = mchk->ext_damage_code; + return 0; + } + mci.val = mchk->mcic; /* take care of lazy register loading */ save_fpu_regs(); -- 2.20.1