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: Dave Jiang Message-Id: <896ea559-8fe5-9b2a-e763-407fae55cc01@intel.com> Date: Tue, 24 Jul 2018 08:46:06 -0700 To: Ingo Molnar , 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: T24gMDcvMjQvMjAxOCAxMjozNiBBTSwgSW5nbyBNb2xuYXIgd3JvdGU6Cj4gCj4gKiBEYW4gV2ls bGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4gd3JvdGU6Cj4gCj4+IEluIHByZXBhcmF0 aW9uIGZvciB1c2luZyBzZXRfbWVtb3J5X3VjKCkgaW5zdGVhZCBzZXRfbWVtb3J5X25wKCkgZm9y Cj4+IGlzb2xhdGluZyBwb2lzb24gZnJvbSBzcGVjdWxhdGlvbiwgdGVhY2ggdGhlIG1lbXR5cGUg Y29kZSB0byBzYW5pdGl6ZQo+PiBwaHlzaWNhbCBhZGRyZXNzZXMgdnMgX19QSFlTSUNBTF9NQVNL Lgo+Pgo+PiBUaGUgbW90aXZhdGlvbiBmb3IgdXNpbmcgc2V0X21lbW9yeV91YygpIGZvciB0aGlz IGNhc2UgaXMgdG8gYWxsb3cKPj4gb25nb2luZyBhY2Nlc3MgdG8gcGVyc2lzdGVudCBtZW1vcnkg cGFnZXMgdmlhIHRoZSBwbWVtLWRyaXZlciArCj4+IG1lbWNweV9tY3NhZmUoKSB1bnRpbCB0aGUg cG9pc29uIGlzIHJlcGFpcmVkLgo+Pgo+PiBDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0 cm9uaXguZGU+Cj4+IENjOiBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4KPj4gQ2M6ICJI LiBQZXRlciBBbnZpbiIgPGhwYUB6eXRvci5jb20+Cj4+IENjOiBUb255IEx1Y2sgPHRvbnkubHVj a0BpbnRlbC5jb20+Cj4+IENjOiBCb3Jpc2xhdiBQZXRrb3YgPGJwQGFsaWVuOC5kZT4KPj4gQ2M6 IDxsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZz4KPj4gQ2M6IDx4ODZAa2VybmVsLm9yZz4KPj4g U2lnbmVkLW9mZi1ieTogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+Cj4+ IC0tLQo+PiAgYXJjaC94ODYvbW0vcGF0LmMgfCAgIDE2ICsrKysrKysrKysrKysrKysKPj4gIDEg ZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9tbS9wYXQuYyBiL2FyY2gveDg2L21tL3BhdC5jCj4+IGluZGV4IDE1NTViZDdkMzQ0OS4uNjc4 OGZmYTk5MGY4IDEwMDY0NAo+PiAtLS0gYS9hcmNoL3g4Ni9tbS9wYXQuYwo+PiArKysgYi9hcmNo L3g4Ni9tbS9wYXQuYwo+PiBAQCAtNTEyLDYgKzUxMiwxNyBAQCBzdGF0aWMgaW50IGZyZWVfcmFt X3BhZ2VzX3R5cGUodTY0IHN0YXJ0LCB1NjQgZW5kKQo+PiAgCXJldHVybiAwOwo+PiAgfQo+PiAg Cj4+ICtzdGF0aWMgdTY0IHNhbml0aXplX3BoeXModTY0IGFkZHJlc3MpCj4+ICt7Cj4+ICsJLyoK Pj4gKwkgKiBXaGVuIGNoYW5naW5nIHRoZSBtZW10eXBlIGZvciBwYWdlcyBjb250YWluaW5nIHBv aXNvbiBhbGxvdwo+PiArCSAqIGZvciBhICJkZWNveSIgdmlydHVhbCBhZGRyZXNzIChiaXQgNjMg Y2xlYXIpIHBhc3NlZCB0bwo+PiArCSAqIHNldF9tZW1vcnlfWCgpLiBfX3BhKCkgb24gYSAiZGVj b3kiIGFkZHJlc3MgcmVzdWx0cyBpbiBhCj4+ICsJICogcGh5c2ljYWwgYWRkcmVzcyB3aXRoIGl0 IDYzIHNldC4KPj4gKwkgKi8KPj4gKwlyZXR1cm4gYWRkcmVzcyAmIF9fUEhZU0lDQUxfTUFTSzsK PiAKPiBzL2l0L2JpdAoKVGhhbmtzIEluZ28hIEknbGwgdXBkYXRlIHdoZW4gSSBwdWxsIGluIHRo ZSBwYXRjaC4KCj4gCj4gVGhhbmtzLAo+IAo+IAlJbmdvCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBMaW51eC1udmRpbW0gbWFpbGluZyBsaXN0Cj4g TGludXgtbnZkaW1tQGxpc3RzLjAxLm9yZwo+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtbnZkaW1tCj4KLS0tClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0 OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC1lZGFjIiBpbgp0aGUgYm9keSBvZiBh IG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZv IGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id BBD0420945D80 for ; Tue, 24 Jul 2018 08:46:07 -0700 (PDT) Subject: Re: [PATCH v6 11/13] x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses References: <153154376846.34503.15480221419473501643.stgit@dwillia2-desk3.amr.corp.intel.com> <153154382700.34503.10197588570935341739.stgit@dwillia2-desk3.amr.corp.intel.com> <20180724073641.GA15984@gmail.com> From: Dave Jiang Message-ID: <896ea559-8fe5-9b2a-e763-407fae55cc01@intel.com> Date: Tue, 24 Jul 2018 08:46:06 -0700 MIME-Version: 1.0 In-Reply-To: <20180724073641.GA15984@gmail.com> Content-Language: en-US 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: Ingo Molnar , 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: On 07/24/2018 12:36 AM, Ingo Molnar wrote: > > * 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! I'll update when I pull in the patch. > > Thanks, > > Ingo > _______________________________________________ > Linux-nvdimm mailing list > Linux-nvdimm@lists.01.org > https://lists.01.org/mailman/listinfo/linux-nvdimm > _______________________________________________ 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: Subject: Re: [PATCH v6 11/13] x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses To: Ingo Molnar , 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 References: <153154376846.34503.15480221419473501643.stgit@dwillia2-desk3.amr.corp.intel.com> <153154382700.34503.10197588570935341739.stgit@dwillia2-desk3.amr.corp.intel.com> <20180724073641.GA15984@gmail.com> From: Dave Jiang Message-ID: <896ea559-8fe5-9b2a-e763-407fae55cc01@intel.com> Date: Tue, 24 Jul 2018 08:46:06 -0700 MIME-Version: 1.0 In-Reply-To: <20180724073641.GA15984@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: On 07/24/2018 12:36 AM, Ingo Molnar wrote: > > * 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! I'll update when I pull in the patch. > > Thanks, > > Ingo > _______________________________________________ > Linux-nvdimm mailing list > Linux-nvdimm@lists.01.org > https://lists.01.org/mailman/listinfo/linux-nvdimm >