diff options
Diffstat (limited to 'include/linux/pmem.h')
| -rw-r--r-- | include/linux/pmem.h | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/include/linux/pmem.h b/include/linux/pmem.h index ac6d872ce067..57d146fe44dd 100644 --- a/include/linux/pmem.h +++ b/include/linux/pmem.h | |||
| @@ -72,6 +72,18 @@ static inline void arch_invalidate_pmem(void __pmem *addr, size_t size) | |||
| 72 | } | 72 | } |
| 73 | #endif | 73 | #endif |
| 74 | 74 | ||
| 75 | static inline bool arch_has_pmem_api(void) | ||
| 76 | { | ||
| 77 | return IS_ENABLED(CONFIG_ARCH_HAS_PMEM_API); | ||
| 78 | } | ||
| 79 | |||
| 80 | static inline int default_memcpy_from_pmem(void *dst, void __pmem const *src, | ||
| 81 | size_t size) | ||
| 82 | { | ||
| 83 | memcpy(dst, (void __force *) src, size); | ||
| 84 | return 0; | ||
| 85 | } | ||
| 86 | |||
| 75 | /* | 87 | /* |
| 76 | * memcpy_from_pmem - read from persistent memory with error handling | 88 | * memcpy_from_pmem - read from persistent memory with error handling |
| 77 | * @dst: destination buffer | 89 | * @dst: destination buffer |
| @@ -83,12 +95,10 @@ static inline void arch_invalidate_pmem(void __pmem *addr, size_t size) | |||
| 83 | static inline int memcpy_from_pmem(void *dst, void __pmem const *src, | 95 | static inline int memcpy_from_pmem(void *dst, void __pmem const *src, |
| 84 | size_t size) | 96 | size_t size) |
| 85 | { | 97 | { |
| 86 | return arch_memcpy_from_pmem(dst, src, size); | 98 | if (arch_has_pmem_api()) |
| 87 | } | 99 | return arch_memcpy_from_pmem(dst, src, size); |
| 88 | 100 | else | |
| 89 | static inline bool arch_has_pmem_api(void) | 101 | return default_memcpy_from_pmem(dst, src, size); |
| 90 | { | ||
| 91 | return IS_ENABLED(CONFIG_ARCH_HAS_PMEM_API); | ||
| 92 | } | 102 | } |
| 93 | 103 | ||
| 94 | /** | 104 | /** |
