xref: /openbmc/linux/include/linux/set_memory.h (revision 60463628)
1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2938f8464SMichael Ellerman /*
3938f8464SMichael Ellerman  * Copyright 2017, Michael Ellerman, IBM Corporation.
4938f8464SMichael Ellerman  */
5938f8464SMichael Ellerman #ifndef _LINUX_SET_MEMORY_H_
6938f8464SMichael Ellerman #define _LINUX_SET_MEMORY_H_
7938f8464SMichael Ellerman 
8938f8464SMichael Ellerman #ifdef CONFIG_ARCH_HAS_SET_MEMORY
9938f8464SMichael Ellerman #include <asm/set_memory.h>
10938f8464SMichael Ellerman #else
set_memory_ro(unsigned long addr,int numpages)11938f8464SMichael Ellerman static inline int set_memory_ro(unsigned long addr, int numpages) { return 0; }
set_memory_rw(unsigned long addr,int numpages)12938f8464SMichael Ellerman static inline int set_memory_rw(unsigned long addr, int numpages) { return 0; }
set_memory_x(unsigned long addr,int numpages)13938f8464SMichael Ellerman static inline int set_memory_x(unsigned long addr,  int numpages) { return 0; }
set_memory_nx(unsigned long addr,int numpages)14938f8464SMichael Ellerman static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; }
15938f8464SMichael Ellerman #endif
16938f8464SMichael Ellerman 
17*60463628SPeter Zijlstra #ifndef set_memory_rox
set_memory_rox(unsigned long addr,int numpages)18d48567c9SPeter Zijlstra static inline int set_memory_rox(unsigned long addr, int numpages)
19d48567c9SPeter Zijlstra {
20d48567c9SPeter Zijlstra 	int ret = set_memory_ro(addr, numpages);
21d48567c9SPeter Zijlstra 	if (ret)
22d48567c9SPeter Zijlstra 		return ret;
23d48567c9SPeter Zijlstra 	return set_memory_x(addr, numpages);
24d48567c9SPeter Zijlstra }
25*60463628SPeter Zijlstra #endif
26d48567c9SPeter Zijlstra 
27d253ca0cSRick Edgecombe #ifndef CONFIG_ARCH_HAS_SET_DIRECT_MAP
set_direct_map_invalid_noflush(struct page * page)28d253ca0cSRick Edgecombe static inline int set_direct_map_invalid_noflush(struct page *page)
29d253ca0cSRick Edgecombe {
30d253ca0cSRick Edgecombe 	return 0;
31d253ca0cSRick Edgecombe }
set_direct_map_default_noflush(struct page * page)32d253ca0cSRick Edgecombe static inline int set_direct_map_default_noflush(struct page *page)
33d253ca0cSRick Edgecombe {
34d253ca0cSRick Edgecombe 	return 0;
35d253ca0cSRick Edgecombe }
3632a0de88SMike Rapoport 
kernel_page_present(struct page * page)3732a0de88SMike Rapoport static inline bool kernel_page_present(struct page *page)
3832a0de88SMike Rapoport {
3932a0de88SMike Rapoport 	return true;
4032a0de88SMike Rapoport }
416d47c23bSMike Rapoport #else /* CONFIG_ARCH_HAS_SET_DIRECT_MAP */
426d47c23bSMike Rapoport /*
436d47c23bSMike Rapoport  * Some architectures, e.g. ARM64 can disable direct map modifications at
446d47c23bSMike Rapoport  * boot time. Let them overrive this query.
456d47c23bSMike Rapoport  */
466d47c23bSMike Rapoport #ifndef can_set_direct_map
can_set_direct_map(void)476d47c23bSMike Rapoport static inline bool can_set_direct_map(void)
486d47c23bSMike Rapoport {
496d47c23bSMike Rapoport 	return true;
506d47c23bSMike Rapoport }
516d47c23bSMike Rapoport #define can_set_direct_map can_set_direct_map
52d253ca0cSRick Edgecombe #endif
536d47c23bSMike Rapoport #endif /* CONFIG_ARCH_HAS_SET_DIRECT_MAP */
54d253ca0cSRick Edgecombe 
55b3fdf939SJane Chu #ifdef CONFIG_X86_64
565898b43aSJane Chu int set_mce_nospec(unsigned long pfn);
57b3fdf939SJane Chu int clear_mce_nospec(unsigned long pfn);
58b3fdf939SJane Chu #else
set_mce_nospec(unsigned long pfn)595898b43aSJane Chu static inline int set_mce_nospec(unsigned long pfn)
60284ce401SDan Williams {
61284ce401SDan Williams 	return 0;
62284ce401SDan Williams }
clear_mce_nospec(unsigned long pfn)63284ce401SDan Williams static inline int clear_mce_nospec(unsigned long pfn)
64284ce401SDan Williams {
65284ce401SDan Williams 	return 0;
66284ce401SDan Williams }
67284ce401SDan Williams #endif
68284ce401SDan Williams 
69b7fa0746SChristoph Hellwig #ifndef CONFIG_ARCH_HAS_MEM_ENCRYPT
set_memory_encrypted(unsigned long addr,int numpages)70b7fa0746SChristoph Hellwig static inline int set_memory_encrypted(unsigned long addr, int numpages)
71b7fa0746SChristoph Hellwig {
72b7fa0746SChristoph Hellwig 	return 0;
73b7fa0746SChristoph Hellwig }
74b7fa0746SChristoph Hellwig 
set_memory_decrypted(unsigned long addr,int numpages)75b7fa0746SChristoph Hellwig static inline int set_memory_decrypted(unsigned long addr, int numpages)
76b7fa0746SChristoph Hellwig {
77b7fa0746SChristoph Hellwig 	return 0;
78b7fa0746SChristoph Hellwig }
79b7fa0746SChristoph Hellwig #endif /* CONFIG_ARCH_HAS_MEM_ENCRYPT */
80b7fa0746SChristoph Hellwig 
81938f8464SMichael Ellerman #endif /* _LINUX_SET_MEMORY_H_ */
82