User Tools

Site Tools


developers:getting_started

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
developers:getting_started [2018/10/27 16:24]
mick
developers:getting_started [2019/11/04 14:54] (current)
mick [Linux kernel feature support list]
Line 1: Line 1:
-===== Development basics ​=====+===== First steps =====
  
 [[developers:​env_prepare|Prepare your development environment]] [[developers:​env_prepare|Prepare your development environment]]
  
-[[developers:​env_buildtest|Build ​the kernel and the bootloader]]+[[developers:​env_buildtest|Build ​a test environment]]
  
 [[developers:​env_emul|Test your builds with an emulator]] [[developers:​env_emul|Test your builds with an emulator]]
  
-[[developers:​lists|Subscribe/​use the mailing list]]+===== Linux development basics =====
  
-[[developers:patches_prepare|Prepare your patches]]+[[https://​www.kernel.org/​doc/​html/​latest/​process/​coding-style.html ​Linux kernel coding style]]
  
-[[developers:patches_submit|Submit ​your patches]]+[[https://​kernelnewbies.org/​FirstKernelPatch ​Your first patch]] 
 + 
 +[[https://​www.kernel.org/​doc/​html/​latest/​process/​submitting-patches.html|Submitting ​your patches]] 
 + 
 +[[https://​www.kernel.org/​doc/​html/​latest/​process/​development-process.html| Further documentation on the kernel development process]] 
 + 
 +===== RISC-V Linux development ===== 
 +[[https://​lists.infradead.org/​mailman/​listinfo/​linux-riscv | Mailing list]] 
 + 
 +[[https://​patchwork.kernel.org/​project/​linux-riscv/​list/​ | Patchwork]] 
 + 
 +[[https://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​palmer/​riscv-linux.git/​ | Git repository]] (use fixes branch for development) 
 + 
 + 
 + 
 +===== Useful links ===== 
 + 
 +[[https://​www.sifive.com/​blog/​all-aboard-part-0-introduction | Palmer'​s All aboard series of articles]] 
 + 
 +[[https://​github.com/​sifive/​last-week-in-risc-v | Last week in RISC-V]] 
 + 
 +[[https://​github.com/​riscv/​riscv-sbi-doc/​blob/​master/​riscv-sbi.md | The Supervisor Binary Interface]] 
 + 
 +[[https://​github.com/​riscv/​riscv-device-tree-doc | RISC-V Device tree documentation]] 
 + 
 +[[https://​github.com/​riscv/​riscv-toolchain-conventions | RISC-V Toolchain conventions]] 
 + 
 +[[https://​github.com/​riscv/​riscv-wiki/​wiki/​RISC-V-Software-Status | RISC-V Software status]] 
 + 
 +===== Linux kernel feature support list ===== 
 + 
 +^ Subsystem ^ Feature name ^ Feature description ^ Status ^ 
 +|  core  |  cBPF-JIT ​ |Arch supports cBPF JIT optimizations ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  core  |  eBPF-JIT ​ |Arch supports eBPF JIT optimizations ​ |  <wrap safety> OK </​wrap> ​  | 
 +|  core  |  generic-idle-thread ​ |Arch makes use of the generic SMP idle thread facility ​ |  <wrap safety> OK </​wrap> ​ | 
 +|  core  |  jump-labels ​ |Arch supports live patched, high efficiency branches ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  core  |  tracehook ​ |Arch supports tracehook (ptrace) register handling APIs  |  <wrap safety> OK </​wrap> ​ | 
 +|  debug  |  gcov-profile-all ​ |Arch supports whole-kernel GCOV code coverage profiling ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  debug  |  KASAN  |Arch supports the KASAN runtime memory checker ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  debug  |  kgdb  |Arch supports the kGDB kernel debugger ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  debug  |  kprobes ​ |Arch supports live patched kernel probe  |  <wrap safety> OK </​wrap> ​ | 
 +|  debug  |  kprobes-on-ftrace ​ |Arch supports combined kprobes and ftrace live patching ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  debug  |  kretprobes ​ |Arch supports kernel function-return probes ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  debug  |  optprobes ​ |Arch supports live patched optprobes ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  debug  |  stackprotector ​ |Arch supports compiler driven stack overflow protection ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  debug  |  uprobes ​ |Arch supports live patched user probes ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  debug  |  user-ret-profiler ​ |Arch supports user-space return from system call profiler ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  io  |  dma-contiguous ​ |Arch supports the DMA CMA (continuous memory allocator) ​ |  <wrap safety> OK </​wrap> ​ | 
 +|  io  |  sg-chain ​ |Arch supports chained scatter-gather lists  |  <wrap warning> TODO </​wrap> ​ | 
 +|  locking ​ |  cmpxchg-local ​ |Arch supports the this_cpu_cmpxchg() API  |  <wrap warning> TODO </​wrap> ​ | 
 +|  locking ​ |  lockdep ​ |Arch supports the runtime locking correctness debug facility ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  locking ​ |  queued-rwlocks ​ |Arch supports queued rwlocks ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  locking ​ |  queued-spinlocks ​ |Arch supports queued spinlocks ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  locking ​ |  rwsem-optimized ​ |Arch provides optimized rwsem APIs  |  <wrap warning> TODO </​wrap> ​ | 
 +|  perf  |  kprobes-event ​ |Arch supports kprobes with perf events ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  perf  |  perf-regs ​ |Arch supports perf events register access ​ |  <wrap safety> OK </​wrap> ​ | 
 +|  perf  |  perf-stackdump ​ |Arch supports perf events stack dumps  |  <wrap safety> OK </​wrap> ​  | 
 +|  sched  |  membarrier-sync-core ​ |Arch supports core serializing membarrier ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  sched  |  numa-balancing ​ |Arch supports NUMA balancing ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  seccomp ​ |  seccomp-filter ​ |Arch supports seccomp filters ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  time  |  Arch-tick-broadcast ​ |Arch provides tick_broadcast() ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  time  |  clockevents ​ |Arch support generic clock events ​ |  <wrap safety> OK </​wrap> ​ | 
 +|  time  |  context-tracking ​ |Arch supports context tracking for NO_HZ_FULL ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  time  |  irq-time-acct ​ |Arch supports precise IRQ time accounting ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  time  |  modern-timekeeping ​ |Arch does not use Arch_gettimeoffset() anymore ​ |  <wrap safety> OK </​wrap> ​ | 
 +|  time  |  virt-cpuacct ​ |Arch supports precise virtual CPU time accounting ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  vm  |  ELF-ASLR ​ |Arch randomizes the stack, heap and binary images of ELF binaries ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  vm  |  huge-vmap ​ |Arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs  |  <wrap warning> TODO </​wrap> ​ | 
 +|  vm  |  ioremap_prot ​ |Arch has ioremap_prot() ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  vm  |  numa-memblock ​ |Arch supports NUMA aware memblocks ​ |  <wrap safety> OK </​wrap> ​ | 
 +|  vm  |  PG_uncached ​ |Arch supports the PG_uncached page flag  |  <wrap warning> TODO </​wrap> ​ | 
 +|  vm  |  pte_special ​ |Arch supports the pte_special() ​ |  <wrap safety> OK </​wrap> ​ | 
 +|  vm  |  THP  |Arch supports transparent hugepages ​ |  <wrap warning> TODO </​wrap> ​ | 
 +|  vm  |  batch-unmap-tlb-flush ​ |Arch supports deferral of TLB flush until multiple pages are unmapped ​ |  <wrap warning> TODO </​wrap> ​ |
  
 ===== TODO list ===== ===== TODO list =====
  
 [[developers:​todo|Current TODO list]] [[developers:​todo|Current TODO list]]
developers/getting_started.1540646659.txt.gz · Last modified: 2018/10/27 16:24 by mick