提交 88d8220b 编写于 作者: W Wanpeng Li 提交者: Thomas Gleixner

context_tracking: Move guest exit vtime accounting to separate helpers

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: NThomas Gleixner <tglx@linutronix.de>
Signed-off-by: NWanpeng Li <wanpengli@tencent.com>
Co-developed-by: NSean Christopherson <seanjc@google.com>
Signed-off-by: NSean Christopherson <seanjc@google.com>
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
Reviewed-by: NChristian Borntraeger <borntraeger@de.ibm.com>
Link: https://lore.kernel.org/r/20210505002735.1684165-3-seanjc@google.com
上级 866a6dad
无相关合并请求
......@@ -137,15 +137,20 @@ static __always_inline void context_tracking_guest_exit(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();
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();
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(void) { }
static __always_inline void vtime_account_guest_exit(void)
{
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_kernel(current);
current->flags &= ~PF_VCPU;
vtime_account_guest_exit();
instrumentation_end();
}
#endif /* CONFIG_VIRT_CPU_ACCOUNTING_GEN */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
反馈
建议
客服 返回
顶部