|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/altcall: Rename alternative_branches() to boot_apply_alt_calls()
commit 4ab3d34da3d88cff102a76c2ba928cff1ce8ea75
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Sat Apr 19 22:38:23 2025 +0100
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Wed Apr 23 19:37:57 2025 +0100
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 <andrew.cooper3@xxxxxxxxxx>
Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
---
xen/arch/x86/alternative.c | 2 +-
xen/arch/x86/include/asm/alternative.h | 1 -
xen/arch/x86/setup.c | 3 ++-
xen/include/xen/alternative-call.h | 10 +++++++++-
4 files changed, 12 insertions(+), 4 deletions(-)
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 <xen/acpi.h>
+#include <xen/alternative-call.h>
#include <xen/bitops.h>
#include <xen/console.h>
#include <xen/cpu.h>
@@ -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)
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |