diff options
-rw-r--r-- | arch/powerpc/include/asm/kvm_host.h | 1 | ||||
-rw-r--r-- | arch/powerpc/kvm/e500_emulate.c | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h index 62b2cee450a5..faf2f0e56bb8 100644 --- a/arch/powerpc/include/asm/kvm_host.h +++ b/arch/powerpc/include/asm/kvm_host.h | |||
@@ -584,6 +584,7 @@ struct kvm_vcpu_arch { | |||
584 | u32 mmucfg; | 584 | u32 mmucfg; |
585 | u32 eptcfg; | 585 | u32 eptcfg; |
586 | u32 epr; | 586 | u32 epr; |
587 | u32 pwrmgtcr0; | ||
587 | u32 crit_save; | 588 | u32 crit_save; |
588 | /* guest debug registers*/ | 589 | /* guest debug registers*/ |
589 | struct debug_reg dbg_reg; | 590 | struct debug_reg dbg_reg; |
diff --git a/arch/powerpc/kvm/e500_emulate.c b/arch/powerpc/kvm/e500_emulate.c index 002d51764143..c99c40e9182a 100644 --- a/arch/powerpc/kvm/e500_emulate.c +++ b/arch/powerpc/kvm/e500_emulate.c | |||
@@ -250,6 +250,14 @@ int kvmppc_core_emulate_mtspr_e500(struct kvm_vcpu *vcpu, int sprn, ulong spr_va | |||
250 | spr_val); | 250 | spr_val); |
251 | break; | 251 | break; |
252 | 252 | ||
253 | case SPRN_PWRMGTCR0: | ||
254 | /* | ||
255 | * Guest relies on host power management configurations | ||
256 | * Treat the request as a general store | ||
257 | */ | ||
258 | vcpu->arch.pwrmgtcr0 = spr_val; | ||
259 | break; | ||
260 | |||
253 | /* extra exceptions */ | 261 | /* extra exceptions */ |
254 | case SPRN_IVOR32: | 262 | case SPRN_IVOR32: |
255 | vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL] = spr_val; | 263 | vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL] = spr_val; |
@@ -368,6 +376,10 @@ int kvmppc_core_emulate_mfspr_e500(struct kvm_vcpu *vcpu, int sprn, ulong *spr_v | |||
368 | *spr_val = vcpu->arch.eptcfg; | 376 | *spr_val = vcpu->arch.eptcfg; |
369 | break; | 377 | break; |
370 | 378 | ||
379 | case SPRN_PWRMGTCR0: | ||
380 | *spr_val = vcpu->arch.pwrmgtcr0; | ||
381 | break; | ||
382 | |||
371 | /* extra exceptions */ | 383 | /* extra exceptions */ |
372 | case SPRN_IVOR32: | 384 | case SPRN_IVOR32: |
373 | *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL]; | 385 | *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL]; |