Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp4030721pxb; Mon, 30 Aug 2021 17:02:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwzBcZn5BSK0cZJNaBJp42Z4CB2+ns1ECzb6ctrfRECBzuk6CyYwHLVFKgrfPwCD0KM4c28 X-Received: by 2002:a5d:9653:: with SMTP id d19mr20130261ios.74.1630368168907; Mon, 30 Aug 2021 17:02:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630368168; cv=none; d=google.com; s=arc-20160816; b=UbEQvhXXc/v1fG+INQdogN7jnlwZ5rQoYqVPpia8FShkFhqZpRhtiiZnXJ6cfPykM0 jb22spnNRgQf4mvCu4fnLrk5o3cg9tOIYZtag+0GwyrnKFqn4tW/rRBPB7G4WiDL/JBD qydni18yM0zgt4ZXkvPNBQ0DIvgo+WxjXmLKEQriJwQmVDLCiuo8Aara4vvLsRhtPSAS umAes0iagzyHknI9RiIHvkSWE5g3l5v6jRIu0KlvjaNmGaPgLXp+BGrh/oBr9Zj/DhjQ LLzM93nlSEpD4Ocbg+NNmaM44wLhO9rIqd8CB/2LXNjd8dUgeKZRadJev5s+ipfeqBVH zpnA== 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=Mnam9eNGqWNdw0UFl/EP3079B60ijE5OmPfjo+aBMWo=; b=K/LR0HAYfJc3HIHkHEuH/1UMazGkJHEKXrmE+ru8HxY9lI26ih1D/NMilrboYVWqwJ oAoEGrsAeyvrOj2RjkbtPJ/5vuoNnXyme9cBrge2K84b/58kM56hzaN4HDhyEWN09y6n 59M8/llOMmAsddc3wn0kkrH3eJLNSjfZOgtqDEQvDLwTTzVFnTHl4V5nbLSfNURD6Uiy VFiHvdqnc7a/jXJZQjl4ylTqysuKiPTI1a9ex+6RpLcSC628lFZOg7lSoF5+sxEzNztU QEIw1nowpLoeitYSoIJxMb5a2vtOlfDCN6efvV+03IBSiMmePI0zCqdivhCQjWduRP16 zO4g== 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 p4si15611659ilq.160.2021.08.30.17.02.38; Mon, 30 Aug 2021 17:02:48 -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 S239347AbhHaABt (ORCPT + 99 others); Mon, 30 Aug 2021 20:01:49 -0400 Received: from mga09.intel.com ([134.134.136.24]:50155 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239144AbhHaABD (ORCPT ); Mon, 30 Aug 2021 20:01:03 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10092"; a="218381549" X-IronPort-AV: E=Sophos;i="5.84,364,1620716400"; d="scan'208";a="218381549" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Aug 2021 17:00:07 -0700 X-IronPort-AV: E=Sophos;i="5.84,364,1620716400"; d="scan'208";a="530712992" Received: from ajinkyak-mobl2.amr.corp.intel.com (HELO rpedgeco-desk.amr.corp.intel.com) ([10.212.240.95]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Aug 2021 17:00:07 -0700 From: Rick Edgecombe To: dave.hansen@intel.com, luto@kernel.org, peterz@infradead.org, x86@kernel.org, akpm@linux-foundation.org, keescook@chromium.org, shakeelb@google.com, vbabka@suse.cz, rppt@kernel.org Cc: Rick Edgecombe , linux-mm@kvack.org, linux-hardening@vger.kernel.org, kernel-hardening@lists.openwall.com, ira.weiny@intel.com, dan.j.williams@intel.com, linux-kernel@vger.kernel.org Subject: [RFC PATCH v2 15/19] x86/mm/cpa: Add set_memory_pks() Date: Mon, 30 Aug 2021 16:59:23 -0700 Message-Id: <20210830235927.6443-16-rick.p.edgecombe@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210830235927.6443-1-rick.p.edgecombe@intel.com> References: <20210830235927.6443-1-rick.p.edgecombe@intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add function for setting PKS key on kernel memory. Signed-off-by: Rick Edgecombe --- arch/x86/include/asm/set_memory.h | 1 + arch/x86/mm/pat/set_memory.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/arch/x86/include/asm/set_memory.h b/arch/x86/include/asm/set_memory.h index e0516651698a..1ba2fb45ed05 100644 --- a/arch/x86/include/asm/set_memory.h +++ b/arch/x86/include/asm/set_memory.h @@ -52,6 +52,7 @@ int set_memory_decrypted(unsigned long addr, int numpages); int set_memory_np_noalias(unsigned long addr, int numpages); int set_memory_nonglobal(unsigned long addr, int numpages); int set_memory_global(unsigned long addr, int numpages); +int set_memory_pks(unsigned long addr, int numpages, int key); int set_pages_array_uc(struct page **pages, int addrinarray); int set_pages_array_wc(struct page **pages, int addrinarray); diff --git a/arch/x86/mm/pat/set_memory.c b/arch/x86/mm/pat/set_memory.c index c51792a797cb..dc704e8da032 100644 --- a/arch/x86/mm/pat/set_memory.c +++ b/arch/x86/mm/pat/set_memory.c @@ -1922,6 +1922,13 @@ int set_memory_wb(unsigned long addr, int numpages) } EXPORT_SYMBOL(set_memory_wb); +int set_memory_pks(unsigned long addr, int numpages, int key) +{ + return change_page_attr_set_clr(&addr, numpages, __pgprot(_PAGE_PKEY(key)), + __pgprot(_PAGE_PKEY(0xF & ~(unsigned int)key)), + 0, 0, NULL); +} + int set_memory_x(unsigned long addr, int numpages) { if (!(__supported_pte_mask & _PAGE_NX)) -- 2.17.1