Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1739922imu; Wed, 28 Nov 2018 14:24:35 -0800 (PST) X-Google-Smtp-Source: AFSGD/UMTVkmUClHBNTcBxjx6zRaHsUoxZ/we8f/KLpVKvaT6vKG7/4tMmrC4k6w9FQxNbUd0twM X-Received: by 2002:a17:902:5066:: with SMTP id f35mr34943529plh.78.1543443875296; Wed, 28 Nov 2018 14:24:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543443875; cv=none; d=google.com; s=arc-20160816; b=V+8JSmJB9/go7UHdFd+cAAK1bveBhLq84tUcTwIn5B1T2ZXvHaKl9wXIg9OJMHS2xp xyAtcnViQ0ITITXzpb/2I0ZheC+WSK2eRrJeBK5gwHuVfR/8kQ2ULH1B77nrwqMP9qVU F8+ojqCfg9dek3EcqEueZo3iP8l/DPMn1f+QQP3+thtzzRakzkdgtvlAk5W/bl1DnUD6 QDLSqQHVtap5w+sVDMex+u2tVyPZpN0kBNlxw/vIO2s0LfHZ1t1OZw4RIr7aL9ZLzDRv 2Lq6OA6uzR+3MJ48tqaAaRmlNq28az6JLBaRba4qZH/cw4DRa6S9b+0FycEv5r0IGAc1 SvUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Z3F9QyZ33DllJrzUTSdrTWdjpXlefums06x4bLAQh6o=; b=zNSGtfbjFVaEsI7ImVG9hXg74yoy4OowcuO5xIc6hnChuuhol4Dyp+reSs+qULwvV+ 3OZPNwJl6k4eEq/FXyw0t7K0L3y8xvx+0I0RZao5/kV2MNrVkMgR3dizwjQYEbk+SIvs xN8ggLCZg7BtV4w592mgOlgqQ0NUqhNQlsSb8uP+GgXvHW/AlN8FoKn1/D6Ue7A9WXDf vLprdyLmfPq1VPKjy8Z24cgLu0goXyo3oh/0aTNGzUkPFam2zc8FEY78MxLQ0Jl/iozt 84QuYR7jkavW/TxO3hO3R/v+xdXMOP+O/FsjtC5wxF0wRD0/8hRLQjJE+9/b3dgOe3BY L9Bw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g6si8753417plp.132.2018.11.28.14.24.20; Wed, 28 Nov 2018 14:24:35 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726904AbeK2JYR (ORCPT + 99 others); Thu, 29 Nov 2018 04:24:17 -0500 Received: from Galois.linutronix.de ([146.0.238.70]:33114 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726870AbeK2JYQ (ORCPT ); Thu, 29 Nov 2018 04:24:16 -0500 Received: from localhost ([127.0.0.1] helo=bazinga.breakpoint.cc) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1gS8Cc-0001GX-0b; Wed, 28 Nov 2018 23:21:02 +0100 From: Sebastian Andrzej Siewior To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Andy Lutomirski , Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , kvm@vger.kernel.org, "Jason A. Donenfeld" , Rik van Riel , Dave Hansen , Sebastian Andrzej Siewior Subject: [PATCH 11/29] x86/fpu: Always init the `state' in fpu__clear() Date: Wed, 28 Nov 2018 23:20:17 +0100 Message-Id: <20181128222035.2996-12-bigeasy@linutronix.de> X-Mailer: git-send-email 2.20.0.rc1 In-Reply-To: <20181128222035.2996-1-bigeasy@linutronix.de> References: <20181128222035.2996-1-bigeasy@linutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org fpu__clear() only initializes the `state' if the FPU is present. This initialisation is also required for the FPU-less system and takes place math_emulate(). Since fpu__initialize() only performs the initialization if ->initialized is zero it does not matter that it is invoked each time an opcode is emulated. It makes the removal of ->initialized easier if the struct is also initialized in FPU-less case at the same time. Move fpu__initialize() before the FPU check so it is also performed in FPU-less case. Signed-off-by: Sebastian Andrzej Siewior --- arch/x86/include/asm/fpu/internal.h | 1 - arch/x86/kernel/fpu/core.c | 5 ++--- arch/x86/math-emu/fpu_entry.c | 3 --- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/arch/x86/include/asm/fpu/internal.h b/arch/x86/include/asm/fpu/internal.h index 415d43bdaaa76..1d0e043bfc447 100644 --- a/arch/x86/include/asm/fpu/internal.h +++ b/arch/x86/include/asm/fpu/internal.h @@ -24,7 +24,6 @@ /* * High level FPU state handling functions: */ -extern void fpu__initialize(struct fpu *fpu); extern void fpu__prepare_read(struct fpu *fpu); extern void fpu__prepare_write(struct fpu *fpu); extern void fpu__save(struct fpu *fpu); diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c index 1940319268aef..e43296854e379 100644 --- a/arch/x86/kernel/fpu/core.c +++ b/arch/x86/kernel/fpu/core.c @@ -223,7 +223,7 @@ int fpu__copy(struct fpu *dst_fpu, struct fpu *src_fpu) * Activate the current task's in-memory FPU context, * if it has not been used before: */ -void fpu__initialize(struct fpu *fpu) +static void fpu__initialize(struct fpu *fpu) { WARN_ON_FPU(fpu != ¤t->thread.fpu); @@ -236,7 +236,6 @@ void fpu__initialize(struct fpu *fpu) fpu->initialized = 1; } } -EXPORT_SYMBOL_GPL(fpu__initialize); /* * This function must be called before we read a task's fpstate. @@ -365,8 +364,8 @@ void fpu__clear(struct fpu *fpu) /* * Make sure fpstate is cleared and initialized. */ + fpu__initialize(fpu); if (static_cpu_has(X86_FEATURE_FPU)) { - fpu__initialize(fpu); user_fpu_begin(); copy_init_fpstate_to_fpregs(); } diff --git a/arch/x86/math-emu/fpu_entry.c b/arch/x86/math-emu/fpu_entry.c index 9e2ba7e667f61..a873da6b46d6b 100644 --- a/arch/x86/math-emu/fpu_entry.c +++ b/arch/x86/math-emu/fpu_entry.c @@ -113,9 +113,6 @@ void math_emulate(struct math_emu_info *info) unsigned long code_base = 0; unsigned long code_limit = 0; /* Initialized to stop compiler warnings */ struct desc_struct code_descriptor; - struct fpu *fpu = ¤t->thread.fpu; - - fpu__initialize(fpu); #ifdef RE_ENTRANT_CHECKING if (emulating) { -- 2.20.0.rc1