# SPDX-License-Identifier: GPL-2.0 menu "Android" config ANDROID_BINDER_IPC bool "Android Binder IPC Driver" depends on MMU default n help Binder is used in Android for both communication between processes, and remote method invocation. This means one Android process can call a method/routine in another Android process, using Binder to identify, invoke and pass arguments between said processes. config ANDROID_BINDER_IPC_C bool "Android Binder IPC Driver in C" depends on ANDROID_BINDER_IPC default y help Enable the C implementation of the Android Binder IPC Driver. See the ANDROID_BINDER_IPC config option for more details on the Android Binder IPC driver. If unsure, pick the C implementation. config ANDROID_BINDER_IPC_RUST tristate "Android Binder IPC Driver in Rust" depends on ANDROID_BINDER_IPC && RUST help Enable the Rust implementation of the Android Binder IPC Driver. See the ANDROID_BINDER_IPC config option for more details on the Android Binder IPC driver. If unsure, pick the C implementation. config ANDROID_BINDER_IPC_DEFAULT_IS_RUST bool "Android Binder driver default implementation is Rust" depends on ANDROID_BINDER_IPC_RUST default y if !ANDROID_BINDER_IPC_C help The kernel commandline parameter binder.impl is used to choose which implementation of the Android Binder driver to use. This option determines the default value of binder.impl. If unsure, say n. config ANDROID_BINDERFS bool "Android Binderfs filesystem" depends on ANDROID_BINDER_IPC default n help Binderfs is a pseudo-filesystem for the Android Binder IPC driver which can be mounted per-ipc namespace allowing to run multiple instances of Android. Each binderfs mount initially only contains a binder-control device. It can be used to dynamically allocate new binder IPC devices via ioctls. config ANDROID_BINDERFS_C bool depends on ANDROID_BINDER_IPC_C && ANDROID_BINDERFS default y config ANDROID_BINDERFS_RUST bool depends on ANDROID_BINDER_IPC_RUST && ANDROID_BINDERFS default y config ANDROID_BINDER_DEVICES string "Android Binder devices" depends on ANDROID_BINDER_IPC default "binder,hwbinder,vndbinder" help Default value for the binder.devices parameter. The binder.devices parameter is a comma-separated list of strings that specifies the names of the binder device nodes that will be created. Each binder device has its own context manager, and is therefore logically separated from the other devices. config ANDROID_BINDER_IPC_SELFTEST bool "Android Binder IPC Driver Selftest" depends on ANDROID_BINDER_IPC_C help This feature allows binder selftest to run. Binder selftest checks the allocation and free of binder buffers exhaustively with combinations of various buffer sizes and alignments. config ANDROID_DEBUG_SYMBOLS bool "Android Debug Symbols" help Enables export of debug symbols that are useful for offline debugging of a kernel. These symbols would be used in vendor modules to find addresses of the core kernel symbols for vendor extensions. This driver is statically compiled into kernel and maintains all the required symbol addresses for vendor modules and provides necessary interface vendor modules. config ANDROID_VENDOR_HOOKS bool "Android Vendor Hooks" depends on TRACEPOINTS help Enable vendor hooks implemented as tracepoints Allow vendor modules to attach to tracepoint "hooks" defined via DECLARE_HOOK or DECLARE_RESTRICTED_HOOK. config ANDROID_DEBUG_KINFO bool "Android Debug Kernel Information Support" depends on KALLSYMS help This supports kernel information backup for bootloader usage. Specifics: - The kallsyms symbols for unwind_backtrace - Page directory pointer - UTS_RELEASE - BUILD_INFO(ro.build.fingerprint) config ANDROID_KABI_RESERVE bool "Android KABI reserve padding" default y help This option enables the padding that the Android GKI kernel adds to many different kernel structures to support an in-kernel stable ABI over the lifespan of support for the kernel. Only disable this option if you have a system that needs the Android kernel drivers, but is NOT an Android GKI kernel image. If disabled it has the possibility to make the kernel static and runtime image slightly smaller but will NOT be supported by the Google Android kernel team. If even slightly unsure, say Y. config ANDROID_VENDOR_OEM_DATA bool "Android vendor and OEM data padding" default y help This option enables the padding that the Android GKI kernel adds to many different kernel structures to support an in-kernel stable ABI over the lifespan of support for the kernel as well as OEM additional fields that are needed by some of the Android kernel tracepoints. The macros enabled by this option are used to enable padding in vendor modules used for the above specified purposes. Only disable this option if you have a system that needs the Android kernel drivers, but is NOT an Android GKI kernel image and you do NOT use the Android kernel tracepoints. If disabled it has the possibility to make the kernel static and runtime image slightly smaller but will NOT be supported by the Google Android kernel team. If even slightly unsure, say Y. endmenu