diff options
| -rw-r--r-- | arch/arm64/include/asm/kvm_emulate.h | 2 | ||||
| -rw-r--r-- | arch/arm64/kvm/reset.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h index 8127e45e2637..865a7e28ea2d 100644 --- a/arch/arm64/include/asm/kvm_emulate.h +++ b/arch/arm64/include/asm/kvm_emulate.h | |||
| @@ -41,6 +41,8 @@ void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr); | |||
| 41 | static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu) | 41 | static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu) |
| 42 | { | 42 | { |
| 43 | vcpu->arch.hcr_el2 = HCR_GUEST_FLAGS; | 43 | vcpu->arch.hcr_el2 = HCR_GUEST_FLAGS; |
| 44 | if (test_bit(KVM_ARM_VCPU_EL1_32BIT, vcpu->arch.features)) | ||
| 45 | vcpu->arch.hcr_el2 &= ~HCR_RW; | ||
| 44 | } | 46 | } |
| 45 | 47 | ||
| 46 | static inline unsigned long *vcpu_pc(const struct kvm_vcpu *vcpu) | 48 | static inline unsigned long *vcpu_pc(const struct kvm_vcpu *vcpu) |
diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c index 70a7816535cd..0b4326578985 100644 --- a/arch/arm64/kvm/reset.c +++ b/arch/arm64/kvm/reset.c | |||
| @@ -90,7 +90,6 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu) | |||
| 90 | if (!cpu_has_32bit_el1()) | 90 | if (!cpu_has_32bit_el1()) |
| 91 | return -EINVAL; | 91 | return -EINVAL; |
| 92 | cpu_reset = &default_regs_reset32; | 92 | cpu_reset = &default_regs_reset32; |
| 93 | vcpu->arch.hcr_el2 &= ~HCR_RW; | ||
| 94 | } else { | 93 | } else { |
| 95 | cpu_reset = &default_regs_reset; | 94 | cpu_reset = &default_regs_reset; |
| 96 | } | 95 | } |
