Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c06a5d4 authored by Frederic Weisbecker's avatar Frederic Weisbecker
Browse files

arm: Fix build error with context tracking calls



ad65782f (context_tracking: Optimize main APIs off case
with static key) converted context tracking main APIs to inline
function and left ARM asm callers behind.

This can be easily fixed by making ARM calling the post static
keys context tracking function. We just need to replicate the
static key checks there. We'll remove these later when ARM will
support the context tracking static keys.

Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
Reported-by: default avatarRussell King <linux@arm.linux.org.uk>
Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
Tested-by: default avatarKevin Hilman <khilman@linaro.org>
Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: Anil Kumar <anilk4.v@gmail.com>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Benoit Cousson <b-cousson@ti.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Kevin Hilman <khilman@linaro.org>
parent 4a10c2ac
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -329,10 +329,10 @@
#ifdef CONFIG_CONTEXT_TRACKING
	.if	\save
	stmdb   sp!, {r0-r3, ip, lr}
	bl	user_exit
	bl	context_tracking_user_exit
	ldmia	sp!, {r0-r3, ip, lr}
	.else
	bl	user_exit
	bl	context_tracking_user_exit
	.endif
#endif
	.endm
@@ -341,10 +341,10 @@
#ifdef CONFIG_CONTEXT_TRACKING
	.if	\save
	stmdb   sp!, {r0-r3, ip, lr}
	bl	user_enter
	bl	context_tracking_user_enter
	ldmia	sp!, {r0-r3, ip, lr}
	.else
	bl	user_enter
	bl	context_tracking_user_enter
	.endif
#endif
	.endm
+12 −0
Original line number Diff line number Diff line
@@ -50,6 +50,15 @@ void context_tracking_user_enter(void)
{
	unsigned long flags;

	/*
	 * Repeat the user_enter() check here because some archs may be calling
	 * this from asm and if no CPU needs context tracking, they shouldn't
	 * go further. Repeat the check here until they support the static key
	 * check.
	 */
	if (!static_key_false(&context_tracking_enabled))
		return;

	/*
	 * Some contexts may involve an exception occuring in an irq,
	 * leading to that nesting:
@@ -151,6 +160,9 @@ void context_tracking_user_exit(void)
{
	unsigned long flags;

	if (!static_key_false(&context_tracking_enabled))
		return;

	if (in_interrupt())
		return;