^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) menu "Android"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) config ANDROID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) bool "Android Drivers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) Enable support for various drivers needed on the Android platform
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) if ANDROID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) config ANDROID_BINDER_IPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) bool "Android Binder IPC Driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) depends on MMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Binder is used in Android for both communication between processes,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) and remote method invocation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) This means one Android process can call a method/routine in another
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) Android process, using Binder to identify, invoke and pass arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) between said processes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) config ANDROID_BINDERFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) bool "Android Binderfs filesystem"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) depends on ANDROID_BINDER_IPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) Binderfs is a pseudo-filesystem for the Android Binder IPC driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) which can be mounted per-ipc namespace allowing to run multiple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) instances of Android.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) Each binderfs mount initially only contains a binder-control device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) It can be used to dynamically allocate new binder IPC devices via
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) ioctls.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) config ANDROID_BINDER_DEVICES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) string "Android Binder devices"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) depends on ANDROID_BINDER_IPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) default "binder,hwbinder,vndbinder"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) Default value for the binder.devices parameter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) The binder.devices parameter is a comma-separated list of strings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) that specifies the names of the binder device nodes that will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) created. Each binder device has its own context manager, and is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) therefore logically separated from the other devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) config ANDROID_BINDER_IPC_SELFTEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) bool "Android Binder IPC Driver Selftest"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) depends on ANDROID_BINDER_IPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) This feature allows binder selftest to run.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) Binder selftest checks the allocation and free of binder buffers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) exhaustively with combinations of various buffer sizes and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) alignments.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) config ANDROID_DEBUG_SYMBOLS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) bool "Android Debug Symbols"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) Enables export of debug symbols that are useful for offline debugging
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) of a kernel. These symbols would be used in vendor modules to find
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) addresses of the core kernel symbols for vendor extensions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) This driver is statically compiled into kernel and maintains all the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) required symbol addresses for vendor modules and provides necessary
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) interface vendor modules.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) config ANDROID_VENDOR_HOOKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) bool "Android Vendor Hooks"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) depends on TRACEPOINTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) Enable vendor hooks implemented as tracepoints
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) Allow vendor modules to attach to tracepoint "hooks" defined via
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) DECLARE_HOOK or DECLARE_RESTRICTED_HOOK.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) config ANDROID_KABI_RESERVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) bool "Android KABI reserve padding"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) default y if !NO_GKI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) This option enables the padding that the Android GKI kernel adds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) to many different kernel structures to support an in-kernel stable ABI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) over the lifespan of support for the kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) Only disable this option if you have a system that needs the Android
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) kernel drivers, but is NOT an Android GKI kernel image. If disabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) it has the possibility to make the kernel static and runtime image
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) slightly smaller but will NOT be supported by the Google Android
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) kernel team.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) If even slightly unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) config ANDROID_VENDOR_OEM_DATA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) bool "Android vendor and OEM data padding"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) default y if !NO_GKI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) This option enables the padding that the Android GKI kernel adds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) to many different kernel structures to support an in-kernel stable ABI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) over the lifespan of support for the kernel as well as OEM additional
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) fields that are needed by some of the Android kernel tracepoints. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) macros enabled by this option are used to enable padding in vendor modules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) used for the above specified purposes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) Only disable this option if you have a system that needs the Android
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) kernel drivers, but is NOT an Android GKI kernel image and you do NOT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) use the Android kernel tracepoints. If disabled it has the possibility
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) to make the kernel static and runtime image slightly smaller but will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) NOT be supported by the Google Android kernel team.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) If even slightly unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) endif # if ANDROID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) endmenu