Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:FrontRunner
xen.26345
5db07974-x86-update-time-info-on-TSC-adjustment...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 5db07974-x86-update-time-info-on-TSC-adjustments.patch of Package xen.26345
# Commit 7eee9c16d6405a1a1f2e8c6472923db842c90cfb # Date 2019-10-23 17:01:56 +0100 # Author Roger Pau Monné <roger.pau@citrix.com> # Committer Andrew Cooper <andrew.cooper3@citrix.com> x86/tsc: update vcpu time info on guest TSC adjustments If a HVM/PVH guest writes to MSR_IA32_TSC{_ADJUST} and thus changes the value of the time stamp counter the vcpu time info must also be updated, or the time calculated by the guest using the Xen PV clock interface will be skewed. Update the vcpu time info when the guest writes to either MSR_IA32_TSC or MSR_IA32_TSC_ADJUST. This fixes lockups seen when running the pv-shim on AMD hardware, since the shim will aggressively try to keep TSCs in sync by periodically writing to MSR_IA32_TSC if the TSC is not reliable. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Wei Liu <wl@xen.org> Reviewed-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -426,6 +426,8 @@ static void hvm_set_guest_tsc_msr(struct hvm_set_guest_tsc(v, guest_tsc); v->arch.hvm_vcpu.msr_tsc_adjust += v->arch.hvm_vcpu.cache_tsc_offset - tsc_offset; + if ( v == current ) + update_vcpu_system_time(v); } static void hvm_set_guest_tsc_adjust(struct vcpu *v, u64 tsc_adjust) @@ -434,6 +436,8 @@ static void hvm_set_guest_tsc_adjust(str - v->arch.hvm_vcpu.msr_tsc_adjust; hvm_funcs.set_tsc_offset(v, v->arch.hvm_vcpu.cache_tsc_offset, 0); v->arch.hvm_vcpu.msr_tsc_adjust = tsc_adjust; + if ( v == current ) + update_vcpu_system_time(v); } u64 hvm_get_guest_tsc_fixed(struct vcpu *v, uint64_t at_tsc)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor