Messages in this thread | | | Subject | Re: [PATCH v3 2/9] context_tracking: Move guest exit vtime accounting to separate helpers | From | Christian Borntraeger <> | Date | Tue, 20 Apr 2021 20:48:22 +0200 |
| |
On 16.04.21 00:20, Sean Christopherson wrote: > From: Wanpeng Li <wanpengli@tencent.com> > > Provide separate vtime accounting functions for guest exit instead of > open coding the logic within the context tracking code. This will allow > KVM x86 to handle vtime accounting slightly differently when using > tick-based accounting. > > Suggested-by: Thomas Gleixner <tglx@linutronix.de> > Cc: Thomas Gleixner <tglx@linutronix.de> > 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 | 24 +++++++++++++++++------- > 1 file changed, 17 insertions(+), 7 deletions(-) > > diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h > index 200d30cb3a82..7cf03a8e5708 100644 > --- a/include/linux/context_tracking.h > +++ b/include/linux/context_tracking.h > @@ -137,15 +137,20 @@ static __always_inline void context_tracking_guest_exit_irqoff(void) > __context_tracking_exit(CONTEXT_GUEST); > } > > -static __always_inline void guest_exit_irqoff(void) > +static __always_inline void vtime_account_guest_exit(void) > { > - context_tracking_guest_exit_irqoff(); > - > - instrumentation_begin(); > if (vtime_accounting_enabled_this_cpu()) > vtime_guest_exit(current); > else > current->flags &= ~PF_VCPU; > +} > + > +static __always_inline void guest_exit_irqoff(void) > +{ > + context_tracking_guest_exit_irqoff(); > + > + instrumentation_begin(); > + vtime_account_guest_exit(); > instrumentation_end(); > } > > @@ -166,12 +171,17 @@ static __always_inline void guest_enter_irqoff(void) > > static __always_inline void context_tracking_guest_exit_irqoff(void) { } > > -static __always_inline void guest_exit_irqoff(void) > +static __always_inline void vtime_account_guest_exit(void) > { > - instrumentation_begin(); > - /* Flush the guest cputime we spent on the guest */ > vtime_account_kernel(current); > current->flags &= ~PF_VCPU; > +} > + > +static __always_inline void guest_exit_irqoff(void) > +{ > + instrumentation_begin(); > + /* Flush the guest cputime we spent on the guest */ > + vtime_account_guest_exit(); > instrumentation_end(); > } > #endif /* CONFIG_VIRT_CPU_ACCOUNTING_GEN */ >
| |