On Wed, Oct 23, 2019 at 01:05:14PM +0200, Roger Pau Monné wrote:
> On Wed, Oct 23, 2019 at 11:55:13AM +0100, Wei Liu wrote:
> > 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....@citrix.com>
> > > ---
> > > Cc: Jürgen Groß <jgr...@suse.com>
> > > ---
> > >  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)?
> 
> If the vcpu is not running the update will be done by the scheduling
> code in schedule_tail. Calling update_vcpu_system_time unconditionally
> would work, I was just trying to avoid the overhead if it's not really
> needed.
> 

Fair enough.

Reviewed-by: Wei Liu <w...@xen.org>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to