Message ID | 20210415222106.1643837-2-seanjc@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: Fix tick-based accounting for x86 guests | expand |
On 16.04.21 00:20, Sean Christopherson wrote: > From: Wanpeng Li <wanpengli@tencent.com> > > Provide separate context tracking helpers for guest exit, the standalone > helpers will be called separately by KVM x86 in later patches to fix > tick-based accounting. > > Suggested-by: Thomas Gleixner <tglx@linutronix.de> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Sean Christopherson <seanjc@google.com> > Cc: Michael Tokarev <mjt@tls.msk.ru> > Cc: Christian Borntraeger <borntraeger@de.ibm.com> > Signed-off-by: Wanpeng Li <wanpengli@tencent.com> > Co-developed-by: Sean Christopherson <seanjc@google.com> > Signed-off-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> > --- > include/linux/context_tracking.h | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h > index bceb06498521..200d30cb3a82 100644 > --- a/include/linux/context_tracking.h > +++ b/include/linux/context_tracking.h > @@ -131,10 +131,15 @@ static __always_inline void guest_enter_irqoff(void) > } > } > > -static __always_inline void guest_exit_irqoff(void) > +static __always_inline void context_tracking_guest_exit_irqoff(void) > { > if (context_tracking_enabled()) > __context_tracking_exit(CONTEXT_GUEST); > +} > + > +static __always_inline void guest_exit_irqoff(void) > +{ > + context_tracking_guest_exit_irqoff(); > > instrumentation_begin(); > if (vtime_accounting_enabled_this_cpu()) > @@ -159,6 +164,8 @@ static __always_inline void guest_enter_irqoff(void) > instrumentation_end(); > } > > +static __always_inline void context_tracking_guest_exit_irqoff(void) { } > + > static __always_inline void guest_exit_irqoff(void) > { > instrumentation_begin(); >
On Thu, Apr 15, 2021 at 03:20:58PM -0700, Sean Christopherson wrote: > From: Wanpeng Li <wanpengli@tencent.com> > > Provide separate context tracking helpers for guest exit, the standalone > helpers will be called separately by KVM x86 in later patches to fix > tick-based accounting. > > Suggested-by: Thomas Gleixner <tglx@linutronix.de> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Sean Christopherson <seanjc@google.com> > Cc: Michael Tokarev <mjt@tls.msk.ru> > Cc: Christian Borntraeger <borntraeger@de.ibm.com> > Signed-off-by: Wanpeng Li <wanpengli@tencent.com> > Co-developed-by: Sean Christopherson <seanjc@google.com> > Signed-off-by: Sean Christopherson <seanjc@google.com> > --- > include/linux/context_tracking.h | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h > index bceb06498521..200d30cb3a82 100644 > --- a/include/linux/context_tracking.h > +++ b/include/linux/context_tracking.h > @@ -131,10 +131,15 @@ static __always_inline void guest_enter_irqoff(void) > } > } > > -static __always_inline void guest_exit_irqoff(void) > +static __always_inline void context_tracking_guest_exit_irqoff(void) You can make this context_tracking_guest_exit() since there is no irq-on version. Thanks.
diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h index bceb06498521..200d30cb3a82 100644 --- a/include/linux/context_tracking.h +++ b/include/linux/context_tracking.h @@ -131,10 +131,15 @@ static __always_inline void guest_enter_irqoff(void) } } -static __always_inline void guest_exit_irqoff(void) +static __always_inline void context_tracking_guest_exit_irqoff(void) { if (context_tracking_enabled()) __context_tracking_exit(CONTEXT_GUEST); +} + +static __always_inline void guest_exit_irqoff(void) +{ + context_tracking_guest_exit_irqoff(); instrumentation_begin(); if (vtime_accounting_enabled_this_cpu()) @@ -159,6 +164,8 @@ static __always_inline void guest_enter_irqoff(void) instrumentation_end(); } +static __always_inline void context_tracking_guest_exit_irqoff(void) { } + static __always_inline void guest_exit_irqoff(void) { instrumentation_begin();