diff options
Diffstat (limited to 'arch/powerpc/kvm/book3s.c')
-rw-r--r-- | arch/powerpc/kvm/book3s.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c index 1a4d787df507..700df6f1d32c 100644 --- a/arch/powerpc/kvm/book3s.c +++ b/arch/powerpc/kvm/book3s.c | |||
@@ -535,6 +535,15 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) | |||
535 | &opcode, sizeof(u32)); | 535 | &opcode, sizeof(u32)); |
536 | break; | 536 | break; |
537 | } | 537 | } |
538 | #ifdef CONFIG_KVM_XICS | ||
539 | case KVM_REG_PPC_ICP_STATE: | ||
540 | if (!vcpu->arch.icp) { | ||
541 | r = -ENXIO; | ||
542 | break; | ||
543 | } | ||
544 | val = get_reg_val(reg->id, kvmppc_xics_get_icp(vcpu)); | ||
545 | break; | ||
546 | #endif /* CONFIG_KVM_XICS */ | ||
538 | default: | 547 | default: |
539 | r = -EINVAL; | 548 | r = -EINVAL; |
540 | break; | 549 | break; |
@@ -597,6 +606,16 @@ int kvm_vcpu_ioctl_set_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) | |||
597 | vcpu->arch.vscr.u[3] = set_reg_val(reg->id, val); | 606 | vcpu->arch.vscr.u[3] = set_reg_val(reg->id, val); |
598 | break; | 607 | break; |
599 | #endif /* CONFIG_ALTIVEC */ | 608 | #endif /* CONFIG_ALTIVEC */ |
609 | #ifdef CONFIG_KVM_XICS | ||
610 | case KVM_REG_PPC_ICP_STATE: | ||
611 | if (!vcpu->arch.icp) { | ||
612 | r = -ENXIO; | ||
613 | break; | ||
614 | } | ||
615 | r = kvmppc_xics_set_icp(vcpu, | ||
616 | set_reg_val(reg->id, val)); | ||
617 | break; | ||
618 | #endif /* CONFIG_KVM_XICS */ | ||
600 | default: | 619 | default: |
601 | r = -EINVAL; | 620 | r = -EINVAL; |
602 | break; | 621 | break; |