# 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_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_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
	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_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
