xref: /openbmc/linux/arch/x86/include/asm/pkeys.h (revision 7d06d9c9)
166d37570SDave Hansen #ifndef _ASM_X86_PKEYS_H
266d37570SDave Hansen #define _ASM_X86_PKEYS_H
366d37570SDave Hansen 
47d06d9c9SDave Hansen #define PKEY_DEDICATED_EXECUTE_ONLY 15
57d06d9c9SDave Hansen /*
67d06d9c9SDave Hansen  * Consider the PKEY_DEDICATED_EXECUTE_ONLY key unavailable.
77d06d9c9SDave Hansen  */
87d06d9c9SDave Hansen #define arch_max_pkey() (boot_cpu_has(X86_FEATURE_OSPKE) ? \
97d06d9c9SDave Hansen 		PKEY_DEDICATED_EXECUTE_ONLY : 1)
1066d37570SDave Hansen 
1184594296SDave Hansen extern int arch_set_user_pkey_access(struct task_struct *tsk, int pkey,
1284594296SDave Hansen 		unsigned long init_val);
1384594296SDave Hansen 
1462b5f7d0SDave Hansen /*
1562b5f7d0SDave Hansen  * Try to dedicate one of the protection keys to be used as an
1662b5f7d0SDave Hansen  * execute-only protection key.
1762b5f7d0SDave Hansen  */
1862b5f7d0SDave Hansen extern int __execute_only_pkey(struct mm_struct *mm);
1962b5f7d0SDave Hansen static inline int execute_only_pkey(struct mm_struct *mm)
2062b5f7d0SDave Hansen {
2162b5f7d0SDave Hansen 	if (!boot_cpu_has(X86_FEATURE_OSPKE))
2262b5f7d0SDave Hansen 		return 0;
2362b5f7d0SDave Hansen 
2462b5f7d0SDave Hansen 	return __execute_only_pkey(mm);
2562b5f7d0SDave Hansen }
2662b5f7d0SDave Hansen 
2762b5f7d0SDave Hansen extern int __arch_override_mprotect_pkey(struct vm_area_struct *vma,
2862b5f7d0SDave Hansen 		int prot, int pkey);
2962b5f7d0SDave Hansen static inline int arch_override_mprotect_pkey(struct vm_area_struct *vma,
3062b5f7d0SDave Hansen 		int prot, int pkey)
3162b5f7d0SDave Hansen {
3262b5f7d0SDave Hansen 	if (!boot_cpu_has(X86_FEATURE_OSPKE))
3362b5f7d0SDave Hansen 		return 0;
3462b5f7d0SDave Hansen 
3562b5f7d0SDave Hansen 	return __arch_override_mprotect_pkey(vma, prot, pkey);
3662b5f7d0SDave Hansen }
3762b5f7d0SDave Hansen 
387d06d9c9SDave Hansen extern int __arch_set_user_pkey_access(struct task_struct *tsk, int pkey,
397d06d9c9SDave Hansen 		unsigned long init_val);
407d06d9c9SDave Hansen 
4166d37570SDave Hansen #endif /*_ASM_X86_PKEYS_H */
42