diff options
Diffstat (limited to 'arch/powerpc/kvm/book3s.c')
| -rw-r--r-- | arch/powerpc/kvm/book3s.c | 27 | 
1 files changed, 26 insertions, 1 deletions
diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c index 2d32ae4bc439..700df6f1d32c 100644 --- a/arch/powerpc/kvm/book3s.c +++ b/arch/powerpc/kvm/book3s.c @@ -104,7 +104,7 @@ static int kvmppc_book3s_vec2irqprio(unsigned int vec)  	return prio;  } -static void kvmppc_book3s_dequeue_irqprio(struct kvm_vcpu *vcpu, +void kvmppc_book3s_dequeue_irqprio(struct kvm_vcpu *vcpu,  					  unsigned int vec)  {  	unsigned long old_pending = vcpu->arch.pending_exceptions; @@ -535,6 +535,15 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg)  					 &opcode, sizeof(u32));  			break;  		} +#ifdef CONFIG_KVM_XICS +		case KVM_REG_PPC_ICP_STATE: +			if (!vcpu->arch.icp) { +				r = -ENXIO; +				break; +			} +			val = get_reg_val(reg->id, kvmppc_xics_get_icp(vcpu)); +			break; +#endif /* CONFIG_KVM_XICS */  		default:  			r = -EINVAL;  			break; @@ -597,6 +606,16 @@ int kvm_vcpu_ioctl_set_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg)  			vcpu->arch.vscr.u[3] = set_reg_val(reg->id, val);  			break;  #endif /* CONFIG_ALTIVEC */ +#ifdef CONFIG_KVM_XICS +		case KVM_REG_PPC_ICP_STATE: +			if (!vcpu->arch.icp) { +				r = -ENXIO; +				break; +			} +			r = kvmppc_xics_set_icp(vcpu, +						set_reg_val(reg->id, val)); +			break; +#endif /* CONFIG_KVM_XICS */  		default:  			r = -EINVAL;  			break; @@ -612,6 +631,12 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,  	return 0;  } +int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, +					struct kvm_guest_debug *dbg) +{ +	return -EINVAL; +} +  void kvmppc_decrementer_func(unsigned long data)  {  	struct kvm_vcpu *vcpu = (struct kvm_vcpu *)data;  | 
