NTP on Debian reporting 95 years in the future – Part 5: Patching the Kernel

If you haven’t read part 1 yet, make sure you start there.

Okay — I can’t wait 24 hours — I’m an eager beaver. But 14 hours later, the system is still showing the correct time. Let’s play.

root@nems:/usr/local/share/nems/nems-scripts# apt update && apt upgrade
Ign:1 http://download.webmin.com/download/repository sarge InRelease
Ign:2 http://deb.debian.org/debian stretch InRelease                                                                      
Hit:3 http://ftp.debian.org/debian stretch-backports InRelease                                                                                           
Hit:4 http://deb.debian.org/debian stretch Release                                                                                                       
Hit:5 http://download.webmin.com/download/repository sarge Release                                                        
Ign:6 http://webmin.mirror.somersettechsolutions.co.uk/repository sarge InRelease
Hit:7 http://webmin.mirror.somersettechsolutions.co.uk/repository sarge Release
Hit:8 https://repo.foxiehost.eu/debian stretch InRelease
Ign:9 https://apt.izzysoft.de/ubuntu generic InRelease
Hit:10 https://apt.izzysoft.de/ubuntu generic Release
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@nems:/usr/local/share/nems/nems-scripts# apt dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Okay – so I’m on the absolute most amazingly modern kernel ever. Great! So let’s fix that kernel.

We’ll check again to see if the timer workaround is implemented in our kernel:

root@nems:/usr/local/share/nems/nems-scripts# grep CONFIG_FSL_ERRATUM_A008585 /boot/config-4.14.26 
# CONFIG_FSL_ERRATUM_A008585 is not set

So what does this tell us?

CONFIG_FSL_ERRATUM_A008585 shows whether the workaround for Freescale/NXP Erratum A-008585 is active. The workaround’s description is “This option enables a workaround for Freescale/NXP Erratum A-008585 (“ARM generic timer may contain an erroneous value”). The workaround will only be active if the fsl,erratum-a008585 property is found in the timer node.”

For those who are even nerdier than me, check out kernel.org’s log of the patch here: https://patchwork.kernel.org/patch/9487241/

You’re such a nerd!

Now I’m getting into the experimental. I’ve never changed a kernel config before. Funny, that. I guess if you’ve never needed to do something, you never learn to do it.

I have yet to find online instructions for doing this, and here’s what I’ll try.

Note for tl;dr – this didn’t work.

Alright, let’s change my default config as we prepare to re-compile the kernel. I’m unsure if changing this config will make the newly compiled kernel receive the change or not, but it’s worth trying.

root@nems:/tmp# sed -i "s/# CONFIG_FSL_ERRATUM_A008585.*/CONFIG_FSL_ERRATUM_A008585=y/g" /boot/config-4.14.26
root@nems:/tmp# grep CONFIG_FSL_ERRATUM_A008585 /boot/config-4.14.26
CONFIG_FSL_ERRATUM_A008585=y

Great, my config is now set to include this patch.

Okay, I’m obviously gonna need the kernel headers here…

root@nems:/tmp/tmp# apt install linux-headers-$(uname -r)
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  linux-headers-4.14.26
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 10.6 MB of archives.
After this operation, 73.6 MB of additional disk space will be used.
Get:1 https://repo.foxiehost.eu/debian stretch/main arm64 linux-headers-4.14.26 arm64 4.14.26-1 [10.6 MB]
Fetched 10.6 MB in 4s (2,265 kB/s)                
Selecting previously unselected package linux-headers-4.14.26.
(Reading database ... 83271 files and directories currently installed.)
Preparing to unpack .../linux-headers-4.14.26_4.14.26-1_arm64.deb ...
Unpacking linux-headers-4.14.26 (4.14.26-1) ...
Setting up linux-headers-4.14.26 (4.14.26-1) ...
root@nems:/tmp/tmp# cd /usr/src/linux-headers-4.14.26/
root@nems:/usr/src/linux-headers-4.14.26# ls
arch  block  certs  crypto  Documentation  drivers  firmware  fs  include  init  ipc  Kconfig  kernel  lib  Makefile  mm  Module.symvers  net  samples	scripts  security  sound  tools  usr  virt

Looks good, and the default setting is the same as my running kernel config:

root@nems:~# cd /usr/src/linux-headers-4.14.26
root@nems:/usr/src/linux-headers-4.14.26# grep CONFIG_FSL_ERRATUM_A008585 /usr/src/linux-headers-4.14.26/.config
# CONFIG_FSL_ERRATUM_A008585 is not set

Great! I think I’ve made a connection… this file has the same setting as my default kernel config.

So since I’ve already updated my own config, let’s compile with oldconfig – I’m assuming that means “grab the old config”… hmmm…. makes sense to me.

root@nems:/usr/src/linux-headers-4.14.26# grep CONFIG_FSL_ERRATUM_A008585 .config
# CONFIG_FSL_ERRATUM_A008585 is not set
root@nems:/usr/src/linux-headers-4.14.26# make oldconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/bin2c
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf  --oldconfig Kconfig
#
# configuration written to .config
#

Alright, is it set now?

root@nems:/usr/src/linux-headers-4.14.26# grep CONFIG_FSL_ERRATUM_A008585 .config
root@nems:/usr/src/linux-headers-4.14.26#

Weird… the setting is gone! Well, let’s see what happens? Maybe the kernel will default to “yes” if the setting … let’s try.

root@nems:/usr/src/linux-headers-4.14.26# make config
scripts/kconfig/conf  --oldaskconfig Kconfig
*
* Linux/arm64 4.14.26 Kernel Configuration
*
*
* General setup
*
Cross-compiler tool prefix (CROSS_COMPILE) [] (NEW) ^C
scripts/kconfig/Makefile:32: recipe for target 'config' failed
make[1]: *** [config] Interrupt
Makefile:541: recipe for target 'config' failed
make: *** [config] Interrupt

Oh – If it’s going to ask me to say yes to a crapload of defaults, I’ma abort that!

I’ll trust the kernel devs and my config 😛

root@nems:/usr/src/linux-headers-4.14.26# yes "" | make config
scripts/kconfig/conf  --oldaskconfig Kconfig
*
* Linux/arm64 4.14.26 Kernel Configuration
*
*
* General setup
*
Cross-compiler tool prefix (CROSS_COMPILE) [] (NEW)
Compile also drivers which will not load (COMPILE_TEST) [N/y/?] (NEW)
Local version - append to kernel release (LOCALVERSION) [] (NEW)
Automatically append version information to the version string (LOCALVERSION_AUTO) [Y/n/?] (NEW)
Default hostname (DEFAULT_HOSTNAME) [(none)] (NEW)
Support for paging of anonymous memory (swap) (SWAP) [Y/n/?] (NEW)
System V IPC (SYSVIPC) [N/y/?] (NEW)
Enable process_vm_readv/writev syscalls (CROSS_MEMORY_ATTACH) [Y/n/?] (NEW)
uselib syscall (USELIB) [N/y/?] (NEW)
*
* IRQ subsystem
*
*
* Timers subsystem
*
Timer tick handling
> 1. Periodic timer ticks (constant rate, no dynticks) (HZ_PERIODIC) (NEW)
  2. Idle dynticks system (tickless idle) (NO_HZ_IDLE) (NEW)
  3. Full dynticks system (tickless) (NO_HZ_FULL) (NEW)
choice[1-3]: Old Idle dynticks config (NO_HZ) [N/y/?] (NEW)
High Resolution Timer Support (HIGH_RES_TIMERS) [N/y/?] (NEW)
*
* CPU/Task time and stats accounting
*
Cputime accounting
> 1. Simple tick based cputime accounting (TICK_CPU_ACCOUNTING) (NEW)
  2. Full dynticks CPU time accounting (VIRT_CPU_ACCOUNTING_GEN) (NEW)
choice[1-2]: Fine granularity task level IRQ time accounting (IRQ_TIME_ACCOUNTING) [N/y/?] (NEW)
BSD Process Accounting (BSD_PROCESS_ACCT) [N/y/?] (NEW)
*
* RCU Subsystem
*
Make expert-level adjustments to RCU configuration (RCU_EXPERT) [N/y/?] (NEW)
Kernel .config support (IKCONFIG) [N/y/?] (NEW)
Kernel log buffer size (16 => 64KB, 17 => 128KB) (LOG_BUF_SHIFT) [17] (NEW)
CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB) (LOG_CPU_MAX_BUF_SHIFT) [12] (NEW)
Temporary per-CPU printk log buffer size (12 => 4KB, 13 => 8KB) (PRINTK_SAFE_LOG_BUF_SHIFT) [13] (NEW)
*
* Control Group support
*
Control Group support (CGROUPS) [N/y/?] (NEW)
*
* Namespaces support
*
Namespaces support (NAMESPACES) [Y/?] y
  UTS namespace (UTS_NS) [Y/n/?] (NEW)
  User namespace (USER_NS) [N/y/?] (NEW)
  PID Namespaces (PID_NS) [Y/n/?] (NEW)
Automatic process group scheduling (SCHED_AUTOGROUP) [N/y/?] (NEW)
Enable deprecated sysfs features to support old userspace tools (SYSFS_DEPRECATED) [N/y/?] (NEW)
Kernel->user space relay support (formerly relayfs) (RELAY) [N/y/?] (NEW)
Initial RAM filesystem and RAM disk (initramfs/initrd) support (BLK_DEV_INITRD) [N/y/?] (NEW)
Compiler optimization level
> 1. Optimize for performance (CC_OPTIMIZE_FOR_PERFORMANCE) (NEW)
  2. Optimize for size (CC_OPTIMIZE_FOR_SIZE) (NEW)
choice[1-2]: *
* Configure standard kernel features (expert users)
*
Configure standard kernel features (expert users) (EXPERT) [N/y/?] (NEW)
Enable bpf() system call (BPF_SYSCALL) [N/y/?] (NEW)
Enable userfaultfd() system call (USERFAULTFD) [N/y/?] (NEW)
Embedded system (EMBEDDED) [N/y/?] (NEW)
PC/104 support (PC104) [N/y/?] (NEW)
*
* Kernel Performance Events And Counters
*
Kernel performance events and counters (PERF_EVENTS) [N/y/?] (NEW)
Disable heap randomization (COMPAT_BRK) [Y/n/?] (NEW)
Choose SLAB allocator
  1. SLAB (SLAB) (NEW)
> 2. SLUB (Unqueued Allocator) (SLUB) (NEW)
choice[1-2?]: Allow slab caches to be merged (SLAB_MERGE_DEFAULT) [Y/n/?] (NEW)
SLAB freelist randomization (SLAB_FREELIST_RANDOM) [N/y/?] (NEW)
Harden slab freelist metadata (SLAB_FREELIST_HARDENED) [N/y/?] (NEW)
SLUB per cpu partial cache (SLUB_CPU_PARTIAL) [Y/n/?] (NEW)
Profiling support (PROFILING) [N/y/?] (NEW)
Optimize very unlikely/likely branches (JUMP_LABEL) [N/y/?] (NEW)
*
* GCC plugins
*
GCC plugins (GCC_PLUGINS) [N/y/?] (NEW)
Stack Protector buffer overflow detection
> 1. None (CC_STACKPROTECTOR_NONE) (NEW)
  2. Regular (CC_STACKPROTECTOR_REGULAR) (NEW)
  3. Strong (CC_STACKPROTECTOR_STRONG) (NEW)
choice[1-3?]: Use a virtually-mapped stack (VMAP_STACK) [Y/n/?] (NEW)
Perform full reference count validation at the expense of speed (REFCOUNT_FULL) [N/y/?]
*
* GCOV-based kernel profiling
*
*
* Enable loadable module support
*
Enable loadable module support (MODULES) [N/y/?] (NEW)
*
* Enable the block layer
*
Enable the block layer (BLOCK) [Y/?] y
  Block layer SG support v4 (BLK_DEV_BSG) [Y/n/?] (NEW)
  Block layer SG support v4 helper lib (BLK_DEV_BSGLIB) [N/y/?] (NEW)
  Block layer data integrity support (BLK_DEV_INTEGRITY) [N/y/?] (NEW)
  Zoned block device support (BLK_DEV_ZONED) [N/y/?] (NEW)
  Block device command line partition parser (BLK_CMDLINE_PARSER) [N/y/?] (NEW)
  Enable support for block device writeback throttling (BLK_WBT) [N/y/?] (NEW)
  Logic for interfacing with Opal enabled SEDs (BLK_SED_OPAL) [N/y/?] (NEW)
  *
  * Partition Types
  *
  Advanced partition selection (PARTITION_ADVANCED) [N/y/?] (NEW)
  *
  * IO Schedulers
  *
  Deadline I/O scheduler (IOSCHED_DEADLINE) [Y/n/?] (NEW)
  CFQ I/O scheduler (IOSCHED_CFQ) [Y/n/?] (NEW)
  Default I/O scheduler
    1. Deadline (DEFAULT_DEADLINE) (NEW)
  > 2. CFQ (DEFAULT_CFQ) (NEW)
    3. No-op (DEFAULT_NOOP) (NEW)
  choice[1-3?]:   MQ deadline I/O scheduler (MQ_IOSCHED_DEADLINE) [Y/n/?] (NEW)
  Kyber I/O scheduler (MQ_IOSCHED_KYBER) [Y/n/?] (NEW)
  BFQ I/O scheduler (IOSCHED_BFQ) [N/y/?] (NEW)
*
* Platform selection
*
Actions Semi Platforms (ARCH_ACTIONS) [N/y/?] (NEW)
Allwinner sunxi 64-bit SoC Family (ARCH_SUNXI) [N/y/?] (NEW)
Annapurna Labs Alpine platform (ARCH_ALPINE) [N/y/?] (NEW)
Broadcom BCM2835 family (ARCH_BCM2835) [N/y/?] (NEW)
Broadcom iProc SoC Family (ARCH_BCM_IPROC) [N/y/?] (NEW)
Marvell Berlin SoC Family (ARCH_BERLIN) [N/y/?] (NEW)
Broadcom Set-Top-Box SoCs (ARCH_BRCMSTB) [N/y/?] (NEW)
ARMv8 based Samsung Exynos SoC family (ARCH_EXYNOS) [N/y/?] (NEW)
ARMv8 based Freescale Layerscape SoC family (ARCH_LAYERSCAPE) [N/y/?] (NEW)
LG Electronics LG1K SoC Family (ARCH_LG1K) [N/y/?] (NEW)
Hisilicon SoC Family (ARCH_HISI) [N/y/?] (NEW)
Mediatek MT65xx & MT81xx ARMv8 SoC (ARCH_MEDIATEK) [N/y/?] (NEW)
Amlogic Platforms (ARCH_MESON) [N/y/?] (NEW)
Marvell EBU SoC Family (ARCH_MVEBU) [N/y/?] (NEW)
Qualcomm Platforms (ARCH_QCOM) [N/y/?] (NEW)
Realtek Platforms (ARCH_REALTEK) [N/y/?] (NEW)
Rockchip Platforms (ARCH_ROCKCHIP) [N/y/?] (NEW)
AMD Seattle SoC Family (ARCH_SEATTLE) [N/y/?] (NEW)
Renesas SoC Platforms (ARCH_RENESAS) [N/y/?] (NEW)
Altera's Stratix 10 SoCFPGA Family (ARCH_STRATIX10) [N/y/?] (NEW)
NVIDIA Tegra SoC Family (ARCH_TEGRA) [N/y/?] (NEW)
Spreadtrum SoC platform (ARCH_SPRD) [N/y/?] (NEW)
Cavium Inc. Thunder SoC Family (ARCH_THUNDER) [N/y/?] (NEW)
Cavium ThunderX2 Server Processors (ARCH_THUNDER2) [N/y/?] (NEW)
Socionext UniPhier SoC Family (ARCH_UNIPHIER) [N/y/?] (NEW)
ARMv8 software model (Versatile Express) (ARCH_VEXPRESS) [N/y/?] (NEW)
AppliedMicro X-Gene SOC Family (ARCH_XGENE) [N/y/?] (NEW)
ZTE ZX SoC Family (ARCH_ZX) [N/y/?] (NEW)
Xilinx ZynqMP Family (ARCH_ZYNQMP) [N/y/?] (NEW)
*
* Bus support
*
PCI support (PCI) [N/y/?] (NEW)
*
* DesignWare PCI Core Support
*
*
* PCI Endpoint
*
PCI Endpoint Support (PCI_ENDPOINT) [N/y/?] (NEW)
*
* Kernel Features
*
*
* ARM errata workarounds via the alternatives framework
*
Cortex-A53: 826319: System might deadlock if a write cannot complete until read data is accepted (ARM64_ERRATUM_826319) [Y/n/?] (NEW)
Cortex-A53: 827319: Data cache clean instructions might cause overlapping transactions to the interconnect (ARM64_ERRATUM_827319) [Y/n/?] (NEW)
Cortex-A53: 824069: Cache line might not be marked as clean after a CleanShared snoop (ARM64_ERRATUM_824069) [Y/n/?] (NEW)
Cortex-A53: 819472: Store exclusive instructions might cause data corruption (ARM64_ERRATUM_819472) [Y/n/?] (NEW)
Cortex-A57: 832075: possible deadlock on mixing exclusive memory accesses with device loads (ARM64_ERRATUM_832075) [Y/n/?] (NEW)
Cortex-A53: 843419: A load or store might access an incorrect address (ARM64_ERRATUM_843419) [Y/n/?] (NEW)
Cavium erratum 22375, 24313 (CAVIUM_ERRATUM_22375) [Y/n/?] (NEW)
Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed (CAVIUM_ERRATUM_23154) [Y/n/?] (NEW)
Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption (CAVIUM_ERRATUM_27456) [Y/n/?] (NEW)
Cavium erratum 30115: Guest may disable interrupts in host (CAVIUM_ERRATUM_30115) [Y/n/?] (NEW)
Falkor E1003: Incorrect translation due to ASID change (QCOM_FALKOR_ERRATUM_1003) [Y/n/?] (NEW)
Falkor E1009: Prematurely complete a DSB after a TLBI (QCOM_FALKOR_ERRATUM_1009) [Y/n/?] (NEW)
QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size (QCOM_QDF2400_ERRATUM_0065) [Y/n/?] (NEW)
Falkor E1041: Speculative instruction fetches might cause errant memory access (QCOM_FALKOR_ERRATUM_E1041) [Y/n/?] (NEW)
Page size
> 1. 4KB (ARM64_4K_PAGES) (NEW)
  2. 16KB (ARM64_16K_PAGES) (NEW)
  3. 64KB (ARM64_64K_PAGES) (NEW)
choice[1-3?]: Virtual address space size
> 1. 39-bit (ARM64_VA_BITS_39) (NEW)
  2. 48-bit (ARM64_VA_BITS_48) (NEW)
choice[1-2?]: Build big-endian kernel (CPU_BIG_ENDIAN) [N/y/?] (NEW)
Multi-core scheduler support (SCHED_MC) [N/y/?] (NEW)
SMT scheduler support (SCHED_SMT) [N/y/?] (NEW)
Maximum number of CPUs (2-4096) (NR_CPUS) [64] (NEW)
Support for hot-pluggable CPUs (HOTPLUG_CPU) [Y/?] (NEW) y
Numa Memory Allocation and Scheduler Support (NUMA) [N/y/?] (NEW)
Preemption Model
> 1. No Forced Preemption (Server) (PREEMPT_NONE) (NEW)
  2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY) (NEW)
  3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT) (NEW)
choice[1-3]: Timer frequency
  1. 100 HZ (HZ_100) (NEW)
> 2. 250 HZ (HZ_250) (NEW)
  3. 300 HZ (HZ_300) (NEW)
  4. 1000 HZ (HZ_1000) (NEW)
choice[1-4?]: Memory model
> 1. Sparse Memory (SPARSEMEM_MANUAL) (NEW)
choice[1]: 1
Sparse Memory virtual memmap (SPARSEMEM_VMEMMAP) [Y/n/?] (NEW)
Allow for memory compaction (COMPACTION) [Y/n/?] (NEW)
  Page migration (MIGRATION) [Y/?] (NEW) y
Enable bounce buffers (BOUNCE) [Y/n/?] (NEW)
Enable KSM for page merging (KSM) [N/y/?] (NEW)
Low address space to protect from user allocation (DEFAULT_MMAP_MIN_ADDR) [4096] (NEW)
Enable recovery from hardware memory errors (MEMORY_FAILURE) [N/y/?] (NEW)
Transparent Hugepage Support (TRANSPARENT_HUGEPAGE) [N/y/?] (NEW)
Enable cleancache driver to cache clean pages if tmem is present (CLEANCACHE) [N/y/?] (NEW)
Enable frontswap to cache swap pages if tmem is present (FRONTSWAP) [N/y/?] (NEW)
Contiguous Memory Allocator (CMA) [N/y/?] (NEW)
Common API for compressed memory storage (ZPOOL) [N/y/?] (NEW)
Low (Up to 2x) density storage for compressed pages (ZBUD) [N/y/?] (NEW)
Memory allocator for compressed pages (ZSMALLOC) [N/y/?] (NEW)
Enable idle page tracking (IDLE_PAGE_TRACKING) [N/y/?] (NEW)
Collect percpu memory statistics (PERCPU_STATS) [N/y/?] (NEW)
Enable seccomp to safely compute untrusted bytecode (SECCOMP) [N/y/?] (NEW)
Enable paravirtualization code (PARAVIRT) [N/y/?] (NEW)
Paravirtual steal time accounting (PARAVIRT_TIME_ACCOUNTING) [N/y/?] (NEW)
kexec system call (KEXEC) [N/y/?] (NEW)
Build kdump crash kernel (CRASH_DUMP) [N/y/?] (NEW)
Xen guest support on ARM64 (XEN) [N/y/?] (NEW)
Emulate Privileged Access Never using TTBR0_EL1 switching (ARM64_SW_TTBR0_PAN) [N/y/?] (NEW)
*
* ARMv8.1 architectural features
*
Support for hardware updates of the Access and Dirty page flags (ARM64_HW_AFDBM) [Y/n/?] (NEW)
Enable support for Privileged Access Never (PAN) (ARM64_PAN) [Y/n/?] (NEW)
Atomic instructions (ARM64_LSE_ATOMICS) [N/y/?] (NEW)
Enable support for Virtualization Host Extensions (VHE) (ARM64_VHE) [Y/n/?] (NEW)
*
* ARMv8.2 architectural features
*
Enable support for User Access Override (UAO) (ARM64_UAO) [Y/n/?] (NEW)
Enable support for persistent memory (ARM64_PMEM) [N/y/?] (NEW)
Randomize the address of the kernel image (RANDOMIZE_BASE) [N/y/?] (NEW)
*
* Boot options
*
Default kernel command string (CMDLINE) [] (NEW)
Always use the default kernel command string (CMDLINE_FORCE) [N/y/?] (NEW)
UEFI runtime support (EFI) [Y/n/?] (NEW)
  Enable support for SMBIOS (DMI) tables (DMI) [Y/n/?] (NEW)
*
* Userspace binary formats
*
Kernel support for ELF binaries (BINFMT_ELF) [Y/n/?] (NEW)
Write ELF core dumps with partial segments (CORE_DUMP_DEFAULT_ELF_HEADERS) [Y/n/?] (NEW)
Kernel support for scripts starting with #! (BINFMT_SCRIPT) [Y/n/?] (NEW)
Kernel support for MISC binaries (BINFMT_MISC) [N/y/?] (NEW)
Kernel support for 32-bit EL0 (COMPAT) [N/y/?] (NEW)
*
* Power management options
*
Suspend to RAM and standby (SUSPEND) [Y/n/?] (NEW)
Hibernation (aka 'suspend to disk') (HIBERNATION) [N/y/?] (NEW)
Opportunistic sleep (PM_AUTOSLEEP) [N/y/?] (NEW)
User space wakeup sources interface (PM_WAKELOCKS) [N/y/?] (NEW)
Device power management core functionality (PM) [Y/?] (NEW) y
  Power Management Debug Support (PM_DEBUG) [N/y/?] (NEW)
