Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp695376pxb; Thu, 12 Nov 2020 14:04:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJyPtt8RJNRmlxkwSsBXykwfQowyQsdXRqwF+rJBDgjr0eCo4jXLtRKD0q68nLacsvgJfJam X-Received: by 2002:a17:907:d1e:: with SMTP id gn30mr1521276ejc.148.1605218658794; Thu, 12 Nov 2020 14:04:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605218658; cv=none; d=google.com; s=arc-20160816; b=P+DFUzSE4Ud+3tFAKF8zHU1oLeI/9VDW2PFzdKO1nSrqHpOhrC3AP32XqgiUE0nowy JFPbo0kjz9UnkL0PNWxu1B6DEBci0zW7zbxdPjrgLhoIrgphb/w7e87VfaCJAM0E2Jkh O3v0cRCXCM5m0iVd29LpzVT5quqNTD0uNFl6y4oZIZER2NaTU2rhV5XsUYcXeIu+V1O+ 6OcYV6OysUaQ9IX05esC50vN/3cbcDZ/BQIVZSow6JgbmssiQkN09p9mZPtOpKG3CtG7 RpSvhqk1b6IEkZv8N5cIt5Z/+5oldLRb+LQEYhc7khTOM1WzsGmjSMQifHlL2ikSyhCx KNag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=8lTT+Ymd7dtGkNUyfDq35YU/K1Jq7/nWpZFmgbu85G8=; b=fJNfr8s41BbzJpWYRfJr7+25utpG1XL0/nM5FsfW+wLtl4LufEep7w/v38dPd+ovbR PzBq5nVHSXMBLyU1rPfN3N4S6XEXpq/Kf5Lj3e5EztCfINrHUD7BjdbEUighkzU1tVRS PwYFBpS69niAr6xQXuP1UR9So5rZg7g9wvB0S4jd8WzBK9YpqrpdOX7EUOeggozczHpe 1F7dAR2gmriYDfxCajV4/MoU3sxENKye/PsK0xEmpbpKVd+fodn+GmNqjBjZPR46p1YH xG8HIq6dEr0vMSQnZBsr9ahivMgD3c/a+njpvClMnRDPQDyRuZ9qyIGZw5FUav5N/YV9 EE2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2E7SBo9B; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bs5si4984981edb.369.2020.11.12.14.03.55; Thu, 12 Nov 2020 14:04:18 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=2E7SBo9B; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727481AbgKLWCO (ORCPT + 99 others); Thu, 12 Nov 2020 17:02:14 -0500 Received: from mail.kernel.org ([198.145.29.99]:48990 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727477AbgKLWCJ (ORCPT ); Thu, 12 Nov 2020 17:02:09 -0500 Received: from suppilovahvero.lan (83-245-197-237.elisa-laajakaista.fi [83.245.197.237]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6073821D7F; Thu, 12 Nov 2020 22:02:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1605218528; bh=7TIQwLt2Y6/ppAafx74RiNO+AvvHHDEToFZCRvu32Y0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2E7SBo9BuYoG6ZvC8nPl3+D0cU8b7IvriBGlA8E7RoBCVp+BZ8CPP46+0DHnbyYBy iOW8Q5ejDhed2FGkVtIPdc8+640Iy25YplOLlhwKjJZ6vjexXWSj/0obGP969TdWVr f+pQPToeMw2fHRkc0+PfjiSKIuo1VMKFvRpMpb5k= From: Jarkko Sakkinen To: x86@kernel.org, linux-sgx@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Sean Christopherson , Jethro Beekman , Jarkko Sakkinen , akpm@linux-foundation.org, andriy.shevchenko@linux.intel.com, asapek@google.com, bp@alien8.de, cedric.xing@intel.com, chenalexchen@google.com, conradparker@google.com, cyhanish@google.com, dave.hansen@intel.com, haitao.huang@intel.com, kai.huang@intel.com, kai.svahn@intel.com, kmoy@google.com, ludloff@google.com, luto@kernel.org, nhorman@redhat.com, npmccallum@redhat.com, puiterwijk@redhat.com, rientjes@google.com, tglx@linutronix.de, yaozhangx@google.com, mikko.ylinen@intel.com Subject: [PATCH v41 03/24] x86/cpufeatures: x86/msr: Add Intel SGX hardware bits Date: Fri, 13 Nov 2020 00:01:14 +0200 Message-Id: <20201112220135.165028-4-jarkko@kernel.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201112220135.165028-1-jarkko@kernel.org> References: <20201112220135.165028-1-jarkko@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sean Christopherson Populate X86_FEATURE_SGX feature from CPUID and tie it to the Kconfig option with disabled-features.h. IA32_FEATURE_CONTROL.SGX_ENABLE must be examined in addition to the CPUID bits to enable full SGX support. The BIOS must both set this bit and lock IA32_FEATURE_CONTROL for SGX to be supported (Intel SDM section 36.7.1). The setting or clearing of this bit has no impact on the CPUID bits above, which is why it needs to be detected separately. Acked-by: Jethro Beekman # v40 # Signed-off-by: Sean Christopherson Co-developed-by: Jarkko Sakkinen Signed-off-by: Jarkko Sakkinen --- Changes from v39: * Remove X86_FEATURE_SGX{1, 2}. They were only mistakenly being used for model-specific errata detection. Further, the errata does not occur on any processors that this implementation supports. Later patches ignore the errata, so remove the CPUID bits. arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/include/asm/disabled-features.h | 8 +++++++- arch/x86/include/asm/msr-index.h | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index dad350d42ecf..1181f5c7bbef 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -241,6 +241,7 @@ /* Intel-defined CPU features, CPUID level 0x00000007:0 (EBX), word 9 */ #define X86_FEATURE_FSGSBASE ( 9*32+ 0) /* RDFSBASE, WRFSBASE, RDGSBASE, WRGSBASE instructions*/ #define X86_FEATURE_TSC_ADJUST ( 9*32+ 1) /* TSC adjustment MSR 0x3B */ +#define X86_FEATURE_SGX ( 9*32+ 2) /* Software Guard Extensions */ #define X86_FEATURE_BMI1 ( 9*32+ 3) /* 1st group bit manipulation extensions */ #define X86_FEATURE_HLE ( 9*32+ 4) /* Hardware Lock Elision */ #define X86_FEATURE_AVX2 ( 9*32+ 5) /* AVX2 instructions */ diff --git a/arch/x86/include/asm/disabled-features.h b/arch/x86/include/asm/disabled-features.h index 5861d34f9771..7947cb1782da 100644 --- a/arch/x86/include/asm/disabled-features.h +++ b/arch/x86/include/asm/disabled-features.h @@ -62,6 +62,12 @@ # define DISABLE_ENQCMD (1 << (X86_FEATURE_ENQCMD & 31)) #endif +#ifdef CONFIG_X86_SGX +# define DISABLE_SGX 0 +#else +# define DISABLE_SGX (1 << (X86_FEATURE_SGX & 31)) +#endif + /* * Make sure to add features to the correct mask */ @@ -74,7 +80,7 @@ #define DISABLED_MASK6 0 #define DISABLED_MASK7 (DISABLE_PTI) #define DISABLED_MASK8 0 -#define DISABLED_MASK9 (DISABLE_SMAP) +#define DISABLED_MASK9 (DISABLE_SMAP|DISABLE_SGX) #define DISABLED_MASK10 0 #define DISABLED_MASK11 0 #define DISABLED_MASK12 0 diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h index b2dd2648c0e2..16154953704a 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h @@ -610,6 +610,7 @@ #define FEAT_CTL_LOCKED BIT(0) #define FEAT_CTL_VMX_ENABLED_INSIDE_SMX BIT(1) #define FEAT_CTL_VMX_ENABLED_OUTSIDE_SMX BIT(2) +#define FEAT_CTL_SGX_ENABLED BIT(18) #define FEAT_CTL_LMCE_ENABLED BIT(20) #define MSR_IA32_TSC_ADJUST 0x0000003b -- 2.27.0