lkml.org 
[lkml]   [2016]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectRe: [PATCH] libnvdimm, pmem: clarify the write+clear_poison+write flow
Date
On Thu, 2016-04-14 at 19:40 -0700, Dan Williams wrote:
> The ACPI specification does not specify the state of data after a
> clear
> poison operation.  Potential future libnvdimm bus implementations for
> other architectures also might not specify or disagree on the state
> of
> data after clear poison.  Clarify why we write twice.
>
> Reported-by: Jeff Moyer <jmoyer@redhat.com>
> Reported-by: Vishal Verma <vishal.l.verma@intel.com>
> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
> ---
>  drivers/nvdimm/pmem.c |   14 ++++++++++++++
>  1 file changed, 14 insertions(+)

Looks good, thanks!

Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>

>
> diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
> index c6befaa9c708..d9a0dbc2d023 100644
> --- a/drivers/nvdimm/pmem.c
> +++ b/drivers/nvdimm/pmem.c
> @@ -86,6 +86,20 @@ static int pmem_do_bvec(struct pmem_device *pmem,
> struct page *page,
>   flush_dcache_page(page);
>   }
>   } else {
> + /*
> +  * Note that we write the data both before and after
> +  * clearing poison.  The write before clear poison
> +  * handles situations where the latest written data
> is
> +  * preserved and the clear poison operation simply
> marks
> +  * the address range as valid without changing the
> data.
> +  * In this case application software can assume that
> an
> +  * interrupted write will either return the new good
> +  * data or an error.
> +  *
> +  * However, if pmem_clear_poison() leaves the data
> in an
> +  * indeterminate state we need to perform the write
> +  * after clear poison.
> +  */
>   flush_dcache_page(page);
>   memcpy_to_pmem(pmem_addr, mem + off, len);
>   if (unlikely(bad_pmem)) {
>
\
 
 \ /
  Last update: 2016-04-15 19:01    [W:0.046 / U:0.276 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site