From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v6,11/13] x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses From: Ingo Molnar Message-Id: <20180724073641.GA15984@gmail.com> Date: Tue, 24 Jul 2018 09:36:41 +0200 To: Dan Williams Cc: linux-nvdimm@lists.01.org, Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Tony Luck , Borislav Petkov , linux-edac@vger.kernel.org, x86@kernel.org, hch@lst.de, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org List-ID: KiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4gd3JvdGU6Cgo+IEluIHBy ZXBhcmF0aW9uIGZvciB1c2luZyBzZXRfbWVtb3J5X3VjKCkgaW5zdGVhZCBzZXRfbWVtb3J5X25w KCkgZm9yCj4gaXNvbGF0aW5nIHBvaXNvbiBmcm9tIHNwZWN1bGF0aW9uLCB0ZWFjaCB0aGUgbWVt dHlwZSBjb2RlIHRvIHNhbml0aXplCj4gcGh5c2ljYWwgYWRkcmVzc2VzIHZzIF9fUEhZU0lDQUxf TUFTSy4KPiAKPiBUaGUgbW90aXZhdGlvbiBmb3IgdXNpbmcgc2V0X21lbW9yeV91YygpIGZvciB0 aGlzIGNhc2UgaXMgdG8gYWxsb3cKPiBvbmdvaW5nIGFjY2VzcyB0byBwZXJzaXN0ZW50IG1lbW9y eSBwYWdlcyB2aWEgdGhlIHBtZW0tZHJpdmVyICsKPiBtZW1jcHlfbWNzYWZlKCkgdW50aWwgdGhl IHBvaXNvbiBpcyByZXBhaXJlZC4KPiAKPiBDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0 cm9uaXguZGU+Cj4gQ2M6IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPgo+IENjOiAiSC4g UGV0ZXIgQW52aW4iIDxocGFAenl0b3IuY29tPgo+IENjOiBUb255IEx1Y2sgPHRvbnkubHVja0Bp bnRlbC5jb20+Cj4gQ2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRlPgo+IENjOiA8bGlu dXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmc+Cj4gQ2M6IDx4ODZAa2VybmVsLm9yZz4KPiBTaWduZWQt b2ZmLWJ5OiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KPiAtLS0KPiAg YXJjaC94ODYvbW0vcGF0LmMgfCAgIDE2ICsrKysrKysrKysrKysrKysKPiAgMSBmaWxlIGNoYW5n ZWQsIDE2IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vcGF0LmMg Yi9hcmNoL3g4Ni9tbS9wYXQuYwo+IGluZGV4IDE1NTViZDdkMzQ0OS4uNjc4OGZmYTk5MGY4IDEw MDY0NAo+IC0tLSBhL2FyY2gveDg2L21tL3BhdC5jCj4gKysrIGIvYXJjaC94ODYvbW0vcGF0LmMK PiBAQCAtNTEyLDYgKzUxMiwxNyBAQCBzdGF0aWMgaW50IGZyZWVfcmFtX3BhZ2VzX3R5cGUodTY0 IHN0YXJ0LCB1NjQgZW5kKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyB1NjQgc2Fu aXRpemVfcGh5cyh1NjQgYWRkcmVzcykKPiArewo+ICsJLyoKPiArCSAqIFdoZW4gY2hhbmdpbmcg dGhlIG1lbXR5cGUgZm9yIHBhZ2VzIGNvbnRhaW5pbmcgcG9pc29uIGFsbG93Cj4gKwkgKiBmb3Ig YSAiZGVjb3kiIHZpcnR1YWwgYWRkcmVzcyAoYml0IDYzIGNsZWFyKSBwYXNzZWQgdG8KPiArCSAq IHNldF9tZW1vcnlfWCgpLiBfX3BhKCkgb24gYSAiZGVjb3kiIGFkZHJlc3MgcmVzdWx0cyBpbiBh Cj4gKwkgKiBwaHlzaWNhbCBhZGRyZXNzIHdpdGggaXQgNjMgc2V0Lgo+ICsJICovCj4gKwlyZXR1 cm4gYWRkcmVzcyAmIF9fUEhZU0lDQUxfTUFTSzsKCnMvaXQvYml0CgpUaGFua3MsCgoJSW5nbwot LS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2Ny aWJlIGxpbnV4LWVkYWMiIGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdl ci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5v cmcvbWFqb3Jkb21vLWluZm8uaHRtbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C00AC210C124F for ; Tue, 24 Jul 2018 00:36:46 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id h14-v6so3034757wrw.13 for ; Tue, 24 Jul 2018 00:36:46 -0700 (PDT) Date: Tue, 24 Jul 2018 09:36:41 +0200 From: Ingo Molnar Subject: Re: [PATCH v6 11/13] x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses Message-ID: <20180724073641.GA15984@gmail.com> References: <153154376846.34503.15480221419473501643.stgit@dwillia2-desk3.amr.corp.intel.com> <153154382700.34503.10197588570935341739.stgit@dwillia2-desk3.amr.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <153154382700.34503.10197588570935341739.stgit@dwillia2-desk3.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: Dan Williams Cc: Tony Luck , linux-nvdimm@lists.01.org, x86@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , linux-fsdevel@vger.kernel.org, Thomas Gleixner , hch@lst.de, linux-edac@vger.kernel.org List-ID: * Dan Williams wrote: > In preparation for using set_memory_uc() instead set_memory_np() for > isolating poison from speculation, teach the memtype code to sanitize > physical addresses vs __PHYSICAL_MASK. > > The motivation for using set_memory_uc() for this case is to allow > ongoing access to persistent memory pages via the pmem-driver + > memcpy_mcsafe() until the poison is repaired. > > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: "H. Peter Anvin" > Cc: Tony Luck > Cc: Borislav Petkov > Cc: > Cc: > Signed-off-by: Dan Williams > --- > arch/x86/mm/pat.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c > index 1555bd7d3449..6788ffa990f8 100644 > --- a/arch/x86/mm/pat.c > +++ b/arch/x86/mm/pat.c > @@ -512,6 +512,17 @@ static int free_ram_pages_type(u64 start, u64 end) > return 0; > } > > +static u64 sanitize_phys(u64 address) > +{ > + /* > + * When changing the memtype for pages containing poison allow > + * for a "decoy" virtual address (bit 63 clear) passed to > + * set_memory_X(). __pa() on a "decoy" address results in a > + * physical address with it 63 set. > + */ > + return address & __PHYSICAL_MASK; s/it/bit Thanks, Ingo _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 24 Jul 2018 09:36:41 +0200 From: Ingo Molnar To: Dan Williams Cc: linux-nvdimm@lists.01.org, Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Tony Luck , Borislav Petkov , linux-edac@vger.kernel.org, x86@kernel.org, hch@lst.de, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v6 11/13] x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses Message-ID: <20180724073641.GA15984@gmail.com> References: <153154376846.34503.15480221419473501643.stgit@dwillia2-desk3.amr.corp.intel.com> <153154382700.34503.10197588570935341739.stgit@dwillia2-desk3.amr.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <153154382700.34503.10197588570935341739.stgit@dwillia2-desk3.amr.corp.intel.com> Sender: owner-linux-mm@kvack.org List-ID: * Dan Williams wrote: > In preparation for using set_memory_uc() instead set_memory_np() for > isolating poison from speculation, teach the memtype code to sanitize > physical addresses vs __PHYSICAL_MASK. > > The motivation for using set_memory_uc() for this case is to allow > ongoing access to persistent memory pages via the pmem-driver + > memcpy_mcsafe() until the poison is repaired. > > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: "H. Peter Anvin" > Cc: Tony Luck > Cc: Borislav Petkov > Cc: > Cc: > Signed-off-by: Dan Williams > --- > arch/x86/mm/pat.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c > index 1555bd7d3449..6788ffa990f8 100644 > --- a/arch/x86/mm/pat.c > +++ b/arch/x86/mm/pat.c > @@ -512,6 +512,17 @@ static int free_ram_pages_type(u64 start, u64 end) > return 0; > } > > +static u64 sanitize_phys(u64 address) > +{ > + /* > + * When changing the memtype for pages containing poison allow > + * for a "decoy" virtual address (bit 63 clear) passed to > + * set_memory_X(). __pa() on a "decoy" address results in a > + * physical address with it 63 set. > + */ > + return address & __PHYSICAL_MASK; s/it/bit Thanks, Ingo