From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754240AbbEEQ5I (ORCPT ); Tue, 5 May 2015 12:57:08 -0400 Received: from mail-wg0-f43.google.com ([74.125.82.43]:36099 "EHLO mail-wg0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1760940AbbEEQ2s (ORCPT ); Tue, 5 May 2015 12:28:48 -0400 From: Ingo Molnar To: linux-kernel@vger.kernel.org Cc: Andy Lutomirski , Borislav Petkov , Dave Hansen , Fenghua Yu , "H. Peter Anvin" , Linus Torvalds , Oleg Nesterov , Thomas Gleixner Subject: [PATCH 040/208] x86/fpu: Add kernel_fpu_disabled() Date: Tue, 5 May 2015 18:24:20 +0200 Message-Id: <1430843228-13749-41-git-send-email-mingo@kernel.org> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1430843228-13749-1-git-send-email-mingo@kernel.org> References: <1430843228-13749-1-git-send-email-mingo@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Instead of open-coded in_kernel_fpu access, Use kernel_fpu_disabled() in interrupted_kernel_fpu_idle(), matching the other kernel_fpu_*() methods. Also add some documentation for in_kernel_fpu. Reviewed-by: Borislav Petkov Cc: Andy Lutomirski Cc: Dave Hansen Cc: Fenghua Yu Cc: H. Peter Anvin Cc: Linus Torvalds Cc: Oleg Nesterov Cc: Thomas Gleixner Signed-off-by: Ingo Molnar --- arch/x86/kernel/fpu/core.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c index bcf705751d02..87f10b49da47 100644 --- a/arch/x86/kernel/fpu/core.c +++ b/arch/x86/kernel/fpu/core.c @@ -7,6 +7,17 @@ */ #include +/* + * Track whether the kernel is using the FPU state + * currently. + * + * This flag is used: + * + * - by IRQ context code to potentially use the FPU + * if it's unused. + * + * - to debug kernel_fpu_begin()/end() correctness + */ static DEFINE_PER_CPU(bool, in_kernel_fpu); static void kernel_fpu_disable(void) @@ -21,6 +32,11 @@ static void kernel_fpu_enable(void) this_cpu_write(in_kernel_fpu, false); } +static bool kernel_fpu_disabled(void) +{ + return this_cpu_read(in_kernel_fpu); +} + /* * Were we in an interrupt that interrupted kernel mode? * @@ -35,7 +51,7 @@ static void kernel_fpu_enable(void) */ static bool interrupted_kernel_fpu_idle(void) { - if (this_cpu_read(in_kernel_fpu)) + if (kernel_fpu_disabled()) return false; if (use_eager_fpu()) -- 2.1.0