kvm-s390.c (60dd57c7479418e2bc902143eb46a2fdcfeecbbb) | kvm-s390.c (67cf68b6a5ccac8bc7dfef0a220b59af4c83fd2c) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * hosting IBM Z kernel virtual machines (s390x) 4 * 5 * Copyright IBM Corp. 2008, 2020 6 * 7 * Author(s): Carsten Otte <cotte@de.ibm.com> 8 * Christian Borntraeger <borntraeger@de.ibm.com> --- 2473 unchanged lines hidden (view full) --- 2482 mutex_lock(&kvm->slots_lock); 2483 r = kvm_s390_set_cmma_bits(kvm, &args); 2484 mutex_unlock(&kvm->slots_lock); 2485 break; 2486 } 2487 case KVM_S390_PV_COMMAND: { 2488 struct kvm_pv_cmd args; 2489 | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * hosting IBM Z kernel virtual machines (s390x) 4 * 5 * Copyright IBM Corp. 2008, 2020 6 * 7 * Author(s): Carsten Otte <cotte@de.ibm.com> 8 * Christian Borntraeger <borntraeger@de.ibm.com> --- 2473 unchanged lines hidden (view full) --- 2482 mutex_lock(&kvm->slots_lock); 2483 r = kvm_s390_set_cmma_bits(kvm, &args); 2484 mutex_unlock(&kvm->slots_lock); 2485 break; 2486 } 2487 case KVM_S390_PV_COMMAND: { 2488 struct kvm_pv_cmd args; 2489 |
2490 /* protvirt means user sigp */ 2491 kvm->arch.user_cpu_state_ctrl = 1; | 2490 /* protvirt means user cpu state */ 2491 kvm_s390_set_user_cpu_state_ctrl(kvm); |
2492 r = 0; 2493 if (!is_prot_virt_host()) { 2494 r = -EINVAL; 2495 break; 2496 } 2497 if (copy_from_user(&args, argp, sizeof(args))) { 2498 r = -EFAULT; 2499 break; --- 858 unchanged lines hidden (view full) --- 3358 gmap_remove(vcpu->arch.gmap); 3359out_free_sie_block: 3360 free_page((unsigned long)(vcpu->arch.sie_block)); 3361 return rc; 3362} 3363 3364int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) 3365{ | 2492 r = 0; 2493 if (!is_prot_virt_host()) { 2494 r = -EINVAL; 2495 break; 2496 } 2497 if (copy_from_user(&args, argp, sizeof(args))) { 2498 r = -EFAULT; 2499 break; --- 858 unchanged lines hidden (view full) --- 3358 gmap_remove(vcpu->arch.gmap); 3359out_free_sie_block: 3360 free_page((unsigned long)(vcpu->arch.sie_block)); 3361 return rc; 3362} 3363 3364int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) 3365{ |
3366 clear_bit(vcpu->vcpu_idx, vcpu->kvm->arch.gisa_int.kicked_mask); |
|
3366 return kvm_s390_vcpu_has_irq(vcpu, 0); 3367} 3368 3369bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu) 3370{ 3371 return !(vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE); 3372} 3373 --- 422 unchanged lines hidden (view full) --- 3796int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, 3797 struct kvm_mp_state *mp_state) 3798{ 3799 int rc = 0; 3800 3801 vcpu_load(vcpu); 3802 3803 /* user space knows about this interface - let it control the state */ | 3367 return kvm_s390_vcpu_has_irq(vcpu, 0); 3368} 3369 3370bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu) 3371{ 3372 return !(vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE); 3373} 3374 --- 422 unchanged lines hidden (view full) --- 3797int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, 3798 struct kvm_mp_state *mp_state) 3799{ 3800 int rc = 0; 3801 3802 vcpu_load(vcpu); 3803 3804 /* user space knows about this interface - let it control the state */ |
3804 vcpu->kvm->arch.user_cpu_state_ctrl = 1; | 3805 kvm_s390_set_user_cpu_state_ctrl(vcpu->kvm); |
3805 3806 switch (mp_state->mp_state) { 3807 case KVM_MP_STATE_STOPPED: 3808 rc = kvm_s390_vcpu_stop(vcpu); 3809 break; 3810 case KVM_MP_STATE_OPERATING: 3811 rc = kvm_s390_vcpu_start(vcpu); 3812 break; --- 1312 unchanged lines hidden --- | 3806 3807 switch (mp_state->mp_state) { 3808 case KVM_MP_STATE_STOPPED: 3809 rc = kvm_s390_vcpu_stop(vcpu); 3810 break; 3811 case KVM_MP_STATE_OPERATING: 3812 rc = kvm_s390_vcpu_start(vcpu); 3813 break; --- 1312 unchanged lines hidden --- |