Enable workqueue power-efficient mode by default (WQ_POWER_EFFICIENT_DEFAULT) [N/y/?] (NEW)
*
* CPU Power Management
*
*
* CPU Idle
*
CPU idle PM support (CPU_IDLE) [N/y/?] (NEW)
*
* CPU Frequency scaling
*
CPU Frequency scaling (CPU_FREQ) [N/y/?] (NEW)
*
* Networking support
*
Networking support (NET) [N/y/?] (NEW)
*
* Device Drivers
*
*
* Generic Driver Options
*
Support for uevent helper (UEVENT_HELPER) [Y/n/?] (NEW)
  path to uevent helper (UEVENT_HELPER_PATH) [] (NEW)
Maintain a devtmpfs filesystem to mount at /dev (DEVTMPFS) [N/y/?] (NEW)
Select only drivers that don't need compile-time external firmware (STANDALONE) [Y/n/?] (NEW)
Prevent firmware from being built (PREVENT_FIRMWARE_BUILD) [Y/n/?] (NEW)
Userspace firmware loading support (FW_LOADER) [Y/?] y
  Include in-kernel firmware blobs in kernel binary (FIRMWARE_IN_KERNEL) [Y/n/?] (NEW)
  External firmware blobs to build into the kernel binary (EXTRA_FIRMWARE) [] (NEW)
Fallback user-helper invocation for firmware loading (FW_LOADER_USER_HELPER_FALLBACK) [N/y/?] (NEW)
*
* Bus devices
*
Broadcom STB GISB bus arbiter (BRCMSTB_GISB_ARB) [N/y/?] (NEW)
Simple Power-Managed Bus Driver (SIMPLE_PM_BUS) [N/y/?] (NEW)
Versatile Express configuration bus (VEXPRESS_CONFIG) [N/y/?] (NEW)
*
* Memory Technology Device (MTD) support
*
Memory Technology Device (MTD) support (MTD) [N/y/?] (NEW)
*
* Device Tree and Open Firmware support
*
Device Tree and Open Firmware support (OF) [Y/?] (NEW) y
  Device Tree runtime unit tests (OF_UNITTEST) [N/y/?] (NEW)
  Device Tree overlays (OF_OVERLAY) [N/y/?] (NEW)
*
* Parallel port support
*
Parallel port support (PARPORT) [N/y/?] (NEW)
*
* Block devices
*
Block devices (BLK_DEV) [Y/n/?] (NEW)
  Null test block driver (BLK_DEV_NULL_BLK) [N/y] (NEW)
  Loopback device support (BLK_DEV_LOOP) [N/y/?] (NEW)
  *
  * DRBD disabled because PROC_FS or INET not selected
  *
  RAM block device support (BLK_DEV_RAM) [N/y/?] (NEW)
  Packet writing on CD/DVD media (DEPRECATED) (CDROM_PKTCDVD) [N/y/?] (NEW)
NVM Express over Fabrics FC host driver (NVME_FC) [N/y/?] (NEW)
*
* Misc devices
*
Dummy IRQ handler (DUMMY_IRQ) [N/y/?] (NEW)
Enclosure Services (ENCLOSURE_SERVICES) [N/y/?] (NEW)
Generic on-chip SRAM driver (SRAM) [N/y/?] (NEW)
*
* Silicon Labs C2 port support
*
Silicon Labs C2 port support (C2PORT) [N/y/?] (NEW)
*
* EEPROM support
*
EEPROM 93CX6 support (EEPROM_93CX6) [N/y/?] (NEW)
*
* Texas Instruments shared transport line discipline
*
*
* Altera FPGA firmware download module
*
*
* Intel MIC Bus Driver
*
*
* SCIF Bus Driver
*
*
* VOP Bus Driver
*
*
* Intel MIC Host Driver
*
*
* Intel MIC Card Driver
*
*
* SCIF Driver
*
*
* Intel MIC Coprocessor State Management (COSM) Drivers
*
*
* VOP Driver
*
Line Echo Canceller support (ECHO) [N/y/?] (NEW)
*
* SCSI device support
*
RAID Transport Class (RAID_ATTRS) [N/y/?] (NEW)
SCSI device support (SCSI) [N/y/?] (NEW)
*
* Serial ATA and Parallel ATA drivers (libata)
*
Serial ATA and Parallel ATA drivers (libata) (ATA) [N/y/?] (NEW)
*
* Multiple devices driver support (RAID and LVM)
*
Multiple devices driver support (RAID and LVM) (MD) [N/y/?] (NEW)
*
* Open-Channel SSD target support
*
Open-Channel SSD target support (NVM) [N/y/?] (NEW)
*
* Input device support
*
Generic input layer (needed for keyboard, mouse, ...) (INPUT) [Y/?] y
  Support for memoryless force-feedback devices (INPUT_FF_MEMLESS) [N/y/?] (NEW)
  Polled input device skeleton (INPUT_POLLDEV) [N/y/?] (NEW)
  Sparse keymap support library (INPUT_SPARSEKMAP) [N/y/?] (NEW)
  Matrix keymap support library (INPUT_MATRIXKMAP) [N/y/?] (NEW)
  *
  * Userland interfaces
  *
  Mouse interface (INPUT_MOUSEDEV) [N/y/?] (NEW)
  Joystick interface (INPUT_JOYDEV) [N/y/?] (NEW)
  Event interface (INPUT_EVDEV) [N/y/?] (NEW)
  Event debugging (INPUT_EVBUG) [N/y/?] (NEW)
  *
  * Input Device Drivers
  *
  *
  * Keyboards
  *
  Keyboards (INPUT_KEYBOARD) [Y/n/?] (NEW)
    AT keyboard (KEYBOARD_ATKBD) [Y/n/?] (NEW)
    DECstation/VAXstation LK201/LK401 keyboard (KEYBOARD_LKKBD) [N/y/?] (NEW)
    Newton keyboard (KEYBOARD_NEWTON) [N/y/?] (NEW)
    OpenCores Keyboard Controller (KEYBOARD_OPENCORES) [N/y/?] (NEW)
    Samsung keypad support (KEYBOARD_SAMSUNG) [N/y/?] (NEW)
    Stowaway keyboard (KEYBOARD_STOWAWAY) [N/y/?] (NEW)
    Sun Type 4 and Type 5 keyboard (KEYBOARD_SUNKBD) [N/y/?] (NEW)
    TI OMAP4+ keypad support (KEYBOARD_OMAP4) [N/y/?] (NEW)
    XT keyboard (KEYBOARD_XTKBD) [N/y/?] (NEW)
    Broadcom keypad driver (KEYBOARD_BCM) [N/y/?] (NEW)
  *
  * Mice
  *
  Mice (INPUT_MOUSE) [Y/n/?] (NEW)
    PS/2 mouse (MOUSE_PS2) [Y/n/?] (NEW)
      Elantech PS/2 protocol extension (MOUSE_PS2_ELANTECH) [N/y/?] (NEW)
      Sentelic Finger Sensing Pad PS/2 protocol extension (MOUSE_PS2_SENTELIC) [N/y/?] (NEW)
      eGalax TouchKit PS/2 protocol extension (MOUSE_PS2_TOUCHKIT) [N/y/?] (NEW)
    Serial mouse (MOUSE_SERIAL) [N/y/?] (NEW)
    Apple USB Touchpad support (MOUSE_APPLETOUCH) [N/y/?] (NEW)
    Apple USB BCM5974 Multitouch trackpad support (MOUSE_BCM5974) [N/y/?] (NEW)
    DEC VSXXX-AA/GA mouse and VSXXX-AB tablet (MOUSE_VSXXXAA) [N/y/?] (NEW)
    Synaptics USB device support (MOUSE_SYNAPTICS_USB) [N/y/?] (NEW)
  *
  * Joysticks/Gamepads
  *
  Joysticks/Gamepads (INPUT_JOYSTICK) [N/y/?] (NEW)
  *
  * Tablets
  *
  Tablets (INPUT_TABLET) [N/y/?] (NEW)
  *
  * Touchscreens
  *
  Touchscreens (INPUT_TOUCHSCREEN) [N/y/?] (NEW)
  *
  * Miscellaneous devices
  *
  Miscellaneous devices (INPUT_MISC) [N/y/?] (NEW)
  Synaptics RMI4 bus support (RMI4_CORE) [N/y/?] (NEW)
*
* Hardware I/O ports
*
Serial I/O support (SERIO) [Y/?] (NEW) y
Serial port line discipline (SERIO_SERPORT) [Y/n/?] (NEW)
AMBA KMI keyboard controller (SERIO_AMBAKMI) [N/y] (NEW)
PS/2 driver library (SERIO_LIBPS2) [Y/?] (NEW) y
Raw access to serio ports (SERIO_RAW) [N/y/?] (NEW)
Altera UP PS/2 controller (SERIO_ALTERA_PS2) [N/y/?] (NEW)
TQC PS/2 multiplexer (SERIO_PS2MULT) [N/y/?] (NEW)
ARC PS/2 support (SERIO_ARC_PS2) [N/y/?] (NEW)
GRLIB APBPS2 PS/2 keyboard/mouse controller (SERIO_APBPS2) [N/y/?] (NEW)
User space serio port driver support (USERIO) [N/y/?] (NEW)
Gameport support (GAMEPORT) [N/y/?] (NEW)
*
* Character devices
*
Enable TTY (TTY) [Y/?] y
  Virtual terminal (VT) [Y/?] y
    Support for binding and unbinding console drivers (VT_HW_CONSOLE_BINDING) [N/y/?] (NEW)
  Legacy (BSD) PTY support (LEGACY_PTYS) [Y/n/?] (NEW)
    Maximum number of legacy PTY in use (LEGACY_PTY_COUNT) [256] (NEW)
  Non-standard serial port support (SERIAL_NONSTANDARD) [N/y/?] (NEW)
  Trace data sink for MIPI P1149.7 cJTAG standard (TRACE_SINK) [N/y/?] (NEW)
/dev/mem virtual device support (DEVMEM) [Y/n/?] (NEW)
*
* Serial drivers
*
8250/16550 and compatible serial support (SERIAL_8250) [N/y/?] (NEW)
*
* Non-8250 serial port support
*
ARM AMBA PL010 serial port support (SERIAL_AMBA_PL010) [N/y/?] (NEW)
ARM AMBA PL011 serial port support (SERIAL_AMBA_PL011) [N/y/?] (NEW)
Early console using ARM semihosting (SERIAL_EARLYCON_ARM_SEMIHOST) [N/y/?] (NEW)
Xilinx uartlite serial port support (SERIAL_UARTLITE) [N/y/?] (NEW)
SCCNXP serial port support (SERIAL_SCCNXP) [N/y/?] (NEW)
Altera JTAG UART support (SERIAL_ALTERA_JTAGUART) [N/y/?] (NEW)
Altera UART support (SERIAL_ALTERA_UART) [N/y/?] (NEW)
Cadence (Xilinx Zynq) UART support (SERIAL_XILINX_PS_UART) [N/y/?] (NEW)
ARC UART driver support (SERIAL_ARC) [N/y/?] (NEW)
Freescale lpuart serial port support (SERIAL_FSL_LPUART) [N/y/?] (NEW)
Conexant Digicolor CX92xxx USART serial port support (SERIAL_CONEXANT_DIGICOLOR) [N/y/?] (NEW)
*
* Serial device bus
*
Serial device bus (SERIAL_DEV_BUS) [N/y/?] (NEW)
ARM JTAG DCC console (HVC_DCC) [N/y/?] (NEW)
*
* IPMI top-level message handler
*
IPMI top-level message handler (IPMI_HANDLER) [N/y/?] (NEW)
*
* Hardware Random Number Generator Core support
*
Hardware Random Number Generator Core support (HW_RANDOM) [Y/n/?] (NEW)
  Timer IOMEM HW Random Number Generator support (HW_RANDOM_TIMERIOMEM) [N/y/?] (NEW)
