hv: code clean up regarding to guest_msrs

Change guest_msrs in vcpu data structure from pointer to array, which
could avoid the dynamic memory allocation.

v1 -> v2:
 * Remove the unnecessary initialization for guest_msrs[] since vcpu is
   allocated by calloc.

Tracked-On: #861
Signed-off-by: Shiqing Gao <shiqing.gao@intel.com>
Acked-by: Anthony Xu <anthony.xu@intel.com>
This commit is contained in:
Shiqing Gao 2018-08-24 16:21:59 +08:00 committed by lijinxia
parent 947e86db09
commit 2a184f353c
3 changed files with 1 additions and 10 deletions

View File

@ -385,7 +385,6 @@ void destroy_vcpu(struct vcpu *vcpu)
vlapic_free(vcpu); vlapic_free(vcpu);
free(vcpu->arch_vcpu.vmcs); free(vcpu->arch_vcpu.vmcs);
free(vcpu->guest_msrs);
per_cpu(ever_run_vcpu, vcpu->pcpu_id) = NULL; per_cpu(ever_run_vcpu, vcpu->pcpu_id) = NULL;
free_pcpu(vcpu->pcpu_id); free_pcpu(vcpu->pcpu_id);
free(vcpu); free(vcpu);

View File

@ -105,14 +105,6 @@ void init_msr_emulation(struct vcpu *vcpu)
value64 = HVA2HPA(vcpu->vm->arch_vm.msr_bitmap); value64 = HVA2HPA(vcpu->vm->arch_vm.msr_bitmap);
exec_vmwrite64(VMX_MSR_BITMAP_FULL, value64); exec_vmwrite64(VMX_MSR_BITMAP_FULL, value64);
pr_dbg("VMX_MSR_BITMAP: 0x%016llx ", value64); pr_dbg("VMX_MSR_BITMAP: 0x%016llx ", value64);
if (!vcpu->guest_msrs) {
vcpu->guest_msrs =
(uint64_t *)calloc(msrs_count, sizeof(uint64_t));
}
ASSERT(vcpu->guest_msrs != NULL, "");
(void)memset(vcpu->guest_msrs, 0U, msrs_count * sizeof(uint64_t));
} }
int rdmsr_vmexit_handler(struct vcpu *vcpu) int rdmsr_vmexit_handler(struct vcpu *vcpu)

View File

@ -240,7 +240,7 @@ struct vcpu {
* code. * code.
*/ */
uint64_t msr_tsc_aux_guest; uint64_t msr_tsc_aux_guest;
uint64_t *guest_msrs; uint64_t guest_msrs[IDX_MAX_MSR];
#ifdef CONFIG_MTRR_ENABLED #ifdef CONFIG_MTRR_ENABLED
struct mtrr_state mtrr; struct mtrr_state mtrr;
#endif #endif