Skip to content

Commit

Permalink
KVM: s390: handle machine checks when guest is running
Browse files Browse the repository at this point in the history
The low-level interrupt handler on s390 checks for _TIF_WORK_INT and
exits the guest context, if work is pending.
TIF_WORK_INT is defined as_TIF_SIGPENDING | _TIF_NEED_RESCHED |
 _TIF_MCCK_PENDING. Currently the sie loop checks for signals and
reschedule, but it does not check for machine checks. That means that
we exit the guest context if a machine check is pending, but we do not
handle the machine check.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
CC: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
  • Loading branch information
Christian Borntraeger authored and Avi Kivity committed Jun 6, 2008
1 parent 74b6b52 commit 71cde58
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 0 deletions.
5 changes: 5 additions & 0 deletions arch/s390/kvm/kvm-s390.c
Original file line number Diff line number Diff line change
Expand Up @@ -423,13 +423,18 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,
return -EINVAL; /* not implemented yet */
}

extern void s390_handle_mcck(void);

static void __vcpu_run(struct kvm_vcpu *vcpu)
{
memcpy(&vcpu->arch.sie_block->gg14, &vcpu->arch.guest_gprs[14], 16);

if (need_resched())
schedule();

if (test_thread_flag(TIF_MCCK_PENDING))
s390_handle_mcck();

vcpu->arch.sie_block->icptcode = 0;
local_irq_disable();
kvm_guest_enter();
Expand Down
1 change: 1 addition & 0 deletions drivers/s390/s390mach.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ s390_handle_mcck(void)
do_exit(SIGSEGV);
}
}
EXPORT_SYMBOL_GPL(s390_handle_mcck);

/*
* returns 0 if all registers could be validated
Expand Down

0 comments on commit 71cde58

Please sign in to comment.