Siemens R3964 line discipline (R3964) [N/y/?] (NEW)
*
* PCMCIA character devices
*
RAW driver (/dev/raw/rawN) (RAW_DRIVER) [N/y/?] (NEW)
*
* TPM Hardware Support
*
TPM Hardware Support (TCG_TPM) [N/y/?] (NEW)
Xillybus generic FPGA interface (XILLYBUS) [N/y/?] (NEW)
*
* I2C support
*
I2C support (I2C) [N/y/?] (NEW)
*
* SPI support
*
SPI support (SPI) [N/y/?] (NEW)
*
* SPMI support
*
SPMI support (SPMI) [N/y/?] (NEW)
*
* HSI support
*
HSI support (HSI) [N/y/?] (NEW)
*
* PPS support
*
PPS support (PPS) [N/y/?] (NEW)
*
* PTP clock support
*
*
* Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
*
*
* GPIO Support
*
GPIO Support (GPIOLIB) [N/y/?] (NEW)
*
* Dallas's 1-wire support
*
Dallas's 1-wire support (W1) [N/y/?] (NEW)
*
* Adaptive Voltage Scaling class support
*
Adaptive Voltage Scaling class support (POWER_AVS) [N/y/?] (NEW)
*
* Board level reset or power off
*
Board level reset or power off (POWER_RESET) [Y/?] (NEW) y
  Restart power-off driver (POWER_RESET_RESTART) [N/y/?] (NEW)
  APM SoC X-Gene reset driver (POWER_RESET_XGENE) [N/y/?] (NEW)
  Generic SYSCON regmap reset driver (POWER_RESET_SYSCON) [N/y/?] (NEW)
  Generic SYSCON regmap poweroff driver (POWER_RESET_SYSCON_POWEROFF) [N/y/?] (NEW)
*
* Power supply class support
*
Power supply class support (POWER_SUPPLY) [Y/?] (NEW) y
  Power supply debug (POWER_SUPPLY_DEBUG) [N/y/?] (NEW)
  Generic PDA/phone power driver (PDA_POWER) [N/y/?] (NEW)
  Test power driver (TEST_POWER) [N/y/?] (NEW)
  DS2780 battery driver (BATTERY_DS2780) [N/y/?] (NEW)
  DS2781 battery driver (BATTERY_DS2781) [N/y/?] (NEW)
  BQ27xxx battery driver (BATTERY_BQ27XXX) [N/y/?] (NEW)
  MAX8903 Battery DC-DC Charger for USB and Adapter Power (CHARGER_MAX8903) [N/y/?] (NEW)
*
* Hardware Monitoring support
*
Hardware Monitoring support (HWMON) [Y/n/?] (NEW)
  Hardware Monitoring Chip debugging messages (HWMON_DEBUG_CHIP) [N/y/?] (NEW)
  *
  * Native drivers
  *
  ASPEED AST2400/AST2500 PWM and Fan tach driver (SENSORS_ASPEED) [N/y/?] (NEW)
  Fintek F71805F/FG, F71806F/FG and F71872F/FG (SENSORS_F71805F) [N/y/?] (NEW)
  Fintek F71882FG and compatibles (SENSORS_F71882FG) [N/y/?] (NEW)
  ITE IT87xx and compatibles (SENSORS_IT87) [N/y/?] (NEW)
  Maxim MAX197 and compatibles (SENSORS_MAX197) [N/y/?] (NEW)
  National Semiconductor PC87360 family (SENSORS_PC87360) [N/y/?] (NEW)
  National Semiconductor PC87427 (SENSORS_PC87427) [N/y/?] (NEW)
  NTC thermistor support from Murata (SENSORS_NTC_THERMISTOR) [N/y/?] (NEW)
  Nuvoton NCT6683D (SENSORS_NCT6683) [N/y/?] (NEW)
  Nuvoton NCT6775F and compatibles (SENSORS_NCT6775) [N/y/?] (NEW)
  SMSC LPC47M10x and compatibles (SENSORS_SMSC47M1) [N/y/?] (NEW)
  SMSC LPC47B397-NC (SENSORS_SMSC47B397) [N/y/?] (NEW)
  VIA VT1211 (SENSORS_VT1211) [N/y/?] (NEW)
  Winbond W83627HF, W83627THF, W83637HF, W83687THF, W83697HF (SENSORS_W83627HF) [N/y/?] (NEW)
  Winbond W83627EHF/EHG/DHG/UHG, W83667HG, NCT6775F, NCT6776F (SENSORS_W83627EHF) [N/y/?] (NEW)
*
* Generic Thermal sysfs driver
*
Generic Thermal sysfs driver (THERMAL) [N/y/?] (NEW)
*
* Watchdog Timer Support
*
Watchdog Timer Support (WATCHDOG) [N/y/?] (NEW)
*
* Sonics Silicon Backplane
*
Sonics Silicon Backplane support (SSB) [N/y/?] (NEW)
*
* Broadcom specific AMBA
*
Broadcom specific AMBA (BCMA) [N/y/?] (NEW)
*
* Multifunction device drivers
*
Atmel Flexcom (Flexible Serial Communication Unit) (MFD_ATMEL_FLEXCOM) [N/y/?] (NEW)
Atmel HLCDC (High-end LCD Controller) (MFD_ATMEL_HLCDC) [N/y/?] (NEW)
ChromeOS Embedded Controller (MFD_CROS_EC) [N/y/?] (NEW)
HiSilicon Hi6421 PMU/Codec IC (MFD_HI6421_PMIC) [N/y/?] (NEW)
HTC PASIC3 LED/DS1WM chip support (HTC_PASIC3) [N/y/?] (NEW)
Kontron module PLD device (MFD_KEMPLD) [N/y/?] (NEW)
MediaTek MT6397 PMIC Support (MFD_MT6397) [N/y/?] (NEW)
Silicon Motion SM501 (MFD_SM501) [N/y/?] (NEW)
ST-Ericsson ABX500 Mixed Signal Circuit register functions (ABX500_CORE) [N/y/?] (NEW)
System Controller Register R/W Based on Regmap (MFD_SYSCON) [N/y/?] (NEW)
TI ADC / Touch Screen chip support (MFD_TI_AM335X_TSCADC) [N/y/?] (NEW)
*
* Voltage and Current Regulator Support
*
Voltage and Current Regulator Support (REGULATOR) [N/y/?] (NEW)
*
* Remote Controller support
*
Remote Controller support (RC_CORE) [Y/n/?] (NEW)
  Compile Remote Controller keymap modules (RC_MAP) [Y/n/?] (NEW)
  *
  * Remote controller decoders
  *
  Remote controller decoders (RC_DECODERS) [Y/n] (NEW)
    LIRC interface driver (LIRC) [N/y/?] (NEW)
    Enable IR raw decoder for the NEC protocol (IR_NEC_DECODER) [Y/n/?] (NEW)
    Enable IR raw decoder for the RC-5 protocol (IR_RC5_DECODER) [Y/n/?] (NEW)
    Enable IR raw decoder for the RC6 protocol (IR_RC6_DECODER) [Y/n/?] (NEW)
    Enable IR raw decoder for the JVC protocol (IR_JVC_DECODER) [Y/n/?] (NEW)
    Enable IR raw decoder for the Sony protocol (IR_SONY_DECODER) [Y/n/?] (NEW)
    Enable IR raw decoder for the Sanyo protocol (IR_SANYO_DECODER) [Y/n/?] (NEW)
    Enable IR raw decoder for the Sharp protocol (IR_SHARP_DECODER) [Y/n/?] (NEW)
    Enable IR raw decoder for the MCE keyboard/mouse protocol (IR_MCE_KBD_DECODER) [Y/n/?] (NEW)
    Enable IR raw decoder for the XMP protocol (IR_XMP_DECODER) [Y/n/?] (NEW)
  *
  * Remote Controller devices
  *
  Remote Controller devices (RC_DEVICES) [N/y] (NEW)
*
* Multimedia support
*
Multimedia support (MEDIA_SUPPORT) [N/y/?] (NEW)
*
* Graphics support
*
*
* Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
*
Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) (DRM) [N/y/?] (NEW)
*
* ACP (Audio CoProcessor) Configuration
*
*
* Frame buffer Devices
*
*
* Support for frame buffer devices
*
Support for frame buffer devices (FB) [N/y/?] (NEW)
*
* Backlight & LCD device support
*
Backlight & LCD device support (BACKLIGHT_LCD_SUPPORT) [N/y/?] (NEW)
*
* Console display driver support
*
Initial number of console screen columns (DUMMY_CONSOLE_COLUMNS) [80] (NEW)
Initial number of console screen rows (DUMMY_CONSOLE_ROWS) [25] (NEW)
*
* Sound card support
*
Sound card support (SOUND) [N/y/?] (NEW)
*
* HID support
*
HID bus support (HID) [Y/n/?] (NEW)
  Battery level reporting for HID devices (HID_BATTERY_STRENGTH) [N/y/?] (NEW)
  /dev/hidraw raw HID device support (HIDRAW) [N/y/?] (NEW)
  User-space I/O driver support for HID subsystem (UHID) [N/y/?] (NEW)
  Generic HID driver (HID_GENERIC) [Y/n/?] (NEW)
  *
  * Special HID drivers
  *
  A4 tech mice (HID_A4TECH) [Y/n/?] (NEW)
  ACRUX game controller support (HID_ACRUX) [N/y/?] (NEW)
  Apple {i,Power,Mac}Books (HID_APPLE) [Y/n/?] (NEW)
  Aureal (HID_AUREAL) [N/y/?] (NEW)
  Belkin Flip KVM and Wireless keyboard (HID_BELKIN) [Y/n/?] (NEW)
  Cherry Cymotion keyboard (HID_CHERRY) [Y/n/?] (NEW)
  Chicony devices (HID_CHICONY) [Y/n/?] (NEW)
  CMedia CM6533 HID audio jack controls (HID_CMEDIA) [N/y/?] (NEW)
  Cypress mouse and barcode readers (HID_CYPRESS) [Y/n/?] (NEW)
  DragonRise Inc. game controller (HID_DRAGONRISE) [N/y/?] (NEW)
  EMS Production Inc. force feedback support (HID_EMS_FF) [N/y/?] (NEW)
  ELECOM HID devices (HID_ELECOM) [N/y/?] (NEW)
  Ezkey BTC 8193 keyboard (HID_EZKEY) [Y/n/?] (NEW)
  Gembird Joypad (HID_GEMBIRD) [N/y/?] (NEW)
  Google Fiber TV Box remote control support (HID_GFRM) [N/y/?] (NEW)
  Keytouch HID devices (HID_KEYTOUCH) [N/y/?] (NEW)
  KYE/Genius devices (HID_KYE) [N/y/?] (NEW)
  Waltop (HID_WALTOP) [N/y/?] (NEW)
  Gyration remote control (HID_GYRATION) [N/y/?] (NEW)
  ION iCade arcade controller (HID_ICADE) [N/y/?] (NEW)
  ITE devices (HID_ITE) [Y/n/?] (NEW)
  Twinhan IR remote control (HID_TWINHAN) [N/y/?] (NEW)
  Kensington Slimblade Trackball (HID_KENSINGTON) [Y/n/?] (NEW)
  LC-Power (HID_LCPOWER) [N/y/?] (NEW)
  Lenovo / Thinkpad devices (HID_LENOVO) [N/y/?] (NEW)
  Logitech devices (HID_LOGITECH) [Y/n/?] (NEW)
    Logitech HID++ devices support (HID_LOGITECH_HIDPP) [N/y/?] (NEW)
    Logitech force feedback support (LOGITECH_FF) [N/y/?] (NEW)
    Logitech force feedback support (variant 2) (LOGIRUMBLEPAD2_FF) [N/y/?] (NEW)
    Logitech Flight System G940 force feedback support (LOGIG940_FF) [N/y/?] (NEW)
    Logitech wheels configuration and force feedback support (LOGIWHEELS_FF) [N/y/?] (NEW)
  Apple Magic Mouse/Trackpad multi-touch support (HID_MAGICMOUSE) [N/y/?] (NEW)
  Mayflash game controller adapter force feedback (HID_MAYFLASH) [N/y/?] (NEW)
  Microsoft non-fully HID-compliant devices (HID_MICROSOFT) [Y/n/?] (NEW)
  Monterey Genius KB29E keyboard (HID_MONTEREY) [Y/n/?] (NEW)
  HID Multitouch panels (HID_MULTITOUCH) [N/y/?] (NEW)
  NTI keyboard adapters (HID_NTI) [N/y/?] (NEW)
  Ortek PKB-1700/WKB-2000/Skycable wireless keyboard and mouse trackpad (HID_ORTEK) [N/y/?] (NEW)
  Pantherlord/GreenAsia game controller (HID_PANTHERLORD) [N/y/?] (NEW)
  Petalynx Maxter remote control (HID_PETALYNX) [N/y/?] (NEW)
  PicoLCD (graphic version) (HID_PICOLCD) [N/y/?] (NEW)
  Plantronics USB HID Driver (HID_PLANTRONICS) [N/y/?] (NEW)
  Primax non-fully HID-compliant devices (HID_PRIMAX) [N/y/?] (NEW)
  Saitek (Mad Catz) non-fully HID-compliant devices (HID_SAITEK) [N/y/?] (NEW)
  Samsung InfraRed remote control or keyboards (HID_SAMSUNG) [N/y/?] (NEW)
  Speedlink VAD Cezanne mouse support (HID_SPEEDLINK) [N/y/?] (NEW)
  Steelseries SRW-S1 steering wheel support (HID_STEELSERIES) [N/y/?] (NEW)
  Sunplus wireless desktop (HID_SUNPLUS) [N/y/?] (NEW)
  Synaptics RMI4 device support (HID_RMI) [N/y/?] (NEW)
  GreenAsia (Product ID 0x12) game controller support (HID_GREENASIA) [N/y/?] (NEW)
  SmartJoy PLUS PS2/USB adapter support (HID_SMARTJOYPLUS) [N/y/?] (NEW)
  TiVo Slide Bluetooth remote control support (HID_TIVO) [N/y/?] (NEW)
  TopSeed Cyberlink, BTC Emprex, Conceptronic remote control support (HID_TOPSEED) [N/y/?] (NEW)
  ThrustMaster devices support (HID_THRUSTMASTER) [N/y/?] (NEW)
  THQ PS3 uDraw tablet (HID_UDRAW_PS3) [N/y/?] (NEW)
  Xin-Mo non-fully compliant devices (HID_XINMO) [N/y/?] (NEW)
  Zeroplus based game controller support (HID_ZEROPLUS) [N/y/?] (NEW)
  Zydacron remote control support (HID_ZYDACRON) [N/y/?] (NEW)
  HID Sensors framework support (HID_SENSOR_HUB) [N/y/?] (NEW)
  Alps HID device support (HID_ALPS) [N/y/?] (NEW)
