pmaports/kconfigcheck.toml
Clayton Craft 3a74f3a1de
kconfigcheck: enable all compression backends for zram
It doesn't seem like enabling these will "cost" us anything, and
making sure they are enabled will let us more easily change the default
compressor for zram swap in the future.

Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/7753>
2026-01-14 21:59:26 +00:00

615 lines
18 KiB
TOML

# pmaports CI and "pmbootstrap kconfig check" use this file to ensure our
# kernels have certain kernel config options set. Which categories are checked
# depends on options="pmb:kconfigcheck-…" in the linux APKBUILD. If no such
# option is set, see the default in ["category:default".">=0.0.0"."all"] below.
[aliases]
# Devices with options="pmb:kconfigcheck-community" in the device APKBUILD will
# check for the following categories. A CI check ensures that all devices in
# device/main and device/community dirs have this option. Devices in testing
# may also have "pmb:kconfigcheck-community", but it may be removed when
# modifying the required options and adjusting the devices in testing is too
# much effort. Device maintainers may fix it up afterwards and add it back.
community = [
"category:default",
"category:community_various",
"category:containers",
"category:debug",
"category:filesystems",
"category:hardening",
"category:immutable",
"category:input",
"category:iwd",
"category:netboot",
"category:nftables",
"category:usb_gadgets",
"category:waydroid",
"category:wine",
"category:wireguard",
"category:zram",
]
# Format for rule sections:
# ["category:<NAME>"."<KERNEL_VERSION>"."<ARCHITECTURES>"]
# Implemented value types:
# - tristate (e.g. 'ANDROID_PARANOID_NETWORK = n'):
# - y: built-in, preferred but module is OK
# - m: module, preferred but built-in is OK
# - n: disabled
# - list (e.g. 'ANDROID_BINDER_DEVICES = ["binder", "hwbinder"]'):
# - each element of the array must be contained in the kernel config string,
# in any order. The example above would accept the following in the config:
# CONFIG_ANDROID_BINDER_DEVICES="hwbinder,vndbinder,binder"
# - string (e.g. 'LSM = "lockdown,yama,loadpin,safesetid,integrity"'):
# - the value in the kernel config must be the same as the given string. Use
# this e.g. if the order of the elements is important.
# default: all devices must satisfy these
["category:default".">=0.0.0"."all"]
ANDROID_PARANOID_NETWORK = "n"
BLK_DEV_INITRD = "y"
CGROUPS = "y"
CRYPTO_CBC = "y"
CRYPTO_AES = "y"
CRYPTO_XTS = "y"
DEVTMPFS = "y"
DM_CRYPT = "y"
INPUT_EVDEV = "m"
KINETO_GAN = "n"
PFT = "n"
SEC_RESTRICT_ROOTING = "n"
SYN_COOKIES = "y"
SYSVIPC = "y"
TMPFS_POSIX_ACL = "y"
USE_VFB = "n"
VT = "y"
["category:default".">=2.6.0"."all"]
BINFMT_ELF = "y"
["category:default".">=3.10.0"."all"]
# Note: MUST be =y else we're unable to run our initramfs's init script
BINFMT_SCRIPT = "y"
["category:default".">=4.0.0"."all"]
UEVENT_HELPER = "y"
USER_NS = "y"
["category:default"."<4.7.0"."all"]
DEVPTS_MULTIPLE_INSTANCES = "y"
["category:default"."<4.14.0"."all"]
SAMSUNG_TUI = "n"
TZDEV = "n"
["category:default"."<5.2.0"."armhf armv7 x86"]
LBDAF = "y"
["category:default".">=5.2.0"."all"]
# Provide a proper dummy null console to improve compatibility
# on devices that like to coerce console=null
NULL_TTY = "m"
["category:default".">=5.19.0"."all"]
FW_LOADER_COMPRESS = "y"
FW_LOADER_COMPRESS_ZSTD = "y"
["category:default".">=4.20.0"."all"]
# required for systemd-oomd
PSI = "y"
PSI_DEFAULT_DISABLED = "n"
UDMABUF = "y"
["category:netmount".">=2.6.0"."all"]
CACHEFILES = "y"
CRYPTO_CAMELLIA = "y"
CRYPTO_CTS = "y"
CRYPTO_HMAC = "y"
CRYPTO_SHA256 = "y"
CRYPTO_SHA512 = "y"
FSCACHE = "y"
NFS_FS = "y"
NFS_FSCACHE = "y"
NFS_V3 = "y"
NFS_V4 = "y"
RPCSEC_GSS_KRB5 = "y"
["category:netmount".">=3.1.0"."all"]
CRYPTO_CMAC = "m"
["category:netmount".">=3.10.0"."all"]
CRYPTO_AES_TI = "y"
["category:netmount".">=3.10.0"."aarch64"]
CRYPTO_AES_ARM64_CE_BLK = "y"
["category:netmount".">=4.14.0"."all"]
RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1 = "y"
RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2 = "y"
RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA = "y"
# waydroid: android compatibility layer
["category:waydroid".">=0.0.0"."all"]
ANDROID_BINDERFS = "n"
ANDROID_BINDER_DEVICES = ["binder", "hwbinder", "vndbinder"]
ANDROID_BINDER_IPC = "y"
ANDROID_BINDER_IPC_SELFTEST = "n"
BLK_DEV_LOOP = "y"
BPF_SYSCALL = "y"
BRIDGE = "m"
BRIDGE_VLAN_FILTERING = "y"
CGROUP_BPF = "y"
FUSE_FS = "m"
IP_NF_MANGLE = "m"
NETFILTER_XTABLES = "m"
NETFILTER_XT_MATCH_COMMENT = "m"
SQUASHFS = "m"
SQUASHFS_XATTR = "y"
SQUASHFS_XZ = "y"
TMPFS_XATTR = "y"
TUN = "m"
VETH = "m"
VLAN_8021Q = "m" # prerequisite for bridge
["category:waydroid".">=3.5"."all"]
CROSS_MEMORY_ATTACH = "y"
["category:waydroid"."<5.18"."all"]
ASHMEM = "y"
["category:waydroid".">=6.9"."all"]
IP_NF_IPTABLES_LEGACY = "m"
["category:waydroid".">=6.17"."all"]
NETFILTER_XTABLES_LEGACY = "y"
# iwd: modern inet wireless daemon
# Obtained from 'grep ADD_MISSING src/main.c' in iwd.git
["category:iwd".">=0.0.0"."all"]
ASYMMETRIC_KEY_TYPE = "y"
ASYMMETRIC_PUBLIC_KEY_SUBTYPE = "y"
CRYPTO_CMAC = "m"
CRYPTO_DES = "m"
CRYPTO_ECB = "y"
CRYPTO_HMAC = "y"
CRYPTO_MD4 = "m" # Needed for EAP MSCHAPV2 authentication
CRYPTO_MD5 = "y"
CRYPTO_SHA1 = "y"
CRYPTO_SHA256 = "y"
CRYPTO_SHA512 = "y"
CRYPTO_USER_API_HASH = "m"
CRYPTO_USER_API_SKCIPHER = "m"
KEYS = "y"
KEY_DH_OPERATIONS = "y"
PKCS7_MESSAGE_PARSER = "y"
PKCS8_PRIVATE_KEY_PARSER = "m"
X509_CERTIFICATE_PARSER = "y"
RFKILL = "m"
# nftables: firewall, not related to nft scams
["category:nftables".">=3.13.0"."all"]
NETFILTER = "y"
NF_CONNTRACK = "m"
NF_TABLES = "m"
NF_TABLES_INET = "y"
NFT_CT = "m"
NFT_LOG = "m"
NFT_LIMIT = "m"
NFT_MASQ = "m"
NFT_NAT = "m"
NFT_REJECT = "m"
NF_TABLES_IPV4 = "y"
NF_REJECT_IPV4 = "m"
IP_NF_IPTABLES = "m"
IP_NF_FILTER = "m"
IP_NF_TARGET_REJECT = "m"
IP_NF_NAT = "m"
NF_TABLES_IPV6 = "y"
NF_REJECT_IPV6 = "m"
IP6_NF_IPTABLES = "m"
IP6_NF_FILTER = "m"
IP6_NF_TARGET_REJECT = "m"
IP6_NF_NAT = "m"
["category:nftables".">=3.13.0 <5.17"."all"]
NFT_COUNTER = "y"
["category:nftables".">=6.9"."all"]
IP_NF_IPTABLES_LEGACY = "m"
IP6_NF_IPTABLES_LEGACY = "m"
["category:nftables".">=6.17"."all"]
NETFILTER_XTABLES_LEGACY = "y"
# containers: lxc, docker, etc.
["category:containers".">=0.0.0"."all"]
NAMESPACES = "y"
NET_NS = "y"
PID_NS = "y"
IPC_NS = "y"
UTS_NS = "y"
CGROUP_CPUACCT = "y"
CGROUP_DEVICE = "y"
CGROUP_FREEZER = "y"
CGROUP_SCHED = "y"
CPUSETS = "y"
KEYS = "y"
VETH = "m"
BRIDGE = "m" # (also needed for waydroid)
BRIDGE_NETFILTER = "m"
IP_NF_FILTER = "m"
IP_NF_TARGET_MASQUERADE = "m"
NETFILTER_XT_MATCH_ADDRTYPE = "m"
NETFILTER_XT_MATCH_CONNTRACK = "m"
NETFILTER_XT_MATCH_IPVS = "m"
NETFILTER_XT_MARK = "m"
NETFILTER_XT_TARGET_CHECKSUM = "m" # Needed for lxc
IP_NF_NAT = "m"
NF_NAT = "m"
POSIX_MQUEUE = "y"
MD = "y" # Required for BLK_DEV_DM
BLK_DEV_DM = "y" # Storage Drivers
DUMMY = "m" # Network Drivers
# USER_NS = "y" # This is already in pmOS kconfig check
BLK_CGROUP = "y" # Optional section
BLK_DEV_THROTTLING = "y" # Optional section
CGROUP_PERF = "y" # Optional section
NET_SCHED = "y" # Required by NET_CLS_CGROUP
NET_CLS_CGROUP = "m" # Optional section
FAIR_GROUP_SCHED = "y" # Optional section
IP_NF_TARGET_REDIRECT = "m" # Optional section
IP_VS = "m" # Optional section
IP_VS_NFCT = "y" # Optional section
IP_VS_PROTO_TCP = "y" # Optional section
IP_VS_PROTO_UDP = "y" # Optional section
IP_VS_RR = "m" # Optional section
EXT4_FS_POSIX_ACL = "y" # Optional section
EXT4_FS_SECURITY = "y" # Optional section
["category:containers".">=3.2"."all"]
CFS_BANDWIDTH = "y" # Optional section
["category:containers".">=3.3"."all"]
CHECKPOINT_RESTORE = "y" # Needed for lxc
["category:containers".">=3.6"."all"]
MEMCG = "y"
DM_THIN_PROVISIONING = "m" # Storage Drivers
SWAP = "y"
["category:containers".">=3.6"."x86 x86_64"]
HUGETLB_PAGE = "y"
CGROUP_HUGETLB = "y" # Optional section
["category:containers".">=3.6 <6.1_rc1"."all"]
MEMCG_SWAP = "y"
["category:containers".">=3.7 <5.0"."all"]
NF_NAT_IPV4 = "y" # Needed for lxc
NF_NAT_IPV6 = "y" # Needed for lxc
["category:containers".">=3.7"."all"]
VXLAN = "m" # Network Drivers
IP6_NF_TARGET_MASQUERADE = "m" # Needed for lxc
["category:containers".">=3.9"."all"]
BRIDGE_VLAN_FILTERING = "y" # Network Drivers (also for waydroid)
MACVLAN = "m" # Network Drivers
["category:containers".">=3.13"."all"]
NFT_COMPAT = "m"
["category:containers".">=3.14"."all"]
CGROUP_NET_PRIO = "y" # Optional section
["category:containers".">=3.18"."all"]
OVERLAY_FS = "m" # Storage Drivers
["category:containers".">=3.19"."all"]
IPVLAN = "m" # Network Drivers
SECCOMP = "y" # Optional section
["category:containers".">=4.4"."all"]
CGROUP_PIDS = "y" # Optional section
# zram: RAM disk with on-the-fly compression
["category:zram".">=0.0.0"."all"]
ZRAM = "y"
ZSMALLOC = "y"
SWAP = "y"
["category:zram"."<6.12"."all"]
CRYPTO_ZSTD = "y"
["category:zram".">=6.12"."all"]
ZRAM_BACKEND_842 = "y"
ZRAM_BACKEND_DEFLATE = "y"
ZRAM_BACKEND_LZ4 = "y"
ZRAM_BACKEND_LZ4HC = "y"
ZRAM_BACKEND_LZO = "y"
ZRAM_BACKEND_ZSTD = "y"
# netboot: https://postmarketos.org/netboot
["category:netboot".">=0.0.0"."all"]
BLK_DEV_NBD = "m"
# wireguard: VPN software, also includes options for wg-quick
["category:wireguard".">=5.6_rc1"."all"]
WIREGUARD = "m"
IP_ADVANCED_ROUTER = "y"
IP_MULTIPLE_TABLES = "y"
IPV6_MULTIPLE_TABLES = "y"
NF_TABLES = "m"
NF_TABLES_IPV4 = "y"
NF_TABLES_IPV6 = "y"
NFT_CT = "m"
NFT_FIB = "m"
NFT_FIB_IPV4 = "m"
NFT_FIB_IPV6 = "m"
NF_CONNTRACK_MARK = "y"
# filesystems
["category:filesystems".">=0.0.0"."all"]
# Note: These are builtin, not modules, because it reduces the overall
# vmlinuz+initramfs size for devices with small boot partitions.
# See: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/7136#note_505237
BTRFS_FS = "y"
BTRFS_FS_POSIX_ACL = "y"
EXFAT_FS = "m"
EXT4_FS = "y"
F2FS_FS = "y"
UDF_FS = "m"
XFS_FS = "m"
# usb_gadgets
["category:usb_gadgets".">=0.0.0"."all"]
# disable legacy gadgets
USB_ETH = "n"
USB_FUNCTIONFS = "n"
USB_MASS_STORAGE = "n"
USB_G_SERIAL = "n"
# enable configfs gadgets
USB_GADGET = "y" # Required by USB_CONFIGFS_*
USB_CONFIGFS = "m" # Required by USB_CONFIGFS_*
USB_F_FS = "m" # FunctionFS USB support
USB_CONFIGFS_ACM = "y" # Serial gadget for debug-shell
USB_CONFIGFS_MASS_STORAGE = "y" # Mass storage gadget for debug-shell
USB_CONFIGFS_NCM = "y" # USB networking via NCM
USB_CONFIGFS_RNDIS = "y" # USB networking via RNDIS (legacy)
USB_CONFIGFS_F_FS = "y" # FunctionFS support in ConfigFS
# community_various: Various options that were not categorized properly due to
# inflexibility of previous kconfigcheck related code. We should move these to
# proper categories above and/or invent new categories with meaningful names.
# >> Do not add more here!! <<
["category:community_various".">=0.0.0"."all"]
BINFMT_MISC = "m" # register binary formats
NETWORK_FILESYSTEMS = "y" # Required by CIFS
CIFS = "m" # mount SMB shares
LEDS_TRIGGER_PATTERN = "m" # feedbackd
LEDS_TRIGGER_TIMER = "m" # hfd-service
NETFILTER_ADVANCED = "y" # Required by NETFILTER_XT_MATCH_MARK
NETFILTER_XT_MATCH_MARK = "m" # e.g. HashiCorp Nomad
NETFILTER_XT_MATCH_MULTIPORT = "m" # e.g. HashiCorp Nomad
NETFILTER_XT_MATCH_STATISTIC = "m" # kube-proxy
NETFILTER_XT_MATCH_TCPMSS = "m" # change MTU e.g. for Wireguard
NETFILTER_XT_TARGET_TCPMSS = "m" # change MTU e.g. for Wireguard
# TODO = Depends on SUSPEND which is not enabled for some devices
# PM_WAKELOCKS = "y" # Sxmo
CPU_FREQ_GOV_SCHEDUTIL = "y" # Required by UCLAMP_TASK
UCLAMP_TASK = "y" # Scheduler hints
UCLAMP_TASK_GROUP = "y" # Scheduler hints
RT_GROUP_SCHED = "n" # https://gitlab.postmarketos.org/postmarketOS/pmaports/-/issues/2652
DM_INTEGRITY = "m" # Device-mapper integrity target
# uefi: proper modern booting
["category:uefi".">=0.0.0"."aarch64 armv7 armhf loongarch64 riscv64 x86 x86_64"]
EFI_STUB = "y"
EFI = "y"
DMI = "y"
PSTORE = "y"
EFI_ESRT = "y"
EFI_VARS_PSTORE = "y"
EFI_RUNTIME_WRAPPERS = "y"
VFAT_FS = "y"
NLS_ASCII = "y"
["category:uefi".">=0.0.0"."x86_64"]
EFI_MIXED = "y"
["category:uefi".">=0.0.0"."aarch64 armv7"]
EFI_GENERIC_STUB = "y"
EFI_PARAMS_FROM_FDT = "y"
["category:uefi".">=6.1.0"."aarch64 riscv64"]
# Required EFI booting compressed kernels on this arch
EFI_ZBOOT = "y"
# Devices that used to run windows may still want to access
# the windows partition (e.g. to retrieve firmware on WoA)
["category:uefi".">=5.15"."aarch64 x86_64"]
NTFS3_FS = "m"
["category:input".">=0.0.0"."all"]
BT = "m" # Required by BT_HIDP
BT_HIDP = "m" # Bluetooth HID
GPIOLIB = "y" # Required by a couple of HID configs
HIDRAW = "y" # /dev/hidraw* support
INPUT_MISC = "y" # Required by INPUT_UINPUT
INPUT_UINPUT = "y" # buffyboard
INPUT_JOYSTICK = "y" # Required by CONFIG_JOYSTICK_XPAD_FF
JOYSTICK_XPAD = "m" # Xbox controller
JOYSTICK_XPAD_FF = "y" # Xbox controller force-feedback
JOYSTICK_XPAD_LEDS = "y" # Xbox controller LEDs
UHID = "m" # User-space HID, e.g. Bluetooth
USB_ANNOUNCE_NEW_DEVICES = "y" # dmesg messages when connecting device
USB_HIDDEV = "y" # /dev/usb/hiddevX support
USB_PRINTER = "m" # printers
# All the special HID drivers that Fedora kernel enables
HID_A4TECH = "m"
HID_ACCUTOUCH = "m"
HID_ACRUX_FF = "y"
HID_ACRUX = "m"
HID_ALPS = "m"
HID_APPLEIR = "m"
HID_APPLE = "m"
HID_AUREAL = "m"
HID_BATTERY_STRENGTH = "y"
HID_BELKIN = "m"
HID_BETOP_FF = "m"
HID_BIGBEN_FF = "m"
HID_CHERRY = "m"
HID_CHICONY = "m"
HID_CMEDIA = "m"
HID_CORSAIR = "m"
HID_COUGAR = "m"
HID_CP2112 = "m"
HID_CREATIVE_SB0540 = "m"
HID_CYPRESS = "m"
HID_DRAGONRISE = "m"
HID_ELAN = "m"
HID_ELECOM = "m"
HID_ELO = "m"
HID_EMS_FF = "m"
HID_EZKEY = "m"
HID_FT260 = "m"
HID_GEMBIRD = "m"
HID_GENERIC = "m"
HID_GFRM = "m"
HID_GLORIOUS = "m"
HID_GREENASIA = "m"
HID_GT683R = "m"
HID_GYRATION = "m"
HID_HOLTEK = "m"
HID_ICADE = "m"
HID_ITE = "m"
HID_JABRA = "m"
HID_KENSINGTON = "m"
HID_KEYTOUCH = "m"
HID_KYE = "m"
HID_LCPOWER = "m"
HID_LED = "m"
HID_LETSKETCH = "m"
LEDS_CLASS_MULTICOLOR = "m" # Required by HID_LOGITECH
HID_LOGITECH_DJ = "m"
HID_LOGITECH_HIDPP = "m"
HID_LOGITECH = "m"
HID_MACALLY = "m"
HID_MAGICMOUSE = "m"
HID_MALTRON = "m"
HID_MAYFLASH = "m"
HID_MCP2221 = "m"
HID_MEGAWORLD_FF = "m"
HID_MICROSOFT = "m"
HID_MONTEREY = "m"
HID_MULTITOUCH = "m"
HID_NINTENDO = "m"
HID_NTI = "m"
HID_NTRIG = "m"
HID_ORTEK = "m"
HID_PANTHERLORD = "m"
HID_PENMOUNT = "m"
HID_PETALYNX = "m"
HID_PICOLCD_BACKLIGHT = "y"
LCD_CLASS_DEVICE = "m" # Required by HID_PICOLCD_LCD
HID_PICOLCD_LCD = "y"
HID_PICOLCD_LEDS = "y"
HID_PICOLCD = "m"
HID_PID = "y"
HID_PLANTRONICS = "m"
HID_PLAYSTATION = "m"
HID_PRIMAX = "m"
HID_PRODIKEYS = "m"
HID_PXRC = "m"
HID_RAZER = "m"
HID_RETRODE = "m"
HID_RMI = "m"
HID_ROCCAT = "m"
HID_SAITEK = "m"
HID_SAMSUNG = "m"
HID_SEMITEK = "m"
IIO = "y" # Required by HID_SENSOR_*
HID_SENSOR_ACCEL_3D = "m"
HID_SENSOR_ALS = "m"
HID_SENSOR_CUSTOM_INTEL_HINGE = "m"
HID_SENSOR_DEVICE_ROTATION = "m"
HID_SENSOR_GYRO_3D = "m"
HID_SENSOR_HUB = "m"
HID_SENSOR_HUMIDITY = "m"
HID_SENSOR_IIO_COMMON = "m"
HID_SENSOR_IIO_TRIGGER = "m"
HID_SENSOR_INCLINOMETER_3D = "m"
HID_SENSOR_MAGNETOMETER_3D = "m"
HID_SENSOR_TEMP = "m"
HID_SIGMAMICRO = "m"
HID_SMARTJOYPLUS = "m"
HID_SONY = "m"
HID_SPEEDLINK = "m"
HID_STEAM = "m"
HID_STEELSERIES = "m"
HID_SUNPLUS = "m"
HID_THINGM = "m"
HID_THRUSTMASTER = "m"
HID_TIVO = "m"
HID_TOPRE = "m"
HID_TOPSEED = "m"
HID_TWINHAN = "m"
HID_U2FZERO = "m"
HID_UCLOGIC = "m"
HID_UDRAW_PS3 = "m"
HID_VIEWSONIC = "m"
HID_VIVALDI = "m"
HID_WACOM = "m"
HID_WALTOP = "m"
HID_WIIMOTE = "m"
HID_XIAOMI = "m"
HID_XINMO = "m"
HID_ZEROPLUS = "m"
HID_ZYDACRON = "m"
["category:input".">=0.0.0"."x86 x86_64"]
HID_LENOVO = "m"
["category:input".">=6.3"."all"]
HID_EVISION = "m"
HID_SUPPORT = "y"
["category:input".">=6.5"."all"]
HID_NVIDIA_SHIELD = "m"
["category:input".">=6.6"."all"]
HID_GOOGLE_STADIA_FF = "m"
["category:input".">=6.10"."all"]
HID_WINWING = "m"
["category:input".">=6.12"."all"]
SPI = "y" # Required by HID_GOODIX_SPI
HID_GOODIX_SPI = "m"
["category:usb".">=0.0.0"."all"]
DRM_UDL = "m" # DisplayLink - connecting displays via USB
SND_USB_AUDIO = "m" # USB audio devices
USB_SERIAL_CP210X = "m" # USB serial console
USB_SERIAL_SIMPLE = "m" # USB serial console
USB_STORAGE = "m" # USB mass storage devices
USB_RTL8152 = "m" # USB Ethernet
["category:virt".">=0.0.0"."all"]
HW_RANDOM_VIRTIO = "m"
["category:virt".">=0.0.0"."aarch64 loongarch64 ppc64le riscv64 s390x x86 x86_64"]
KVM = "y"
VIRTUALIZATION = "y"
["category:debug".">=0.0.0"."all"]
FTRACE = "y" # Required by DEBUG_FTRACE
FUNCTION_TRACER = "y" # Required by DEBUG_FTRACE
DYNAMIC_DEBUG = "y" # Enable debug dynamically
DYNAMIC_FTRACE = "y" # Enable function tracing dynamically
# Device specific settings to prevent regressions
["category:librem5".">=0.0.0"."aarch64"]
RS9116_FLASH_MODE = "n" # pma!2059
["category:pinephonepro".">=0.0.0"."aarch64"]
LEDS_GROUP_MULTICOLOR = "y" # pma!5991
# Required for immutable image booting
["category:immutable".">=0.0.0"."aarch64 armv7 armhf loongarch64 riscv64 x86 x86_64"]
EFIVAR_FS = "m"
["category:immutable".">=0.0.0"."all"]
DM_VERITY = "m"
EROFS_FS = "y"
EROFS_FS_ZIP = "y"
# In 6.18+, CFI_CLANG is CFI
["category:hardening".">=6.18_rc1"."x86_64 aarch64 armv7 riscv64"]
CFI = "y"
CFI_PERMISSIVE = "n"
# All older versions use CFI_CLANG
["category:hardening".">=6.10.0 <6.18_rc1"."armv7"]
CFI_CLANG = "y"
CFI_PERMISSIVE = "n"
["category:hardening".">=6.6.0 <6.18_rc1"."riscv64"]
CFI_CLANG = "y"
CFI_PERMISSIVE = "n"
["category:hardening".">=6.1.0 <6.18_rc1"."x86_64"]
CFI_CLANG = "y"
CFI_PERMISSIVE = "n"
["category:hardening".">=5.13.0 <6.18_rc1"."aarch64"]
CFI_CLANG = "y"
CFI_PERMISSIVE = "n"
["category:hardening".">=5.13.0 <6.1_rc1"."aarch64"]
LTO_CLANG_THIN = "y" # Required for CFI pre-6.1
["category:hardening".">=6.12.0"."x86_64 aarch64 armv7 riscv64"]
CFI_ICALL_NORMALIZE_INTEGERS = "y" # Required for CFI with Rust
# Shadow Call Stack is currently only implemented on arm64 and riscv
["category:hardening".">=5.8.0"."aarch64"]
SHADOW_CALL_STACK = "y"
["category:hardening".">=6.7.0"."riscv64"]
SHADOW_CALL_STACK = "y"
["category:rust".">=6.1.0"."all"]
DEBUG_INFO_BTF = "n" # Conflicts with LTO when Rust is enabled
DEBUG_INFO_BTF_MODULES = "n" # Conflicts with LTO when Rust is enabled
# Wine / Proton support
["category:wine".">=6.14.0"."all"]
NTSYNC = "m"