Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1380010
| 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 |
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 | Next — Previous in thread | Find similar | Unroll 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