*
* USB support
*
USB support (USB_SUPPORT) [Y/n/?] (NEW)
  Support for Host-side USB (USB) [N/y/?] (NEW)
  *
  * USB port drivers
  *
  *
  * USB Physical Layer drivers
  *
  NOP USB Transceiver Driver (NOP_USB_XCEIV) [N/y/?] (NEW)
  Generic ULPI Transceiver Driver (USB_ULPI) [N/y/?] (NEW)
  *
  * USB Gadget Support
  *
  USB Gadget Support (USB_GADGET) [N/y/?] (NEW)
  *
  * USB Power Delivery and Type-C drivers
  *
  USB Type-C Connector System Software Interface driver (TYPEC_UCSI) [N/y/?] (NEW)
  USB ULPI PHY interface support (USB_ULPI_BUS) [N/y/?] (NEW)
*
* Ultra Wideband devices
*
Ultra Wideband devices (UWB) [N/y/?] (NEW)
*
* MMC/SD/SDIO card support
*
MMC/SD/SDIO card support (MMC) [N/y/?] (NEW)
*
* Sony MemoryStick card support
*
Sony MemoryStick card support (MEMSTICK) [N/y/?] (NEW)
*
* LED Support
*
LED Support (NEW_LEDS) [N/y/?] (NEW)
*
* Accessibility support
*
Accessibility support (ACCESSIBILITY) [N/y/?] (NEW)
*
* Real Time Clock
*
Real Time Clock (RTC_CLASS) [N/y/?] (NEW)
*
* DMA Engine support
*
DMA Engine support (DMADEVICES) [N/y/?] (NEW)
*
* DMABUF options
*
Explicit Synchronization Framework (SYNC_FILE) [N/y/?] (NEW)
*
* Auxiliary Display support
*
Auxiliary Display support (AUXDISPLAY) [N/y/?] (NEW)
*
* Userspace I/O drivers
*
Userspace I/O drivers (UIO) [N/y/?] (NEW)
*
* VFIO Non-Privileged userspace driver framework
*
VFIO Non-Privileged userspace driver framework (VFIO) [N/y/?] (NEW)
*
* Virtualization drivers
*
Virtualization drivers (VIRT_DRIVERS) [N/y/?] (NEW)
*
* Virtio drivers
*
Platform bus driver for memory mapped virtio devices (VIRTIO_MMIO) [N/y/?] (NEW)
*
* Microsoft Hyper-V guest support
*
*
* Staging drivers
*
Staging drivers (STAGING) [N/y/?] (NEW)
*
* Platform support for Goldfish virtual devices
*
Platform support for Goldfish virtual devices (GOLDFISH) [N/y/?] (NEW)
*
* Platform support for Chrome hardware
*
Platform support for Chrome hardware (CHROME_PLATFORMS) [N/y/?] (NEW)
*
* Common Clock Framework
*
Clock driver for ARM Reference designs (COMMON_CLK_VERSATILE) [N/y/?] (NEW)
PLL Driver for HSDK platform (CLK_HSDK) [N/y/?] (NEW)
Clock driver for Freescale QorIQ platforms (CLK_QORIQ) [N/y/?] (NEW)
Clock driver for APM XGene SoC (COMMON_CLK_XGENE) [Y/n/?] (NEW)
*
* Hardware Spinlock drivers
*
Hardware Spinlock drivers (HWSPINLOCK) [N/y] (NEW)
*
* Clock Source drivers
*
Enable ARM architected timer event stream generation by default (ARM_ARCH_TIMER_EVTSTREAM) [Y/n/?] (NEW)
Workaround for Freescale/NXP Erratum A-008585 (FSL_ERRATUM_A008585) [Y/n/?] (NEW)
Workaround for Hisilicon Erratum 161010101 (HISILICON_ERRATUM_161010101) [Y/n/?] (NEW)
Workaround for Cortex-A73 erratum 858921 (ARM64_ERRATUM_858921) [Y/n/?] (NEW)
Support for Dual Timer SP804 module (ARM_TIMER_SP804) [N/y] (NEW)
*
* Mailbox Hardware Support
*
Mailbox Hardware Support (MAILBOX) [N/y/?] (NEW)
*
* IOMMU Hardware Support
*
IOMMU Hardware Support (IOMMU_SUPPORT) [Y/n/?] (NEW)
  *
  * Generic IOMMU Pagetable Support
  *
  ARMv7/v8 Long Descriptor Format (IOMMU_IO_PGTABLE_LPAE) [N/y/?] (NEW)
  ARMv7/v8 Short Descriptor Format (IOMMU_IO_PGTABLE_ARMV7S) [N/y/?] (NEW)
  ARM Ltd. System MMU (SMMU) Support (ARM_SMMU) [N/y/?] (NEW)
  ARM Ltd. System MMU Version 3 (SMMUv3) Support (ARM_SMMU_V3) [N/y/?] (NEW)
*
* Remoteproc drivers
*
Support for Remote Processor subsystem (REMOTEPROC) [N/y/?] (NEW)
*
* Rpmsg drivers
*
*
* SOC (System On Chip) specific Drivers
*
*
* Amlogic SoC drivers
*
*
* Broadcom SoC drivers
*
Broadcom STB SoC drivers (SOC_BRCMSTB) [N/y/?] (NEW)
*
* i.MX SoC drivers
*
*
* Qualcomm SoC drivers
*
*
* TI SOC drivers support
*
TI SOC drivers support (SOC_TI) [N/y] (NEW)
*
* Generic Dynamic Voltage and Frequency Scaling (DVFS) support
*
Generic Dynamic Voltage and Frequency Scaling (DVFS) support (PM_DEVFREQ) [N/y/?] (NEW)
*
* External Connector Class (extcon) support
*
External Connector Class (extcon) support (EXTCON) [N/y/?] (NEW)
*
* Memory Controller drivers
*
Memory Controller drivers (MEMORY) [N/y] (NEW)
*
* Industrial I/O support
*
Industrial I/O support (IIO) [N/y/?] (NEW)
*
* Pulse-Width Modulation (PWM) Support
*
Pulse-Width Modulation (PWM) Support (PWM) [N/y/?] (NEW)
*
* IndustryPack bus support
*
IndustryPack bus support (IPACK_BUS) [N/y/?] (NEW)
*
* Reset Controller Support
*
Reset Controller Support (RESET_CONTROLLER) [N/y/?] (NEW)
*
* FMC support
*
FMC support (FMC) [N/y/?] (NEW)
*
* PHY Subsystem
*
PHY Core (GENERIC_PHY) [N/y/?] (NEW)
APM X-Gene 15Gbps PHY support (PHY_XGENE) [N/y/?] (NEW)
Broadcom Kona USB2 PHY Driver (BCM_KONA_USB2_PHY) [N/y/?] (NEW)
Marvell USB HSIC 28nm PHY Driver (PHY_PXA_28NM_HSIC) [N/y/?] (NEW)
Marvell USB 2.0 28nm PHY Driver (PHY_PXA_28NM_USB2) [N/y/?] (NEW)
*
* Generic powercap sysfs driver
*
Generic powercap sysfs driver (POWERCAP) [N/y/?] (NEW)
*
* MCB support
*
MCB support (MCB) [N/y/?] (NEW)
*
* Reliability, Availability and Serviceability (RAS) features
*
Reliability, Availability and Serviceability (RAS) features (RAS) [N/y/?] (NEW)
*
* Android
*
Android Drivers (ANDROID) [N/y/?] (NEW)
*
* NVDIMM (Non-Volatile Memory Device) Support
*
NVDIMM (Non-Volatile Memory Device) Support (LIBNVDIMM) [N/y/?] (NEW)
*
* DAX: direct access to differentiated memory
*
DAX: direct access to differentiated memory (DAX) [N/y] (NEW)
*
* NVMEM Support
*
NVMEM Support (NVMEM) [N/y/?] (NEW)
System Trace Module devices (STM) [N/y/?] (NEW)
Intel(R) Trace Hub controller (INTEL_TH) [N/y/?] (NEW)
*
* FPGA Configuration Framework
*
FPGA Configuration Framework (FPGA) [N/y/?] (NEW)
*
* FSI support
*
FSI support (FSI) [N/y/?] (NEW)
Trusted Execution Environment support (TEE) [N/y/?] (NEW)
*
* Firmware Drivers
*
ARM PSCI checker (ARM_PSCI_CHECKER) [N/y/?] (NEW)
Export DMI identification via sysfs to userspace (DMIID) [Y/n/?] (NEW)
DMI table support in sysfs (DMI_SYSFS) [N/y/?] (NEW)
*
* Google Firmware Drivers
*
Google Firmware Drivers (GOOGLE_FIRMWARE) [N/y/?] (NEW)
*
* EFI (Extensible Firmware Interface) Support
*
EFI Variable Support via sysfs (EFI_VARS) [N/y/?] (NEW)
EFI capsule loader (EFI_CAPSULE_LOADER) [N/y/?] (NEW)
EFI Runtime Service Tests Support (EFI_TEST) [N/y/?] (NEW)
Reset memory attack mitigation (RESET_ATTACK_MITIGATION) [N/y/?] (NEW)
*
* Tegra firmware driver
*
*
* File systems
*
Second extended fs support (EXT2_FS) [N/y/?] (NEW)
The Extended 3 (ext3) filesystem (EXT3_FS) [N/y/?] (NEW)
The Extended 4 (ext4) filesystem (EXT4_FS) [N/y/?] (NEW)
Reiserfs support (REISERFS_FS) [N/y/?] (NEW)
JFS filesystem support (JFS_FS) [N/y/?] (NEW)
XFS filesystem support (XFS_FS) [N/y/?] (NEW)
GFS2 file system support (GFS2_FS) [N/y/?] (NEW)
Btrfs filesystem support (BTRFS_FS) [N/y/?] (NEW)
NILFS2 file system support (NILFS2_FS) [N/y/?] (NEW)
F2FS filesystem support (F2FS_FS) [N/y/?] (NEW)
Direct Access (DAX) support (FS_DAX) [N/y/?] (NEW)
Enable filesystem export operations for block IO (EXPORTFS_BLOCK_OPS) [N/y/?] (NEW)
Enable POSIX file locking API (FILE_LOCKING) [Y/?] y
  Enable Mandatory file locking (MANDATORY_FILE_LOCKING) [Y/n/?] (NEW)
