| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * Copyright 2017, Michael Ellerman, IBM Corporation. | |
| */ | |
| #ifndef _LINUX_SET_MEMORY_H_ | |
| #define _LINUX_SET_MEMORY_H_ | |
| #ifdef CONFIG_ARCH_HAS_SET_MEMORY | |
| #include <asm/set_memory.h> | |
| #else | |
| static inline int set_memory_ro(unsigned long addr, int numpages) { return 0; } | |
| static inline int set_memory_rw(unsigned long addr, int numpages) { return 0; } | |
| static inline int set_memory_x(unsigned long addr, int numpages) { return 0; } | |
| static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; } | |
| #endif | |
| #ifndef CONFIG_ARCH_HAS_SET_DIRECT_MAP | |
| static inline int set_direct_map_invalid_noflush(struct page *page) | |
| { | |
| return 0; | |
| } | |
| static inline int set_direct_map_default_noflush(struct page *page) | |
| { | |
| return 0; | |
| } | |
| static inline bool kernel_page_present(struct page *page) | |
| { | |
| return true; | |
| } | |
| #else /* CONFIG_ARCH_HAS_SET_DIRECT_MAP */ | |
| /* | |
| * Some architectures, e.g. ARM64 can disable direct map modifications at | |
| * boot time. Let them overrive this query. | |
| */ | |
| #ifndef can_set_direct_map | |
| static inline bool can_set_direct_map(void) | |
| { | |
| return true; | |
| } | |
| #define can_set_direct_map can_set_direct_map | |
| #endif | |
| #endif /* CONFIG_ARCH_HAS_SET_DIRECT_MAP */ | |
| #ifdef CONFIG_X86_64 | |
| int set_mce_nospec(unsigned long pfn); | |
| int clear_mce_nospec(unsigned long pfn); | |
| #else | |
| static inline int set_mce_nospec(unsigned long pfn) | |
| { | |
| return 0; | |
| } | |
| static inline int clear_mce_nospec(unsigned long pfn) | |
| { | |
| return 0; | |
| } | |
| #endif | |
| #ifndef CONFIG_ARCH_HAS_MEM_ENCRYPT | |
| static inline int set_memory_encrypted(unsigned long addr, int numpages) | |
| { | |
| return 0; | |
| } | |
| static inline int set_memory_decrypted(unsigned long addr, int numpages) | |
| { | |
| return 0; | |
| } | |
| #endif /* CONFIG_ARCH_HAS_MEM_ENCRYPT */ | |
| #endif /* _LINUX_SET_MEMORY_H_ */ |