Commit 8e1f78a9 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Catalin Marinas

arm64/sve: Move sve_free() into SVE code section

If CONFIG_ARM64_SVE is not set:

    arch/arm64/kernel/fpsimd.c:294:13: warning: ‘sve_free’ defined but not used [-Wunused-function]

Fix this by moving sve_free() and __sve_free() into the existing section
protected by "#ifdef CONFIG_ARM64_SVE", now the last user outside that
section has been removed.

Fixes: a1259dd8 ("arm64/sve: Delay freeing memory in fpsimd_flush_thread()")
Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/cd633284683c24cb9469f8ff429915aedf67f868.1652798894.git.geert+renesas@glider.beSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 696207d4
...@@ -281,23 +281,6 @@ static bool have_cpu_fpsimd_context(void) ...@@ -281,23 +281,6 @@ static bool have_cpu_fpsimd_context(void)
return !preemptible() && __this_cpu_read(fpsimd_context_busy); return !preemptible() && __this_cpu_read(fpsimd_context_busy);
} }
/*
* Call __sve_free() directly only if you know task can't be scheduled
* or preempted.
*/
static void __sve_free(struct task_struct *task)
{
kfree(task->thread.sve_state);
task->thread.sve_state = NULL;
}
static void sve_free(struct task_struct *task)
{
WARN_ON(test_tsk_thread_flag(task, TIF_SVE));
__sve_free(task);
}
unsigned int task_get_vl(const struct task_struct *task, enum vec_type type) unsigned int task_get_vl(const struct task_struct *task, enum vec_type type)
{ {
return task->thread.vl[type]; return task->thread.vl[type];
...@@ -690,6 +673,22 @@ static void sve_to_fpsimd(struct task_struct *task) ...@@ -690,6 +673,22 @@ static void sve_to_fpsimd(struct task_struct *task)
} }
#ifdef CONFIG_ARM64_SVE #ifdef CONFIG_ARM64_SVE
/*
* Call __sve_free() directly only if you know task can't be scheduled
* or preempted.
*/
static void __sve_free(struct task_struct *task)
{
kfree(task->thread.sve_state);
task->thread.sve_state = NULL;
}
static void sve_free(struct task_struct *task)
{
WARN_ON(test_tsk_thread_flag(task, TIF_SVE));
__sve_free(task);
}
/* /*
* Return how many bytes of memory are required to store the full SVE * Return how many bytes of memory are required to store the full SVE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment