Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp2691937imd; Fri, 2 Nov 2018 16:18:06 -0700 (PDT) X-Google-Smtp-Source: AJdET5ctrOHTmHIkGJzqZG+QQvGCyqY614VGNQcqDWOA3IcdaENbFqkgvswL/HYCoVhkKjq5Nfjt X-Received: by 2002:a62:995c:: with SMTP id d89-v6mr13387647pfe.11.1541200686624; Fri, 02 Nov 2018 16:18:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541200686; cv=none; d=google.com; s=arc-20160816; b=QZOGdJ+tlF3mDDZMDy+K+UeSCBaRP9qJrunndd5832MkDwcBKhzAssw6JG1ILk+h2s XYXi2dUtJZt1ZldshpHIhNJo5MHI8n+agx5CVYl94QS3qNJkJNM86MDSs4Gwf+bggA7y Mf+B0Vb6lI+bvsYzo7CpAOzYOMhttaShiSbPNVQEzQDZzmreME977aKtWDZUbPxs2+aZ UsiygUBDLvb6JJ3ukr+Je+3ynxoPLS4XPrzQ7CGRKqsOXR2ZPUw5N0oZvRn+uvQi4wMR FD+THjvw1ayP3WiGNRmGTu+P3b8ZOkA6HSiSmnOmf6xbqtHybd7EdV83H3uFNRjDyV4l q+Fg== 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=DiYCjuZs54XCieM8YuoTFKeSScNs27D+PHn+Pi72OJg=; b=xGkzHc6IZUito00kU7IBUk/5YLm+CAq0MeCHzyzi6OflZ9TTqedZMd/X9+JjOfFDP+ SPUP18iO7VPe0l84qj7DR0fm5Cy8+eQUnyDgAiX52d2nghpMNms6HJQZFhO8osPk7pB2 YkRds0QH/nW21nJCeMKjqYjwIPPuTByrCipq2xEBKkH5+jbQ5AbdxSBQQACQrCtckSM4 Gi62Z5WpTUSSkQo/cL8GRZ94m3B4KuQ7KH5gFOmBOjj88WqhhbE+cysG4oIg+lxWaTO3 5x2L6yziQMsCwrd6dPRzL6wHOzcJD/efxF7jCLgH9C3N24zcGmQXoYUbhSTXWR3FPp9s Mb/A== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1-v6si14259787pln.299.2018.11.02.16.17.50; Fri, 02 Nov 2018 16:18:06 -0700 (PDT) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728568AbeKCIZy (ORCPT + 99 others); Sat, 3 Nov 2018 04:25:54 -0400 Received: from mga14.intel.com ([192.55.52.115]:32533 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726705AbeKCIZy (ORCPT ); Sat, 3 Nov 2018 04:25:54 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Nov 2018 16:16:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,457,1534834800"; d="scan'208";a="270988023" Received: from btyborox-mobl.ger.corp.intel.com (HELO localhost) ([10.249.254.138]) by orsmga005.jf.intel.com with ESMTP; 02 Nov 2018 16:16:34 -0700 From: Jarkko Sakkinen To: x86@kernel.org, platform-driver-x86@vger.kernel.org, linux-sgx@vger.kernel.org Cc: dave.hansen@intel.com, sean.j.christopherson@intel.com, nhorman@redhat.com, npmccallum@redhat.com, serge.ayoun@intel.com, shay.katz-zamir@intel.com, haitao.huang@intel.com, mark.shanahan@intel.com, andriy.shevchenko@linux.intel.com, Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Jarkko Sakkinen , Konrad Rzeszutek Wilk , David Woodhouse , "Kirill A. Shutemov" , David Wang , "Levin, Alexander (Sasha Levin)" , Jia Zhang , linux-kernel@vger.kernel.org (open list:X86 ARCHITECTURE (32-BIT AND 64-BIT)) Subject: [PATCH v15 14/23] x86/cpu/intel: Clear SGX_LC capability if not enabled in FEATURE_CONTROL Date: Sat, 3 Nov 2018 01:11:13 +0200 Message-Id: <20181102231320.29164-15-jarkko.sakkinen@linux.intel.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181102231320.29164-1-jarkko.sakkinen@linux.intel.com> References: <20181102231320.29164-1-jarkko.sakkinen@linux.intel.com> 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 From: Sean Christopherson Like SGX itself, SGX Launch Control must be explicitly enabled via a flag in IA32_FEATURE_CONTROL. Clear the SGX_LC capability if Launch Control is not fully enabled (or obviously if SGX itself is disabled). Note that clearing X86_FEATURE_SGX_LC creates a bit of a conundrum regarding the SGXLEPUBKEYHASH MSRs, as it may be desirable to read the MSRs even if they are not writable, e.g. to query the configured key, but clearing the capability leaves no breadcrum for discerning whether or not the MSRs exist. But, such usage will be rare (KVM is the only known case at this time) and not performance critical, so it's not unreasonable to require the use of rdmsr_safe(). Clearing the cap bit eliminates the need for an additional flag to track whether or not Launch Control is truly enabled, which is what we care about the vast majority of the time. Signed-off-by: Sean Christopherson --- arch/x86/kernel/cpu/intel.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 9bf8fe2c04ac..bc52c52f7025 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c @@ -618,6 +618,8 @@ static void detect_sgx(struct cpuinfo_x86 *c) setup_clear_cpu_cap(X86_FEATURE_SGX1); setup_clear_cpu_cap(X86_FEATURE_SGX2); } + if (unsupported || !(fc & FEATURE_CONTROL_SGX_LE_WR)) + setup_clear_cpu_cap(X86_FEATURE_SGX_LC); } static void init_intel_energy_perf(struct cpuinfo_x86 *c) -- 2.19.1