[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.13] x86/tsc: update vcpu time info on guest TSC adjustments
On Wed, Oct 23, 2019 at 10:57:39AM +0200, Roger Pau Monne wrote: > 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@xxxxxxxxxx> > --- > Cc: Jürgen Groß <jgross@xxxxxxxx> > --- > xen/arch/x86/hvm/hvm.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c > index 9acd359c99..e4c0425330 100644 > --- a/xen/arch/x86/hvm/hvm.c > +++ b/xen/arch/x86/hvm/hvm.c > @@ -442,6 +442,8 @@ static void hvm_set_guest_tsc_msr(struct vcpu *v, u64 > guest_tsc) > > hvm_set_guest_tsc(v, guest_tsc); > v->arch.hvm.msr_tsc_adjust += v->arch.hvm.cache_tsc_offset - tsc_offset; > + if ( v == current ) > + update_vcpu_system_time(v); Why not get rid of the test and always call update_vcpu_system_time(v)? Wei. > } > > static void hvm_set_guest_tsc_adjust(struct vcpu *v, u64 tsc_adjust) > @@ -449,6 +451,8 @@ static void hvm_set_guest_tsc_adjust(struct vcpu *v, u64 > tsc_adjust) > v->arch.hvm.cache_tsc_offset += tsc_adjust - v->arch.hvm.msr_tsc_adjust; > hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset, 0); > v->arch.hvm.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) > -- > 2.23.0 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |