Commit 4bacd723 authored by Marc Zyngier's avatar Marc Zyngier

KVM: arm64: Exclude mdcr_el2_host from kvm_vcpu_arch

As for the rest of the host debug state, the host copy of mdcr_el2
has little to do in the vcpu, and is better placed in the host_data
structure.

Reviewed-by : Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parent 6db55734
...@@ -555,6 +555,8 @@ struct kvm_host_data { ...@@ -555,6 +555,8 @@ struct kvm_host_data {
u64 pmscr_el1; u64 pmscr_el1;
/* Self-hosted trace */ /* Self-hosted trace */
u64 trfcr_el1; u64 trfcr_el1;
/* Values of trap registers for the host before guest entry. */
u64 mdcr_el2;
} host_debug_state; } host_debug_state;
}; };
...@@ -616,9 +618,6 @@ struct kvm_vcpu_arch { ...@@ -616,9 +618,6 @@ struct kvm_vcpu_arch {
u64 mdcr_el2; u64 mdcr_el2;
u64 cptr_el2; u64 cptr_el2;
/* Values of trap registers for the host before guest entry. */
u64 mdcr_el2_host;
/* Exception Information */ /* Exception Information */
struct kvm_vcpu_fault_info fault; struct kvm_vcpu_fault_info fault;
......
...@@ -232,7 +232,7 @@ static inline void __activate_traps_common(struct kvm_vcpu *vcpu) ...@@ -232,7 +232,7 @@ static inline void __activate_traps_common(struct kvm_vcpu *vcpu)
vcpu_set_flag(vcpu, PMUSERENR_ON_CPU); vcpu_set_flag(vcpu, PMUSERENR_ON_CPU);
} }
vcpu->arch.mdcr_el2_host = read_sysreg(mdcr_el2); *host_data_ptr(host_debug_state.mdcr_el2) = read_sysreg(mdcr_el2);
write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2); write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
if (cpus_have_final_cap(ARM64_HAS_HCX)) { if (cpus_have_final_cap(ARM64_HAS_HCX)) {
...@@ -254,7 +254,7 @@ static inline void __activate_traps_common(struct kvm_vcpu *vcpu) ...@@ -254,7 +254,7 @@ static inline void __activate_traps_common(struct kvm_vcpu *vcpu)
static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu) static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu)
{ {
write_sysreg(vcpu->arch.mdcr_el2_host, mdcr_el2); write_sysreg(*host_data_ptr(host_debug_state.mdcr_el2), mdcr_el2);
write_sysreg(0, hstr_el2); write_sysreg(0, hstr_el2);
if (kvm_arm_support_pmu_v3()) { if (kvm_arm_support_pmu_v3()) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment