diff options
Diffstat (limited to 'arch/x86/include/asm/cacheflush.h')
| -rw-r--r-- | arch/x86/include/asm/cacheflush.h | 73 | 
1 files changed, 2 insertions, 71 deletions
diff --git a/arch/x86/include/asm/cacheflush.h b/arch/x86/include/asm/cacheflush.h index 9bf3ea14b9f0..e63aa38e85fb 100644 --- a/arch/x86/include/asm/cacheflush.h +++ b/arch/x86/include/asm/cacheflush.h @@ -89,6 +89,8 @@ int set_pages_rw(struct page *page, int numpages);  void clflush_cache_range(void *addr, unsigned int size); +#define mmio_flush_range(addr, size) clflush_cache_range(addr, size) +  #ifdef CONFIG_DEBUG_RODATA  void mark_rodata_ro(void);  extern const int rodata_test_data; @@ -109,75 +111,4 @@ static inline int rodata_test(void)  }  #endif -#ifdef ARCH_HAS_NOCACHE_UACCESS - -/** - * arch_memcpy_to_pmem - copy data to persistent memory - * @dst: destination buffer for the copy - * @src: source buffer for the copy - * @n: length of the copy in bytes - * - * Copy data to persistent memory media via non-temporal stores so that - * a subsequent arch_wmb_pmem() can flush cpu and memory controller - * write buffers to guarantee durability. - */ -static inline void arch_memcpy_to_pmem(void __pmem *dst, const void *src, -		size_t n) -{ -	int unwritten; - -	/* -	 * We are copying between two kernel buffers, if -	 * __copy_from_user_inatomic_nocache() returns an error (page -	 * fault) we would have already reported a general protection fault -	 * before the WARN+BUG. -	 */ -	unwritten = __copy_from_user_inatomic_nocache((void __force *) dst, -			(void __user *) src, n); -	if (WARN(unwritten, "%s: fault copying %p <- %p unwritten: %d\n", -				__func__, dst, src, unwritten)) -		BUG(); -} - -/** - * arch_wmb_pmem - synchronize writes to persistent memory - * - * After a series of arch_memcpy_to_pmem() operations this drains data - * from cpu write buffers and any platform (memory controller) buffers - * to ensure that written data is durable on persistent memory media. - */ -static inline void arch_wmb_pmem(void) -{ -	/* -	 * wmb() to 'sfence' all previous writes such that they are -	 * architecturally visible to 'pcommit'.  Note, that we've -	 * already arranged for pmem writes to avoid the cache via -	 * arch_memcpy_to_pmem(). -	 */ -	wmb(); -	pcommit_sfence(); -} - -static inline bool __arch_has_wmb_pmem(void) -{ -#ifdef CONFIG_X86_64 -	/* -	 * We require that wmb() be an 'sfence', that is only guaranteed on -	 * 64-bit builds -	 */ -	return static_cpu_has(X86_FEATURE_PCOMMIT); -#else -	return false; -#endif -} -#else /* ARCH_HAS_NOCACHE_UACCESS i.e. ARCH=um */ -extern void arch_memcpy_to_pmem(void __pmem *dst, const void *src, size_t n); -extern void arch_wmb_pmem(void); - -static inline bool __arch_has_wmb_pmem(void) -{ -	return false; -} -#endif -  #endif /* _ASM_X86_CACHEFLUSH_H */  |