FS Encryption (Per-file encryption) (FS_ENCRYPTION) [N/y/?] (NEW)
Dnotify support (DNOTIFY) [Y/n/?] (NEW)
Inotify support for userspace (INOTIFY_USER) [Y/n/?] (NEW)
Filesystem wide access notification (FANOTIFY) [N/y/?] (NEW)
Quota support (QUOTA) [N/y/?] (NEW)
Kernel automounter version 4 support (also supports v3) (AUTOFS4_FS) [N/y/?] (NEW)
FUSE (Filesystem in Userspace) support (FUSE_FS) [N/y/?] (NEW)
Overlay filesystem support (OVERLAY_FS) [N/y/?] (NEW)
*
* Caches
*
General filesystem local caching manager (FSCACHE) [N/y/?] (NEW)
*
* CD-ROM/DVD Filesystems
*
ISO 9660 CDROM file system support (ISO9660_FS) [N/y/?] (NEW)
UDF file system support (UDF_FS) [N/y/?] (NEW)
*
* DOS/FAT/NT Filesystems
*
MSDOS fs support (MSDOS_FS) [N/y/?] (NEW)
VFAT (Windows-95) fs support (VFAT_FS) [N/y/?] (NEW)
NTFS file system support (NTFS_FS) [N/y/?] (NEW)
*
* Pseudo filesystems
*
/proc file system support (PROC_FS) [Y/?] y
  /proc/kcore support (PROC_KCORE) [N/y/?] (NEW)
Include /proc/<pid>/task/<tid>/children file (PROC_CHILDREN) [N/y/?] (NEW)
Tmpfs virtual memory file system support (former shm fs) (TMPFS) [N/y/?] (NEW)
HugeTLB file system support (HUGETLBFS) [N/y/?] (NEW)
Userspace-driven configuration filesystem (CONFIGFS_FS) [N/y/?] (NEW)
EFI Variable filesystem (EFIVAR_FS) [Y/n/?] (NEW)
*
* Miscellaneous filesystems
*
Miscellaneous filesystems (MISC_FILESYSTEMS) [Y/n/?] (NEW)
  ORANGEFS (Powered by PVFS) support (ORANGEFS_FS) [N/y/?] (NEW)
  ADFS file system support (ADFS_FS) [N/y/?] (NEW)
  Amiga FFS file system support (AFFS_FS) [N/y/?] (NEW)
  Apple Macintosh file system support (HFS_FS) [N/y/?] (NEW)
  Apple Extended HFS file system support (HFSPLUS_FS) [N/y/?] (NEW)
  BeOS file system (BeFS) support (read only) (BEFS_FS) [N/y/?] (NEW)
  BFS file system support (BFS_FS) [N/y/?] (NEW)
  EFS file system support (read only) (EFS_FS) [N/y/?] (NEW)
  Compressed ROM file system support (cramfs) (OBSOLETE) (CRAMFS) [N/y/?] (NEW)
  SquashFS 4.0 - Squashed file system support (SQUASHFS) [N/y/?] (NEW)
  FreeVxFS file system support (VERITAS VxFS(TM) compatible) (VXFS_FS) [N/y/?] (NEW)
  Minix file system support (MINIX_FS) [N/y/?] (NEW)
  SonicBlue Optimized MPEG File System support (OMFS_FS) [N/y/?] (NEW)
  OS/2 HPFS file system support (HPFS_FS) [N/y/?] (NEW)
  QNX4 file system support (read only) (QNX4FS_FS) [N/y/?] (NEW)
  QNX6 file system support (read only) (QNX6FS_FS) [N/y/?] (NEW)
  ROM file system support (ROMFS_FS) [N/y/?] (NEW)
  Persistent store support (PSTORE) [N/y/?] (NEW)
  System V/Xenix/V7/Coherent file system support (SYSV_FS) [N/y/?] (NEW)
  UFS file system support (read only) (UFS_FS) [N/y/?] (NEW)
*
* Native language support
*
Native language support (NLS) [Y/?] (NEW) y
  Default NLS Option (NLS_DEFAULT) [iso8859-1] (NEW)
  Codepage 437 (United States, Canada) (NLS_CODEPAGE_437) [N/y/?] (NEW)
  Codepage 737 (Greek) (NLS_CODEPAGE_737) [N/y/?] (NEW)
  Codepage 775 (Baltic Rim) (NLS_CODEPAGE_775) [N/y/?] (NEW)
  Codepage 850 (Europe) (NLS_CODEPAGE_850) [N/y/?] (NEW)
  Codepage 852 (Central/Eastern Europe) (NLS_CODEPAGE_852) [N/y/?] (NEW)
  Codepage 855 (Cyrillic) (NLS_CODEPAGE_855) [N/y/?] (NEW)
  Codepage 857 (Turkish) (NLS_CODEPAGE_857) [N/y/?] (NEW)
  Codepage 860 (Portuguese) (NLS_CODEPAGE_860) [N/y/?] (NEW)
  Codepage 861 (Icelandic) (NLS_CODEPAGE_861) [N/y/?] (NEW)
  Codepage 862 (Hebrew) (NLS_CODEPAGE_862) [N/y/?] (NEW)
  Codepage 863 (Canadian French) (NLS_CODEPAGE_863) [N/y/?] (NEW)
  Codepage 864 (Arabic) (NLS_CODEPAGE_864) [N/y/?] (NEW)
  Codepage 865 (Norwegian, Danish) (NLS_CODEPAGE_865) [N/y/?] (NEW)
  Codepage 866 (Cyrillic/Russian) (NLS_CODEPAGE_866) [N/y/?] (NEW)
  Codepage 869 (Greek) (NLS_CODEPAGE_869) [N/y/?] (NEW)
  Simplified Chinese charset (CP936, GB2312) (NLS_CODEPAGE_936) [N/y/?] (NEW)
  Traditional Chinese charset (Big5) (NLS_CODEPAGE_950) [N/y/?] (NEW)
  Japanese charsets (Shift-JIS, EUC-JP) (NLS_CODEPAGE_932) [N/y/?] (NEW)
  Korean charset (CP949, EUC-KR) (NLS_CODEPAGE_949) [N/y/?] (NEW)
  Thai charset (CP874, TIS-620) (NLS_CODEPAGE_874) [N/y/?] (NEW)
  Hebrew charsets (ISO-8859-8, CP1255) (NLS_ISO8859_8) [N/y/?] (NEW)
  Windows CP1250 (Slavic/Central European Languages) (NLS_CODEPAGE_1250) [N/y/?] (NEW)
  Windows CP1251 (Bulgarian, Belarusian) (NLS_CODEPAGE_1251) [N/y/?] (NEW)
  ASCII (United States) (NLS_ASCII) [N/y/?] (NEW)
  NLS ISO 8859-1  (Latin 1; Western European Languages) (NLS_ISO8859_1) [N/y/?] (NEW)
  NLS ISO 8859-2  (Latin 2; Slavic/Central European Languages) (NLS_ISO8859_2) [N/y/?] (NEW)
  NLS ISO 8859-3  (Latin 3; Esperanto, Galician, Maltese, Turkish) (NLS_ISO8859_3) [N/y/?] (NEW)
  NLS ISO 8859-4  (Latin 4; old Baltic charset) (NLS_ISO8859_4) [N/y/?] (NEW)
  NLS ISO 8859-5  (Cyrillic) (NLS_ISO8859_5) [N/y/?] (NEW)
  NLS ISO 8859-6  (Arabic) (NLS_ISO8859_6) [N/y/?] (NEW)
  NLS ISO 8859-7  (Modern Greek) (NLS_ISO8859_7) [N/y/?] (NEW)
  NLS ISO 8859-9  (Latin 5; Turkish) (NLS_ISO8859_9) [N/y/?] (NEW)
  NLS ISO 8859-13 (Latin 7; Baltic) (NLS_ISO8859_13) [N/y/?] (NEW)
  NLS ISO 8859-14 (Latin 8; Celtic) (NLS_ISO8859_14) [N/y/?] (NEW)
  NLS ISO 8859-15 (Latin 9; Western European Languages with Euro) (NLS_ISO8859_15) [N/y/?] (NEW)
  NLS KOI8-R (Russian) (NLS_KOI8_R) [N/y/?] (NEW)
  NLS KOI8-U/RU (Ukrainian, Belarusian) (NLS_KOI8_U) [N/y/?] (NEW)
  Codepage macroman (NLS_MAC_ROMAN) [N/y/?] (NEW)
  Codepage macceltic (NLS_MAC_CELTIC) [N/y/?] (NEW)
  Codepage maccenteuro (NLS_MAC_CENTEURO) [N/y/?] (NEW)
  Codepage maccroatian (NLS_MAC_CROATIAN) [N/y/?] (NEW)
  Codepage maccyrillic (NLS_MAC_CYRILLIC) [N/y/?] (NEW)
  Codepage macgaelic (NLS_MAC_GAELIC) [N/y/?] (NEW)
  Codepage macgreek (NLS_MAC_GREEK) [N/y/?] (NEW)
  Codepage maciceland (NLS_MAC_ICELAND) [N/y/?] (NEW)
  Codepage macinuit (NLS_MAC_INUIT) [N/y/?] (NEW)
  Codepage macromanian (NLS_MAC_ROMANIAN) [N/y/?] (NEW)
  Codepage macturkish (NLS_MAC_TURKISH) [N/y/?] (NEW)
  NLS UTF-8 (NLS_UTF8) [N/y/?] (NEW)
