Messages in this thread Patch in this message | | | From | Joe Damato <> | Subject | [RFC,x86 v2 1/8] arch, x86, uaccess: Add nontemporal copy functions | Date | Sun, 12 Jun 2022 01:57:50 -0700 |
| |
Add a generic non-temporal wrapper to uaccess which can be overridden by arches that support non-temporal copies.
An implementation is added for x86 which wraps an existing non-temporal copy in the kernel.
Signed-off-by: Joe Damato <jdamato@fastly.com> --- arch/x86/include/asm/uaccess_64.h | 6 ++++++ include/linux/uaccess.h | 6 ++++++ 2 files changed, 12 insertions(+)
diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h index 45697e0..ed41dba 100644 --- a/arch/x86/include/asm/uaccess_64.h +++ b/arch/x86/include/asm/uaccess_64.h @@ -65,6 +65,12 @@ extern long __copy_user_flushcache(void *dst, const void __user *src, unsigned s extern void memcpy_page_flushcache(char *to, struct page *page, size_t offset, size_t len); +static inline unsigned long +__copy_from_user_nocache(void *dst, const void __user *src, unsigned long size) +{ + return (unsigned long)__copy_user_nocache(dst, src, (unsigned int) size, 0); +} + static inline int __copy_from_user_inatomic_nocache(void *dst, const void __user *src, unsigned size) diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h index 5a328cf..6612c37 100644 --- a/include/linux/uaccess.h +++ b/include/linux/uaccess.h @@ -256,6 +256,12 @@ static inline size_t probe_subpage_writeable(char __user *uaddr, size_t size) #ifndef ARCH_HAS_NOCACHE_UACCESS static inline __must_check unsigned long +__copy_from_user_nocache(void *to, const void __user *from, unsigned long n) +{ + return __copy_from_user(to, from, n); +} + +static inline __must_check unsigned long __copy_from_user_inatomic_nocache(void *to, const void __user *from, unsigned long n) { -- 2.7.4
| |