Commit 555827a0 authored by Linus Walleij's avatar Linus Walleij Committed by Catalin Marinas
Browse files

arm64: entry: Clean out some indirection



The conversion to generic IRQ entry left some functions
in the EL1 (kernel) IRQ entry path very shallow, so drop
the __inner_functions() where appropriate, saving some
time and stack.

This is not a fix but an optimization.

Drop stale comments about irqentry_enter/exit() while we
are at it.

Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent e2e21a97
Loading
Loading
Loading
Loading
+3 −25
Original line number Diff line number Diff line
@@ -34,20 +34,12 @@
 * Handle IRQ/context state management when entering from kernel mode.
 * Before this function is called it is not safe to call regular kernel code,
 * instrumentable code, or any code which may trigger an exception.
 *
 * This is intended to match the logic in irqentry_enter(), handling the kernel
 * mode transitions only.
 */
static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs *regs)
{
	return irqentry_enter(regs);
}

static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
{
	irqentry_state_t state;

	state = __enter_from_kernel_mode(regs);
	state = irqentry_enter(regs);
	mte_check_tfsr_entry();
	mte_disable_tco_entry(current);

@@ -58,21 +50,12 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
 * Handle IRQ/context state management when exiting to kernel mode.
 * After this function returns it is not safe to call regular kernel code,
 * instrumentable code, or any code which may trigger an exception.
 *
 * This is intended to match the logic in irqentry_exit(), handling the kernel
 * mode transitions only, and with preemption handled elsewhere.
 */
static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs,
						  irqentry_state_t state)
{
	irqentry_exit(regs, state);
}

static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
					irqentry_state_t state)
{
	mte_check_tfsr_exit();
	__exit_to_kernel_mode(regs, state);
	irqentry_exit(regs, state);
}

/*
@@ -80,17 +63,12 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 * Before this function is called it is not safe to call regular kernel code,
 * instrumentable code, or any code which may trigger an exception.
 */
static __always_inline void __enter_from_user_mode(struct pt_regs *regs)
static __always_inline void arm64_enter_from_user_mode(struct pt_regs *regs)
{
	enter_from_user_mode(regs);
	mte_disable_tco_entry(current);
}

static __always_inline void arm64_enter_from_user_mode(struct pt_regs *regs)
{
	__enter_from_user_mode(regs);
}

/*
 * Handle IRQ/context state management when exiting to user mode.
 * After this function returns it is not safe to call regular kernel code,