提交 84b8eab1 编写于 作者: W Wanpeng Li 提交者: Zheng Zengkai

context_tracking: Move guest exit vtime accounting to separate helpers

stable inclusion
from stable-5.10.41
commit 77068304b30f553b05934224146813d3cdcaa12c
bugzilla: 51890
CVE: NA

--------------------------------

commit 88d8220b upstream.

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.comSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Acked-by: NWeilong Chen <chenweilong@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 f89b710f
......@@ -135,15 +135,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();
}
......@@ -164,12 +169,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.
先完成此消息的编辑!
想要评论请 注册