mirror of https://gitee.com/openkylin/linux.git
arm64: uaccess: Implement *_flushcache variants
Implement the set of copy functions with guarantees of a clean cache upon completion necessary to support the pmem driver. Reviewed-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
parent
d50e071fda
commit
5d7bdeb1ee
|
@ -963,6 +963,7 @@ config ARM64_UAO
|
|||
config ARM64_PMEM
|
||||
bool "Enable support for persistent memory"
|
||||
select ARCH_HAS_PMEM_API
|
||||
select ARCH_HAS_UACCESS_FLUSHCACHE
|
||||
help
|
||||
Say Y to enable support for the persistent memory API based on the
|
||||
ARMv8.2 DCPoP feature.
|
||||
|
|
|
@ -52,6 +52,10 @@ extern void *__memset(void *, int, __kernel_size_t);
|
|||
#define __HAVE_ARCH_MEMCMP
|
||||
extern int memcmp(const void *, const void *, size_t);
|
||||
|
||||
#ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE
|
||||
#define __HAVE_ARCH_MEMCPY_FLUSHCACHE
|
||||
void memcpy_flushcache(void *dst, const void *src, size_t cnt);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__)
|
||||
|
||||
|
|
|
@ -347,4 +347,16 @@ extern long strncpy_from_user(char *dest, const char __user *src, long count);
|
|||
|
||||
extern __must_check long strnlen_user(const char __user *str, long n);
|
||||
|
||||
#ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE
|
||||
struct page;
|
||||
void memcpy_page_flushcache(char *to, struct page *page, size_t offset, size_t len);
|
||||
extern unsigned long __must_check __copy_user_flushcache(void *to, const void __user *from, unsigned long n);
|
||||
|
||||
static inline int __copy_from_user_flushcache(void *dst, const void __user *src, unsigned size)
|
||||
{
|
||||
kasan_check_write(dst, size);
|
||||
return __copy_user_flushcache(dst, src, size);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_UACCESS_H */
|
||||
|
|
|
@ -17,3 +17,5 @@ CFLAGS_atomic_ll_sc.o := -fcall-used-x0 -ffixed-x1 -ffixed-x2 \
|
|||
-fcall-saved-x10 -fcall-saved-x11 -fcall-saved-x12 \
|
||||
-fcall-saved-x13 -fcall-saved-x14 -fcall-saved-x15 \
|
||||
-fcall-saved-x18
|
||||
|
||||
lib-$(CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE) += uaccess_flushcache.o
|
||||
|
|
Loading…
Reference in New Issue