Make ptrace optional.
Rip out more of the per-CPU infrastructure when CONFIG_SMP=n
Support configuring out kswapd.
Make the kernel's entire random number infrastructure optional.
Compile out mm/vmstat
(need to stub out bits that obtain statistics used by other bits of the kernel)
Compile out signal handling.
Compile out support for capabilities; make capable always return true for root and false for non-root.
Compile out support for "personalities".
Compile out support for non-root users. When disabled, UID and GID effectively always equal 0, and all the syscalls involving UIDs and GIDs go away.
Compile out support for xattrs, and all the corresponding syscalls.
Compile out support for sockets and all the socket-related syscalls.
Support nommu on x86.
Revive the function-sections support.
Drop exports not used by the set of modules compiled with the kernel
Automatic syscall elimination: Given a specific userspace, automatically find out what syscalls it needs and compile everything else out.
Kernel command-line constant folding: Given a kernel command line at compile-time, parse it and turn all the variables it would end up in into compile-time constants.
Execute in place (XIP) for x86
Constant folding for unused mount options (for instance, drop ext4's dioread_lock options at build time)
Go look at patches in OpenWRT to make the kernel smaller
Analyze size of inlines (Andi Kleen has some scripts)
make kernel/pid.o configurable (replace pidhash system with simpler pid allocator (e.g. from 1.0))
Compile out TSC support and calibration.
Compile out types of video support from arch/x86/boot: VESA, VGA, and BIOS
Compile out MCA support from arch/x86/boot.
Revive and complete the patches to remove perf and the instruction decoder. Need to rework the config option structure.
review items in kernel/Makefile: obj-y target, and eliminate or reduce for tiny kernels