RE: [PATCH] mm/hwpoison: Clear PRESENT bit for kernel 1:1 mappings of poison pages

From: Elliott, Robert (Persistent Memory)
Date: Wed Jun 21 2017 - 15:48:10 EST



> -----Original Message-----
> From: linux-kernel-owner@xxxxxxxxxxxxxxx [mailto:linux-kernel-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Luck, Tony
> Sent: Wednesday, June 21, 2017 12:54 PM
> To: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx>
> Cc: Borislav Petkov <bp@xxxxxxx>; Dave Hansen <dave.hansen@xxxxxxxxx>;
> x86@xxxxxxxxxx; linux-mm@xxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx

(adding linux-nvdimm list in this reply)

> Subject: Re: [PATCH] mm/hwpoison: Clear PRESENT bit for kernel 1:1
> mappings of poison pages
>
> On Wed, Jun 21, 2017 at 02:12:27AM +0000, Naoya Horiguchi wrote:
>
> > We had better have a reverse operation of this to cancel the unmapping
> > when unpoisoning?
>
> When we have unpoisoning, we can add something. We don't seem to have
> an inverse function for "set_memory_np" to just flip the _PRESENT bit
> back on again. But it would be trivial to write a set_memory_pp().
>
> Since we'd be doing this after the poison has been cleared, we wouldn't
> need to play games with the address. We'd just use:
>
> set_memory_pp((unsigned long)pfn_to_kaddr(pfn), 1);
>
> -Tony

Persistent memory does have unpoisoning and would require this inverse
operation - see drivers/nvdimm/pmem.c pmem_clear_poison() and core.c
nvdimm_clear_poison().

---
Robert Elliott, HPE Persistent Memory