From: Catalin Marinas <catalin.marinas@arm.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: "steve.capper@linaro.org" <steve.capper@linaro.org>,
Will Deacon <Will.Deacon@arm.com>,
"linux-crypto@vger.kernel.org" <linux-crypto@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH resend 03/15] arm64: defer reloading a task's FPSIMD state to userland resume
Date: Tue, 6 May 2014 17:08:26 +0100 [thread overview]
Message-ID: <20140506160826.GI23957@arm.com> (raw)
In-Reply-To: <1398959381-8126-4-git-send-email-ard.biesheuvel@linaro.org>
On Thu, May 01, 2014 at 04:49:35PM +0100, Ard Biesheuvel wrote:
> @@ -153,12 +252,11 @@ static int fpsimd_cpu_pm_notifier(struct notifier_block *self,
> {
> switch (cmd) {
> case CPU_PM_ENTER:
> - if (current->mm)
> + if (current->mm && !test_thread_flag(TIF_FOREIGN_FPSTATE))
> fpsimd_save_state(¤t->thread.fpsimd_state);
> break;
> case CPU_PM_EXIT:
> - if (current->mm)
> - fpsimd_load_state(¤t->thread.fpsimd_state);
> + set_thread_flag(TIF_FOREIGN_FPSTATE);
I think we could enter a PM state on a kernel thread (idle), so we
should preserve the current->mm check as well.
> break;
> case CPU_PM_ENTER_FAILED:
> default:
> diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c
> index 06448a77ff53..882f01774365 100644
> --- a/arch/arm64/kernel/signal.c
> +++ b/arch/arm64/kernel/signal.c
> @@ -413,4 +413,8 @@ asmlinkage void do_notify_resume(struct pt_regs *regs,
> clear_thread_flag(TIF_NOTIFY_RESUME);
> tracehook_notify_resume(regs);
> }
> +
> + if (thread_flags & _TIF_FOREIGN_FPSTATE)
> + fpsimd_restore_current_state();
I think this should be safe. Even if we get preempted here, ret_to_user
would loop over TI_FLAGS with interrupts disabled until no work pending.
--
Catalin
WARNING: multiple messages have this Message-ID (diff)
From: catalin.marinas@arm.com (Catalin Marinas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH resend 03/15] arm64: defer reloading a task's FPSIMD state to userland resume
Date: Tue, 6 May 2014 17:08:26 +0100 [thread overview]
Message-ID: <20140506160826.GI23957@arm.com> (raw)
In-Reply-To: <1398959381-8126-4-git-send-email-ard.biesheuvel@linaro.org>
On Thu, May 01, 2014 at 04:49:35PM +0100, Ard Biesheuvel wrote:
> @@ -153,12 +252,11 @@ static int fpsimd_cpu_pm_notifier(struct notifier_block *self,
> {
> switch (cmd) {
> case CPU_PM_ENTER:
> - if (current->mm)
> + if (current->mm && !test_thread_flag(TIF_FOREIGN_FPSTATE))
> fpsimd_save_state(¤t->thread.fpsimd_state);
> break;
> case CPU_PM_EXIT:
> - if (current->mm)
> - fpsimd_load_state(¤t->thread.fpsimd_state);
> + set_thread_flag(TIF_FOREIGN_FPSTATE);
I think we could enter a PM state on a kernel thread (idle), so we
should preserve the current->mm check as well.
> break;
> case CPU_PM_ENTER_FAILED:
> default:
> diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c
> index 06448a77ff53..882f01774365 100644
> --- a/arch/arm64/kernel/signal.c
> +++ b/arch/arm64/kernel/signal.c
> @@ -413,4 +413,8 @@ asmlinkage void do_notify_resume(struct pt_regs *regs,
> clear_thread_flag(TIF_NOTIFY_RESUME);
> tracehook_notify_resume(regs);
> }
> +
> + if (thread_flags & _TIF_FOREIGN_FPSTATE)
> + fpsimd_restore_current_state();
I think this should be safe. Even if we get preempted here, ret_to_user
would loop over TI_FLAGS with interrupts disabled until no work pending.
--
Catalin
next prev parent reply other threads:[~2014-05-06 16:08 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-01 15:49 [PATCH resend 00/15] arm64 crypto roundup Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-01 15:49 ` [PATCH resend 01/15] asm-generic: allow generic unaligned access if the arch supports it Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-06 14:31 ` Catalin Marinas
2014-05-06 14:31 ` Catalin Marinas
2014-05-06 14:34 ` Ard Biesheuvel
2014-05-06 14:34 ` Ard Biesheuvel
2014-05-06 15:14 ` Catalin Marinas
2014-05-06 15:14 ` Catalin Marinas
2014-05-01 15:49 ` [PATCH resend 02/15] arm64: add abstractions for FPSIMD state manipulation Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-06 14:43 ` Catalin Marinas
2014-05-06 14:43 ` Catalin Marinas
2014-05-06 14:48 ` Ard Biesheuvel
2014-05-06 14:48 ` Ard Biesheuvel
2014-05-06 15:12 ` Catalin Marinas
2014-05-06 15:12 ` Catalin Marinas
2014-05-06 15:42 ` Catalin Marinas
2014-05-06 15:42 ` Catalin Marinas
2014-05-01 15:49 ` [PATCH resend 03/15] arm64: defer reloading a task's FPSIMD state to userland resume Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-06 16:08 ` Catalin Marinas [this message]
2014-05-06 16:08 ` Catalin Marinas
2014-05-06 16:25 ` Ard Biesheuvel
2014-05-06 16:25 ` Ard Biesheuvel
2014-05-06 16:31 ` Catalin Marinas
2014-05-06 16:31 ` Catalin Marinas
2014-05-01 15:49 ` [PATCH resend 04/15] arm64: add support for kernel mode NEON in interrupt context Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-06 16:49 ` Catalin Marinas
2014-05-06 16:49 ` Catalin Marinas
2014-05-06 17:09 ` Ard Biesheuvel
2014-05-06 17:09 ` Ard Biesheuvel
2014-05-01 15:49 ` [PATCH resend 05/15] arm64/crypto: SHA-1 using ARMv8 Crypto Extensions Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-01 15:49 ` [PATCH resend 06/15] arm64/crypto: SHA-224/SHA-256 " Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-01 15:49 ` [PATCH resend 07/15] arm64/crypto: GHASH secure hash " Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-01 15:49 ` [PATCH resend 08/15] arm64/crypto: AES " Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-01 15:49 ` [PATCH resend 09/15] arm64/crypto: AES in CCM mode " Ard Biesheuvel
2014-05-01 15:49 ` Ard Biesheuvel
2014-05-07 14:45 ` [PATCH resend 00/15] arm64 crypto roundup Catalin Marinas
2014-05-07 14:45 ` Catalin Marinas
2014-05-07 19:58 ` Ard Biesheuvel
2014-05-07 19:58 ` Ard Biesheuvel
2014-05-08 11:22 ` Ard Biesheuvel
2014-05-08 11:22 ` Ard Biesheuvel
2014-05-08 21:50 ` Catalin Marinas
2014-05-08 21:50 ` Catalin Marinas
2014-05-09 6:37 ` Ard Biesheuvel
2014-05-14 1:29 ` Herbert Xu
2014-05-14 8:47 ` Catalin Marinas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140506160826.GI23957@arm.com \
--to=catalin.marinas@arm.com \
--cc=Will.Deacon@arm.com \
--cc=ard.biesheuvel@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=steve.capper@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.