From: Andrew Cooper Date: Sat, 19 Apr 2025 21:38:23 +0000 (+0100) Subject: x86/altcall: Rename alternative_branches() to boot_apply_alt_calls() X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=4ab3d34da3d88cff102a76c2ba928cff1ce8ea75;p=people%2Fandrewcoop%2Fxen.git x86/altcall: Rename alternative_branches() to boot_apply_alt_calls() The alternatives APIs are not great; rename alternative_branches() to be more precise. Centralise the declaration in xen/alternative-call.h, in the expectation that x86 won't be the only user in the long term. No functional change. Signed-off-by: Andrew Cooper Acked-by: Jan Beulich --- diff --git a/xen/arch/x86/alternative.c b/xen/arch/x86/alternative.c index 1ba35cb9ed..d1a3b7ea7c 100644 --- a/xen/arch/x86/alternative.c +++ b/xen/arch/x86/alternative.c @@ -493,7 +493,7 @@ void __init alternative_instructions(void) _alternative_instructions(false); } -void __init alternative_branches(void) +void __init boot_apply_alt_calls(void) { local_irq_disable(); _alternative_instructions(true); diff --git a/xen/arch/x86/include/asm/alternative.h b/xen/arch/x86/include/asm/alternative.h index 2d2ace97f7..29c3d724b0 100644 --- a/xen/arch/x86/include/asm/alternative.h +++ b/xen/arch/x86/include/asm/alternative.h @@ -29,7 +29,6 @@ extern void add_nops(void *insns, unsigned int len); /* Similar to alternative_instructions except it can be run with IRQs enabled. */ extern int apply_alternatives(struct alt_instr *start, struct alt_instr *end); extern void alternative_instructions(void); -extern void alternative_branches(void); #define alt_orig_len "(.LXEN%=_orig_e - .LXEN%=_orig_s)" #define alt_pad_len "(.LXEN%=_orig_p - .LXEN%=_orig_e)" diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index cf1ea040dd..2518954124 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -2082,7 +2083,7 @@ void asmlinkage __init noreturn __start_xen(void) do_presmp_initcalls(); - alternative_branches(); + boot_apply_alt_calls(); /* * NB: when running as a PV shim VCPUOP_up/down is wired to the shim diff --git a/xen/include/xen/alternative-call.h b/xen/include/xen/alternative-call.h index 39339c3f0f..3c855bfa44 100644 --- a/xen/include/xen/alternative-call.h +++ b/xen/include/xen/alternative-call.h @@ -17,6 +17,8 @@ * generation requirements are to emit a function pointer call at build * time, and stash enough metadata to simplify the call at boot once the * implementation has been resolved. + * - Implement boot_apply_alt_calls() to convert the function pointer calls + * into direct calls on boot. * - Select ALTERNATIVE_CALL in Kconfig. * * To use: @@ -57,7 +59,13 @@ # define __alt_call_maybe_initdata __initdata #endif -#else +/* + * Devirtualise the alternative_{,v}call()'s on boot. Convert still-NULL + * function pointers into traps. + */ +void boot_apply_alt_calls(void); + +#else /* CONFIG_ALTERNATIVE_CALL */ #define alternative_call(func, args...) (func)(args) #define alternative_vcall(func, args...) (func)(args)