[tip: x86/urgent] context_tracking: Move guest exit context tracking to separate helpers

From: tip-bot2 for Wanpeng Li
Date: Thu May 06 2021 - 08:14:27 EST


The following commit has been merged into the x86/urgent branch of tip:

Commit-ID: 866a6dadbb027b2955a7ae00bab9705d382def12
Gitweb: https://git.kernel.org/tip/866a6dadbb027b2955a7ae00bab9705d382def12
Author: Wanpeng Li <wanpengli@xxxxxxxxxxx>
AuthorDate: Tue, 04 May 2021 17:27:28 -07:00
Committer: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
CommitterDate: Wed, 05 May 2021 22:54:10 +02:00

context_tracking: Move guest exit context tracking to separate helpers

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@xxxxxxxxxxxxx>
Signed-off-by: Wanpeng Li <wanpengli@xxxxxxxxxxx>
Co-developed-by: Sean Christopherson <seanjc@xxxxxxxxxx>
Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Link: https://lore.kernel.org/r/20210505002735.1684165-2-seanjc@xxxxxxxxxx

---
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 bceb064..b8c7313 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(void)
{
if (context_tracking_enabled())
__context_tracking_exit(CONTEXT_GUEST);
+}
+
+static __always_inline void guest_exit_irqoff(void)
+{
+ context_tracking_guest_exit();

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(void) { }
+
static __always_inline void guest_exit_irqoff(void)
{
instrumentation_begin();