*
* Virtualization
*
Virtualization (VIRTUALIZATION) [N/y/?] (NEW)
*
* Kernel hacking
*
*
* printk and dmesg options
*
Show timing information on printks (PRINTK_TIME) [N/y/?] (NEW)
Default console loglevel (1-15) (CONSOLE_LOGLEVEL_DEFAULT) [7] (NEW)
Default message log level (1-7) (MESSAGE_LOGLEVEL_DEFAULT) [4] (NEW)
*
* Compile-time checks and compiler options
*
Enable __deprecated logic (ENABLE_WARN_DEPRECATED) [Y/n/?] (NEW)
Enable __must_check logic (ENABLE_MUST_CHECK) [Y/n/?] (NEW)
Warn for stack frames larger than (needs gcc 4.4) (FRAME_WARN) [2048] (NEW)
Strip assembler-generated symbols during link (STRIP_ASM_SYMS) [N/y/?] (NEW)
Enable unused/obsolete exported symbols (UNUSED_SYMBOLS) [N/y/?] (NEW)
Debug Filesystem (DEBUG_FS) [N/y/?] (NEW)
Run 'make headers_check' when building vmlinux (HEADERS_CHECK) [N/y/?] (NEW)
Enable full Section mismatch analysis (DEBUG_SECTION_MISMATCH) [N/y/?] (NEW)
Make section mismatch errors non-fatal (SECTION_MISMATCH_WARN_ONLY) [Y/n/?] (NEW)
Compile the kernel with frame pointers (FRAME_POINTER) [Y/?] (NEW) y
Magic SysRq key (MAGIC_SYSRQ) [N/y/?] (NEW)
Kernel debugging (DEBUG_KERNEL) [N/y/?] (NEW)
*
* Memory Debugging
*
Extend memmap on extra space for more information on page (PAGE_EXTENSION) [N/y/?] (NEW)
Poison pages after freeing (PAGE_POISONING) [N/y/?] (NEW)
Testcase for the marking rodata read-only (DEBUG_RODATA_TEST) [N/y/?] (NEW)
SLUB debugging on by default (SLUB_DEBUG_ON) [N/y/?] (NEW)
Enable SLUB performance statistics (SLUB_STATS) [N/y/?] (NEW)
KASan: runtime memory debugger (KASAN) [N/y/?] (NEW)
Code coverage for fuzzing (KCOV) [N/y/?] (NEW)
*
* Debug Lockups and Hangs
*
Panic on Oops (PANIC_ON_OOPS) [N/y/?] (NEW)
panic timeout (PANIC_TIMEOUT) [0] (NEW)
Enable extra timekeeping sanity checking (DEBUG_TIMEKEEPING) [N/y/?] (NEW)
*
* Lock Debugging (spinlocks, mutexes, etc...)
*
Wait/wound mutex selftests (WW_MUTEX_SELFTEST) [N/y/?] (NEW)
Stack backtrace support (STACKTRACE) [N/y/?] (NEW)
Warn for all uses of unseeded randomness (WARN_ALL_UNSEEDED_RANDOM) [N/y/?] (NEW)
*
* RCU Debugging
*
RCU CPU stall timeout in seconds (RCU_CPU_STALL_TIMEOUT) [21] (NEW)
*
* Tracers
*
Tracers (FTRACE) [N/y/?] (NEW)
Enable debugging of DMA-API usage (DMA_API_DEBUG) [N/y/?] (NEW)
*
* Runtime Testing
*
Perform an atomic64_t self-test (ATOMIC64_SELFTEST) [N/y/?] (NEW)
Test functions located in the hexdump module at runtime (TEST_HEXDUMP) [N/y] (NEW)
Test functions located in the string_helpers module at runtime (TEST_STRING_HELPERS) [N/y] (NEW)
Test kstrto*() family of functions at runtime (TEST_KSTRTOX) [N/y] (NEW)
Test printf() family of functions at runtime (TEST_PRINTF) [N/y] (NEW)
Test bitmap_*() family of functions at runtime (TEST_BITMAP) [N/y/?] (NEW)
Test functions located in the uuid module at runtime (TEST_UUID) [N/y] (NEW)
Perform selftest on resizable hash table (TEST_RHASHTABLE) [N/y/?] (NEW)
Perform selftest on hash functions (TEST_HASH) [N/y/?] (NEW)
Test firmware loading via userspace interface (TEST_FIRMWARE) [N/y/?] (NEW)
sysctl test driver (TEST_SYSCTL) [N/y/?] (NEW)
udelay test driver (TEST_UDELAY) [N/y/?] (NEW)
Memtest (MEMTEST) [N/y/?] (NEW)
Trigger a BUG when data corruption is detected (BUG_ON_DATA_CORRUPTION) [N/y/?] (NEW)
*
* Sample kernel code
*
Sample kernel code (SAMPLES) [N/y/?] (NEW)
Undefined behaviour sanity checker (UBSAN) [N/y/?] (NEW)
Filter access to /dev/mem (STRICT_DEVMEM) [N/y/?] (NEW)
Write the current PID to the CONTEXTIDR register (PID_IN_CONTEXTIDR) [N/y/?] (NEW)
Randomize TEXT_OFFSET at build time (ARM64_RANDOMIZE_TEXT_OFFSET) [N/y/?] (NEW)
Warn on W+X mappings at boot (DEBUG_WX) [N/y/?] (NEW)
Align linker sections up to SECTION_SIZE (DEBUG_ALIGN_RODATA) [N/y/?] (NEW)
*
* CoreSight Tracing Support
*
CoreSight Tracing Support (CORESIGHT) [N/y/?] (NEW)
*
* Security options
*
Enable access key retention support (KEYS) [N/y/?] (NEW)
Restrict unprivileged access to the kernel syslog (SECURITY_DMESG_RESTRICT) [N/y/?] (NEW)
Enable different security models (SECURITY) [N/y/?] (NEW)
Enable the securityfs filesystem (SECURITYFS) [N/y/?] (NEW)
Harden memory copies between kernel and userspace (HARDENED_USERCOPY) [N/y/?] (NEW)
Harden common str/mem functions against buffer overflows (FORTIFY_SOURCE) [N/y/?] (NEW)
Force all usermode helper calls through a single binary (STATIC_USERMODEHELPER) [N/y/?] (NEW)
Default security module
> 1. Unix Discretionary Access Controls (DEFAULT_SECURITY_DAC) (NEW)
choice[1]: 1
*
* Cryptographic API
*
Cryptographic API (CRYPTO) [N/y/?] (NEW)
*
* Library routines
*
CRC-CCITT functions (CRC_CCITT) [N/y/?] (NEW)
CRC16 functions (CRC16) [N/y/?] (NEW)
CRC calculation for the T10 Data Integrity Field (CRC_T10DIF) [N/y/?] (NEW)
CRC ITU-T V.41 functions (CRC_ITU_T) [N/y/?] (NEW)
CRC32/CRC32c functions (CRC32) [Y/?] (NEW) y
  CRC32 perform self test on init (CRC32_SELFTEST) [N/y/?] (NEW)
  CRC32 implementation
  > 1. Slice by 8 bytes (CRC32_SLICEBY8) (NEW)
    2. Slice by 4 bytes (CRC32_SLICEBY4) (NEW)
    3. Sarwate's Algorithm (one byte at a time) (CRC32_SARWATE) (NEW)
    4. Classic Algorithm (one bit at a time) (CRC32_BIT) (NEW)
  choice[1-4?]: CRC4 functions (CRC4) [N/y/?] (NEW)
CRC7 functions (CRC7) [N/y/?] (NEW)
CRC32c (Castagnoli, et al) Cyclic Redundancy-Check (LIBCRC32C) [N/y/?] (NEW)
CRC8 function (CRC8) [N/y/?] (NEW)
PRNG perform self test on init (RANDOM32_SELFTEST) [N/y/?] (NEW)
XZ decompression support (XZ_DEC) [N/y/?] (NEW)
CORDIC algorithm (CORDIC) [N/y/?] (NEW)
JEDEC DDR data (DDR) [N/y/?] (NEW)
IRQ polling library (IRQ_POLL) [N/y/?] (NEW)
Test string functions (STRING_SELFTEST) [N/y] (NEW)
#
# configuration written to .config
#
root@nems:/usr/src/linux-headers-4.14.26#

Wow, that’s a lot of output.

Now, a quick reboot and re-connect, and then check the running kernel…

nemsadmin@nems:/tmp/test1$ cat /proc/config.gz | gunzip | grep CONFIG_FSL_ERRATUM_A008585
# CONFIG_FSL_ERRATUM_A008585 is not set
nemsadmin@nems:~$

Darn.

Strangely, the default config (my config) shows that my setting remains there…

nemsadmin@nems:/boot$ grep CONFIG_FSL_ERRATUM_A008585 /boot/config-4.14.26
CONFIG_FSL_ERRATUM_A008585=y

So maybe I just didn’t compile it correctly.

I wish someone in the threads would have posted how to actually add this. I mean, as a teacher, I try not to make assumptions. Saying to someone “set CONFIG_FSL_ERRATUM_A008585=y in your kernel” is a big assumption. Even I, the Bald Nerd, am not quite sure how to do that, yet I’m sure the people who make the statements are. Let’s instead post the actual commands or at least point the person in the right direction.

I’ll try to figure it out in the next couple days, and will post my step-by-step. I’ve posted a cry for help in the forum thread related to the Debian image I’m using. Hopefully they can point me in the right direction.

UPDATE: Ohmigosh, it just hit me… this is using make, yet I didn’t install!

Let’s try it, just for good measure:

root@nems:/usr/src# cd linux-headers-4.14.26/
root@nems:/usr/src/linux-headers-4.14.26# make install
scripts/kconfig/conf  --silentoldconfig Kconfig
/bin/bash ./arch/arm64/boot/install.sh 4.14.26 \
arch/arm64/boot/Image System.map "/boot"
/bin/bash: ./arch/arm64/boot/install.sh: No such file or directory
arch/arm64/boot/Makefile:40: recipe for target 'install' failed
make[1]: *** [install] Error 127
arch/arm64/Makefile:130: recipe for target 'install' failed
make: *** [install] Error 2

Grr….

root@nems:/usr/src/linux-headers-4.14.26# ls arch/arm64/boot/
dts  Makefile

Yeah, there’s no install.sh there.

I’m sure it’s something simple I’m missing since I’m not experienced at this kind of thing.

More to come!

NTP on Debian reporting 95 years in the future – Part 4: Back To The Past

If you haven’t read part 1 yet, make sure you start there.

I had a great idea after posting part 3 last night… why not try to set the interface as static so DHCP isn’t impacted? That way, I won’t have to re-flash to an earlier image. So I stuck the SD card into my SD reader and low and behold, /etc/network/interfaces is accessible! So I commented out the DHCP line and set it instead to the static IP I have reserved for it, and low and behold, I’m up and running.

root@nems:/usr/local/share/nems/nems-scripts# cat /etc/network/interfaces
auto eth0
#iface eth0 inet dhcp
    iface eth0 inet static
        address 10.0.0.155
        netmask 255.255.255.0
        gateway 10.0.0.1

And to boot, get this:

nemsadmin@nems:~$ date
Fri Jul  6 19:50:58 EDT 2018

That’s right… the date is correct after booting this way.

Strangely though, there are no updates in /var/log/dpkg.log – the last entry was in 2113.

Another interesting anomaly when checking the ntp service:

root@nems:/etc/network# systemctl status ntp
● ntp.service - LSB: Start NTP daemon
   Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
   Active: active (running) since Mon 2113-08-28 07:22:22 EDT; 95 years 1 months left
     Docs: man:systemd-sysv-generator(8)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/ntp.service
           └─2006 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 104:107

Aug 28 07:22:26 nems ntpd[2006]: Soliciting pool server 144.217.75.74
Aug 28 07:22:26 nems ntpd[2006]: Soliciting pool server 144.217.65.182
Aug 28 07:22:26 nems ntpd[2006]: Soliciting pool server 158.69.226.90
Aug 28 07:22:27 nems ntpd[2006]: Soliciting pool server 54.39.13.155
Aug 28 07:22:27 nems ntpd[2006]: Soliciting pool server 144.217.181.221
Aug 28 07:22:27 nems ntpd[2006]: Soliciting pool server 144.217.242.233
Aug 28 07:22:28 nems ntpd[2006]: Soliciting pool server 209.115.181.108
Aug 28 07:22:28 nems ntpd[2006]: Soliciting pool server 199.182.221.110
Aug 28 07:22:29 nems ntpd[2006]: Soliciting pool server 144.217.240.204
Aug 28 07:22:29 nems ntpd[2006]: Soliciting pool server 2604:a880:cad:d0::66:8001
root@nems:/etc/network# 

Hmm, yeah… it has been running for over 95 years. Yet the date is correct on my system now.

root@nems:/etc/network# dpkg-reconfigure tzdata

Current default time zone: 'America/New_York'
Local time is now:      Fri Jul  6 19:57:42 EDT 2018.
Universal Time is now:  Fri Jul  6 23:57:42 UTC 2018.

Hmm….

root@nems:/etc/network# uptime
 19:58:04 up 8 min,  1 user,  load average: 0.10, 0.45, 0.36

So, let’s just try…

root@nems:/etc/network# reboot
Connection to 10.0.0.155 closed by remote host.
Connection to 10.0.0.155 closed.

And… wait for it….

robbie@bekah-desktop:~$ ssh [email protected]
[email protected]'s password: 
Linux nems 4.14.26 #1 SMP Sun Mar 11 16:34:42 UTC 2018 aarch64

