Difference between revisions of "Todo List"

From LinuxMIPS
Jump to: navigation, search
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
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.
+
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 a backtracer based on the DWARF debug information
 
* Implement stack protector
 
* Implement stack protector
* kexec: add kexec jump support
 
 
* Improve non-executable support
 
* Improve non-executable support
 
* Add latencytop support
 
* Add latencytop support
Line 12: Line 11:
 
See http://sourceware.org/systemtap/wiki/utrace/arch/HowTo
 
See http://sourceware.org/systemtap/wiki/utrace/arch/HowTo
  
== Binary compat code ==
+
== Binary-compatible code ==
The 32-bit binary compat 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.
+
The 32-bit binary-compatible code should be rewritten to use the generic compatibility code in <code>fs/compat_binfmt_elf.c</code>. Brownie points for providing a more elegant N32 compat binfmt as well.
  
== module loader ==
+
== Module loader ==
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() this would need reimplementation.
+
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 http://ftp.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.22aa1/00_module-gfp-7], but now, that there is <code>alloc_pages_exact()</code>, which would need reimplementation.
  
 
== syscall return code ==
 
== syscall return code ==
MIPS needs an implementation of force_successful_syscall_return() to handle a few corner cases.
+
MIPS needs an implementation of <code>force_successful_syscall_return()</code> to handle a few corner cases.
 +
 
 +
== Virtual alias handling ==
 +
In <code>include/linux/highmem.h</code>, the non-definition of <code>ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE</code> leads to the use of broken default functions, which break XFS on non-coherent CPUs with aliases, amongst other things.
 +
 
 +
== Prefetch handling ==
 +
Prefetching needs to know the cache line size to be effective. Right now, <code>RDHWR&nbsp;$reg,&nbsp;$</code> only gives access to the stride size to be used for <code>SYNCI</code>, which may be a different value than the number to be used for prefetching. And with <code>PrepareForStore</code>, you better get that right or&nbsp;...
 +
We may also take a fresh look at if we can safely implement <code>cachectl(2)</code>, not necessarily as originally defined by Risc/OS or IRIX but with more control over available cache modes.
 +
 
 +
== Kexec ==
 +
* Something like <tt>kexec /mnt/kernels/rescue/vmlinux --initrd=/mnt/initrds/rescue</tt> but --initrd seems not to be implemented for MIPS.
 +
* kexec: add kexec jump support
 +
 
 +
== BPF JIT ==
 +
[[wikipedia:Berkeley_Filter BPF]] code is normally interpreted.  Significant performance advantage can be obtained by compiling it into native machine code.
 +
 
 +
== See also ==
 +
* http://lists.freedesktop.org/archives/pixman/2010-November/000749.html
 +
* http://www.gsp.com/cgi-bin/man.cgi?section=4&topic=bpf FreeBSD BPF documentation

Revision as of 10:02, 8 October 2012

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

utrace

See http://sourceware.org/systemtap/wiki/utrace/arch/HowTo

Binary-compatible code

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.

Module loader

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

In 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.

Prefetch handling

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.

Kexec

  • 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

BPF JIT

wikipedia:Berkeley_Filter BPF code is normally interpreted. Significant performance advantage can be obtained by compiling it into native machine code.

See also