mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-12-16 01:42:39 +00:00
hv: cache tsc_offset
Guest write tsc: cache the offset into run_context.tsc_offset; Guest read tsc : use run_context.tsc_offset to calculate guest_tsc. Signed-off-by: Qi Yadong <yadong.qi@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
@@ -481,9 +481,8 @@ static int rdtsc_handler(struct vcpu *vcpu)
|
||||
/* Read the host TSC value */
|
||||
CPU_RDTSCP_EXECUTE(&host_tsc, &id);
|
||||
|
||||
/* Get the guest TSC offset value from VMCS */
|
||||
tsc_offset =
|
||||
exec_vmread64(VMX_TSC_OFFSET_FULL);
|
||||
/* Get current world's TSC offset */
|
||||
tsc_offset = cur_context->tsc_offset;
|
||||
|
||||
/* Update the guest TSC value by following: TSC_guest = TSC_host +
|
||||
* TSC_guest_Offset
|
||||
@@ -509,9 +508,8 @@ static int rdtscp_handler(struct vcpu *vcpu)
|
||||
/* Read the host TSC value */
|
||||
CPU_RDTSCP_EXECUTE(&host_tsc, &id);
|
||||
|
||||
/* Get the guest TSC offset value from VMCS */
|
||||
tsc_offset =
|
||||
exec_vmread64(VMX_TSC_OFFSET_FULL);
|
||||
/* Get current world's TSC offset */
|
||||
tsc_offset = cur_context->tsc_offset;
|
||||
|
||||
/* Update the guest TSC value by following: * TSC_guest = TSC_host +
|
||||
* TSC_guest_Offset
|
||||
|
||||
Reference in New Issue
Block a user