Last login: Fri Jul  6 19:50:54 2018 from 10.0.0.107

Sweet.

Okay, so let’s leave the server running for 24 hours and see if this is a DHCP-related issue.

To be sure, I have indeed checked my router to make sure it’s not serving up bogus NTP timestamps, and it’s all good.

What’s Next? Read Part 5:

NTP on Debian reporting 95 years in the future – Part 5: Patching the Kernel

SBC Distros I’m Working On

Those who follow me closely in the SBC world know what I’m up to, generally, but I thought it’d be fun / useful to list some of my main distros I am working on.

NEMS Linux
This one is pretty darned obvious. My most popular distro to date. Learn more at https://nemslinux.com/

PlexPi
Plex Media Server for the Raspberry Pi 3/3B+. I may eventually port this to more powerful SBCs as well. I think it’d do amazingly on a RockPro64. https://plexpi.com/

Retropie-based Retro Gaming Distro for ODROID XU4 + others
Yet to be named build to port Retropie properly to the XU4 and other SBCs where it is either not yet [well] supported or onerous to configure.

Camera System
Yet to be named Raspberry Pi distro to turn any supported IP or USB camera into a sophisticated webcam ideal for weather stations, resorts, hobbyists. Not intended for surveillance, though it could be used for this too. Includes an impressive deduplication system I wrote which reduces the number of stored images by matching their image data: if there is no change in the scene, the image is not saved. Also allows stream relaying from an RTSP compatible IP camera or standard USB webcam to YouTube Live (video only), interval-based snapshots with automatic upload to web, and more. My hope is that I can turn even a Raspberry Pi Zero W into a very impressive webcam system.

Turnkey Servers
I plan to release some turnkey servers for SBC such as WordPress, LAMP, XMPP and so-on. Many of these will be in competition with existing turnkey builds, however I feel my Migrator off site backup system will help my builds stand out from the pack.

Alexa for Raspberry Pi
A fair few tutorials exist that help a user build an Alexa-powered assistant device out of a Raspberry Pi, but I’d like to see a streamlined distro built around the concept… so I’ll build one.

Which project has you most excited?

NTP on Debian reporting 95 years in the future – Part 3: Community

If you haven’t read part 1 yet, make sure you start there.

Hooray! I am not alone, and it does indeed appear to be a Pine64-specific issue. That means I’m not crazy. Or at least, this issue doesn’t prove my craziness.

  1. https://forum.armbian.com/topic/3458-a64-datetime-clock-issue/
  2. https://forum.armbian.com/topic/7423-pine64-massive-datetime-clock-problem/

Looking at martinayotte‘s suggestions, since he seems to have been through what I’m going through right now…

root@nems:/boot# grep CONFIG_FSL_ERRATUM_A008585 /boot/config-4.14.26 
# CONFIG_FSL_ERRATUM_A008585 is not set

Okay, so just in case they fixed it already, let’s just try…

root@nems:/boot# apt update && apt upgrade
Ign:1 http://deb.debian.org/debian stretch InRelease
Hit:2 http://deb.debian.org/debian stretch Release                                                                                 
Ign:3 http://download.webmin.com/download/repository sarge InRelease                                                               
Hit:4 http://download.webmin.com/download/repository sarge Release                                                            
Ign:5 http://webmin.mirror.somersettechsolutions.co.uk/repository sarge InRelease                       
Hit:7 http://webmin.mirror.somersettechsolutions.co.uk/repository sarge Release
Get:8 http://ftp.debian.org/debian stretch-backports InRelease [91.8 kB] 
Ign:10 https://repo.foxiehost.eu/debian stretch InRelease      
Ign:11 https://apt.izzysoft.de/ubuntu generic InRelease
Err:13 https://apt.izzysoft.de/ubuntu generic Release
  server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Err:14 https://repo.foxiehost.eu/debian stretch Release
  server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Reading package lists... Done
E: Release file for http://ftp.debian.org/debian/dists/stretch-backports/InRelease is expired (invalid since 34744d 15h 16min 5s). Updates for this repository will not be applied.
E: The repository 'https://apt.izzysoft.de/ubuntu generic Release' does no longer have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: The repository 'https://repo.foxiehost.eu/debian stretch Release' does no longer have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Hmm, it seems apt doesn’t like time travelers like me. So … [le gasp]…

root@nems:/boot# reboot
Connection to 10.0.0.155 closed by remote host.
Connection to 10.0.0.155 closed.

Wait for it….

robbie@bekah-desktop:~$ ssh [email protected]
ssh: connect to host 10.0.0.155 port 22: No route to host

Like trying to play my 8-track cassettes in a Blu-Ray player, apparently some services don’t play nicely 95 years in the future. DHCP is showing locally on the TTY splash screen as 127.0.0.1, and the only way to recover will be to re-flash to a point before the NTP issue struck.

What’s next? Read Part 4:

NTP on Debian reporting 95 years in the future – Part 4: Back To The Past

NTP on Debian reporting 95 years in the future – Part 2: The Time Traveler

If you haven’t read part 1 yet, make sure you start there.

This issue has really intrigued me.

Setting the date manually fails:

root@nems:/var/log# date
Mon Aug 28 06:39:22 EDT 2113
root@nems:/var/log# date -s "2018-07-05"
date: cannot set date: Invalid argument
Thu Jul  5 00:00:00 EDT 2018

Invalid argument? Maybe it wants me to set the time too?

root@nems:/var/log# date -s "2018-07-05 20:13:01"
date: cannot set date: Invalid argument
Thu Jul  5 20:13:01 EDT 2018

Nope, that made no difference.

Well, what does my hardware clock say (since the Pine A64+ has one)?

root@nems:/var/log# hwclock
2018-07-05 20:13:10.747892-0400

Oh yay, that looks better! Let’s use that! Obviously the system knows the date and time…

root@nems:/var/log# date -s "$(hwclock)"
date: cannot set date: Invalid argument
Thu Jul  5 20:14:20 EDT 2018

Oh, COME ON!

Maybe I’ll try the long-form command…

root@nems:/var/log# date --set="$(hwclock)"
date: cannot set date: Invalid argument
Thu Jul  5 20:15:49 EDT 2018

Nope. Same result. Ach!

This is looking a lot like an old kernel bug I recall from the late 2000’s. Better check what kernel I’m running…

root@nems:/var/log# uname -a
Linux nems 4.14.26 #1 SMP Sun Mar 11 16:34:42 UTC 2018 aarch64 GNU/Linux

If I had hair…

Just to be sure, let’s reconfigure my timezone config:

root@nems:/var/log# dpkg-reconfigure tzdata

Current default time zone: 'America/New_York'
Local time is now:      Mon Aug 28 06:47:54 EDT 2113.
Universal Time is now:  Mon Aug 28 10:47:54 UTC 2113.

root@nems:/var/log# hwclock
2018-07-05 20:19:51.275648-0400

Okay, so let me get this straight… it’s August 28, 2113. But it’s July 5, 2018 according to the RTC.

Think, Robbie, think.

I did a quick grep through the /var/log folder for anything talking about ntp, and interestingly, I find this at the top of dpkg.log:

2018-07-04 08:59:23 startup archives unpack
2018-07-04 08:59:24 install ntpstat:arm64 <none> 0.0.0.1-1+b1
2018-07-04 08:59:24 status half-installed ntpstat:arm64 0.0.0.1-1+b1
2018-07-04 08:59:24 status unpacked ntpstat:arm64 0.0.0.1-1+b1
2018-07-04 08:59:24 status unpacked ntpstat:arm64 0.0.0.1-1+b1
2018-07-04 08:59:24 startup packages configure
2018-07-04 08:59:24 configure ntpstat:arm64 0.0.0.1-1+b1 <none>
2018-07-04 08:59:24 status unpacked ntpstat:arm64 0.0.0.1-1+b1
2018-07-04 08:59:24 status half-configured ntpstat:arm64 0.0.0.1-1+b1
2018-07-04 08:59:24 status installed ntpstat:arm64 0.0.0.1-1+b1
2113-08-27 19:31:23 startup archives unpack
2113-08-27 19:31:23 install ntpdate:arm64 <none> 1:4.2.8p10+dfsg-3+deb9u2
2113-08-27 19:31:23 status half-installed ntpdate:arm64 1:4.2.8p10+dfsg-3+deb9u2
2113-08-27 19:31:24 status unpacked ntpdate:arm64 1:4.2.8p10+dfsg-3+deb9u2
2113-08-27 19:31:24 status unpacked ntpdate:arm64 1:4.2.8p10+dfsg-3+deb9u2
2113-08-27 19:31:24 startup packages configure

So on first boot, the system had the date correct: July 4, 2018. The time is off by a couple hours however (it was perhaps 6am when I flashed and fired up the system and then left for work).

What’s interesting here is that the typical ntp startup tasks unpack, install and run, but then after the package is installed (a presumably automated process since I didn’t do it!) the date suddenly changes to August 27, 2113.

Being a Raspberry Pi user all my SBC life, I’m honestly impressed that the Pine A64+ has a built-in RTC… but nowhere in the specs do I see that it also includes a corresponding flux capacitor, so I must presume the jump through time is more likely a glitch in the matrix.

I’m afraid to reboot.

What’s Next? Read Part 3:

NTP on Debian reporting 95 years in the future – Part 3: Community

NTP on Debian reporting 95 years in the future – Part 1

Here’s one for the “I’d pull out my hair if I had some” files…

I have a wee SBC (a Pine A64+) I’m porting NEMS to, and everything was sweet for a day… working fine, all looks good. So I left it running.

Next day, while the system clock shows the correct date and time, the UTC and Local time are off by 95 years!

root@nems:/home/nemsadmin# systemctl status ntp
● ntp.service - LSB: Start NTP daemon
   Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
   Active: active (exited) since Sun 2113-08-27 20:46:11 EDT; 1min 37s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1823 ExecStop=/etc/init.d/ntp stop (code=exited, status=0/SUCCE
  Process: 1834 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUC
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/ntp.service

Aug 27 20:46:16 nems ntpd[1844]: Soliciting pool server 209.115.181.102
Aug 27 20:46:17 nems ntpd[1844]: Soliciting pool server 144.217.245.233
Aug 27 20:46:17 nems ntpd[1844]: Soliciting pool server 209.115.181.107
Aug 27 20:46:18 nems ntpd[1844]: Soliciting pool server 198.100.148.213
Aug 27 20:46:18 nems ntpd[1844]: Soliciting pool server 2607:4100:2:ff::2
Aug 27 20:46:22 nems ntpd[1844]: step-systime: Invalid argument
Aug 27 20:46:22 nems ntpd[1844]: receive: Unexpected origin timestamp 0x91
Aug 27 20:46:22 nems ntpd[1844]: receive: Unexpected origin timestamp 0x91
Aug 27 20:46:22 nems ntpd[1844]: receive: Unexpected origin timestamp 0x91
Aug 27 20:46:22 nems ntpd[1844]: receive: Unexpected origin timestamp 0x91

root@nems:/home/nemsadmin# timedatectl status
      Local time: Sun 2113-08-27 20:47:55 EDT
  Universal time: Mon 2113-08-28 00:47:55 UTC
        RTC time: Thu 2018-07-05 14:20:36
       Time zone: America/New_York (EDT, -0400)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: no

root@nems:/home/nemsadmin# ntpdate -d 0.debian.pool.ntp.org | sed -n '$s/.*offset //p'
1292443255.246538 sec

Now, I admit, it’s nice seeing a NEMS server that’s been up for that long 😛 but it’s very curious.

Logging into NEMS Linux, I find another oddity…Apparently my last login was in 1977.

Here is a picture of how that might have looked:

I’m pretty confident that my little Pine A64+ has more power and capacity than the supercomputer shown. Chances are good it also cost a bit less.

So it’s time to start digging… where did NTP get this ridiculous 1292443255.246538 second offset from, and why? And how to correct it?

What’s next? Read Part 2:

NTP on Debian reporting 95 years in the future – Part 2: The Time Traveler