On Wed, Apr 13, 2022 at 5:55 PM Jane Chu <jane.chu@xxxxxxxxxx> wrote: > > On 4/11/2022 9:26 PM, Dan Williams wrote: > > On Tue, Apr 5, 2022 at 12:48 PM Jane Chu <jane.chu@xxxxxxxxxx> wrote: > >> > >> Refactor the pmem_clear_poison() in order to share common code > >> later. > >> > > > > I would just add a note here about why, i.e. to factor out the common > > shared code between the typical write path and the recovery write > > path. > > Okay. > > > > >> Signed-off-by: Jane Chu <jane.chu@xxxxxxxxxx> > >> --- > >> drivers/nvdimm/pmem.c | 78 ++++++++++++++++++++++++++++--------------- > >> 1 file changed, 52 insertions(+), 26 deletions(-) > >> > >> diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c > >> index 0400c5a7ba39..56596be70400 100644 > >> --- a/drivers/nvdimm/pmem.c > >> +++ b/drivers/nvdimm/pmem.c > >> @@ -45,10 +45,27 @@ static struct nd_region *to_region(struct pmem_device *pmem) > >> return to_nd_region(to_dev(pmem)->parent); > >> } > >> > >> -static void hwpoison_clear(struct pmem_device *pmem, > >> - phys_addr_t phys, unsigned int len) > >> +static phys_addr_t to_phys(struct pmem_device *pmem, phys_addr_t offset) > >> { > >> + return (pmem->phys_addr + offset); > > > > Christoph already mentioned dropping the unnecessary parenthesis. > > > >> +} > >> + > >> +static sector_t to_sect(struct pmem_device *pmem, phys_addr_t offset) > >> +{ > >> + return (offset - pmem->data_offset) >> SECTOR_SHIFT; > >> +} > >> + > >> +static phys_addr_t to_offset(struct pmem_device *pmem, sector_t sector) > >> +{ > >> + return ((sector << SECTOR_SHIFT) + pmem->data_offset); > >> +} > >> + > >> +static void pmem_clear_hwpoison(struct pmem_device *pmem, phys_addr_t offset, > >> + unsigned int len) > > > > Perhaps now is a good time to rename this to something else like > > pmem_clear_mce_nospec()? Just to make it more distinct from > > pmem_clear_poison(). While "hwpoison" is the page flag name > > pmem_clear_poison() is the function that's actually clearing the > > poison in hardware ("hw") and the new pmem_clear_mce_nospec() is > > toggling the page back into service. > > I get your point. How about calling the function explicitly > pmem_mkpage_present()? Sure, I like pmem_mkpage_present().