From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933797AbbBQLAb (ORCPT ); Tue, 17 Feb 2015 06:00:31 -0500 Received: from mx1.redhat.com ([209.132.183.28]:57098 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933682AbbBQLA3 (ORCPT ); Tue, 17 Feb 2015 06:00:29 -0500 Date: Tue, 17 Feb 2015 11:58:39 +0100 From: Oleg Nesterov To: Rik van Riel Cc: Borislav Petkov , dave.hansen@linux.intel.com, sbsiddha@gmail.com, luto@amacapital.net, tglx@linutronix.de, mingo@kernel.org, hpa@zytor.com, fenghua.yu@intel.com, x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/8] x86, fpu: kill save_init_fpu(), change math_error() to use unlazy_fpu() Message-ID: <20150217105839.GB22233@redhat.com> References: <1423252925-14451-1-git-send-email-riel@redhat.com> <1423252925-14451-4-git-send-email-riel@redhat.com> <20150216210938.GN4458@pd.tnic> <54E2618A.9090203@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <54E2618A.9090203@redhat.com> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/16, Rik van Riel wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 02/16/2015 04:09 PM, Borislav Petkov wrote: > > On Fri, Feb 06, 2015 at 03:02:00PM -0500, riel@redhat.com wrote: > >> From: Oleg Nesterov > > >> diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c > >> index fb4cb6adf225..51c465846f06 100644 --- > >> a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -663,7 > >> +663,7 @@ static void math_error(struct pt_regs *regs, int > >> error_code, int trapnr) /* * Save the info for the exception > >> handler and clear the error. */ - save_init_fpu(task); + > >> unlazy_fpu(task); > > > > Do I see it correctly that even with this there's a not-so-small > > hole *after* conditional_sti() and *before* unlazy_fpu() where > > caller can still get preempted? > > That's ok, the context switch will save the register contents > to memory in that case. Yes, thanks. > At that point unlazy_fpu will potentially > do nothing, and the task will process the FPU context that was > saved to memory previously. Or, if __thread_has_fpu() will be true again, it will save the registers again. And this equally applies to any other user of unlazy_fpu(). Oleg.