hv: nested: refine vmcs12_read/write_field APIs

Change "uint64_t vmcs_hva" to "void *vmcs_hva" in the input argument,
list, so that no type casting is needed when calling them from pointers.

Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Zide Chen 2021-09-14 09:25:39 -07:00 committed by wenlingz
parent e03f0045dc
commit ee12daff84
1 changed files with 6 additions and 6 deletions

View File

@ -476,7 +476,7 @@ static uint16_t vmcs_field_to_vmcs12_offset(uint32_t vmcs_field)
* Given a vmcs field and the pointer to the vmcs12, this API returns the * Given a vmcs field and the pointer to the vmcs12, this API returns the
* corresponding value from the VMCS * corresponding value from the VMCS
*/ */
static uint64_t vmcs12_read_field(uint64_t vmcs_hva, uint32_t field) static uint64_t vmcs12_read_field(void *vmcs_hva, uint32_t field)
{ {
uint64_t *ptr = (uint64_t *)(vmcs_hva + vmcs_field_to_vmcs12_offset(field)); uint64_t *ptr = (uint64_t *)(vmcs_hva + vmcs_field_to_vmcs12_offset(field));
uint64_t val64 = 0UL; uint64_t val64 = 0UL;
@ -507,7 +507,7 @@ static uint64_t vmcs12_read_field(uint64_t vmcs_hva, uint32_t field)
/* /*
* Write the given VMCS field to the given vmcs12 data structure. * Write the given VMCS field to the given vmcs12 data structure.
*/ */
static void vmcs12_write_field(uint64_t vmcs_hva, uint32_t field, uint64_t val64) static void vmcs12_write_field(void *vmcs_hva, uint32_t field, uint64_t val64)
{ {
uint64_t *ptr = (uint64_t *)(vmcs_hva + vmcs_field_to_vmcs12_offset(field)); uint64_t *ptr = (uint64_t *)(vmcs_hva + vmcs_field_to_vmcs12_offset(field));
@ -899,7 +899,7 @@ int32_t vmread_vmexit_handler(struct acrn_vcpu *vcpu)
} else { } else {
/* TODO: VMfailValid for invalid VMCS fields */ /* TODO: VMfailValid for invalid VMCS fields */
vmcs_field = (uint32_t)vcpu_get_gpreg(vcpu, VMX_II_REG2(info)); vmcs_field = (uint32_t)vcpu_get_gpreg(vcpu, VMX_II_REG2(info));
vmcs_value = vmcs12_read_field((uint64_t)&cur_vvmcs->vmcs12, vmcs_field); vmcs_value = vmcs12_read_field(&cur_vvmcs->vmcs12, vmcs_field);
/* Currently ACRN doesn't support 32bits L1 hypervisor, assuming operands are 64 bits */ /* Currently ACRN doesn't support 32bits L1 hypervisor, assuming operands are 64 bits */
if (VMX_II_IS_REG(info)) { if (VMX_II_IS_REG(info)) {
@ -967,7 +967,7 @@ int32_t vmwrite_vmexit_handler(struct acrn_vcpu *vcpu)
} }
pr_dbg("vmcs_field: %x vmcs_value: %llx", vmcs_field, vmcs_value); pr_dbg("vmcs_field: %x vmcs_value: %llx", vmcs_field, vmcs_value);
vmcs12_write_field((uint64_t)&cur_vvmcs->vmcs12, vmcs_field, vmcs_value); vmcs12_write_field(&cur_vvmcs->vmcs12, vmcs_field, vmcs_value);
nested_vmx_result(VMsucceed, 0); nested_vmx_result(VMsucceed, 0);
} }
} }
@ -989,7 +989,7 @@ static void sync_vmcs02_to_vmcs12(struct acrn_vmcs12 *vmcs12)
for (idx = 0; idx < MAX_SHADOW_VMCS_FIELDS; idx++) { for (idx = 0; idx < MAX_SHADOW_VMCS_FIELDS; idx++) {
val64 = exec_vmread(vmcs_shadowing_fields[idx]); val64 = exec_vmread(vmcs_shadowing_fields[idx]);
vmcs12_write_field((uint64_t)vmcs12, vmcs_shadowing_fields[idx], val64); vmcs12_write_field(vmcs12, vmcs_shadowing_fields[idx], val64);
} }
} }
@ -1038,7 +1038,7 @@ static void sync_vmcs12_to_vmcs02(struct acrn_vcpu *vcpu, struct acrn_vmcs12 *vm
uint32_t idx; uint32_t idx;
for (idx = 0; idx < MAX_SHADOW_VMCS_FIELDS; idx++) { for (idx = 0; idx < MAX_SHADOW_VMCS_FIELDS; idx++) {
val64 = vmcs12_read_field((uint64_t)vmcs12, vmcs_shadowing_fields[idx]); val64 = vmcs12_read_field(vmcs12, vmcs_shadowing_fields[idx]);
exec_vmwrite(vmcs_shadowing_fields[idx], val64); exec_vmwrite(vmcs_shadowing_fields[idx], val64);
} }