The list below gives an overview of some missing features in the current MIPS port. This list is far from being completed. If you want to undertake one of these items (or perhaps all of them), don't hesitate to ask on the linux-mips mailing list the status or clarification of the point you're interested in.
- Implement a backtracer based on the DWARF debug information
- Implement stack protector
- Improve non-executable support
- Add latencytop support
- Add code to dump the kernel page tables for visual inspection by kernel developers
- Stacktrace support for lockdep
- eBPF JIT
utrace / uprobes / systemtap
Utrace support as per http://sourceware.org/systemtap/wiki/utrace/arch/HowTo has been implemented years ago with the exception of item 2) but utrace is deprecated and not upstream anyway. It was deprecated by uprobes the implementation of which currently is in its final stages.
The 32-bit binary-compatible code should be rewritten to use the generic compatibility code in
fs/compat_binfmt_elf.c. Brownie points for providing a more elegant N32 compat binfmt as well.
Memory fragmentation permitting modules should be loaded into unmapped space, not vmalloc space. An old patch doing 90% of the work was written by Andrea Arcangeli for 2.4.22 in http://ftp.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.22aa1/00_module-gfp-7, but now, that there is
alloc_pages_exact(), which would need reimplementation.
syscall return code
MIPS needs an implementation of
force_successful_syscall_return() to handle a few corner cases.
Virtual alias handling
include/linux/highmem.h, the non-definition of
ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE leads to the use of broken default functions, which break XFS on non-coherent CPUs with aliases, amongst other things.
Prefetching needs to know the cache line size to be effective. Right now,
RDHWR $reg, $ only gives access to the stride size to be used for
SYNCI, which may be a different value than the number to be used for prefetching. And with
PrepareForStore, you better get that right or ...
We may also take a fresh look at if we can safely implement
cachectl(2), not necessarily as originally defined by Risc/OS or IRIX but with more control over available cache modes.
- Something like kexec /mnt/kernels/rescue/vmlinux --initrd=/mnt/initrds/rescue but --initrd seems not to be implemented for MIPS.
- kexec: add kexec jump support
Many systems support parity or ECC checking or even error correction for some of their busses, caches or other components. The Linux EDAC subsystem provided an infrastructure and drivers to use these facilities.
Implement kmemcheck for MIPS - a kernel dynamic memory 'used before initialised' debugging system.
AddressSanitizer and ThreadSanitizer
GCC address/memory and thread race compiler instrumentations. If these end up being implemented for use in the kernel then they should be considered for the MIPS architecture as well.