diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-03-31 06:56:50 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-03-31 06:56:50 -0500 |
commit | c5bce408e4b53e4498ac75c3c39eaf7ca9b7f296 (patch) | |
tree | 018b4fc5db6c0e9d69bcfdd1852853f112ef79ce /arch | |
parent | 1e6d88ccf41c7ef2d6c99aa5e7fb9215aa0e5423 (diff) | |
parent | fc0c2028135c7f75fce36b90e44efb8003a9173b (diff) | |
download | linux-c5bce408e4b53e4498ac75c3c39eaf7ca9b7f296.tar.gz linux-c5bce408e4b53e4498ac75c3c39eaf7ca9b7f296.tar.bz2 linux-c5bce408e4b53e4498ac75c3c39eaf7ca9b7f296.zip |
Merge branch 'libnvdimm-for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
Pull nvdimm mcsafe_memcpy use from Dan Williams:
"Now that mcsafe_memcpy() has landed, and the return value was been
clarified in commit cbf8b5a2b649 ("x86/mm, x86/mce: Fix return
type/value for memcpy_mcsafe()"), let's hook up its primary usage in
the pmem driver.
The compilation problems from the initial posting have been fixed,
this has appeared in a -next release with no reported issues, and it
picked up an ack from Ingo. There is no pressing need to merge this
in 4.6- rc2. However, if we wait until 4.7 the new memcpy_mcsafe()
capability will ship without a user in 4.6-final"
* 'libnvdimm-for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
x86, pmem: use memcpy_mcsafe() for memcpy_from_pmem()
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/include/asm/pmem.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/include/asm/pmem.h b/arch/x86/include/asm/pmem.h index bf8b35d2035a..fbc5e92e1ecc 100644 --- a/arch/x86/include/asm/pmem.h +++ b/arch/x86/include/asm/pmem.h @@ -47,6 +47,15 @@ static inline void arch_memcpy_to_pmem(void __pmem *dst, const void *src, BUG(); } +static inline int arch_memcpy_from_pmem(void *dst, const void __pmem *src, + size_t n) +{ + if (static_cpu_has(X86_FEATURE_MCE_RECOVERY)) + return memcpy_mcsafe(dst, (void __force *) src, n); + memcpy(dst, (void __force *) src, n); + return 0; +} + /** * arch_wmb_pmem - synchronize writes to persistent memory * |