Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1380010

Re: [PATCH] libnvdimm, pmem: clarify the write+clear_poison+write flow

From "Verma, Vishal L" <vishal.l.verma@intel.com>
Newsgroups linux.kernel
Subject Re: [PATCH] libnvdimm, pmem: clarify the write+clear_poison+write flow
Date 2016-04-15 19:00 +0200
Message-ID <rofg6-67R-9@gated-at.bofh.it> (permalink)
References <ro1Zv-41K-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


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)) {
> 

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH] libnvdimm, pmem: clarify the write+clear_poison+write flow Dan Williams <dan.j.williams@intel.com> - 2016-04-15 04:50 +0200
  Re: [PATCH] libnvdimm, pmem: clarify the write+clear_poison+write flow Johannes Thumshirn <jthumshirn@suse.de> - 2016-04-15 09:20 +0200
  Re: [PATCH] libnvdimm, pmem: clarify the write+clear_poison+write flow Jeff Moyer <jmoyer@redhat.com> - 2016-04-15 14:40 +0200
  Re: [PATCH] libnvdimm, pmem: clarify the write+clear_poison+write  flow "Verma, Vishal L" <vishal.l.verma@intel.com> - 2016-04-15 19:00 +0200

csiph-web