Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp702970pxb; Wed, 25 Aug 2021 12:59:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx+XoajBUivbN+bTChinsZiGRkq6ziec5bOEr85rGtIUG6nXhUojuMcdCHEje0TffC/7TGa X-Received: by 2002:a5d:9653:: with SMTP id d19mr177269ios.74.1629921574608; Wed, 25 Aug 2021 12:59:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629921574; cv=none; d=google.com; s=arc-20160816; b=uFGz4KUbOBFWqt4ZsK23G1E7NoOIBDcWcjddJA4/wBvcloTXofQ8sSr3ORrVX7B2bz 81B/J1eMeqA2vzXipxzQI3ygSHsn+NQTnUquqzzLSUHfAOiuj9+wkdPa7JKiPofBTcjz kr2BmJi6GzhWsNqn07pdpHJ+ksas1a9UKOo1ERpghuhx+GbNogz2sZhdaVSs3siUo84Z qj+KdFi0cy1COGf+Y1f9JdTH0kW7vj7xHqBUWT07fggFxyezhYiKgPNVH3QmqRsfFJFB WwS2WYa8KuINhFCPADopJhr58fHVqzII/0WxjRGqEThmBCpPV4mvci17sIAiKC/UQO2T KcvQ== 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; bh=zlnsuhiWnlkaiYz0YPGWGidgvwYYtJGPV2CQ6OhExGA=; b=x4aBnRGt3Mkubi1pao7OjeHObsXEDXC1F260P56yJuWaVKAR0UcVOBRc1ZgEQnRYIR V+FM1BxRFJmpHi427sgSfiu3otprnziBwP2+xsLVdIrcO5BBB8n/1AqxO+tMNV3HWA6Q eahdn2KkigEM6bzYY76KUIpG0jgerJpllaP6F7xTNjzO1JVeyCCwmrs+bMHGn02YBUS7 bC2Y8TqFVQrZpgYFHEARXekl2kmXrDvfuinyiGDRkHYT9OlVxOgtMctcC1gyjIrE0e/S gZUQOoSjHeque8av6pogj2jhUmhWmQneJ5TgMxwqg01QJAhyOu7VZualfE24vgW3ANX6 /qZA== 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 a16si634164ilq.77.2021.08.25.12.58.56; Wed, 25 Aug 2021 12:59:34 -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 S242158AbhHYQCR (ORCPT + 99 others); Wed, 25 Aug 2021 12:02:17 -0400 Received: from mga07.intel.com ([134.134.136.100]:32813 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241646AbhHYQBd (ORCPT ); Wed, 25 Aug 2021 12:01:33 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10087"; a="281267286" X-IronPort-AV: E=Sophos;i="5.84,351,1620716400"; d="scan'208";a="281267286" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Aug 2021 09:00:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,351,1620716400"; d="scan'208";a="494317284" Received: from chang-linux-3.sc.intel.com ([172.25.66.175]) by fmsmga008.fm.intel.com with ESMTP; 25 Aug 2021 09:00:45 -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, lenb@kernel.org, dave.hansen@intel.com, thiago.macieira@intel.com, jing2.liu@intel.com, ravi.v.shankar@intel.com, linux-kernel@vger.kernel.org, chang.seok.bae@intel.com Subject: [PATCH v10 17/28] x86/fpu/xstate: Adjust the XSAVE feature table to address gaps in state component numbers Date: Wed, 25 Aug 2021 08:54:02 -0700 Message-Id: <20210825155413.19673-18-chang.seok.bae@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210825155413.19673-1-chang.seok.bae@intel.com> References: <20210825155413.19673-1-chang.seok.bae@intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At compile-time xfeatures_mask_all includes all possible XCR0 features. At run-time fpu__init_system_xstate() clears features in xfeatures_mask_all that are not enabled in CPUID. It does this by looping through all possible XCR0 features. Update the code to handle the possibility that there will be gaps in the XCR0 feature bit numbers. No functional change. Signed-off-by: Chang S. Bae Reviewed-by: Len Brown Cc: x86@kernel.org Cc: linux-kernel@vger.kernel.org --- Changes from v5: * Folded a few lines. Changes from v4: * Simplified the implementation. (Thomas Gleixner) * Updated the patch title accordingly. Changes from v1: * Rebased on the upstream kernel (5.10) --- arch/x86/kernel/fpu/xstate.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c index bb31ef8a45b5..28e4f3254487 100644 --- a/arch/x86/kernel/fpu/xstate.c +++ b/arch/x86/kernel/fpu/xstate.c @@ -43,18 +43,17 @@ static const char *xfeature_names[] = "unknown xstate feature" , }; -static short xsave_cpuid_features[] __initdata = { - X86_FEATURE_FPU, - X86_FEATURE_XMM, - X86_FEATURE_AVX, - X86_FEATURE_MPX, - X86_FEATURE_MPX, - X86_FEATURE_AVX512F, - X86_FEATURE_AVX512F, - X86_FEATURE_AVX512F, - X86_FEATURE_INTEL_PT, - X86_FEATURE_PKU, - X86_FEATURE_ENQCMD, +static unsigned short xsave_cpuid_features[] __initdata = { + [XFEATURE_SSE] = X86_FEATURE_XMM, + [XFEATURE_YMM] = X86_FEATURE_AVX, + [XFEATURE_BNDREGS] = X86_FEATURE_MPX, + [XFEATURE_BNDCSR] = X86_FEATURE_MPX, + [XFEATURE_OPMASK] = X86_FEATURE_AVX512F, + [XFEATURE_ZMM_Hi256] = X86_FEATURE_AVX512F, + [XFEATURE_Hi16_ZMM] = X86_FEATURE_AVX512F, + [XFEATURE_PT_UNIMPLEMENTED_SO_FAR] = X86_FEATURE_INTEL_PT, + [XFEATURE_PKRU] = X86_FEATURE_PKU, + [XFEATURE_PASID] = X86_FEATURE_ENQCMD, }; /* @@ -908,7 +907,8 @@ void __init fpu__init_system_xstate(void) * Clear XSAVE features that are disabled in the normal CPUID. */ for (i = 0; i < ARRAY_SIZE(xsave_cpuid_features); i++) { - if (!boot_cpu_has(xsave_cpuid_features[i])) + if (((i == 0) || xsave_cpuid_features[i]) && + !boot_cpu_has(xsave_cpuid_features[i])) xfeatures_mask_all &= ~BIT_ULL(i); } -- 2.17.1