2015-06-11 04:06:19

by Chunyan Zhang

[permalink] [raw]
Subject: [PATCH] arm64: kernel thread don't need to save fpsimd context.

From: Janet Liu <[email protected]>

kernel thread's default fpsimd state is zero. When fork a thread, if parent is kernel thread,
and save hardware context to parent's fpsimd state, but this hardware context is user
process's context, because kernel thread don't use fpsimd, it will not introduce issue,
it add a little cost.

Signed-off-by: Janet Liu <[email protected]>
Signed-off-by: Chunyan Zhang <[email protected]>
---
arch/arm64/kernel/process.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index c6b1f3b..2a46732 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -243,7 +243,8 @@ void release_thread(struct task_struct *dead_task)

int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
{
- fpsimd_preserve_current_state();
+ if (current->mm)
+ fpsimd_preserve_current_state();
*dst = *src;
return 0;
}
--
1.7.9.5


2015-06-11 14:40:57

by Catalin Marinas

[permalink] [raw]
Subject: Re: [PATCH] arm64: kernel thread don't need to save fpsimd context.

On Thu, Jun 11, 2015 at 12:04:32PM +0800, Chunyan Zhang wrote:
> From: Janet Liu <[email protected]>
>
> kernel thread's default fpsimd state is zero. When fork a thread, if parent is kernel thread,
> and save hardware context to parent's fpsimd state, but this hardware context is user
> process's context, because kernel thread don't use fpsimd, it will not introduce issue,
> it add a little cost.
>
> Signed-off-by: Janet Liu <[email protected]>
> Signed-off-by: Chunyan Zhang <[email protected]>

Applied. Thanks.

--
Catalin