Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2840923pxj; Sun, 23 May 2021 12:41:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8z1bNqTFdk/sFMwZIgutJ+zlNuxOYabX5BhlE5iUko9AozERXk/LLdrF4qjFnCghOQAk3 X-Received: by 2002:a92:d307:: with SMTP id x7mr3829403ila.55.1621798909105; Sun, 23 May 2021 12:41:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621798909; cv=none; d=google.com; s=arc-20160816; b=sf+xp5F7LQkd+EcY7RbEHZ2M/yPMtVlP0gkZ9JZ7HAVXN5NBDqzgyKPN3rgZ8n31SE mNcIvN6SpIjElpEr0h6ShepSOYU+tx1SzzpUpXFPIZhwMAZvsdXiOddgpD5JiE6qCcJH Ma8okbyJPox7QW1ZXyzrQbVebV4dnW+P+xVhYpTp5tQXVuRg2OQ+NJx4KjwW1k/NTYtC /9s15evtOJSYvnYi4fCwAr/VdbtjWA7NHXqNJ9IMjHz/WPwfodE4doflwR0Ok6jGVwPN 18qcfPUzXtocVsPktOcxgqDB1W2cdp/vnk2pdbwbb4z2VTXGlK8XFsHAajDdm389QBR1 8kXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:ironport-sdr:ironport-sdr; bh=DrL+uaDuzTFSUPbz+UYdhfbpi1GN0QCYSp9vtmyknto=; b=n+lj+h2Tb+B3LGaSjTBk3Q/w2CvPxJaYG89iIrJXLMwX9XqQMA2sOhENSr+AhCdnZ4 4+1tl9ePXy4vGsBp+BS7XjjLFqY71h2ibs9ra41zvztg4VnzmBElIJ3Ngwgt5T+qpujJ iIwPlAev6rEIAKh6Oo0j90NDfdaNYGEbXToitK2weiL4wOf39aNXegd/y3Vncc2b6sN/ ZJ0cYUYqDuTk78yCiNgVgxwe/wLRnFJ3t7W/dAYBYKBK0WhQgVZ0XkTJCzxysrnnw9mN 2mqfMZETuPcryLu72GhHLyKJKgBNKVU/trP36u1L2VHLD7bqo1w5kTn6PVUymuJQr0zG JOnw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o1si10381099ill.15.2021.05.23.12.41.36; Sun, 23 May 2021 12:41:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232310AbhEWTkr (ORCPT + 99 others); Sun, 23 May 2021 15:40:47 -0400 Received: from mga11.intel.com ([192.55.52.93]:32000 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231996AbhEWTj5 (ORCPT ); Sun, 23 May 2021 15:39:57 -0400 IronPort-SDR: 5S7gP2RTm0YFQYRlgsMmzRvQ0ksZ0AHqtOGZxMXtEyz6TuKl+x3+gP8QZb/uVkkKwcerE2pzyH FaaG+53Iu3kw== X-IronPort-AV: E=McAfee;i="6200,9189,9993"; a="198740687" X-IronPort-AV: E=Sophos;i="5.82,319,1613462400"; d="scan'208";a="198740687" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 May 2021 12:38:29 -0700 IronPort-SDR: Obg+c7MKhy4yM5eQeyjvDhyM11v3R8Pi4/3XxzziR/lLM08DRd7G0+lk5lQmnGe3/X6RWLk2L/ VV8ZFQdFciUQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,319,1613462400"; d="scan'208";a="407467136" Received: from chang-linux-3.sc.intel.com ([172.25.66.175]) by fmsmga007.fm.intel.com with ESMTP; 23 May 2021 12:38:29 -0700 From: "Chang S. Bae" To: bp@suse.de, luto@kernel.org, tglx@linutronix.de, mingo@kernel.org, x86@kernel.org Cc: len.brown@intel.com, dave.hansen@intel.com, jing2.liu@intel.com, ravi.v.shankar@intel.com, linux-kernel@vger.kernel.org, chang.seok.bae@intel.com Subject: [PATCH v5 24/28] x86/fpu/xstate: Use per-task xstate mask for saving xstate in signal frame Date: Sun, 23 May 2021 12:32:55 -0700 Message-Id: <20210523193259.26200-25-chang.seok.bae@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210523193259.26200-1-chang.seok.bae@intel.com> References: <20210523193259.26200-1-chang.seok.bae@intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Entering a signal handler, the kernel saves xstate in signal frame. The dynamic user state is better to be saved only when used. fpu->state_mask can help to exclude unused states. Returning from a signal handler, XRSTOR(S) re-initializes the excluded state components. Signed-off-by: Chang S. Bae Reviewed-by: Len Brown Cc: x86@kernel.org Cc: linux-kernel@vger.kernel.org --- Changes from v4: * Updated the title and the changelog. * Excluded the test case addition; separated out as a new patch. Changes from v3: * Removed 'no functional changes' in the changelog. (Borislav Petkov) Changes from v1: * Made it revertable (moved close to the end of the series). * Included the test case. --- arch/x86/include/asm/fpu/internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/include/asm/fpu/internal.h b/arch/x86/include/asm/fpu/internal.h index 6460d52991ba..4a3436684805 100644 --- a/arch/x86/include/asm/fpu/internal.h +++ b/arch/x86/include/asm/fpu/internal.h @@ -354,7 +354,7 @@ static inline void copy_kernel_to_xregs(struct xregs_state *xstate, u64 mask) */ static inline int copy_xregs_to_user(struct xregs_state __user *buf) { - u64 mask = xfeatures_mask_user(); + u64 mask = current->thread.fpu.state_mask; u32 lmask = mask; u32 hmask = mask >> 32; int err; -- 2.17.1