Browse Source

KVM: s390: implements the kvm_arch_vcpu_in_kernel()

This implements kvm_arch_vcpu_in_kernel() for s390.  DIAG is a privileged
operation, so it cannot be called from problem state (user mode).

Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Longpeng(Mike) 8 years ago
parent
commit
0546c63d98
2 changed files with 2 additions and 2 deletions
  1. 1 1
      arch/s390/kvm/diag.c
  2. 1 1
      arch/s390/kvm/kvm-s390.c

+ 1 - 1
arch/s390/kvm/diag.c

@@ -150,7 +150,7 @@ static int __diag_time_slice_end(struct kvm_vcpu *vcpu)
 {
 	VCPU_EVENT(vcpu, 5, "%s", "diag time slice end");
 	vcpu->stat.diagnose_44++;
-	kvm_vcpu_on_spin(vcpu, false);
+	kvm_vcpu_on_spin(vcpu, true);
 	return 0;
 }
 

+ 1 - 1
arch/s390/kvm/kvm-s390.c

@@ -2449,7 +2449,7 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu)
 
 bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu)
 {
-	return false;
+	return !(vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE);
 }
 
 void kvm_s390_vcpu_block(struct kvm_vcpu *vcpu)