From patchwork Tue Jun 26 14:22:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kirill A. Shutemov" X-Patchwork-Id: 10489161 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0811F602D8 for ; Tue, 26 Jun 2018 14:23:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EA12828A58 for ; Tue, 26 Jun 2018 14:23:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DDC0628A68; Tue, 26 Jun 2018 14:23:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6B3DB28A58 for ; Tue, 26 Jun 2018 14:23:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 32E9F6B0271; Tue, 26 Jun 2018 10:22:57 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 28F646B0273; Tue, 26 Jun 2018 10:22:57 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F3C3D6B0271; Tue, 26 Jun 2018 10:22:56 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl0-f69.google.com (mail-pl0-f69.google.com [209.85.160.69]) by kanga.kvack.org (Postfix) with ESMTP id 9B9B66B0007 for ; Tue, 26 Jun 2018 10:22:56 -0400 (EDT) Received: by mail-pl0-f69.google.com with SMTP id 70-v6so10179386plc.1 for ; Tue, 26 Jun 2018 07:22:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=/M5r6OI5RLXh7B8MYgAFJedVAPLxUBn3YmAGycr8dLQ=; b=CNpPdomYvl6IWHtTXa6V17tK0q9E1GyOSSo102MLchmUb2ncQx0ZdfUfvqU0vcs056 IVoJRbgUXrVByPGPYFw5wUpbLlzAjLCTbptKqZ24+SyPewJPDGQFC/hPhvGJ037L8bmp Kyn9IooIbGKuxMOAbUcB/wrQyfVWCMPetWPmQd1Bp0mPx+DG+rTcAN6kgtLfg0bkT0/q uDbWYnuYOugJEsq6ZiFN89aZUCqbY0AQcUCKcyj9KMTOfykZ+2vX+qaNAcYBntPGglee tqtQkL2TmNcG6ynemosdAGd8RuS+KsTrH9FMQeAhAB+wqgWDzqTeBJQVICbjJWWfAWcU KiLg== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of kirill.shutemov@linux.intel.com designates 134.134.136.24 as permitted sender) smtp.mailfrom=kirill.shutemov@linux.intel.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Gm-Message-State: APt69E13+0YvYVcqLiLARPwn+weID+F6gHY/AFf9lMaKDGkZhJz+fS7x M82dnq/VF+Z6GsX5Y8CYqtfuEZxH8sG7uTEEITvu36GrZ8HRbVNU/ZSrFYbn9G77CfZ29eLvhxi QMKaxcR8fQhoTWCx4zh0m+qPW+0efyaBAmCLskY5mG0ocQ7hAv+VnRCmjgK6TorOWyg== X-Received: by 2002:a65:654d:: with SMTP id a13-v6mr1623608pgw.132.1530022976314; Tue, 26 Jun 2018 07:22:56 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLR4nxGFouEqTORfDn75OTImwu3z2zXqM6aL9Sz4KuSLzxHLwNGThTlhNo83xh83GBY6VOM X-Received: by 2002:a65:654d:: with SMTP id a13-v6mr1623574pgw.132.1530022975535; Tue, 26 Jun 2018 07:22:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530022975; cv=none; d=google.com; s=arc-20160816; b=fayKeS0Se/YFN5d9KXlzfRKD+whsLx813XUHMRQG7bcXupi4eN7hSBWKCKfebGvXkP +BSZiSgiIc66P8KIK7NP6WEq2wVf0WiJmxHtq1AwyhSp3NAtcj+uvE1Bc+8OzUfI6Dtb uwYfbgNaSVSQosVjX02qIUrSH/VXbrV+Q5cyyw2eqrPFApVrmMaj30f1OzYr5UMaRM9A X851qN3GNtDDNSeczINyMrGMh7ErezsFGEcNma4AzkmTIM9XXcwghiAgCObJUlKFrv6y ZYNoM3DoqK9pCYVbtgPQvvtNiyEp9rBYnCYMzGAvqgebULrXICyw+LJJhS0TubgvGvJm 9AyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=/M5r6OI5RLXh7B8MYgAFJedVAPLxUBn3YmAGycr8dLQ=; b=enXWH7ByoSlgISJEM5p0Vegt8IrLqzZvh4ZO/2O1hmtR4i8DSv5Y2Z463dC0rsgV2g ePvXwE9BKVE+7y1ViMp6po4YcuHROHnrSEAVszn8WMCJ3Z5j8X9MewxrLfdC8macU6Hc 2e+yVhi9EqWr56aN2D4byM8iJE8vHOuxD33kzWUBgPdtMknGwxdEHSQhLrQVUBQQ27zY wBxqye+6czowqgryqm/yoYorCoXS4CGdC+Vs1F0PW8mHHMVna8fPp2yA/68qfKlJnH4b MHYMwmdlDh70SGSzB0VuzqzoRjUNMnct84T/FdxJwFmlopS24pWZ6rB4k8So/CDtuXGx zSrA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of kirill.shutemov@linux.intel.com designates 134.134.136.24 as permitted sender) smtp.mailfrom=kirill.shutemov@linux.intel.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from mga09.intel.com (mga09.intel.com. [134.134.136.24]) by mx.google.com with ESMTPS id b125-v6si1501171pgc.514.2018.06.26.07.22.55 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Jun 2018 07:22:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of kirill.shutemov@linux.intel.com designates 134.134.136.24 as permitted sender) client-ip=134.134.136.24; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of kirill.shutemov@linux.intel.com designates 134.134.136.24 as permitted sender) smtp.mailfrom=kirill.shutemov@linux.intel.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Jun 2018 07:22:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,274,1526367600"; d="scan'208";a="52376247" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga008.jf.intel.com with ESMTP; 26 Jun 2018 07:22:52 -0700 Received: by black.fi.intel.com (Postfix, from userid 1000) id B08B862D; Tue, 26 Jun 2018 17:22:51 +0300 (EEST) From: "Kirill A. Shutemov" To: Ingo Molnar , x86@kernel.org, Thomas Gleixner , "H. Peter Anvin" , Tom Lendacky Cc: Dave Hansen , Kai Huang , Jacob Pan , linux-kernel@vger.kernel.org, linux-mm@kvack.org, "Kirill A. Shutemov" Subject: [PATCHv4 06/18] x86/mm: Mask out KeyID bits from page table entry pfn Date: Tue, 26 Jun 2018 17:22:33 +0300 Message-Id: <20180626142245.82850-7-kirill.shutemov@linux.intel.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180626142245.82850-1-kirill.shutemov@linux.intel.com> References: <20180626142245.82850-1-kirill.shutemov@linux.intel.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP MKTME claims several upper bits of the physical address in a page table entry to encode KeyID. It effectively shrinks number of bits for physical address. We should exclude KeyID bits from physical addresses. For instance, if CPU enumerates 52 physical address bits and number of bits claimed for KeyID is 6, bits 51:46 must not be threated as part physical address. This patch adjusts __PHYSICAL_MASK during MKTME enumeration. Signed-off-by: Kirill A. Shutemov --- arch/x86/kernel/cpu/intel.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index eb75564f2d25..bf2caf9d52dd 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c @@ -571,6 +571,29 @@ static void detect_tme(struct cpuinfo_x86 *c) mktme_status = MKTME_ENABLED; } +#ifdef CONFIG_X86_INTEL_MKTME + if (mktme_status == MKTME_ENABLED && nr_keyids) { + /* + * Mask out bits claimed from KeyID from physical address mask. + * + * For instance, if a CPU enumerates 52 physical address bits + * and number of bits claimed for KeyID is 6, bits 51:46 of + * physical address is unusable. + */ + phys_addr_t keyid_mask; + + keyid_mask = GENMASK_ULL(c->x86_phys_bits - 1, c->x86_phys_bits - keyid_bits); + physical_mask &= ~keyid_mask; + } else { + /* + * Reset __PHYSICAL_MASK. + * Maybe needed if there's inconsistent configuation + * between CPUs. + */ + physical_mask = (1ULL << __PHYSICAL_MASK_SHIFT) - 1; + } +#endif + /* * KeyID bits effectively lower the number of physical address * bits. Update cpuinfo_x86::x86_phys_bits accordingly.