Skip to content

Commit

Permalink
x86: Introduce ia32_enabled()
Browse files Browse the repository at this point in the history
IA32 support on 64bit kernels depends on whether CONFIG_IA32_EMULATION
is selected or not. As it is a compile time option it doesn't
provide the flexibility to have distributions set their own policy for
IA32 support and give the user the flexibility to override it.

As a first step introduce ia32_enabled() which abstracts whether IA32
compat is turned on or off. Upcoming patches will implement
the ability to set IA32 compat state at boot time.

Signed-off-by: Nikolay Borisov <nik.borisov@suse.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20230623111409.3047467-2-nik.borisov@suse.com
  • Loading branch information
Nikolay Borisov authored and KAGA-KOKO committed Sep 14, 2023
1 parent 0bb80ec commit 1da5c9b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
4 changes: 4 additions & 0 deletions arch/x86/entry/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@ static __always_inline int syscall_32_enter(struct pt_regs *regs)
return (int)regs->orig_ax;
}

#ifdef CONFIG_IA32_EMULATION
bool __ia32_enabled __ro_after_init = true;
#endif

/*
* Invoke a 32-bit syscall. Called with IRQs on in CONTEXT_KERNEL.
*/
Expand Down
16 changes: 15 additions & 1 deletion arch/x86/include/asm/ia32.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,20 @@ extern void ia32_pick_mmap_layout(struct mm_struct *mm);

#endif

#endif /* CONFIG_IA32_EMULATION */
extern bool __ia32_enabled;

static inline bool ia32_enabled(void)
{
return __ia32_enabled;
}

#else /* !CONFIG_IA32_EMULATION */

static inline bool ia32_enabled(void)
{
return IS_ENABLED(CONFIG_X86_32);
}

#endif

#endif /* _ASM_X86_IA32_H */

0 comments on commit 1da5c9b

Please sign in to comment.