hulk inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/IB9FKU
--------------------------------
Some distributions need to maintain and fix KABI compatibility so that drivers do not need to be recompiled during kernel upgrades. Fixing KABI compatibility is a dangerous and hacking job. Developers need to know clearly what they are doing and the risks they may face. KABI fix actions are closely related to the processor architecture. Fixes may not be appropriate for all architectures. Improper fix may cause kernel panic or unexpected error.
Only for expert users, and select N by default.
Signed-off-by: Xie XiuQi xiexiuqi@huawei.com --- include/linux/kabi.h | 2 +- init/Kconfig | 50 ++++++++++++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 17 deletions(-)
diff --git a/include/linux/kabi.h b/include/linux/kabi.h index e0f452163283..9e48d9601867 100644 --- a/include/linux/kabi.h +++ b/include/linux/kabi.h @@ -332,7 +332,7 @@ * the end of the enum. Before using this macro, make sure this is actually * safe to do. */ -#ifdef __GENKSYMS__ +#if defined(__GENKSYMS__) && IS_ENABLED(CONFIG_KABI_COMPAT)
# define KABI_CONST # define KABI_ADD_MODIFIER(_new) diff --git a/init/Kconfig b/init/Kconfig index c1f125e99163..261286d36c83 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1,4 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-only + config CC_VERSION_TEXT string default "$(CC_VERSION_TEXT)" @@ -1834,6 +1835,39 @@ config ADVISE_SYSCALLS applications use these syscalls, you can disable this option to save space.
+config KABI_COMPAT + bool "Enable kabi compatible fix" if EXPERT + depends on X86_64 || ARM64 + default n + help + Support KABI compatibility fix. Some distributions need to maintain + and fix KABI compatibility so that drivers do not need to be recompiled + during kernel upgrades. Fixing KABI compatibility is a dangerous and + hacking job. Developers need to know clearly what they are doing and + the risks they may face. Related KABI fix actions are closely related + to the processor architecture. Fixes may not be appropriate for all + architectures. Improper use may cause system panic. + + If unsure, say N. + +config KABI_RESERVE + bool "Enable KABI PADDING RESERVE" + default y + depends on KABI_COMPAT + help + This option enables KABI padding reserve. + For some embedded system, KABI padding reserve may be not necessary. + Disable it on demand. + +config KABI_SIZE_ALIGN_CHECKS + bool "Enables more stringent kabi checks in the macros" + default y + depends on KABI_RESERVE + help + This option enables more stringent kabi checks. Those must be disable + in case of a debug-build because they allow to change struct sizes. + + config MEMBARRIER bool "Enable membarrier() system call" if EXPERT default y @@ -2090,22 +2124,6 @@ config BINDGEN_VERSION_TEXT config TRACEPOINTS bool
-config KABI_RESERVE - bool "Enable KABI PADDING RESERVE" - default y - help - This option enables KABI padding reserve. - For some embedded system, KABI padding reserve may be not necessary. - Disable it on demand. - -config KABI_SIZE_ALIGN_CHECKS - bool "Enables more stringent kabi checks in the macros" - default y - depends on KABI_RESERVE - help - This option enables more stringent kabi checks. Those must be disable - in case of a debug-build because they allow to change struct sizes. - source "kernel/Kconfig.kexec"
endmenu # General setup