Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1364798 > unrolled thread
| Started by | "Williams, Dan J" <dan.j.williams@intel.com> |
|---|---|
| First post | 2016-03-25 19:30 +0100 |
| Last post | 2016-03-25 21:30 +0100 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
[GIT PULL] libnvdimm, pmem: hook up memcpy_mcsafe "Williams, Dan J" <dan.j.williams@intel.com> - 2016-03-25 19:30 +0100
Re: [GIT PULL] libnvdimm, pmem: hook up memcpy_mcsafe Dan Williams <dan.j.williams@intel.com> - 2016-03-25 21:30 +0100
| From | "Williams, Dan J" <dan.j.williams@intel.com> |
|---|---|
| Date | 2016-03-25 19:30 +0100 |
| Subject | [GIT PULL] libnvdimm, pmem: hook up memcpy_mcsafe |
| Message-ID | <rgEEG-5Pe-7@gated-at.bofh.it> |
Hi Linus, please pull from: +AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-for-next Now that mcsafe+AF8-memcpy() has landed, and the return value was been clarified in commit+AKA-cbf8b5a2b649 +ACI-x86/mm, x86/mce: Fix return type/value for memcpy+AF8-mcsafe()+ACI-, let's hook up its primary usage in the pmem driver. --- The following changes since commit d88f48e12821ab4b2244124d50ac094568f48db5: +AKA- Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip (2016-03-24 09:47:32 -0700) are available in the git repository at: +AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-for-next for you to fetch changes up to a2b056ea291d321a8addb34bf30a656b99cf70b1: +AKA- x86, pmem: use memcpy+AF8-mcsafe() for memcpy+AF8-from+AF8-pmem() (2016-03-25 09:16:56 -0700) ---------------------------------------------------------------- commit a2b056ea291d321a8addb34bf30a656b99cf70b1 Author: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4- Date:+AKAAoACg-Tue Mar 8 10:30:19 2016 -0800 +AKAAoACgAKA-x86, pmem: use memcpy+AF8-mcsafe() for memcpy+AF8-from+AF8-pmem() +AKAAoACgAKA- +AKAAoACgAKA-Update the definition of memcpy+AF8-from+AF8-pmem() to return 0 or a negative +AKAAoACgAKA-error code.+AKAAoA-Implement x86/arch+AF8-memcpy+AF8-from+AF8-pmem() with memcpy+AF8-mcsafe(). +AKAAoACgAKA- +AKAAoACgAKA-Cc: Borislav Petkov +ADw-bp+AEA-alien8.de+AD4- +AKAAoACgAKA-Cc: Ingo Molnar +ADw-mingo+AEA-kernel.org+AD4- +AKAAoACgAKA-Cc: Tony Luck +ADw-tony.luck+AEA-intel.com+AD4- +AKAAoACgAKA-Cc: Thomas Gleixner +ADw-tglx+AEA-linutronix.de+AD4- +AKAAoACgAKA-Cc: Andy Lutomirski +ADw-luto+AEA-amacapital.net+AD4- +AKAAoACgAKA-Cc: Peter Zijlstra +ADw-peterz+AEA-infradead.org+AD4- +AKAAoACgAKA-Cc: Andrew Morton +ADw-akpm+AEA-linux-foundation.org+AD4- +AKAAoACgAKA-Cc: Linus Torvalds +ADw-torvalds+AEA-linux-foundation.org+AD4- +AKAAoACgAKA-Reviewed-by: Ross Zwisler +ADw-ross.zwisler+AEA-linux.intel.com+AD4- +AKAAoACgAKA-Signed-off-by: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4- --- +AKA-arch/x86/include/asm/pmem.h +AHwAoACg-9 +-+-+-+-+-+-+-+-+- +AKA-drivers/nvdimm/pmem.c+AKAAoACgAKAAoACgAKAAfACgAKA-4 +-+--- +AKA-include/linux/pmem.h+AKAAoACgAKAAoACgAKAAoAB8- 15 +-+-+-+-+-+-+-+-+------- +AKA-3 files changed, 20 insertions(+-), 8 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 +AEAAQA- -47,6 +-47,15 +AEAAQA- static inline void arch+AF8-memcpy+AF8-to+AF8-pmem(void +AF8AXw-pmem +ACo-dst, const void +ACo-src, +AKA- BUG()+ADs- +AKAAfQ- +AKA- +-static inline int arch+AF8-memcpy+AF8-from+AF8-pmem(void +ACo-dst, const void +AF8AXw-pmem +ACo-src, +- size+AF8-t n) +-+AHs- +- if (static+AF8-cpu+AF8-has(X86+AF8-FEATURE+AF8-MCE+AF8-RECOVERY)) +- return memcpy+AF8-mcsafe(dst, (void +AF8AXw-force +ACo-) src, n)+ADs- +- memcpy(dst, (void +AF8AXw-force +ACo-) src, n)+ADs- +- return 0+ADs- +-+AH0- +- +AKA-/+ACoAKg- +AKA- +ACo- arch+AF8-wmb+AF8-pmem - synchronize writes to persistent memory +AKA- +ACo- diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index ca5721c306bb..cc31c6f1f88e 100644 --- a/drivers/nvdimm/pmem.c +-+-+- b/drivers/nvdimm/pmem.c +AEAAQA- -99,7 +-99,7 +AEAAQA- static int pmem+AF8-do+AF8-bvec(struct pmem+AF8-device +ACo-pmem, struct page +ACo-page, +AKA- if (unlikely(bad+AF8-pmem)) +AKA- rc +AD0- -EIO+ADs- +AKA- else +AHs- - memcpy+AF8-from+AF8-pmem(mem +- off, pmem+AF8-addr, len)+ADs- +- rc +AD0- memcpy+AF8-from+AF8-pmem(mem +- off, pmem+AF8-addr, len)+ADs- +AKA- flush+AF8-dcache+AF8-page(page)+ADs- +AKA- +AH0- +AKA- +AH0- else +AHs- +AEAAQA- -295,7 +-295,7 +AEAAQA- static int pmem+AF8-rw+AF8-bytes(struct nd+AF8-namespace+AF8-common +ACo-ndns, +AKA- +AKA- if (unlikely(is+AF8-bad+AF8-pmem(+ACY-pmem-+AD4-bb, offset / 512, sz+AF8-align))) +AKA- return -EIO+ADs- - memcpy+AF8-from+AF8-pmem(buf, pmem-+AD4-virt+AF8-addr +- offset, size)+ADs- +- return memcpy+AF8-from+AF8-pmem(buf, pmem-+AD4-virt+AF8-addr +- offset, size)+ADs- +AKA- +AH0- else +AHs- +AKA- memcpy+AF8-to+AF8-pmem(pmem-+AD4-virt+AF8-addr +- offset, buf, size)+ADs- +AKA- wmb+AF8-pmem()+ADs- diff --git a/include/linux/pmem.h b/include/linux/pmem.h index 3ec5309e29f3..cdb024386f3a 100644 --- a/include/linux/pmem.h +-+-+- b/include/linux/pmem.h +AEAAQA- -66,14 +-66,17 +AEAAQA- static inline void arch+AF8-invalidate+AF8-pmem(void +AF8AXw-pmem +ACo-addr, size+AF8-t size) +AKAAIw-endif +AKA- +AKA-/+ACo- - +ACo- Architectures that define ARCH+AF8-HAS+AF8-PMEM+AF8-API must provide - +ACo- implementations for arch+AF8-memcpy+AF8-to+AF8-pmem(), arch+AF8-wmb+AF8-pmem(), - +ACo- arch+AF8-copy+AF8-from+AF8-iter+AF8-pmem(), arch+AF8-clear+AF8-pmem(), arch+AF8-wb+AF8-cache+AF8-pmem() - +ACo- and arch+AF8-has+AF8-wmb+AF8-pmem(). +- +ACo- memcpy+AF8-from+AF8-pmem - read from persistent memory with error handling +- +ACo- +AEA-dst: destination buffer +- +ACo- +AEA-src: source buffer +- +ACo- +AEA-size: transfer length +- +ACo- +- +ACo- Returns 0 on success negative error code on failure. +AKA- +ACo-/ -static inline void memcpy+AF8-from+AF8-pmem(void +ACo-dst, void +AF8AXw-pmem const +ACo-src, size+AF8-t size) +-static inline int memcpy+AF8-from+AF8-pmem(void +ACo-dst, void +AF8AXw-pmem const +ACo-src, +- size+AF8-t size) +AKAAew- - memcpy(dst, (void +AF8AXw-force const +ACo-) src, size)+ADs- +- return arch+AF8-memcpy+AF8-from+AF8-pmem(dst, src, size)+ADs- +AKAAfQ- +AKA- +AKA-static inline bool arch+AF8-has+AF8-pmem+AF8-api(void)
[toc] | [next] | [standalone]
| From | Dan Williams <dan.j.williams@intel.com> |
|---|---|
| Date | 2016-03-25 21:30 +0100 |
| Message-ID | <rgGwN-7aX-1@gated-at.bofh.it> |
| In reply to | #1364798 |
On Fri, Mar 25, 2016 at 11:22 AM, Williams, Dan J <dan.j.williams@intel.com> wrote: > Hi Linus, please pull from: > > git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-for-next > > 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 kbuild robot just reported an build failure on alpha, I'm investigating...
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web