* Dan Williams <[email protected]> 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 <[email protected]> > Cc: Ingo Molnar <[email protected]> > Cc: "H. Peter Anvin" <[email protected]> > Cc: Tony Luck <[email protected]> > Cc: Borislav Petkov <[email protected]> > Cc: <[email protected]> > Cc: <[email protected]> > Signed-off-by: Dan Williams <[email protected]> > --- > 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 [email protected] https://lists.01.org/mailman/listinfo/linux-nvdimm
