Commit c1b8bfb0 authored by Paolo Bonzini's avatar Paolo Bonzini

Merge tag 'kvm-s390-master-4.7-1' of...

Merge tag 'kvm-s390-master-4.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD

KVM: s390: fixup and missing stat

1. A fixup for a bug that was introduced in 4.7-rc1 if userspace uses
   the cpu model ioctls
2. Add the missing kvm stat for pei events
parents af8c34ce 9ec6de19
...@@ -245,6 +245,7 @@ struct kvm_vcpu_stat { ...@@ -245,6 +245,7 @@ struct kvm_vcpu_stat {
u32 exit_stop_request; u32 exit_stop_request;
u32 exit_validity; u32 exit_validity;
u32 exit_instruction; u32 exit_instruction;
u32 exit_pei;
u32 halt_successful_poll; u32 halt_successful_poll;
u32 halt_attempted_poll; u32 halt_attempted_poll;
u32 halt_poll_invalid; u32 halt_poll_invalid;
......
...@@ -341,6 +341,8 @@ static int handle_mvpg_pei(struct kvm_vcpu *vcpu) ...@@ -341,6 +341,8 @@ static int handle_mvpg_pei(struct kvm_vcpu *vcpu)
static int handle_partial_execution(struct kvm_vcpu *vcpu) static int handle_partial_execution(struct kvm_vcpu *vcpu)
{ {
vcpu->stat.exit_pei++;
if (vcpu->arch.sie_block->ipa == 0xb254) /* MVPG */ if (vcpu->arch.sie_block->ipa == 0xb254) /* MVPG */
return handle_mvpg_pei(vcpu); return handle_mvpg_pei(vcpu);
if (vcpu->arch.sie_block->ipa >> 8 == 0xae) /* SIGP */ if (vcpu->arch.sie_block->ipa >> 8 == 0xae) /* SIGP */
......
...@@ -61,6 +61,7 @@ struct kvm_stats_debugfs_item debugfs_entries[] = { ...@@ -61,6 +61,7 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
{ "exit_external_request", VCPU_STAT(exit_external_request) }, { "exit_external_request", VCPU_STAT(exit_external_request) },
{ "exit_external_interrupt", VCPU_STAT(exit_external_interrupt) }, { "exit_external_interrupt", VCPU_STAT(exit_external_interrupt) },
{ "exit_instruction", VCPU_STAT(exit_instruction) }, { "exit_instruction", VCPU_STAT(exit_instruction) },
{ "exit_pei", VCPU_STAT(exit_pei) },
{ "exit_program_interruption", VCPU_STAT(exit_program_interruption) }, { "exit_program_interruption", VCPU_STAT(exit_program_interruption) },
{ "exit_instr_and_program_int", VCPU_STAT(exit_instr_and_program) }, { "exit_instr_and_program_int", VCPU_STAT(exit_instr_and_program) },
{ "halt_successful_poll", VCPU_STAT(halt_successful_poll) }, { "halt_successful_poll", VCPU_STAT(halt_successful_poll) },
...@@ -657,7 +658,7 @@ static int kvm_s390_set_processor(struct kvm *kvm, struct kvm_device_attr *attr) ...@@ -657,7 +658,7 @@ static int kvm_s390_set_processor(struct kvm *kvm, struct kvm_device_attr *attr)
kvm->arch.model.cpuid = proc->cpuid; kvm->arch.model.cpuid = proc->cpuid;
lowest_ibc = sclp.ibc >> 16 & 0xfff; lowest_ibc = sclp.ibc >> 16 & 0xfff;
unblocked_ibc = sclp.ibc & 0xfff; unblocked_ibc = sclp.ibc & 0xfff;
if (lowest_ibc) { if (lowest_ibc && proc->ibc) {
if (proc->ibc > unblocked_ibc) if (proc->ibc > unblocked_ibc)
kvm->arch.model.ibc = unblocked_ibc; kvm->arch.model.ibc = unblocked_ibc;
else if (proc->ibc < lowest_ibc) else if (proc->ibc < lowest_ibc)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment