diff --git a/arch/arm64/configs/openeuler_defconfig b/arch/arm64/configs/openeuler_defconfig index b152d1ffb547b45e24d0d2fb4dba492f59979089..fc6053a500dbaaf0c8a470274ea6df352e7c8437 100644 --- a/arch/arm64/configs/openeuler_defconfig +++ b/arch/arm64/configs/openeuler_defconfig @@ -249,6 +249,9 @@ CONFIG_SHMEM=y CONFIG_AIO=y CONFIG_IO_URING=y CONFIG_ADVISE_SYSCALLS=y +CONFIG_KABI_COMPAT=y +CONFIG_KABI_RESERVE=y +CONFIG_KABI_SIZE_ALIGN_CHECKS=y CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_SELFTEST is not set @@ -274,8 +277,6 @@ CONFIG_DEBUG_PERF_USE_VMALLOC=y CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y -CONFIG_KABI_RESERVE=y -CONFIG_KABI_SIZE_ALIGN_CHECKS=y # # Kexec and crash features diff --git a/arch/x86/configs/openeuler_defconfig b/arch/x86/configs/openeuler_defconfig index 8e577c409676d214e28633e8ad7c15b0077aef22..3d899f7c37567ade87ebd94c37b35c03fc063b94 100644 --- a/arch/x86/configs/openeuler_defconfig +++ b/arch/x86/configs/openeuler_defconfig @@ -269,6 +269,9 @@ CONFIG_SHMEM=y CONFIG_AIO=y CONFIG_IO_URING=y CONFIG_ADVISE_SYSCALLS=y +CONFIG_KABI_COMPAT=y +CONFIG_KABI_RESERVE=y +CONFIG_KABI_SIZE_ALIGN_CHECKS=y CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_SELFTEST is not set @@ -292,8 +295,6 @@ CONFIG_PERF_EVENTS=y CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y -CONFIG_KABI_RESERVE=y -CONFIG_KABI_SIZE_ALIGN_CHECKS=y # # Kexec and crash features diff --git a/include/linux/kabi.h b/include/linux/kabi.h index e0f45216328354f77957653bce64815df5a4348b..9e48d9601867b3ad29bdec8495cc7c050b2eea9e 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 1840935e919cf219dd22597653e3837949f5e0c1..a2d3e801d41fe7088b9292f2266d8304e461338b 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)" @@ -1836,6 +1837,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 @@ -2095,22 +2129,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