Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp7020360pxv; Fri, 30 Jul 2021 08:10:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyiwZqpgEBff7NgYWpyaxqJdkwp84nRTyW+S+PswG42PqZU8YBAfpYVx4p62QZ8rBuveI+G X-Received: by 2002:aa7:c858:: with SMTP id g24mr3572202edt.250.1627657829890; Fri, 30 Jul 2021 08:10:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627657829; cv=none; d=google.com; s=arc-20160816; b=UED367lZOFljaf0DghmrUEk6xw2LSGYyLRukqO/v8HXR5iHumBK3IwycTJildQG1b2 j3Sx03mDsyVuz9Bo7q1UglrswlcWxovYcZ6Q2fWHjdWql2A1gubWkMIhqvGo1Pq8OQJv nnw4czKGYxTGyVfgR4nrx0lIbCVHA7IIDFbn6uAaHpObEgcDkpzobI8y3DY9IIBjFCAq iJQlh0Kvc2hRJCrInmgQrlg3NBim7KdqxJe4rKe6IerlIvL49FfINoWAX/HCbT8lwlkp 2JfHOBHxKn53U/xuX9eG+xXyBfYLeQQIghorTbrvAeIVgpiqLC+cS7bBfNzxmPMsyO7n 4Mag== 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=3zqqPKQb6j+ACA88jK+WHfzAaNlXsZUDD4ySiIvLK14=; b=vpiwL0hCIQo6K8sKgiNgr5yasNMtcfYS02HVtCbCT+lc1wcTPc+Ow7HZA7+u47vWby om3VQEDcYbbUKreFyrYcILIKLAzlCdFWp8eULsW2LNQ6zU11T/qws1tdxldW86jzKyYq jc0YVqa7zhvtlFgYILZowBItKv5Vu8YtvV6kc5SRfYmwQI03S+TZ+wS4ZthxR7a5+Tr5 YAdMWkx4PnovS3VNlVtq3a8wjwGJjs3TB0i8e4t5LuWjTzsE/inACmaRoanWVQp935yw Bl0ICffD0WdfkiSu/IBK7BmE5iVw4EFU+ca7+sZkUv7ox3vgZOYWBOc1pT9K0cSyDugs ltvg== 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 b10si2167964ejj.295.2021.07.30.08.10.06; Fri, 30 Jul 2021 08:10:29 -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 S239823AbhG3PG7 (ORCPT + 99 others); Fri, 30 Jul 2021 11:06:59 -0400 Received: from mga05.intel.com ([192.55.52.43]:52626 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239454AbhG3PGW (ORCPT ); Fri, 30 Jul 2021 11:06:22 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10061"; a="298699130" X-IronPort-AV: E=Sophos;i="5.84,282,1620716400"; d="scan'208";a="298699130" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jul 2021 08:06:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,282,1620716400"; d="scan'208";a="508154950" Received: from chang-linux-3.sc.intel.com ([172.25.66.175]) by FMSMGA003.fm.intel.com with ESMTP; 30 Jul 2021 08:06:06 -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, 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 v9 16/26] x86/fpu/xstate: Adjust the XSAVE feature table to address gaps in state component numbers Date: Fri, 30 Jul 2021 07:59:47 -0700 Message-Id: <20210730145957.7927-17-chang.seok.bae@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210730145957.7927-1-chang.seok.bae@intel.com> References: <20210730145957.7927-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 c539e02965a6..930e72f55e75 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, }; /* @@ -955,7 +954,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