Phase 2: projects


Eudyptula Challenge

OS Islene's Labs (not meant for upstream)

EVoC (LEVEL: Variable)



Ask the organizers, we might have some bugs for you ;)

  • Investigate, replace and try to drop hwmon_device_register. I.e.: (LEVEL: Beginner.)

(NULL device *): hwmon_device_register() is deprecated. Please convert the driver to use hwmon_device_register_with_info().

  • Drop usb/chipidea dependency on OF: chipidea is usable on x86 platforms (razr-i-work) but it has a hardcoded dependency on OF which is not needed and causes those platforms to fail probe. There is a scratch patch available, but it is not suitable for submission.;a=commit;h=c59e09e43d4473664030cc1cdcd55f3fc5130c44 (LEVEL: Beginner)

  • (LEVEL: Variable)

Serial layer/8250

  • Handle setserial ioport misconfiguration gracefully on !x86* architectures (LEVEL: Medium)


  • HDMI input submodule (LEVEL: medium)

  • S-VIDEO input submodule (LEVEL: medium)

  • Add frame rate control (LEVEL: beginner/medium) - WIP - Guilherme Gallo

  • Optimize pipeline by generating image on capture device (LEVEL: medium) - WIP - Lucas Magalhães

  • Add cropping with the Selection API (LEVEL: medium)


  • Proper implementation of connect and disconnect of HDMI input: events are not emulated by vivid (LEVEL: medium)

  • Loopback driver: allow interconnection between vivid instances, useful for more complex hardware (several HDMI inputs/outputs) (LEVEL: medium)

  • Emulation for metadata (histogram) (LEVEL: medium)

  • Software defined radio output (LEVEL: medium)

  • Improve timestamp system - WIP - Gabriel Mandaji

V4L2: Documentation

  • Per extended controls in a separate documentation (LEVEL: beginner)
  • Re-organizing and improving the selection API docs (LEVEL: beginner)

V4L2: M2M (memory-to-memory) framework

  • Add support for multiple planes in M2M framework (LEVEL: medium)

CEC compliance tests: raspberry-pi + CEC TV (userspace)

  • In-depth tests of CEC features, step-by-step: timing, tuning, etc (multiple people for each feature) (LEVEL: medium)

V4L2: convert soc_camera (hardware required)

  • Soc_camera needs to be removed, the implementation of the sensors needs to be converted to use the framework properly. Check how the mt9t112 was done. (LEVEL: medium/hard)

V4L2: improve tests (userspace)

  • v4l2-ctl: helpers for testing streaming, similar to v4l2-compliance

  • Improve v4l2-ctl and v4l2-compliance for m2m devices

V4L2: Others

Run the mainline kernel on Android phones with a GNU userspace.

Requires a lot of hacking all around the kernel.

Available Hardware:

  • Razr-I: boots ok, DRM bugs.
  • N900: Almost fully supported.
  • Moto E Condor
  • Moto X Ghost
  • HTC Desire HD
  • Your own phone!

LEVEL: Medium, Hard.

Sw_sync: fences

  • Add support for programing the behavior of fences in the sw_sync driver, a way to inject failure to allow testing when fences fails. (LEVEL: medium)

Kernel-ci: add smoke tests (userspace)

  • Add a kernel-ci test for each kernel subsystem (LEVEL: variable)


Run linux-next and report problems found there. It is easy to find kernel build warnings to fix or other issues.


  • vrealloc() -> realloc memory without copying, but just extenting the page. See if we have use for it, if it make sense

Network File System

  • NFS -> writting mode, then make the network go down, it starts closing NFS and call fsync but fsync is unkillable (so it doesn't respond to a fatal signal) and it hangs forever. fsync sends the command over the network and wait for the response that never arrives. So this wait needs to become a killable wait. TODO: see if this is still the case, this can be emulated using a VM.


  • work/test/verify this

GCC flag - WIP - Leonardo Brás

  • -Wshadow=local turn this flag on in the build and fix the warnings.
    int f(int a, int b) {
        if (a) {
            int b = 3; // this is shadowing the previous defined variable b
            g(a, b);

remove IDR

xarray -> project to replace the radix tree

This is more advanced and it is blocked by the xarray, but will require analysis of individual drivers

Debug wlist - WIP - Leonardo Brás

test suite passes, but the kernel doesn't boot, it hangs at some point.


converting fault handlers from returning plain INTs into a new vm_fault_t The next set of things to do in this area is to convert the remaining callers of vm_insert_page to call vmf_insert_page. This is going to be tricky because they or their callers are expecting errnos today. So it's going to be painstaking work, not something to be done in a hurry.

More ideas

Check TODO files:

find -name "*TODO*"